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.

717 lines
41 KiB

  1. /****************************************************************************/
  2. // oe2data.c
  3. //
  4. // RDP field encoding global data.
  5. //
  6. // Copyright (C) 1997-2000 Microsoft Corporation
  7. /****************************************************************************/
  8. #include <ndcgdata.h>
  9. #include <aordprot.h>
  10. // Encoding state.
  11. DC_DATA(unsigned, oe2LastOrderType, TS_ENC_PATBLT_ORDER);
  12. DC_DATA(RECTL, oe2LastBounds, { 0 });
  13. /****************************************************************************/
  14. // Field encoding translation tables
  15. //
  16. // Entries can be of fixed size of variable size. Variable size entries
  17. // must be the last in each order structure.
  18. /****************************************************************************/
  19. // Fields can either be signed (INT16 etc), or unsigned (UINT16 etc).
  20. #define SIGNED_FIELD TRUE
  21. #define UNSIGNED_FIELD FALSE
  22. // INT_FMT_FIELD entry flag types.
  23. #define OE2_ETF_FIXED 0x01
  24. #define OE2_ETF_VARIABLE 0x02
  25. #define OE2_ETF_COORDINATES 0x04
  26. #define OE2_ETF_DATA 0x08
  27. #define OE2_ETF_LONG_VARIABLE 0x10
  28. /****************************************************************************/
  29. /* Field is a fixed size */
  30. /* type - The unencoded order structure type */
  31. /* size - The size of the encoded version of the field */
  32. /* signed - Is the field a signed field ? */
  33. /* field - The name of the field in the order structure */
  34. /****************************************************************************/
  35. #define ETABLE_FIXED_ENTRY(type,size,signed,field) \
  36. { (unsigned)FIELDOFFSET(type,field), \
  37. (unsigned)FIELDSIZE(type,field), \
  38. size, \
  39. signed, \
  40. (unsigned)(OE2_ETF_FIXED) }
  41. /****************************************************************************/
  42. /* Field is coordinate of a fixed size */
  43. /* type - The unencoded order structure type */
  44. /* size - The size of the encoded version of the field */
  45. /* signed - Is the field a signed field ? */
  46. /* field - The name of the field in the order structure */
  47. /****************************************************************************/
  48. #define ETABLE_FIXED_COORDS_ENTRY(type,size,signed,field) \
  49. { (unsigned)FIELDOFFSET(type,field), \
  50. (unsigned)FIELDSIZE(type,field), \
  51. size, \
  52. signed, \
  53. (unsigned)(OE2_ETF_FIXED|OE2_ETF_COORDINATES) }
  54. /****************************************************************************/
  55. /* Field is a fixed number of bytes (array?) */
  56. /* type - The unencoded order structure type */
  57. /* size - The number of bytes in the encoded version of the field */
  58. /* signed - Is the field a signed field ? */
  59. /* field - The name of the field in the order structure */
  60. /****************************************************************************/
  61. #define ETABLE_DATA_ENTRY(type,size,signed,field) \
  62. { (unsigned)FIELDOFFSET(type,field), \
  63. (unsigned)FIELDSIZE(type,field), \
  64. size, \
  65. signed, \
  66. (unsigned)(OE2_ETF_FIXED|OE2_ETF_DATA) }
  67. /****************************************************************************/
  68. /* Field is a variable structure with its length encoded in ONE byte and */
  69. /* containing coords of the form */
  70. /* typedef struct */
  71. /* { */
  72. /* UINT32 len; */
  73. /* varType varEntry[len]; */
  74. /* } varStruct */
  75. /* */
  76. /* type - The unencoded order structure type */
  77. /* size - The size of the encoded version of the field */
  78. /* signed - Is the field a signed field ? */
  79. /* field - The name of the field in the order structure (varStruct) */
  80. /* elem - The name of the variable element array (varEntry) */
  81. /****************************************************************************/
  82. #define ETABLE_VARIABLE_ENTRY(type,size,signed,field,elem) \
  83. { (unsigned)FIELDOFFSET(type,field.len), \
  84. (unsigned)FIELDSIZE(type,field.elem[0]), \
  85. size, \
  86. signed, \
  87. (unsigned)(OE2_ETF_VARIABLE)}
  88. /****************************************************************************/
  89. /* Field is a variable structure with its length encoded in TWO bytes and */
  90. /* containing coords of the form */
  91. /* typedef struct */
  92. /* { */
  93. /* UINT32 len; */
  94. /* varType varEntry[len]; */
  95. /* } varStruct */
  96. /* */
  97. /* type - The unencoded order structure type */
  98. /* size - The size of the encoded version of the field */
  99. /* signed - Is the field a signed field ? */
  100. /* field - The name of the field in the order structure (varStruct) */
  101. /* elem - The name of the variable element array (varEntry) */
  102. /****************************************************************************/
  103. #define ETABLE_LONG_VARIABLE_ENTRY(type,size,signed,field,elem) \
  104. { (unsigned)FIELDOFFSET(type,field.len), \
  105. (unsigned)FIELDSIZE(type,field.elem[0]), \
  106. size, \
  107. signed, \
  108. (unsigned)(OE2_ETF_LONG_VARIABLE)}
  109. #ifdef USE_VARIABLE_COORDS
  110. /****************************************************************************/
  111. /* Field is a variable structure with its length encoded in ONE byte and */
  112. /* containing coords of the form */
  113. /* typedef struct */
  114. /* { */
  115. /* UINT32 len; */
  116. /* varCoord varEntry[len]; */
  117. /* } varStruct */
  118. /* */
  119. /* type - The unencoded order structure type */
  120. /* size - The size of the encoded version of the field */
  121. /* signed - Is the field a signed field ? */
  122. /* field - The name of the field in the order structure (varStruct) */
  123. /* elem - The name of the variable element array (varEntry) */
  124. /****************************************************************************/
  125. #define ETABLE_VARIABLE_COORDS_ENTRY(type,size,signed,field,elem) \
  126. { (unsigned)FIELDOFFSET(type,field.len), \
  127. (unsigned)FIELDSIZE(type,field.elem[0]), \
  128. size, \
  129. signed, \
  130. (unsigned)(OE2_ETF_VARIABLE|OE2_ETF_COORDINATES)}
  131. /****************************************************************************/
  132. /* Field is a variable structure with its length encoded in two bytes and */
  133. /* containing coords of the form */
  134. /* typedef struct */
  135. /* { */
  136. /* UINT32 len; */
  137. /* varCoord varEntry[len]; */
  138. /* } varStruct */
  139. /* */
  140. /* type - The unencoded order structure type */
  141. /* size - The size of the encoded version of the field */
  142. /* signed - Is the field a signed field ? */
  143. /* field - The name of the field in the order structure (varStruct) */
  144. /* elem - The name of the variable element array (varEntry) */
  145. /****************************************************************************/
  146. #define ETABLE_LONG_VARIABLE_COORDS_ENTRY(type,size,signed,field,elem) \
  147. { (unsigned)FIELDOFFSET(type,field.len), \
  148. (unsigned)FIELDSIZE(type,field.elem[0]), \
  149. size, \
  150. signed, \
  151. (unsigned)(OE2_ETF_LONG_VARIABLE | OE2_ETF_COORDINATES)}
  152. #endif // USE_VARIABLE_COORDS
  153. // Direct-encoded.
  154. #if 0
  155. /****************************************************************************/
  156. // DSTBLT_ORDER
  157. /****************************************************************************/
  158. DC_CONST_DATA_ARRAY(INT_FMT_FIELD, etable_DB, NUM_DSTBLT_FIELDS,
  159. DC_STRUCT5(
  160. ETABLE_FIXED_COORDS_ENTRY(DSTBLT_ORDER, 2, SIGNED_FIELD, nLeftRect),
  161. ETABLE_FIXED_COORDS_ENTRY(DSTBLT_ORDER, 2, SIGNED_FIELD, nTopRect),
  162. ETABLE_FIXED_COORDS_ENTRY(DSTBLT_ORDER, 2, SIGNED_FIELD, nWidth),
  163. ETABLE_FIXED_COORDS_ENTRY(DSTBLT_ORDER, 2, SIGNED_FIELD, nHeight),
  164. ETABLE_FIXED_ENTRY(DSTBLT_ORDER, 1, UNSIGNED_FIELD, bRop),
  165. ));
  166. #endif
  167. // Direct-encoded.
  168. #if 0
  169. /****************************************************************************/
  170. // PATBLT_ORDER
  171. /****************************************************************************/
  172. DC_CONST_DATA_ARRAY(INT_FMT_FIELD, etable_PB, NUM_PATBLT_FIELDS,
  173. DC_STRUCT12(
  174. ETABLE_FIXED_COORDS_ENTRY(PATBLT_ORDER, 2, SIGNED_FIELD, nLeftRect),
  175. ETABLE_FIXED_COORDS_ENTRY(PATBLT_ORDER, 2, SIGNED_FIELD, nTopRect),
  176. ETABLE_FIXED_COORDS_ENTRY(PATBLT_ORDER, 2, SIGNED_FIELD, nWidth),
  177. ETABLE_FIXED_COORDS_ENTRY(PATBLT_ORDER, 2, SIGNED_FIELD, nHeight),
  178. ETABLE_FIXED_ENTRY(PATBLT_ORDER, 1, UNSIGNED_FIELD, bRop),
  179. ETABLE_DATA_ENTRY(PATBLT_ORDER, 3, UNSIGNED_FIELD, BackColor),
  180. ETABLE_DATA_ENTRY(PATBLT_ORDER, 3, UNSIGNED_FIELD, ForeColor),
  181. ETABLE_FIXED_ENTRY(PATBLT_ORDER, 1, SIGNED_FIELD, BrushOrgX),
  182. ETABLE_FIXED_ENTRY(PATBLT_ORDER, 1, SIGNED_FIELD, BrushOrgY),
  183. ETABLE_FIXED_ENTRY(PATBLT_ORDER, 1, UNSIGNED_FIELD, BrushStyle),
  184. ETABLE_FIXED_ENTRY(PATBLT_ORDER, 1, UNSIGNED_FIELD, BrushHatch),
  185. ETABLE_DATA_ENTRY(PATBLT_ORDER, 7, UNSIGNED_FIELD, BrushExtra),
  186. ));
  187. #endif
  188. /****************************************************************************/
  189. // SCRBLT_ORDER
  190. /****************************************************************************/
  191. DC_CONST_DATA_ARRAY(INT_FMT_FIELD, etable_SB, NUM_SCRBLT_FIELDS,
  192. DC_STRUCT7(
  193. ETABLE_FIXED_COORDS_ENTRY(SCRBLT_ORDER, 2, SIGNED_FIELD, nLeftRect),
  194. ETABLE_FIXED_COORDS_ENTRY(SCRBLT_ORDER, 2, SIGNED_FIELD, nTopRect),
  195. ETABLE_FIXED_COORDS_ENTRY(SCRBLT_ORDER, 2, SIGNED_FIELD, nWidth),
  196. ETABLE_FIXED_COORDS_ENTRY(SCRBLT_ORDER, 2, SIGNED_FIELD, nHeight),
  197. ETABLE_FIXED_ENTRY(SCRBLT_ORDER, 1, UNSIGNED_FIELD, bRop),
  198. ETABLE_FIXED_COORDS_ENTRY(SCRBLT_ORDER, 2, SIGNED_FIELD, nXSrc),
  199. ETABLE_FIXED_COORDS_ENTRY(SCRBLT_ORDER, 2, SIGNED_FIELD, nYSrc)
  200. ));
  201. // Direct-encoded.
  202. #if 0
  203. /****************************************************************************/
  204. // LINETO_ORDER
  205. /****************************************************************************/
  206. DC_CONST_DATA_ARRAY(INT_FMT_FIELD, etable_LT, NUM_LINETO_FIELDS,
  207. DC_STRUCT10(
  208. ETABLE_FIXED_ENTRY(LINETO_ORDER, 2, SIGNED_FIELD, BackMode),
  209. ETABLE_FIXED_COORDS_ENTRY(LINETO_ORDER, 2, SIGNED_FIELD, nXStart),
  210. ETABLE_FIXED_COORDS_ENTRY(LINETO_ORDER, 2, SIGNED_FIELD, nYStart),
  211. ETABLE_FIXED_COORDS_ENTRY(LINETO_ORDER, 2, SIGNED_FIELD, nXEnd),
  212. ETABLE_FIXED_COORDS_ENTRY(LINETO_ORDER, 2, SIGNED_FIELD, nYEnd),
  213. ETABLE_DATA_ENTRY(LINETO_ORDER, 3, UNSIGNED_FIELD, BackColor),
  214. ETABLE_FIXED_ENTRY(LINETO_ORDER, 1, UNSIGNED_FIELD, ROP2),
  215. ETABLE_FIXED_ENTRY(LINETO_ORDER, 1, UNSIGNED_FIELD, PenStyle),
  216. ETABLE_FIXED_ENTRY(LINETO_ORDER, 1, UNSIGNED_FIELD, PenWidth),
  217. ETABLE_DATA_ENTRY(LINETO_ORDER, 3, UNSIGNED_FIELD, PenColor)
  218. ));
  219. #endif
  220. // Direct-encoded.
  221. #if 0
  222. /****************************************************************************/
  223. // MULTI_DSTBLT_ORDER
  224. /****************************************************************************/
  225. DC_CONST_DATA_ARRAY(INT_FMT_FIELD, etable_MD, NUM_MULTI_DSTBLT_FIELDS,
  226. DC_STRUCT7(
  227. ETABLE_FIXED_COORDS_ENTRY(MULTI_DSTBLT_ORDER, 2, SIGNED_FIELD, nLeftRect),
  228. ETABLE_FIXED_COORDS_ENTRY(MULTI_DSTBLT_ORDER, 2, SIGNED_FIELD, nTopRect),
  229. ETABLE_FIXED_COORDS_ENTRY(MULTI_DSTBLT_ORDER, 2, SIGNED_FIELD, nWidth),
  230. ETABLE_FIXED_COORDS_ENTRY(MULTI_DSTBLT_ORDER, 2, SIGNED_FIELD, nHeight),
  231. ETABLE_FIXED_ENTRY (MULTI_DSTBLT_ORDER, 1, UNSIGNED_FIELD, bRop),
  232. ETABLE_FIXED_ENTRY (MULTI_DSTBLT_ORDER, 1, UNSIGNED_FIELD, nDeltaEntries),
  233. ETABLE_LONG_VARIABLE_ENTRY (MULTI_DSTBLT_ORDER, 1, UNSIGNED_FIELD, codedDeltaList, Deltas)
  234. ));
  235. #endif
  236. // Direct-encoded.
  237. #if 0
  238. /****************************************************************************/
  239. // MULTI_PATBLT_ORDER
  240. /****************************************************************************/
  241. DC_CONST_DATA_ARRAY(INT_FMT_FIELD, etable_MP, NUM_MULTI_PATBLT_FIELDS,
  242. DC_STRUCT14(
  243. ETABLE_FIXED_COORDS_ENTRY(MULTI_PATBLT_ORDER, 2, SIGNED_FIELD, nLeftRect),
  244. ETABLE_FIXED_COORDS_ENTRY(MULTI_PATBLT_ORDER, 2, SIGNED_FIELD, nTopRect),
  245. ETABLE_FIXED_COORDS_ENTRY(MULTI_PATBLT_ORDER, 2, SIGNED_FIELD, nWidth),
  246. ETABLE_FIXED_COORDS_ENTRY(MULTI_PATBLT_ORDER, 2, SIGNED_FIELD, nHeight),
  247. ETABLE_FIXED_ENTRY (MULTI_PATBLT_ORDER, 1, UNSIGNED_FIELD, bRop),
  248. ETABLE_DATA_ENTRY (MULTI_PATBLT_ORDER, 3, UNSIGNED_FIELD, BackColor),
  249. ETABLE_DATA_ENTRY (MULTI_PATBLT_ORDER, 3, UNSIGNED_FIELD, ForeColor),
  250. ETABLE_FIXED_ENTRY (MULTI_PATBLT_ORDER, 1, SIGNED_FIELD, BrushOrgX),
  251. ETABLE_FIXED_ENTRY (MULTI_PATBLT_ORDER, 1, SIGNED_FIELD, BrushOrgY),
  252. ETABLE_FIXED_ENTRY (MULTI_PATBLT_ORDER, 1, UNSIGNED_FIELD, BrushStyle),
  253. ETABLE_FIXED_ENTRY (MULTI_PATBLT_ORDER, 1, UNSIGNED_FIELD, BrushHatch),
  254. ETABLE_DATA_ENTRY (MULTI_PATBLT_ORDER, 7, UNSIGNED_FIELD, BrushExtra),
  255. ETABLE_FIXED_ENTRY (MULTI_PATBLT_ORDER, 1, UNSIGNED_FIELD, nDeltaEntries),
  256. ETABLE_LONG_VARIABLE_ENTRY(MULTI_PATBLT_ORDER, 1, UNSIGNED_FIELD, codedDeltaList, Deltas)
  257. ));
  258. #endif
  259. /****************************************************************************/
  260. // MULTI_SCRBLT_ORDER
  261. /****************************************************************************/
  262. DC_CONST_DATA_ARRAY(INT_FMT_FIELD, etable_MS, NUM_MULTI_SCRBLT_FIELDS,
  263. DC_STRUCT9(
  264. ETABLE_FIXED_COORDS_ENTRY(MULTI_SCRBLT_ORDER, 2, SIGNED_FIELD, nLeftRect),
  265. ETABLE_FIXED_COORDS_ENTRY(MULTI_SCRBLT_ORDER, 2, SIGNED_FIELD, nTopRect),
  266. ETABLE_FIXED_COORDS_ENTRY(MULTI_SCRBLT_ORDER, 2, SIGNED_FIELD, nWidth),
  267. ETABLE_FIXED_COORDS_ENTRY(MULTI_SCRBLT_ORDER, 2, SIGNED_FIELD, nHeight),
  268. ETABLE_FIXED_ENTRY (MULTI_SCRBLT_ORDER, 1, UNSIGNED_FIELD, bRop),
  269. ETABLE_FIXED_COORDS_ENTRY(MULTI_SCRBLT_ORDER, 2, SIGNED_FIELD, nXSrc),
  270. ETABLE_FIXED_COORDS_ENTRY(MULTI_SCRBLT_ORDER, 2, SIGNED_FIELD, nYSrc),
  271. ETABLE_FIXED_ENTRY (MULTI_SCRBLT_ORDER, 1, UNSIGNED_FIELD, nDeltaEntries),
  272. ETABLE_LONG_VARIABLE_ENTRY (MULTI_SCRBLT_ORDER, 1, UNSIGNED_FIELD, codedDeltaList, Deltas)
  273. ));
  274. // Direct-encoded.
  275. #if 0
  276. /****************************************************************************/
  277. // MULTI_OPAQUERECT_ORDER
  278. /****************************************************************************/
  279. DC_CONST_DATA_ARRAY(INT_FMT_FIELD, etable_MO, NUM_MULTI_OPAQUERECT_FIELDS,
  280. DC_STRUCT9(
  281. ETABLE_FIXED_COORDS_ENTRY(MULTI_OPAQUERECT_ORDER, 2, SIGNED_FIELD, nLeftRect),
  282. ETABLE_FIXED_COORDS_ENTRY(MULTI_OPAQUERECT_ORDER, 2, SIGNED_FIELD, nTopRect),
  283. ETABLE_FIXED_COORDS_ENTRY(MULTI_OPAQUERECT_ORDER, 2, SIGNED_FIELD, nWidth),
  284. ETABLE_FIXED_COORDS_ENTRY(MULTI_OPAQUERECT_ORDER, 2, SIGNED_FIELD, nHeight),
  285. ETABLE_DATA_ENTRY (MULTI_OPAQUERECT_ORDER, 1, UNSIGNED_FIELD, Color.u.rgb.red),
  286. ETABLE_DATA_ENTRY (MULTI_OPAQUERECT_ORDER, 1, UNSIGNED_FIELD, Color.u.rgb.green),
  287. ETABLE_DATA_ENTRY (MULTI_OPAQUERECT_ORDER, 1, UNSIGNED_FIELD, Color.u.rgb.blue),
  288. ETABLE_FIXED_ENTRY (MULTI_OPAQUERECT_ORDER, 1, UNSIGNED_FIELD, nDeltaEntries),
  289. ETABLE_LONG_VARIABLE_ENTRY (MULTI_OPAQUERECT_ORDER, 1, UNSIGNED_FIELD, codedDeltaList, Deltas)
  290. ));
  291. #endif
  292. /****************************************************************************/
  293. // FAST_INDEX_ORDER
  294. /****************************************************************************/
  295. DC_CONST_DATA_ARRAY(INT_FMT_FIELD, etable_FI, NUM_FAST_INDEX_FIELDS,
  296. DC_STRUCT15(
  297. ETABLE_DATA_ENTRY(FAST_INDEX_ORDER, 1, UNSIGNED_FIELD, cacheId),
  298. ETABLE_DATA_ENTRY(FAST_INDEX_ORDER, 2, UNSIGNED_FIELD, fDrawing),
  299. ETABLE_DATA_ENTRY(FAST_INDEX_ORDER, 3, UNSIGNED_FIELD, BackColor),
  300. ETABLE_DATA_ENTRY(FAST_INDEX_ORDER, 3, UNSIGNED_FIELD, ForeColor),
  301. ETABLE_FIXED_COORDS_ENTRY(FAST_INDEX_ORDER, 2, SIGNED_FIELD, BkLeft),
  302. ETABLE_FIXED_COORDS_ENTRY(FAST_INDEX_ORDER, 2, SIGNED_FIELD, BkTop),
  303. ETABLE_FIXED_COORDS_ENTRY(FAST_INDEX_ORDER, 2, SIGNED_FIELD, BkRight),
  304. ETABLE_FIXED_COORDS_ENTRY(FAST_INDEX_ORDER, 2, SIGNED_FIELD, BkBottom),
  305. ETABLE_FIXED_COORDS_ENTRY(FAST_INDEX_ORDER, 2, SIGNED_FIELD, OpLeft),
  306. ETABLE_FIXED_COORDS_ENTRY(FAST_INDEX_ORDER, 2, SIGNED_FIELD, OpTop),
  307. ETABLE_FIXED_COORDS_ENTRY(FAST_INDEX_ORDER, 2, SIGNED_FIELD, OpRight),
  308. ETABLE_FIXED_COORDS_ENTRY(FAST_INDEX_ORDER, 2, SIGNED_FIELD, OpBottom),
  309. ETABLE_FIXED_COORDS_ENTRY(FAST_INDEX_ORDER, 2, SIGNED_FIELD, x),
  310. ETABLE_FIXED_COORDS_ENTRY(FAST_INDEX_ORDER, 2, SIGNED_FIELD, y),
  311. ETABLE_VARIABLE_ENTRY(FAST_INDEX_ORDER, 1, UNSIGNED_FIELD, variableBytes, arecs)
  312. ));
  313. /****************************************************************************/
  314. // POLYGON_SC_ORDER
  315. /****************************************************************************/
  316. DC_CONST_DATA_ARRAY(INT_FMT_FIELD, etable_CG, NUM_POLYGON_SC_FIELDS,
  317. DC_STRUCT7(
  318. ETABLE_FIXED_COORDS_ENTRY(POLYGON_SC_ORDER, 2, SIGNED_FIELD, XStart),
  319. ETABLE_FIXED_COORDS_ENTRY(POLYGON_SC_ORDER, 2, SIGNED_FIELD, YStart),
  320. ETABLE_FIXED_ENTRY(POLYGON_SC_ORDER, 1, UNSIGNED_FIELD, ROP2),
  321. ETABLE_FIXED_ENTRY(POLYGON_SC_ORDER, 1, UNSIGNED_FIELD, FillMode),
  322. ETABLE_DATA_ENTRY(POLYGON_SC_ORDER, 3, UNSIGNED_FIELD, BrushColor),
  323. ETABLE_FIXED_ENTRY(POLYGON_SC_ORDER, 1, UNSIGNED_FIELD,
  324. NumDeltaEntries),
  325. ETABLE_VARIABLE_ENTRY(POLYGON_SC_ORDER, 1, UNSIGNED_FIELD,
  326. CodedDeltaList, Deltas)
  327. ));
  328. /****************************************************************************/
  329. // POLYGON_CB_ORDER
  330. /****************************************************************************/
  331. DC_CONST_DATA_ARRAY(INT_FMT_FIELD, etable_BG, NUM_POLYGON_CB_FIELDS,
  332. DC_STRUCT13(
  333. ETABLE_FIXED_COORDS_ENTRY(POLYGON_CB_ORDER, 2, SIGNED_FIELD, XStart),
  334. ETABLE_FIXED_COORDS_ENTRY(POLYGON_CB_ORDER, 2, SIGNED_FIELD, YStart),
  335. ETABLE_FIXED_ENTRY(POLYGON_CB_ORDER, 1, UNSIGNED_FIELD, ROP2),
  336. ETABLE_FIXED_ENTRY(POLYGON_CB_ORDER, 1, UNSIGNED_FIELD, FillMode),
  337. ETABLE_DATA_ENTRY(POLYGON_CB_ORDER, 3, UNSIGNED_FIELD, BackColor),
  338. ETABLE_DATA_ENTRY(POLYGON_CB_ORDER, 3, UNSIGNED_FIELD, ForeColor),
  339. ETABLE_FIXED_ENTRY(POLYGON_CB_ORDER, 1, SIGNED_FIELD, BrushOrgX),
  340. ETABLE_FIXED_ENTRY(POLYGON_CB_ORDER, 1, SIGNED_FIELD, BrushOrgY),
  341. ETABLE_FIXED_ENTRY(POLYGON_CB_ORDER, 1, UNSIGNED_FIELD, BrushStyle),
  342. ETABLE_FIXED_ENTRY(POLYGON_CB_ORDER, 1, UNSIGNED_FIELD, BrushHatch),
  343. ETABLE_DATA_ENTRY(POLYGON_CB_ORDER, 7, UNSIGNED_FIELD, BrushExtra),
  344. ETABLE_FIXED_ENTRY(POLYGON_CB_ORDER, 1, UNSIGNED_FIELD,
  345. NumDeltaEntries),
  346. ETABLE_VARIABLE_ENTRY(POLYGON_CB_ORDER, 1, UNSIGNED_FIELD,
  347. CodedDeltaList, Deltas)
  348. ));
  349. // Direct-encoded.
  350. #if 0
  351. /****************************************************************************/
  352. // POLYLINE_ORDER
  353. /****************************************************************************/
  354. DC_CONST_DATA_ARRAY(INT_FMT_FIELD, etable_PL, NUM_POLYLINE_FIELDS,
  355. DC_STRUCT7(
  356. ETABLE_FIXED_COORDS_ENTRY(POLYLINE_ORDER, 2, SIGNED_FIELD, XStart),
  357. ETABLE_FIXED_COORDS_ENTRY(POLYLINE_ORDER, 2, SIGNED_FIELD, YStart),
  358. ETABLE_FIXED_ENTRY(POLYLINE_ORDER, 1, UNSIGNED_FIELD, ROP2),
  359. ETABLE_FIXED_ENTRY(POLYLINE_ORDER, 2, UNSIGNED_FIELD,
  360. BrushCacheEntry),
  361. ETABLE_DATA_ENTRY(POLYLINE_ORDER, 3, UNSIGNED_FIELD, PenColor),
  362. ETABLE_FIXED_ENTRY(POLYLINE_ORDER, 1, UNSIGNED_FIELD,
  363. NumDeltaEntries),
  364. ETABLE_VARIABLE_ENTRY(POLYLINE_ORDER, 1, UNSIGNED_FIELD,
  365. CodedDeltaList, Deltas)
  366. ));
  367. #endif
  368. // Direct-encoded.
  369. #if 0
  370. /****************************************************************************/
  371. // OPAQUERECT_ORDER
  372. /****************************************************************************/
  373. DC_CONST_DATA_ARRAY(INT_FMT_FIELD, etable_OR, NUM_OPAQUERECT_FIELDS,
  374. DC_STRUCT7(
  375. ETABLE_FIXED_COORDS_ENTRY(OPAQUERECT_ORDER, 2, SIGNED_FIELD,
  376. nLeftRect),
  377. ETABLE_FIXED_COORDS_ENTRY(OPAQUERECT_ORDER, 2, SIGNED_FIELD,
  378. nTopRect),
  379. ETABLE_FIXED_COORDS_ENTRY(OPAQUERECT_ORDER, 2, SIGNED_FIELD, nWidth),
  380. ETABLE_FIXED_COORDS_ENTRY(OPAQUERECT_ORDER, 2, SIGNED_FIELD, nHeight),
  381. ETABLE_DATA_ENTRY(OPAQUERECT_ORDER, 1, UNSIGNED_FIELD,
  382. Color.u.rgb.red),
  383. ETABLE_DATA_ENTRY(OPAQUERECT_ORDER, 1, UNSIGNED_FIELD,
  384. Color.u.rgb.green),
  385. ETABLE_DATA_ENTRY(OPAQUERECT_ORDER, 1, UNSIGNED_FIELD,
  386. Color.u.rgb.blue)
  387. ));
  388. #endif
  389. /****************************************************************************/
  390. // SAVEBITMAP_ORDER
  391. /****************************************************************************/
  392. DC_CONST_DATA_ARRAY(INT_FMT_FIELD, etable_SV, NUM_SAVEBITMAP_FIELDS,
  393. DC_STRUCT6(
  394. ETABLE_FIXED_ENTRY(SAVEBITMAP_ORDER, 4, UNSIGNED_FIELD,
  395. SavedBitmapPosition),
  396. ETABLE_FIXED_COORDS_ENTRY(SAVEBITMAP_ORDER, 2, SIGNED_FIELD,
  397. nLeftRect),
  398. ETABLE_FIXED_COORDS_ENTRY(SAVEBITMAP_ORDER, 2, SIGNED_FIELD,
  399. nTopRect),
  400. ETABLE_FIXED_COORDS_ENTRY(SAVEBITMAP_ORDER, 2, SIGNED_FIELD,
  401. nRightRect),
  402. ETABLE_FIXED_COORDS_ENTRY(SAVEBITMAP_ORDER, 2, SIGNED_FIELD,
  403. nBottomRect),
  404. ETABLE_FIXED_ENTRY(SAVEBITMAP_ORDER, 1, UNSIGNED_FIELD, Operation)
  405. ));
  406. // Direct encoded.
  407. #if 0
  408. /****************************************************************************/
  409. // MEMBLT_R2_ORDER
  410. /****************************************************************************/
  411. DC_CONST_DATA_ARRAY(INT_FMT_FIELD, etable_MC, NUM_MEMBLT_FIELDS,
  412. DC_STRUCT9(
  413. ETABLE_FIXED_ENTRY(MEMBLT_R2_ORDER, 2, UNSIGNED_FIELD, Common.cacheId),
  414. ETABLE_FIXED_COORDS_ENTRY(MEMBLT_R2_ORDER, 2, SIGNED_FIELD,
  415. Common.nLeftRect),
  416. ETABLE_FIXED_COORDS_ENTRY(MEMBLT_R2_ORDER, 2, SIGNED_FIELD,
  417. Common.nTopRect),
  418. ETABLE_FIXED_COORDS_ENTRY(MEMBLT_R2_ORDER, 2, SIGNED_FIELD,
  419. Common.nWidth),
  420. ETABLE_FIXED_COORDS_ENTRY(MEMBLT_R2_ORDER, 2, SIGNED_FIELD,
  421. Common.nHeight),
  422. ETABLE_FIXED_ENTRY(MEMBLT_R2_ORDER, 1, UNSIGNED_FIELD,
  423. Common.bRop),
  424. ETABLE_FIXED_COORDS_ENTRY(MEMBLT_R2_ORDER, 2, SIGNED_FIELD,
  425. Common.nXSrc),
  426. ETABLE_FIXED_COORDS_ENTRY(MEMBLT_R2_ORDER, 2, SIGNED_FIELD,
  427. Common.nYSrc),
  428. ETABLE_FIXED_ENTRY(MEMBLT_R2_ORDER, 2, UNSIGNED_FIELD,
  429. Common.cacheIndex)
  430. ));
  431. #endif
  432. /****************************************************************************/
  433. // MEM3BLT_R2_ORDER
  434. /****************************************************************************/
  435. DC_CONST_DATA_ARRAY(INT_FMT_FIELD, etable_3C, NUM_MEM3BLT_FIELDS,
  436. DC_STRUCT16(
  437. ETABLE_FIXED_ENTRY(MEM3BLT_R2_ORDER, 2, UNSIGNED_FIELD,
  438. Common.cacheId),
  439. ETABLE_FIXED_COORDS_ENTRY(MEM3BLT_R2_ORDER, 2, SIGNED_FIELD,
  440. Common.nLeftRect),
  441. ETABLE_FIXED_COORDS_ENTRY(MEM3BLT_R2_ORDER, 2, SIGNED_FIELD,
  442. Common.nTopRect),
  443. ETABLE_FIXED_COORDS_ENTRY(MEM3BLT_R2_ORDER, 2, SIGNED_FIELD,
  444. Common.nWidth),
  445. ETABLE_FIXED_COORDS_ENTRY(MEM3BLT_R2_ORDER, 2, SIGNED_FIELD,
  446. Common.nHeight),
  447. ETABLE_FIXED_ENTRY(MEM3BLT_R2_ORDER, 1, UNSIGNED_FIELD,
  448. Common.bRop),
  449. ETABLE_FIXED_COORDS_ENTRY(MEM3BLT_R2_ORDER, 2, SIGNED_FIELD,
  450. Common.nXSrc),
  451. ETABLE_FIXED_COORDS_ENTRY(MEM3BLT_R2_ORDER, 2, SIGNED_FIELD,
  452. Common.nYSrc),
  453. ETABLE_FIXED_ENTRY(MEM3BLT_R2_ORDER, 3, UNSIGNED_FIELD, BackColor),
  454. ETABLE_FIXED_ENTRY(MEM3BLT_R2_ORDER, 3, UNSIGNED_FIELD, ForeColor),
  455. ETABLE_FIXED_ENTRY(MEM3BLT_R2_ORDER, 1, SIGNED_FIELD, BrushOrgX),
  456. ETABLE_FIXED_ENTRY(MEM3BLT_R2_ORDER, 1, SIGNED_FIELD, BrushOrgY),
  457. ETABLE_FIXED_ENTRY(MEM3BLT_R2_ORDER, 1, UNSIGNED_FIELD, BrushStyle),
  458. ETABLE_FIXED_ENTRY(MEM3BLT_R2_ORDER, 1, UNSIGNED_FIELD, BrushHatch),
  459. ETABLE_FIXED_ENTRY(MEM3BLT_R2_ORDER, 7, UNSIGNED_FIELD, BrushExtra),
  460. ETABLE_FIXED_ENTRY(MEM3BLT_R2_ORDER, 2, UNSIGNED_FIELD,
  461. Common.cacheIndex)
  462. ));
  463. /****************************************************************************/
  464. // FAST_GLYPH_ORDER
  465. /****************************************************************************/
  466. DC_CONST_DATA_ARRAY(INT_FMT_FIELD, etable_FG, NUM_FAST_GLYPH_FIELDS,
  467. DC_STRUCT15(
  468. ETABLE_DATA_ENTRY(FAST_GLYPH_ORDER, 1, UNSIGNED_FIELD, cacheId),
  469. ETABLE_DATA_ENTRY(FAST_GLYPH_ORDER, 2, UNSIGNED_FIELD, fDrawing),
  470. ETABLE_DATA_ENTRY(FAST_GLYPH_ORDER, 3, UNSIGNED_FIELD, BackColor),
  471. ETABLE_DATA_ENTRY(FAST_GLYPH_ORDER, 3, UNSIGNED_FIELD, ForeColor),
  472. ETABLE_FIXED_COORDS_ENTRY(FAST_GLYPH_ORDER, 2, SIGNED_FIELD, BkLeft),
  473. ETABLE_FIXED_COORDS_ENTRY(FAST_GLYPH_ORDER, 2, SIGNED_FIELD, BkTop),
  474. ETABLE_FIXED_COORDS_ENTRY(FAST_GLYPH_ORDER, 2, SIGNED_FIELD, BkRight),
  475. ETABLE_FIXED_COORDS_ENTRY(FAST_GLYPH_ORDER, 2, SIGNED_FIELD, BkBottom),
  476. ETABLE_FIXED_COORDS_ENTRY(FAST_GLYPH_ORDER, 2, SIGNED_FIELD, OpLeft),
  477. ETABLE_FIXED_COORDS_ENTRY(FAST_GLYPH_ORDER, 2, SIGNED_FIELD, OpTop),
  478. ETABLE_FIXED_COORDS_ENTRY(FAST_GLYPH_ORDER, 2, SIGNED_FIELD, OpRight),
  479. ETABLE_FIXED_COORDS_ENTRY(FAST_GLYPH_ORDER, 2, SIGNED_FIELD, OpBottom),
  480. ETABLE_FIXED_COORDS_ENTRY(FAST_GLYPH_ORDER, 2, SIGNED_FIELD, x),
  481. ETABLE_FIXED_COORDS_ENTRY(FAST_GLYPH_ORDER, 2, SIGNED_FIELD, y),
  482. ETABLE_VARIABLE_ENTRY(FAST_GLYPH_ORDER, 1, UNSIGNED_FIELD,
  483. variableBytes, glyphData)
  484. ));
  485. /****************************************************************************/
  486. // ELLIPSE_SC_ORDER
  487. /****************************************************************************/
  488. DC_CONST_DATA_ARRAY(INT_FMT_FIELD, etable_EC, NUM_ELLIPSE_SC_FIELDS,
  489. DC_STRUCT7(
  490. ETABLE_FIXED_COORDS_ENTRY(ELLIPSE_SC_ORDER, 2, SIGNED_FIELD, LeftRect),
  491. ETABLE_FIXED_COORDS_ENTRY(ELLIPSE_SC_ORDER, 2, SIGNED_FIELD, TopRect),
  492. ETABLE_FIXED_COORDS_ENTRY(ELLIPSE_SC_ORDER, 2, SIGNED_FIELD, RightRect),
  493. ETABLE_FIXED_COORDS_ENTRY(ELLIPSE_SC_ORDER, 2, SIGNED_FIELD, BottomRect),
  494. ETABLE_FIXED_ENTRY(ELLIPSE_SC_ORDER, 1, UNSIGNED_FIELD, ROP2),
  495. ETABLE_FIXED_ENTRY(ELLIPSE_SC_ORDER, 1, UNSIGNED_FIELD, FillMode),
  496. ETABLE_DATA_ENTRY(ELLIPSE_SC_ORDER, 3, UNSIGNED_FIELD, Color)
  497. ));
  498. /****************************************************************************/
  499. // ELLIPSE_CB_ORDER
  500. /****************************************************************************/
  501. DC_CONST_DATA_ARRAY(INT_FMT_FIELD, etable_EB, NUM_ELLIPSE_CB_FIELDS,
  502. DC_STRUCT13(
  503. ETABLE_FIXED_COORDS_ENTRY(ELLIPSE_CB_ORDER, 2, SIGNED_FIELD, LeftRect),
  504. ETABLE_FIXED_COORDS_ENTRY(ELLIPSE_CB_ORDER, 2, SIGNED_FIELD, TopRect),
  505. ETABLE_FIXED_COORDS_ENTRY(ELLIPSE_CB_ORDER, 2, SIGNED_FIELD, RightRect),
  506. ETABLE_FIXED_COORDS_ENTRY(ELLIPSE_CB_ORDER, 2, SIGNED_FIELD, BottomRect),
  507. ETABLE_FIXED_ENTRY(ELLIPSE_CB_ORDER, 1, UNSIGNED_FIELD, ROP2),
  508. ETABLE_FIXED_ENTRY(ELLIPSE_CB_ORDER, 1, UNSIGNED_FIELD, FillMode),
  509. ETABLE_DATA_ENTRY(ELLIPSE_CB_ORDER, 3, UNSIGNED_FIELD, BackColor),
  510. ETABLE_DATA_ENTRY(ELLIPSE_CB_ORDER, 3, UNSIGNED_FIELD, ForeColor),
  511. ETABLE_FIXED_ENTRY(ELLIPSE_CB_ORDER, 1, SIGNED_FIELD, BrushOrgX),
  512. ETABLE_FIXED_ENTRY(ELLIPSE_CB_ORDER, 1, SIGNED_FIELD, BrushOrgY),
  513. ETABLE_FIXED_ENTRY(ELLIPSE_CB_ORDER, 1, UNSIGNED_FIELD, BrushStyle),
  514. ETABLE_FIXED_ENTRY(ELLIPSE_CB_ORDER, 1, UNSIGNED_FIELD, BrushHatch),
  515. ETABLE_DATA_ENTRY(ELLIPSE_CB_ORDER, 7, UNSIGNED_FIELD, BrushExtra)
  516. ));
  517. /****************************************************************************/
  518. // (Glyph)INDEX_ORDER
  519. /****************************************************************************/
  520. DC_CONST_DATA_ARRAY(INT_FMT_FIELD, etable_GI, NUM_INDEX_FIELDS,
  521. DC_STRUCT22(
  522. ETABLE_DATA_ENTRY(INDEX_ORDER, 1, UNSIGNED_FIELD, cacheId),
  523. ETABLE_DATA_ENTRY(INDEX_ORDER, 1, UNSIGNED_FIELD, flAccel),
  524. ETABLE_DATA_ENTRY(INDEX_ORDER, 1, UNSIGNED_FIELD, ulCharInc),
  525. ETABLE_DATA_ENTRY(INDEX_ORDER, 1, UNSIGNED_FIELD, fOpRedundant),
  526. ETABLE_DATA_ENTRY(INDEX_ORDER, 3, UNSIGNED_FIELD, BackColor),
  527. ETABLE_DATA_ENTRY(INDEX_ORDER, 3, UNSIGNED_FIELD, ForeColor),
  528. ETABLE_FIXED_ENTRY(INDEX_ORDER, 2, SIGNED_FIELD, BkLeft),
  529. ETABLE_FIXED_ENTRY(INDEX_ORDER, 2, SIGNED_FIELD, BkTop),
  530. ETABLE_FIXED_ENTRY(INDEX_ORDER, 2, SIGNED_FIELD, BkRight),
  531. ETABLE_FIXED_ENTRY(INDEX_ORDER, 2, SIGNED_FIELD, BkBottom),
  532. ETABLE_FIXED_ENTRY(INDEX_ORDER, 2, SIGNED_FIELD, OpLeft),
  533. ETABLE_FIXED_ENTRY(INDEX_ORDER, 2, SIGNED_FIELD, OpTop),
  534. ETABLE_FIXED_ENTRY(INDEX_ORDER, 2, SIGNED_FIELD, OpRight),
  535. ETABLE_FIXED_ENTRY(INDEX_ORDER, 2, SIGNED_FIELD, OpBottom),
  536. ETABLE_FIXED_ENTRY(INDEX_ORDER, 1, SIGNED_FIELD, BrushOrgX),
  537. ETABLE_FIXED_ENTRY(INDEX_ORDER, 1, SIGNED_FIELD, BrushOrgY),
  538. ETABLE_FIXED_ENTRY(INDEX_ORDER, 1, UNSIGNED_FIELD, BrushStyle),
  539. ETABLE_FIXED_ENTRY(INDEX_ORDER, 1, UNSIGNED_FIELD, BrushHatch),
  540. ETABLE_DATA_ENTRY (INDEX_ORDER, 7, UNSIGNED_FIELD, BrushExtra),
  541. ETABLE_FIXED_ENTRY(INDEX_ORDER, 2, SIGNED_FIELD, x),
  542. ETABLE_FIXED_ENTRY(INDEX_ORDER, 2, SIGNED_FIELD, y),
  543. ETABLE_VARIABLE_ENTRY(INDEX_ORDER, 1, UNSIGNED_FIELD,
  544. variableBytes, arecs)
  545. ));
  546. #ifdef DRAW_NINEGRID
  547. /****************************************************************************/
  548. // DRAWNINEGRID_ORDER
  549. /****************************************************************************/
  550. DC_CONST_DATA_ARRAY(INT_FMT_FIELD, etable_NG, NUM_DRAWNINEGRID_FIELDS,
  551. DC_STRUCT5(
  552. ETABLE_FIXED_COORDS_ENTRY(DRAWNINEGRID_ORDER, 2, SIGNED_FIELD, srcLeft),
  553. ETABLE_FIXED_COORDS_ENTRY(DRAWNINEGRID_ORDER, 2, SIGNED_FIELD, srcTop),
  554. ETABLE_FIXED_COORDS_ENTRY(DRAWNINEGRID_ORDER, 2, SIGNED_FIELD, srcRight),
  555. ETABLE_FIXED_COORDS_ENTRY(DRAWNINEGRID_ORDER, 2, SIGNED_FIELD, srcBottom),
  556. ETABLE_FIXED_ENTRY (DRAWNINEGRID_ORDER, 2, UNSIGNED_FIELD, bitmapId)
  557. ));
  558. /****************************************************************************/
  559. // MULTI_DRAWNINEGRID_ORDER
  560. /****************************************************************************/
  561. DC_CONST_DATA_ARRAY(INT_FMT_FIELD, etable_MG, NUM_MULTI_DRAWNINEGRID_FIELDS,
  562. DC_STRUCT7(
  563. ETABLE_FIXED_COORDS_ENTRY(MULTI_DRAWNINEGRID_ORDER, 2, SIGNED_FIELD, srcLeft),
  564. ETABLE_FIXED_COORDS_ENTRY(MULTI_DRAWNINEGRID_ORDER, 2, SIGNED_FIELD, srcTop),
  565. ETABLE_FIXED_COORDS_ENTRY(MULTI_DRAWNINEGRID_ORDER, 2, SIGNED_FIELD, srcRight),
  566. ETABLE_FIXED_COORDS_ENTRY(MULTI_DRAWNINEGRID_ORDER, 2, SIGNED_FIELD, srcBottom),
  567. ETABLE_FIXED_ENTRY (MULTI_DRAWNINEGRID_ORDER, 2, UNSIGNED_FIELD, bitmapId),
  568. ETABLE_FIXED_ENTRY (MULTI_DRAWNINEGRID_ORDER, 1, UNSIGNED_FIELD, nDeltaEntries),
  569. ETABLE_LONG_VARIABLE_ENTRY (MULTI_DRAWNINEGRID_ORDER, 1, UNSIGNED_FIELD, codedDeltaList, Deltas)
  570. ));
  571. #endif
  572. #ifdef DC_DEBUG
  573. /****************************************************************************/
  574. // Primary order information table. Used to make sure params passed into
  575. // OE2 functions make sense.
  576. /****************************************************************************/
  577. typedef struct
  578. {
  579. PINT_FMT_FIELD pFieldTable;
  580. unsigned NumFields;
  581. unsigned MaxSize;
  582. } OE2_PRIMARY_ORDER_ATTRIBUTES;
  583. #ifdef DRAW_NINEGRID
  584. DC_CONST_DATA_ARRAY(OE2_PRIMARY_ORDER_ATTRIBUTES, OE2OrdAttr, TS_MAX_ORDERS,
  585. DC_STRUCT32(
  586. DC_STRUCT3(NULL, NUM_DSTBLT_FIELDS, MAX_DSTBLT_FIELD_SIZE), // direct-encode order
  587. DC_STRUCT3(NULL, NUM_PATBLT_FIELDS, MAX_PATBLT_FIELD_SIZE), // direct-encode order
  588. DC_STRUCT3(etable_SB, NUM_SCRBLT_FIELDS, MAX_SCRBLT_FIELD_SIZE),
  589. DC_STRUCT3(NULL, 0, 0),
  590. DC_STRUCT3(NULL, 0, 0),
  591. DC_STRUCT3(NULL, 0, 0),
  592. DC_STRUCT3(NULL, 0, 0),
  593. DC_STRUCT3(etable_NG, NUM_DRAWNINEGRID_FIELDS, MAX_DRAWNINEGRID_FIELD_SIZE),
  594. DC_STRUCT3(etable_MG, NUM_MULTI_DRAWNINEGRID_FIELDS, MAX_MULTI_DRAWNINEGRID_FIELD_SIZE),
  595. DC_STRUCT3(NULL, NUM_LINETO_FIELDS, MAX_LINETO_FIELD_SIZE), // direct-encode order
  596. DC_STRUCT3(NULL, NUM_OPAQUERECT_FIELDS, MAX_OPAQUERECT_FIELD_SIZE), // direct-encode order
  597. DC_STRUCT3(etable_SV, NUM_SAVEBITMAP_FIELDS, MAX_SAVEBITMAP_FIELD_SIZE),
  598. DC_STRUCT3(NULL, 0, 0),
  599. DC_STRUCT3(NULL, NUM_MEMBLT_FIELDS, MAX_MEMBLT_FIELD_SIZE), // etable_MC not used (fast fath)
  600. DC_STRUCT3(etable_3C, NUM_MEM3BLT_FIELDS, MAX_MEM3BLT_FIELD_SIZE),
  601. DC_STRUCT3(NULL, NUM_MULTI_DSTBLT_FIELDS, MAX_MULTI_DSTBLT_FIELD_SIZE), // direct-encode order
  602. DC_STRUCT3(NULL, NUM_MULTI_PATBLT_FIELDS, MAX_MULTI_PATBLT_FIELD_SIZE), // direct-encode order
  603. DC_STRUCT3(etable_MS, NUM_MULTI_SCRBLT_FIELDS, MAX_MULTI_SCRBLT_FIELD_SIZE),
  604. DC_STRUCT3(NULL, NUM_MULTI_OPAQUERECT_FIELDS, MAX_MULTI_OPAQUERECT_FIELD_SIZE), // direct-encode order
  605. DC_STRUCT3(etable_FI, NUM_FAST_INDEX_FIELDS, MAX_FAST_INDEX_FIELD_SIZE),
  606. DC_STRUCT3(etable_CG, NUM_POLYGON_SC_FIELDS, MAX_POLYGON_SC_FIELD_SIZE),
  607. DC_STRUCT3(etable_BG, NUM_POLYGON_CB_FIELDS, MAX_POLYGON_CB_FIELD_SIZE),
  608. DC_STRUCT3(NULL, NUM_POLYLINE_FIELDS, MAX_POLYLINE_FIELD_SIZE), // direct-encode order
  609. DC_STRUCT3(NULL, 0, 0),
  610. DC_STRUCT3(etable_FG, NUM_FAST_GLYPH_FIELDS, MAX_FAST_GLYPH_FIELD_SIZE),
  611. DC_STRUCT3(etable_EC, NUM_ELLIPSE_SC_FIELDS, MAX_ELLIPSE_SC_FIELD_SIZE),
  612. DC_STRUCT3(etable_EB, NUM_ELLIPSE_CB_FIELDS, MAX_ELLIPSE_CB_FIELD_SIZE),
  613. DC_STRUCT3(etable_GI, NUM_INDEX_FIELDS, MAX_INDEX_FIELD_SIZE),
  614. DC_STRUCT3(NULL, 0, 0),
  615. DC_STRUCT3(NULL, 0, 0),
  616. DC_STRUCT3(NULL, 0, 0),
  617. DC_STRUCT3(NULL, 0, 0)));
  618. #else
  619. DC_CONST_DATA_ARRAY(OE2_PRIMARY_ORDER_ATTRIBUTES, OE2OrdAttr, TS_MAX_ORDERS,
  620. DC_STRUCT32(
  621. DC_STRUCT3(NULL, NUM_DSTBLT_FIELDS, MAX_DSTBLT_FIELD_SIZE), // direct-encode order
  622. DC_STRUCT3(NULL, NUM_PATBLT_FIELDS, MAX_PATBLT_FIELD_SIZE), // direct-encode order
  623. DC_STRUCT3(etable_SB, NUM_SCRBLT_FIELDS, MAX_SCRBLT_FIELD_SIZE),
  624. DC_STRUCT3(NULL, 0, 0),
  625. DC_STRUCT3(NULL, 0, 0),
  626. DC_STRUCT3(NULL, 0, 0),
  627. DC_STRUCT3(NULL, 0, 0),
  628. DC_STRUCT3(NULL, 0, 0),
  629. DC_STRUCT3(NULL, 0, 0),
  630. DC_STRUCT3(NULL, NUM_LINETO_FIELDS, MAX_LINETO_FIELD_SIZE), // direct-encode order
  631. DC_STRUCT3(NULL, NUM_OPAQUERECT_FIELDS, MAX_OPAQUERECT_FIELD_SIZE), // direct-encode order
  632. DC_STRUCT3(etable_SV, NUM_SAVEBITMAP_FIELDS, MAX_SAVEBITMAP_FIELD_SIZE),
  633. DC_STRUCT3(NULL, 0, 0),
  634. DC_STRUCT3(NULL, NUM_MEMBLT_FIELDS, MAX_MEMBLT_FIELD_SIZE), // etable_MC not used (fast fath)
  635. DC_STRUCT3(etable_3C, NUM_MEM3BLT_FIELDS, MAX_MEM3BLT_FIELD_SIZE),
  636. DC_STRUCT3(NULL, NUM_MULTI_DSTBLT_FIELDS, MAX_MULTI_DSTBLT_FIELD_SIZE), // direct-encode order
  637. DC_STRUCT3(NULL, NUM_MULTI_PATBLT_FIELDS, MAX_MULTI_PATBLT_FIELD_SIZE), // direct-encode order
  638. DC_STRUCT3(etable_MS, NUM_MULTI_SCRBLT_FIELDS, MAX_MULTI_SCRBLT_FIELD_SIZE),
  639. DC_STRUCT3(NULL, NUM_MULTI_OPAQUERECT_FIELDS, MAX_MULTI_OPAQUERECT_FIELD_SIZE), // direct-encode order
  640. DC_STRUCT3(etable_FI, NUM_FAST_INDEX_FIELDS, MAX_FAST_INDEX_FIELD_SIZE),
  641. DC_STRUCT3(etable_CG, NUM_POLYGON_SC_FIELDS, MAX_POLYGON_SC_FIELD_SIZE),
  642. DC_STRUCT3(etable_BG, NUM_POLYGON_CB_FIELDS, MAX_POLYGON_CB_FIELD_SIZE),
  643. DC_STRUCT3(NULL, NUM_POLYLINE_FIELDS, MAX_POLYLINE_FIELD_SIZE), // direct-encode order
  644. DC_STRUCT3(NULL, 0, 0),
  645. DC_STRUCT3(etable_FG, NUM_FAST_GLYPH_FIELDS, MAX_FAST_GLYPH_FIELD_SIZE),
  646. DC_STRUCT3(etable_EC, NUM_ELLIPSE_SC_FIELDS, MAX_ELLIPSE_SC_FIELD_SIZE),
  647. DC_STRUCT3(etable_EB, NUM_ELLIPSE_CB_FIELDS, MAX_ELLIPSE_CB_FIELD_SIZE),
  648. DC_STRUCT3(etable_GI, NUM_INDEX_FIELDS, MAX_INDEX_FIELD_SIZE),
  649. DC_STRUCT3(NULL, 0, 0),
  650. DC_STRUCT3(NULL, 0, 0),
  651. DC_STRUCT3(NULL, 0, 0),
  652. DC_STRUCT3(NULL, 0, 0)));
  653. #endif
  654. #endif // DC_DEBUG