Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

132 lines
4.0 KiB

  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. STYLE_MAX_COUNT equ 16
  13. STYLE_MAX_VALUE equ 3fffh
  14. RUN_MAX equ 20
  15. STRIP_MAX equ 100
  16. STYLE_DENSITY equ 3
  17. ; For the ROP table:
  18. MIX_XOR_OFFSET equ 8
  19. AND_ZERO equ 0
  20. AND_PEN equ 1
  21. AND_NOTPEN equ 2
  22. AND_ONE equ 3
  23. XOR_ZERO equ (AND_ZERO shl MIX_XOR_OFFSET)
  24. XOR_PEN equ (AND_PEN shl MIX_XOR_OFFSET)
  25. XOR_NOTPEN equ (AND_NOTPEN shl MIX_XOR_OFFSET)
  26. XOR_ONE equ (AND_ONE shl MIX_XOR_OFFSET)
  27. ;
  28. ; Flip and round flags:
  29. ;
  30. FL_H_ROUND_DOWN equ 00000080h ; Set if x = 1/2 rounds to x = 1
  31. FL_V_ROUND_DOWN equ 00008000h ; Set if y = 1/2 rounds to y = 1
  32. FL_FLIP_D equ 00000005h ; Diagonal flip
  33. FL_FLIP_V equ 00000008h ; Vertical flip
  34. FL_FLIP_SLOPE_ONE equ 00000010h ; If slope is exactly one
  35. FL_FLIP_HALF equ 00000002h ; Half flip
  36. FL_FLIP_H equ 00000200h ; Horizontal (right-to-left) exchange
  37. FL_ROUND_MASK equ 0000001ch ; Rounding is dependent on diagonal,
  38. FL_ROUND_SHIFT equ 2 ; vertical flips and if slope is one
  39. FL_RECTLCLIP_MASK equ 0000000ch ; When we unflip to do clipping, we
  40. FL_RECTLCLIP_SHIFT equ 2 ; only have to look at diagonal and
  41. ; vertical flips
  42. FL_STRIP_MASK equ 00000003h ; Which strip drawer we call is based
  43. FL_STRIP_SHIFT equ 0 ; on if we did diagonal and/or half
  44. ; flips
  45. FL_SIMPLE_CLIP equ 00000020h ; Denotes our clipping complexity
  46. FL_COMPLEX_CLIP equ 00000040h
  47. FL_CLIP equ (FL_SIMPLE_CLIP + FL_COMPLEX_CLIP)
  48. FL_SET equ 00000800h ; If ROP is such that we don't have to
  49. ; read video memory
  50. FL_ARBITRARYSTYLED equ 00000400h ; If the line is styled
  51. FL_STYLED equ (FL_ARBITRARYSTYLED)
  52. FL_STRIP_ARRAY_MASK equ 00000C00h ; Which strip arrays we look up depends
  53. FL_STRIP_ARRAY_SHIFT equ 10 ; on if we're doing style and/or have
  54. ; a 'set' style ROP
  55. ; Simple flag bits in high byte:
  56. FL_DONT_DO_HALF_FLIP equ 00002000h
  57. ; Miscellaneous DDA defines:
  58. F equ 16
  59. FLOG2 equ 4
  60. STRIPS struc
  61. ; Updated by strip drawers:
  62. ST_pjScreen dd ?
  63. ST_bIsGap dd ?
  64. ST_psp dd ?
  65. ST_spRemaining dd ?
  66. ; Not modified by strip drawers:
  67. ST_lNextScan dd ?
  68. ST_plStripEnd dd ? ; usually won't be valid
  69. ST_flFlips dd ?
  70. ST_pspStart dd ?
  71. ST_pspEnd dd ?
  72. ST_xyDensity dd ?
  73. ST_chAndXor dd ?
  74. ; We leave room for a couple of extra dwords at the end of the strips
  75. ; array that can be used by the strip drawers:
  76. ST_alStrips dd (STRIP_MAX + 2) dup (?)
  77. STRIPS ends
  78. LINESTATE struc
  79. LS_chAndXor dd ?
  80. LS_spTotal dd ?
  81. LS_spTotal2 dd ?
  82. LS_spNext dd ?
  83. LS_spComplex dd ?
  84. LS_aspRtoL dd ?
  85. LS_aspLtoR dd ?
  86. LS_xyDensity dd ?
  87. LS_cStyle dd ?
  88. LS_ulStyleMaskLtoR dd ?
  89. LS_ulStyleMaskRtoL dd ?
  90. LS_bStartIsGap db ?
  91. LS_filler3 db 3 dup (?)
  92. LINESTATE ends
  93. ;
  94. ; This RUN structure must match that in winddi.h!
  95. ;
  96. RUN struc
  97. RUN_iStart dd ?
  98. RUN_iStop dd ?
  99. RUN ends