;---------------------------Module-Header------------------------------;
; Module Name: stucts.inc
;
; Copyright (c) 1992 Microsoft Corporation
;-----------------------------------------------------------------------;
;-----------------------------------------------------------------------;
; DFBBLT is used to store DFB BLTing info
;-----------------------------------------------------------------------;

DFBBLT          STRUC
DstWidth        dd      77777777h      ;# of words touched by dest rectangle
SrcDelta        dd      77777777h      ;dist from end of scan to start of next
DstDelta        dd      77777777h      ;dist from end of scan to start of next
LeftMask        dd      77777777h      ;dst left mask
NotLeftMask     dd      77777777h      ;dst left mask
RightMask       dd      77777777h      ;dst right mask
NotRightMask    dd      77777777h      ;dst right mask
BurstCountLeft  dd      77777777h      ;# of scans to burst
AlignShift      dd      77777777h      ;# of bits to shift left (+) or right
Color           dd      77777777h      ;# of bits to shift left (+) or right
Tmp1            dd      77777777h      ;temp stack variable
Tmp2            dd      77777777h      ;temp stack variable
DFBBLT          ENDS

;-----------------------------------------------------------------------;
; POINTB is used for points with a range of -128..+127.
;-----------------------------------------------------------------------;

POINTB          STRUC
ptb_x           DB      0
ptb_y           DB      0
POINTB          ENDS

;-----------------------------------------------------------------------;
; POINTL is used for points with a range of +/- 2G.
;-----------------------------------------------------------------------;

POINTL          STRUC
ptl_x           DD      0
ptl_y           DD      0
POINTL          ENDS


;-----------------------------------------------------------------------;
; SIZEB is used for extents with a range of -128..+127.
;-----------------------------------------------------------------------;

SIZEB           STRUC
sizb_cx         DB      0
sizb_cy         DB      0
SIZEB           ENDS


;-----------------------------------------------------------------------;
; SIZEL is used for extents with a range of +/- 2G
;-----------------------------------------------------------------------;

SIZEL           STRUC
sizl_cx         DD      0
sizl_cy         DD      0
SIZEL           ENDS

;-----------------------------------------------------------------------;
; Definition of a rectangle
;-----------------------------------------------------------------------;


RECTL               struc           ; /* rcl */
xLeft               dd      ?
yTop                dd      ?
xRight              dd      ?
yBottom             dd      ?
RECTL               ends


;-----------------------------------------------------------------------;
; Definition of a device surface
;-----------------------------------------------------------------------;


DEVSURF             struc           ; /* dsurf */
dsurf_ident         dd      ?
dsurf_flSurf        dd      ?
dsurf_iColor        db      ?
dsurf_iFormat       db      ?
                    db      ?
                    db      ?
dsurf_ppdev         dd      ?
dsurf_sizlSurf      db      (size SIZEL) dup (?)
dsurf_lNextScan     dd      ?
dsurf_lNextPlane    dd      ?
dsurf_pvScan0       dd      ?
dsurf_pvStart       dd      ?
dsurf_pvConv        dd      ?

dsurf_pBankSelectInfo   dd      ?
dsurf_ulBank2RWSkip     dd      ?
dsurf_pfnBankSwitchCode dd      ?
dsurf_vbtBankingType    dd      ?
dsurf_ulBitmapSize      dd      ?
dsurf_ulPtrBankScan     dd      ?
dsurf_rcl1WindowClip    db      (size RECTL) dup (?)
dsurf_rcl2WindowClip    db      (2*(size RECTL)) dup (?)
dsurf_ulWindowBank      dd      ?,?
dsurf_pbiBankInfo       dd      ?
dsurf_ulBankInfoLength  dd      ?
dsurf_pbiBankInfo2RW    dd      ?
dsurf_ulBankInfo2RWLength dd    ?
dsurf_pfnBankControl    dd      ?
dsurf_pfnBankControl2Window dd  ?
dsurf_pvBitmapStart     dd      ?
dsurf_pvBitmapStart2Window dd   ?,?
dsurf_pvBankBufferPlane0   dd   ?
dsurf_pvBankBufferPlane1   dd   ?
dsurf_pvBankBufferPlane2   dd   ?
dsurf_pvBankBufferPlane3   dd   ?

dsurf_ajBits        dd      ?
DEVSURF             ends

dsurf_rcl2WindowClipS   equ     (dsurf_rcl2WindowClip)
dsurf_rcl2WindowClipD   equ     (dsurf_rcl2WindowClip + (size RECTL))
dsurf_pvBitmapStart2WindowS equ (dsurf_pvBitmapStart2Window)
dsurf_pvBitmapStart2WindowD equ (dsurf_pvBitmapStart2Window + dword)


;-----------------------------------------------------------------------;
; Definitions for dsurf_iFormat
;-----------------------------------------------------------------------;

BMF_1BPP            equ     1
BMF_4BPP            equ     2
BMF_8BPP            equ     3
BMF_16BPP           equ     4
BMF_24BPP           equ     5
BMF_32BPP           equ     6
BMF_4RLE            equ     8
BMF_8RLE            equ     9
BMF_DEVICE          equ     0FEh
BMF_PHYSDEVICE      equ     0FFh

VGA_TARGET          equ     0
DFB_TARGET          equ     1
NO_TARGET           equ     2


;-----------------------------------------------------------------------;
; Definitions for text output
;-----------------------------------------------------------------------;


GLYPHPOS    struc           ; /* gp */
gp_hg       dd      ?       ; hglyph (unused by vga)
gp_pgdf     dd      ?       ; glyphdef
gp_x        dd      ?       ; glyph x position
gp_y        dd      ?       ; glyph y position
GLYPHPOS    ends


GLYPHDEF struc              ; /* gdf */
gdf_pgb     dd      ?       ; points to GLYPHBITS
GLYPHDEF ends


GLYPHBITS struc             ; /* gb */
gb_x        dd      ?       ; glyph x offset
gb_y        dd      ?       ; glyph y offset
gb_cx       dd      ?       ; glyph width in pels
gb_cy       dd      ?       ; glyph height in pels
gb_aj       db      ?       ; glyph bit mask
GLYPHBITS ends

;-----------------------------------------------------------------------;
; Information block for RLE blts
;-----------------------------------------------------------------------;

RLEINFO struc
RLE_pjTrg        dd  ?
RLE_pjSrcBits    dd  ?
RLE_pjSrcBitsMax dd  ?
RLE_prctlClip    dd  ?
RLE_pulTranslate dd  ?
RLE_xBegin       dd  ?
RLE_lNextScan    dd  ?
RLE_lNextPlane   dd  ?
RLE_prctlTrg     dd  ?
RLE_dwFormat     dd  ?
Rle_pdsurfTrg    dd  ?
RLEINFO ends

;**************************************************************************\
; Physical device description block
;**************************************************************************/

;---mirrors driver.h---;

PDEV struc
PDEV_fl dd ?
PDEV_ident dd ?
PDEV_hDriver dd ?
PDEV_hpdevEng dd ?
PDEV_hsurfEng dd ?
PDEV_pdsurf dd ?
PDEV_sizlSurf db (size SIZEL) dup (?)
;---only needs to mirror driver.h to here---;
PDEV ends