|
|
1.1 root 1: ;---------------------------- Include File Header ---------------------------;
2: ; lines.inc
3: ;
4: ; Line drawing constants and structures.
5: ;
6: ; NOTE: This file mirrors LINES.H. Changes here must be reflected in
7: ; the .h file!
8: ;
9: ; See lines.h for a description of most defines.
10: ;
11: ;----------------------------------------------------------------------------;
12:
13: STYLE_MAX_COUNT equ 16
14: STYLE_MAX_VALUE equ 3fffh
15: RUN_MAX equ 20
16: STRIP_MAX equ 100
17: STYLE_DENSITY equ 3
18:
19: ; For the ROP table:
20:
21: MIX_XOR_OFFSET equ 8
22:
23: AND_ZERO equ 0
24: AND_PEN equ 1
25: AND_NOTPEN equ 2
26: AND_ONE equ 3
27:
28: XOR_ZERO equ (AND_ZERO shl MIX_XOR_OFFSET)
29: XOR_PEN equ (AND_PEN shl MIX_XOR_OFFSET)
30: XOR_NOTPEN equ (AND_NOTPEN shl MIX_XOR_OFFSET)
31: XOR_ONE equ (AND_ONE shl MIX_XOR_OFFSET)
32:
33: ;
34: ; Flip and round flags:
35: ;
36:
37: FL_H_ROUND_DOWN equ 00000080h ; Set if x = 1/2 rounds to x = 1
38: FL_V_ROUND_DOWN equ 00008000h ; Set if y = 1/2 rounds to y = 1
39:
40: FL_FLIP_D equ 00000005h ; Diagonal flip
41: FL_FLIP_V equ 00000008h ; Vertical flip
42: FL_FLIP_SLOPE_ONE equ 00000010h ; If slope is exactly one
43: FL_FLIP_HALF equ 00000002h ; Half flip
44: FL_FLIP_H equ 00000200h ; Horizontal (right-to-left) exchange
45:
46: FL_ROUND_MASK equ 0000001ch ; Rounding is dependent on diagonal,
47: FL_ROUND_SHIFT equ 2 ; vertical flips and if slope is one
48:
49: FL_RECTLCLIP_MASK equ 0000000ch ; When we unflip to do clipping, we
50: FL_RECTLCLIP_SHIFT equ 2 ; only have to look at diagonal and
51: ; vertical flips
52:
53: FL_STRIP_MASK equ 00000003h ; Which strip drawer we call is based
54: FL_STRIP_SHIFT equ 0 ; on if we did diagonal and/or half
55: ; flips
56:
57: FL_SIMPLE_CLIP equ 00000020h ; Denotes our clipping complexity
58: FL_COMPLEX_CLIP equ 00000040h
59: FL_CLIP equ (FL_SIMPLE_CLIP + FL_COMPLEX_CLIP)
60:
61: FL_SET equ 00000800h ; If ROP is such that we don't have to
62: ; read video memory
63: FL_ARBITRARYSTYLED equ 00000400h ; If the line is styled
64: FL_STYLED equ (FL_ARBITRARYSTYLED)
65:
66: FL_STRIP_ARRAY_MASK equ 00000C00h ; Which strip arrays we look up depends
67: FL_STRIP_ARRAY_SHIFT equ 10 ; on if we're doing style and/or have
68: ; a 'set' style ROP
69:
70: ; Simple flag bits in high byte:
71:
72: FL_DONT_DO_HALF_FLIP equ 00002000h
73:
74: ; Miscellaneous DDA defines:
75:
76: F equ 16
77: FLOG2 equ 4
78:
79: STRIPS struc
80:
81: ; Updated by strip drawers:
82:
83: ST_pjScreen dd ?
84: ST_bIsGap dd ?
85:
86: ST_psp dd ?
87: ST_spRemaining dd ?
88:
89: ; Not modified by strip drawers:
90:
91: ST_lNextScan dd ?
92: ST_plStripEnd dd ? ; usually won't be valid
93: ST_flFlips dd ?
94: ST_pspStart dd ?
95: ST_pspEnd dd ?
96: ST_xyDensity dd ?
97: ST_chAndXor dd ?
98:
99: ; We leave room for a couple of extra dwords at the end of the strips
100: ; array that can be used by the strip drawers:
101:
102: ST_alStrips dd (STRIP_MAX + 2) dup (?)
103: STRIPS ends
104:
105: LINESTATE struc
106: LS_chAndXor dd ?
107: LS_spTotal dd ?
108: LS_spTotal2 dd ?
109: LS_spNext dd ?
110: LS_spComplex dd ?
111:
112: LS_aspRtoL dd ?
113: LS_aspLtoR dd ?
114:
115: LS_xyDensity dd ?
116: LS_cStyle dd ?
117:
118: LS_ulStyleMaskLtoR dd ?
119: LS_ulStyleMaskRtoL dd ?
120:
121: LS_bStartIsGap db ?
122: LS_filler3 db 3 dup (?)
123: LINESTATE ends
124:
125: ;
126: ; This RUN structure must match that in winddi.h!
127: ;
128:
129: RUN struc
130: RUN_iStart dd ?
131: RUN_iStop dd ?
132: RUN ends
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.