Annotation of ntddk/src/video/displays/vga256/i386/lines.inc, revision 1.1.1.1

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

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.