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.

1036 lines
42 KiB

  1. //
  2. // GLOBALS.H
  3. // Global variables
  4. //
  5. // This file included in normal source files generates the extern decls
  6. // for our global variables. In globals.c, because we define
  7. // DC_DEFINE_DATA before including this baby to generate the storage.
  8. //
  9. // Since there are many source files and one globals.c, it saves typing.
  10. //
  11. // Variables prefixed with m_ are per-conference
  12. // Variables prefixed wiht g_ are global
  13. //
  14. // NOTE that by default, all data is initialized to zero when a dll is
  15. // loaded. For other default values, use the DC_DATA_VAL instead of
  16. // DC_DATA macro.
  17. //
  18. #include "dbgzones.h"
  19. #include <ast120.h>
  20. #include <shm.h>
  21. #include <im.h>
  22. #include <control.h>
  23. #include <usr.h>
  24. #include <sc.h>
  25. #include <bcd.h>
  26. #include <ba.h>
  27. #include <ch.h>
  28. #include <om.h>
  29. #include <al.h>
  30. #include <cm.h>
  31. #include <oa.h>
  32. #include <fh.h>
  33. #include <oe.h>
  34. #include <od.h>
  35. #include <oe2.h>
  36. #include <ssi.h>
  37. #include <host.h>
  38. #include <s20.h>
  39. #include <gdc.h>
  40. #include <pm.h>
  41. #include <bmc.h>
  42. #include <rbc.h>
  43. #include <sbc.h>
  44. #include <sch.h>
  45. #include <swl.h>
  46. #include <view.h>
  47. #include <awc.h>
  48. // INCLUDE THIS LAST; IT USES DEFINITIONS IN THE ABOVE HEADERS
  49. #include <as.h>
  50. // Utility headers
  51. #include <strutil.h>
  52. //
  53. // GLOBALS ACROSS MULTIPLE CALLS
  54. //
  55. // Utility stuff
  56. // Critical sections
  57. DC_DATA_ARRAY ( CRITICAL_SECTION, g_utLocks, UTLOCK_MAX );
  58. // Event info
  59. DC_DATA ( ATOM, g_utWndClass);
  60. // Task list
  61. DC_DATA_ARRAY ( UT_CLIENT, g_autTasks, UTTASK_MAX );
  62. // UI
  63. DC_DATA ( PUT_CLIENT, g_putUI );
  64. DC_DATA ( HICON, g_hetASIcon );
  65. DC_DATA ( HICON, g_hetASIconSmall );
  66. DC_DATA ( HICON, g_hetDeskIcon );
  67. DC_DATA ( HICON, g_hetDeskIconSmall );
  68. DC_DATA ( HBITMAP, g_hetCheckBitmap );
  69. DC_DATA ( HFONT, g_hetSharedFont );
  70. // Call Manager (T.120)
  71. DC_DATA ( PUT_CLIENT, g_putCMG );
  72. DC_DATA ( PCM_PRIMARY, g_pcmPrimary );
  73. DC_DATA ( UINT, g_mgAttachCount );
  74. DC_DATA_ARRAY ( MG_CLIENT, g_amgClients, MGTASK_MAX);
  75. // ObMan
  76. DC_DATA ( PUT_CLIENT, g_putOM );
  77. DC_DATA ( POM_PRIMARY, g_pomPrimary );
  78. // App Loader
  79. DC_DATA ( PUT_CLIENT, g_putAL );
  80. DC_DATA ( PAL_PRIMARY, g_palPrimary );
  81. // App Sharing
  82. DC_DATA ( PUT_CLIENT, g_putAS );
  83. DC_DATA ( HINSTANCE, g_asInstance );
  84. DC_DATA ( BOOL, g_asWin95 );
  85. DC_DATA ( BOOL, g_asNT5 );
  86. DC_DATA ( UINT, g_asOptions );
  87. DC_DATA ( DWORD, g_asMainThreadId );
  88. DC_DATA ( HWND, g_asMainWindow );
  89. DC_DATA ( BOOL, g_asCanHost );
  90. DC_DATA ( ATOM, g_asHostProp );
  91. DC_DATA ( UINT, g_asPolicies );
  92. DC_DATA ( UINT, g_asSettings );
  93. //
  94. // Shared Memory FOR DISPLAY DRIVER
  95. //
  96. DC_DATA ( LPSHM_SHARED_MEMORY, g_asSharedMemory );
  97. DC_DATA_ARRAY ( LPOA_SHARED_DATA, g_poaData, 2 );
  98. //
  99. // The BPP our driver is capturing at may NOT be the same as the screen's
  100. // color depth. At > 8 bpp, our driver always captures at 24bpp to avoid
  101. // bitmask conversion nonsense. In other words, in NT 5.0, our shadow
  102. // driver behaves a lot more like a real driver to GDI. We must tell GDI
  103. // what color format we want; GDI will not just hackily give us the same
  104. // goop as the real disply like in NT 4.0 SP-3. NT 5.0 has real multiple
  105. // monitor and driver support.
  106. //
  107. DC_DATA ( UINT, g_usrScreenBPP );
  108. DC_DATA ( UINT, g_usrCaptureBPP );
  109. DC_DATA ( BOOL, g_usrPalettized );
  110. DC_DATA ( ASSession, g_asSession );
  111. DC_DATA ( BOOL, g_osiInitialized );
  112. //
  113. // CPC capabilities
  114. //
  115. DC_DATA ( CPCALLCAPS, g_cpcLocalCaps );
  116. //
  117. // Font Handler
  118. //
  119. //
  120. // List of local fonts
  121. //
  122. DC_DATA ( LPFHLOCALFONTS, g_fhFonts );
  123. //
  124. // General Data Compressor
  125. //
  126. // This is effectively const, it's just too complicated to declare so we
  127. // calculate it once in GDC_Init().
  128. DC_DATA_ARRAY(BYTE, s_gdcDistDecode, GDC_DECODED_SIZE);
  129. // This is effectively const, it's just too big to declare. We calculate
  130. // it once in GDC_Init().
  131. DC_DATA_ARRAY(BYTE, s_gdcLenDecode, GDC_DECODED_SIZE);
  132. //
  133. // Lit: Bits, Codes
  134. // NOTE: These are effectively _const. There's just too many of them
  135. // to put in a const array. So we calculate them once in GDC_Init().
  136. //
  137. //
  138. // Len and Lit codes
  139. //
  140. //
  141. // BOGUS LAURABU
  142. // BUGBUG
  143. // s_gdcLitBits, s_gdcLitCode, s__gdcDistDecode, and s_gdcLenDecode are
  144. // really constant. Instead of computing once at Init time, get the data
  145. // and put it const here.
  146. //
  147. DC_DATA_ARRAY(BYTE, s_gdcLitBits, GDC_LIT_SIZE);
  148. DC_DATA_ARRAY(WORD, s_gdcLitCode, GDC_LIT_SIZE);
  149. //
  150. // Input Manager
  151. //
  152. //
  153. // High level input manager in the core
  154. //
  155. // Pointer to IM variables accessed in NT/Win95 low level implementations
  156. DC_DATA (LPIM_SHARED_DATA, g_lpimSharedData );
  157. //
  158. // Order Decoder
  159. //
  160. //
  161. // Table used to map Windows dword ROP values to logical ROP values.
  162. //
  163. #ifndef DC_DEFINE_DATA
  164. extern const UINT s_odWindowsROPs[256];
  165. #else
  166. const UINT s_odWindowsROPs[256] =
  167. {
  168. 0x00000042, 0x00010289, 0x00020C89, 0x000300AA,
  169. 0x00040C88, 0x000500A9, 0x00060865, 0x000702C5,
  170. 0x00080F08, 0x00090245, 0x000A0329, 0x000B0B2A,
  171. 0x000C0324, 0x000D0B25, 0x000E08A5, 0x000F0001,
  172. 0x00100C85, 0x001100A6, 0x00120868, 0x001302C8,
  173. 0x00140869, 0x001502C9, 0x00165CCA, 0x00171D54,
  174. 0x00180D59, 0x00191CC8, 0x001A06C5, 0x001B0768,
  175. 0x001C06CA, 0x001D0766, 0x001E01A5, 0x001F0385,
  176. 0x00200F09, 0x00210248, 0x00220326, 0x00230B24,
  177. 0x00240D55, 0x00251CC5, 0x002606C8, 0x00271868,
  178. 0x00280369, 0x002916CA, 0x002A0CC9, 0x002B1D58,
  179. 0x002C0784, 0x002D060A, 0x002E064A, 0x002F0E2A,
  180. 0x0030032A, 0x00310B28, 0x00320688, 0x00330008,
  181. 0x003406C4, 0x00351864, 0x003601A8, 0x00370388,
  182. 0x0038078A, 0x00390604, 0x003A0644, 0x003B0E24,
  183. 0x003C004A, 0x003D18A4, 0x003E1B24, 0x003F00EA,
  184. 0x00400F0A, 0x00410249, 0x00420D5D, 0x00431CC4,
  185. 0x00440328, 0x00450B29, 0x004606C6, 0x0047076A,
  186. 0x00480368, 0x004916C5, 0x004A0789, 0x004B0605,
  187. 0x004C0CC8, 0x004D1954, 0x004E0645, 0x004F0E25,
  188. 0x00500325, 0x00510B26, 0x005206C9, 0x00530764,
  189. 0x005408A9, 0x00550009, 0x005601A9, 0x00570389,
  190. 0x00580785, 0x00590609, 0x005A0049, 0x005B18A9,
  191. 0x005C0649, 0x005D0E29, 0x005E1B29, 0x005F00E9,
  192. 0x00600365, 0x006116C6, 0x00620786, 0x00630608,
  193. 0x00640788, 0x00650606, 0x00660046, 0x006718A8,
  194. 0x006858A6, 0x00690145, 0x006A01E9, 0x006B178A,
  195. 0x006C01E8, 0x006D1785, 0x006E1E28, 0x006F0C65,
  196. 0x00700CC5, 0x00711D5C, 0x00720648, 0x00730E28,
  197. 0x00740646, 0x00750E26, 0x00761B28, 0x007700E6,
  198. 0x007801E5, 0x00791786, 0x007A1E29, 0x007B0C68,
  199. 0x007C1E24, 0x007D0C69, 0x007E0955, 0x007F03C9,
  200. 0x008003E9, 0x00810975, 0x00820C49, 0x00831E04,
  201. 0x00840C48, 0x00851E05, 0x008617A6, 0x008701C5,
  202. 0x008800C6, 0x00891B08, 0x008A0E06, 0x008B0666,
  203. 0x008C0E08, 0x008D0668, 0x008E1D7C, 0x008F0CE5,
  204. 0x00900C45, 0x00911E08, 0x009217A9, 0x009301C4,
  205. 0x009417AA, 0x009501C9, 0x00960169, 0x0097588A,
  206. 0x00981888, 0x00990066, 0x009A0709, 0x009B07A8,
  207. 0x009C0704, 0x009D07A6, 0x009E16E6, 0x009F0345,
  208. 0x00A000C9, 0x00A11B05, 0x00A20E09, 0x00A30669,
  209. 0x00A41885, 0x00A50065, 0x00A60706, 0x00A707A5,
  210. 0x00A803A9, 0x00A90189, 0x00AA0029, 0x00AB0889,
  211. 0x00AC0744, 0x00AD06E9, 0x00AE0B06, 0x00AF0229,
  212. 0x00B00E05, 0x00B10665, 0x00B21974, 0x00B30CE8,
  213. 0x00B4070A, 0x00B507A9, 0x00B616E9, 0x00B70348,
  214. 0x00B8074A, 0x00B906E6, 0x00BA0B09, 0x00BB0226,
  215. 0x00BC1CE4, 0x00BD0D7D, 0x00BE0269, 0x00BF08C9,
  216. 0x00C000CA, 0x00C11B04, 0x00C21884, 0x00C3006A,
  217. 0x00C40E04, 0x00C50664, 0x00C60708, 0x00C707AA,
  218. 0x00C803A8, 0x00C90184, 0x00CA0749, 0x00CB06E4,
  219. 0x00CC0020, 0x00CD0888, 0x00CE0B08, 0x00CF0224,
  220. 0x00D00E0A, 0x00D1066A, 0x00D20705, 0x00D307A4,
  221. 0x00D41D78, 0x00D50CE9, 0x00D616EA, 0x00D70349,
  222. 0x00D80745, 0x00D906E8, 0x00DA1CE9, 0x00DB0D75,
  223. 0x00DC0B04, 0x00DD0228, 0x00DE0268, 0x00DF08C8,
  224. 0x00E003A5, 0x00E10185, 0x00E20746, 0x00E306EA,
  225. 0x00E40748, 0x00E506E5, 0x00E61CE8, 0x00E70D79,
  226. 0x00E81D74, 0x00E95CE6, 0x00EA02E9, 0x00EB0849,
  227. 0x00EC02E8, 0x00ED0848, 0x00EE0086, 0x00EF0A08,
  228. 0x00F00021, 0x00F10885, 0x00F20B05, 0x00F3022A,
  229. 0x00F40B0A, 0x00F50225, 0x00F60265, 0x00F708C5,
  230. 0x00F802E5, 0x00F90845, 0x00FA0089, 0x00FB0A09,
  231. 0x00FC008A, 0x00FD0A0A, 0x00FE02A9, 0x00FF0062
  232. };
  233. #endif // !DC_DEFINE_DATA
  234. //
  235. // Table used by ODAdjustVGAColor (qv)
  236. //
  237. // Note that the table is searched from top to bottom, so black, white and
  238. // the two greys are at the top, on the grounds that they will be used more
  239. // often than the other colors.
  240. //
  241. #ifndef DC_DEFINE_DATA
  242. extern const OD_ADJUST_VGA_STRUCT s_odVGAColors[16];
  243. #else
  244. const OD_ADJUST_VGA_STRUCT s_odVGAColors[16] =
  245. {
  246. // color addMask andMask testMask result
  247. { 0x000000, 0x000000, 0xF8F8F8, 0x000000, {0x00, 0x00, 0x00 }}, //
  248. { 0xFFFFFF, 0x000000, 0xF8F8F8, 0xF8F8F8, {0xFF, 0xFF, 0xFF }}, //
  249. { 0x808080, 0x080808, 0xF0F0F0, 0x808080, {0x80, 0x80, 0x80 }}, //
  250. { 0xC0C0C0, 0x080808, 0xF0F0F0, 0xC0C0C0, {0xC0, 0xC0, 0xC0 }}, //
  251. { 0x000080, 0x000008, 0xF8F8F0, 0x000080, {0x00, 0x00, 0x80 }}, //
  252. { 0x008000, 0x000800, 0xF8F0F8, 0x008000, {0x00, 0x80, 0x00 }}, //
  253. { 0x008080, 0x000808, 0xF8F0F0, 0x008080, {0x00, 0x80, 0x80 }}, //
  254. { 0x800000, 0x080000, 0xF0F8F8, 0x800000, {0x80, 0x00, 0x00 }}, //
  255. { 0x800080, 0x080008, 0xF0F8F0, 0x800080, {0x80, 0x00, 0x80 }}, //
  256. { 0x808000, 0x080800, 0xF0F0F8, 0x808000, {0x80, 0x80, 0x00 }}, //
  257. { 0x0000FF, 0x000000, 0xF8F8F8, 0x0000F8, {0x00, 0x00, 0xFF }}, //
  258. { 0x00FF00, 0x000000, 0xF8F8F8, 0x00F800, {0x00, 0xFF, 0x00 }}, //
  259. { 0x00FFFF, 0x000000, 0xF8F8F8, 0x00F8F8, {0x00, 0xFF, 0xFF }}, //
  260. { 0xFF0000, 0x000000, 0xF8F8F8, 0xF80000, {0xFF, 0x00, 0x00 }}, //
  261. { 0xFF00FF, 0x000000, 0xF8F8F8, 0xF800F8, {0xFF, 0x00, 0xFF }}, //
  262. { 0xFFFF00, 0x000000, 0xF8F8F8, 0xF8F800, {0xFF, 0xFF, 0x00 }} //
  263. };
  264. #endif // !DC_DEFINE_DATA
  265. //
  266. // 2nd Level Order Decoder
  267. //
  268. //
  269. // Entries can be of fixed size of variable size. Variable size entries
  270. // must be the last in each order structure. OE2 encodes from packed
  271. // structures containing variable entries. (ie unused bytes are not
  272. // present in the first level encoding structure passed to OE2). OD2
  273. // unencodes variable entries into the unpacked structures.
  274. //
  275. //
  276. // Fields can either be signed or unsigned
  277. //
  278. #define SIGNED_FIELD TRUE
  279. #define UNSIGNED_FIELD FALSE
  280. //
  281. // Field is a fixed size
  282. // type - The unencoded order structure type
  283. // size - The size of the encoded version of the field
  284. // signed - Is the field a signed field ?
  285. // field - The name of the field in the order structure
  286. //
  287. #define ETABLE_FIXED_ENTRY(type,size,signed,field) \
  288. { FIELD_OFFSET(type,field), \
  289. FIELD_SIZE(type,field), \
  290. size, \
  291. signed, \
  292. (UINT)(OE2_ETF_FIXED) }
  293. //
  294. // Field is coordinate of a fixed size
  295. // type - The unencoded order structure type
  296. // size - The size of the encoded version of the field
  297. // signed - Is the field a signed field ?
  298. // field - The name of the field in the order structure
  299. //
  300. #define ETABLE_FIXED_COORDS_ENTRY(type,size,signed,field) \
  301. { FIELD_OFFSET(type,field), \
  302. FIELD_SIZE(type,field), \
  303. size, \
  304. signed, \
  305. (UINT)(OE2_ETF_FIXED|OE2_ETF_COORDINATES) }
  306. //
  307. // Field is a fixed number of bytes (array?)
  308. // type - The unencoded order structure type
  309. // size - The number of bytes in the encoded version of the field
  310. // signed - Is the field a signed field ?
  311. // field - The name of the field in the order structure
  312. //
  313. #define ETABLE_DATA_ENTRY(type,size,signed,field) \
  314. { FIELD_OFFSET(type,field), \
  315. FIELD_SIZE(type,field), \
  316. size, \
  317. signed, \
  318. (UINT)(OE2_ETF_FIXED|OE2_ETF_DATA) }
  319. //
  320. // Field is a variable structure of the form
  321. // typedef struct
  322. // {
  323. // UINT len;
  324. // varType varEntry[len];
  325. // } varStruct
  326. //
  327. // type - The unencoded order structure type
  328. // size - The size of the encoded version of the field
  329. // signed - Is the field a signed field ?
  330. // field - The name of the field in the order structure (varStruct)
  331. // elem - The name of the variable element array (varEntry)
  332. //
  333. #define ETABLE_VARIABLE_ENTRY(type,size,signed,field,elem) \
  334. { FIELD_OFFSET(type,field.len), \
  335. FIELD_SIZE(type,field.elem[0]), \
  336. size, \
  337. signed, \
  338. (UINT)(OE2_ETF_VARIABLE)}
  339. //
  340. // Field is a variable structure of the form
  341. // typedef struct
  342. // {
  343. // UINT len;
  344. // varType varEntry[len];
  345. // } varStruct
  346. //
  347. // type - The unencoded order structure type
  348. // size - The size of the encoded version of the field
  349. // signed - Is the field a signed field ?
  350. // field - The name of the field in the order structure (varStruct)
  351. // elem - The name of the variable element array (varEntry)
  352. //
  353. // This macro is used instead of the ETABLE_VARIABLE_ENTRY macro when the
  354. // elements of the array are of type TSHR_POINT16. Otherwise on bigendian
  355. // machines the flipping macros will reverse the order of the coordinates.
  356. //
  357. #define ETABLE_VARIABLE_ENTRY_POINTS(type,size,signed,field,elem) \
  358. { FIELD_OFFSET(type,field.len), \
  359. FIELD_SIZE(type,field.elem[0].x), \
  360. size, \
  361. signed, \
  362. (UINT)(OE2_ETF_VARIABLE)}
  363. //
  364. // Field is a variable structure containing coords of the form
  365. // typedef struct
  366. // {
  367. // UINT len;
  368. // varCoord varEntry[len];
  369. // } varStruct
  370. //
  371. // type - The unencoded order structure type
  372. // size - The size of the encoded version of the field
  373. // signed - Is the field a signed field ?
  374. // field - The name of the field in the order structure (varStruct)
  375. // elem - The name of the variable element array (varEntry)
  376. //
  377. #define ETABLE_VARIABLE_COORDS_ENTRY(type,size,signed,field,elem) \
  378. { FIELD_OFFSET(type,field.len), \
  379. FIELD_SIZE(type,field.elem[0]), \
  380. size, \
  381. signed, \
  382. (UINT)(OE2_ETF_VARIABLE|OE2_ETF_COORDINATES)}
  383. #ifndef DC_DEFINE_DATA
  384. extern const OE2ETTABLE s_etable;
  385. #else
  386. const OE2ETTABLE s_etable =
  387. {
  388. //
  389. // Pointers to the start of the entries for each order.
  390. //
  391. {
  392. s_etable.DstBltFields,
  393. s_etable.PatBltFields,
  394. s_etable.ScrBltFields,
  395. s_etable.MemBltFields,
  396. s_etable.Mem3BltFields,
  397. s_etable.TextOutFields,
  398. s_etable.ExtTextOutFields,
  399. NULL, // Can be used for next order.
  400. s_etable.RectangleFields,
  401. s_etable.LineToFields,
  402. s_etable.OpaqueRectFields,
  403. s_etable.SaveBitmapFields,
  404. s_etable.DeskScrollFields,
  405. s_etable.MemBltR2Fields,
  406. s_etable.Mem3BltR2Fields,
  407. s_etable.PolygonFields,
  408. s_etable.PieFields,
  409. s_etable.EllipseFields,
  410. s_etable.ArcFields,
  411. s_etable.ChordFields,
  412. s_etable.PolyBezierFields,
  413. s_etable.RoundRectFields
  414. },
  415. //
  416. // Number of fields for each order.
  417. //
  418. {
  419. OE2_NUM_DSTBLT_FIELDS,
  420. OE2_NUM_PATBLT_FIELDS,
  421. OE2_NUM_SCRBLT_FIELDS,
  422. OE2_NUM_MEMBLT_FIELDS,
  423. OE2_NUM_MEM3BLT_FIELDS,
  424. OE2_NUM_TEXTOUT_FIELDS,
  425. OE2_NUM_EXTTEXTOUT_FIELDS,
  426. 0, // Change when installing new order.
  427. OE2_NUM_RECTANGLE_FIELDS,
  428. OE2_NUM_LINETO_FIELDS,
  429. OE2_NUM_OPAQUERECT_FIELDS,
  430. OE2_NUM_SAVEBITMAP_FIELDS,
  431. OE2_NUM_DESKSCROLL_FIELDS,
  432. OE2_NUM_MEMBLT_R2_FIELDS,
  433. OE2_NUM_MEM3BLT_R2_FIELDS,
  434. OE2_NUM_POLYGON_FIELDS,
  435. OE2_NUM_PIE_FIELDS,
  436. OE2_NUM_ELLIPSE_FIELDS,
  437. OE2_NUM_ARC_FIELDS,
  438. OE2_NUM_CHORD_FIELDS,
  439. OE2_NUM_POLYBEZIER_FIELDS,
  440. OE2_NUM_ROUNDRECT_FIELDS
  441. },
  442. //
  443. // Entries for the DSTBLT_ORDER
  444. //
  445. {
  446. ETABLE_FIXED_COORDS_ENTRY(DSTBLT_ORDER, 2, SIGNED_FIELD, nLeftRect),
  447. ETABLE_FIXED_COORDS_ENTRY(DSTBLT_ORDER, 2, SIGNED_FIELD, nTopRect),
  448. ETABLE_FIXED_COORDS_ENTRY(DSTBLT_ORDER, 2, SIGNED_FIELD, nWidth),
  449. ETABLE_FIXED_COORDS_ENTRY(DSTBLT_ORDER, 2, SIGNED_FIELD, nHeight),
  450. ETABLE_FIXED_ENTRY(DSTBLT_ORDER, 1, UNSIGNED_FIELD, bRop),
  451. { 0 }
  452. },
  453. //
  454. // Entries for the PATBLT_ORDER
  455. //
  456. {
  457. ETABLE_FIXED_COORDS_ENTRY(PATBLT_ORDER, 2, SIGNED_FIELD, nLeftRect),
  458. ETABLE_FIXED_COORDS_ENTRY(PATBLT_ORDER, 2, SIGNED_FIELD, nTopRect),
  459. ETABLE_FIXED_COORDS_ENTRY(PATBLT_ORDER, 2, SIGNED_FIELD, nWidth),
  460. ETABLE_FIXED_COORDS_ENTRY(PATBLT_ORDER, 2, SIGNED_FIELD, nHeight),
  461. ETABLE_FIXED_ENTRY(PATBLT_ORDER, 1, UNSIGNED_FIELD, bRop),
  462. ETABLE_DATA_ENTRY(PATBLT_ORDER, 3, UNSIGNED_FIELD, BackColor),
  463. ETABLE_DATA_ENTRY(PATBLT_ORDER, 3, UNSIGNED_FIELD, ForeColor),
  464. ETABLE_FIXED_ENTRY(PATBLT_ORDER, 1, SIGNED_FIELD, BrushOrgX),
  465. ETABLE_FIXED_ENTRY(PATBLT_ORDER, 1, SIGNED_FIELD, BrushOrgY),
  466. ETABLE_FIXED_ENTRY(PATBLT_ORDER, 1, UNSIGNED_FIELD, BrushStyle),
  467. ETABLE_FIXED_ENTRY(PATBLT_ORDER, 1, UNSIGNED_FIELD, BrushHatch),
  468. ETABLE_DATA_ENTRY(PATBLT_ORDER, 7, UNSIGNED_FIELD, BrushExtra),
  469. { 0 }
  470. },
  471. //
  472. // Entries for the SCRBLT_ORDER
  473. //
  474. {
  475. ETABLE_FIXED_COORDS_ENTRY(SCRBLT_ORDER, 2, SIGNED_FIELD, nLeftRect),
  476. ETABLE_FIXED_COORDS_ENTRY(SCRBLT_ORDER, 2, SIGNED_FIELD, nTopRect),
  477. ETABLE_FIXED_COORDS_ENTRY(SCRBLT_ORDER, 2, SIGNED_FIELD, nWidth),
  478. ETABLE_FIXED_COORDS_ENTRY(SCRBLT_ORDER, 2, SIGNED_FIELD, nHeight),
  479. ETABLE_FIXED_ENTRY(SCRBLT_ORDER, 1, UNSIGNED_FIELD, bRop),
  480. ETABLE_FIXED_COORDS_ENTRY(SCRBLT_ORDER, 2, SIGNED_FIELD, nXSrc),
  481. ETABLE_FIXED_COORDS_ENTRY(SCRBLT_ORDER, 2, SIGNED_FIELD, nYSrc),
  482. { 0 }
  483. },
  484. //
  485. // Entries for the MEMBLT_ORDER
  486. //
  487. {
  488. ETABLE_FIXED_ENTRY(MEMBLT_ORDER, 2, UNSIGNED_FIELD, cacheId),
  489. ETABLE_FIXED_COORDS_ENTRY(MEMBLT_ORDER, 2, SIGNED_FIELD, nLeftRect),
  490. ETABLE_FIXED_COORDS_ENTRY(MEMBLT_ORDER, 2, SIGNED_FIELD, nTopRect),
  491. ETABLE_FIXED_COORDS_ENTRY(MEMBLT_ORDER, 2, SIGNED_FIELD, nWidth),
  492. ETABLE_FIXED_COORDS_ENTRY(MEMBLT_ORDER, 2, SIGNED_FIELD, nHeight),
  493. ETABLE_FIXED_ENTRY(MEMBLT_ORDER, 1, UNSIGNED_FIELD, bRop),
  494. ETABLE_FIXED_COORDS_ENTRY(MEMBLT_ORDER, 2, SIGNED_FIELD, nXSrc),
  495. ETABLE_FIXED_COORDS_ENTRY(MEMBLT_ORDER, 2, SIGNED_FIELD, nYSrc),
  496. { 0 }
  497. },
  498. //
  499. // Entries for the MEM3BLT_ORDER
  500. //
  501. {
  502. ETABLE_FIXED_ENTRY(MEM3BLT_ORDER, 2, UNSIGNED_FIELD, cacheId),
  503. ETABLE_FIXED_COORDS_ENTRY(MEM3BLT_ORDER, 2, SIGNED_FIELD, nLeftRect),
  504. ETABLE_FIXED_COORDS_ENTRY(MEM3BLT_ORDER, 2, SIGNED_FIELD, nTopRect),
  505. ETABLE_FIXED_COORDS_ENTRY(MEM3BLT_ORDER, 2, SIGNED_FIELD, nWidth),
  506. ETABLE_FIXED_COORDS_ENTRY(MEM3BLT_ORDER, 2, SIGNED_FIELD, nHeight),
  507. ETABLE_FIXED_ENTRY(MEM3BLT_ORDER, 1, UNSIGNED_FIELD, bRop),
  508. ETABLE_FIXED_COORDS_ENTRY(MEM3BLT_ORDER, 2, SIGNED_FIELD, nXSrc),
  509. ETABLE_FIXED_COORDS_ENTRY(MEM3BLT_ORDER, 2, SIGNED_FIELD, nYSrc),
  510. ETABLE_DATA_ENTRY(MEM3BLT_ORDER, 3, UNSIGNED_FIELD, BackColor),
  511. ETABLE_DATA_ENTRY(MEM3BLT_ORDER, 3, UNSIGNED_FIELD, ForeColor),
  512. ETABLE_FIXED_ENTRY(MEM3BLT_ORDER, 1, SIGNED_FIELD, BrushOrgX),
  513. ETABLE_FIXED_ENTRY(MEM3BLT_ORDER, 1, SIGNED_FIELD, BrushOrgY),
  514. ETABLE_FIXED_ENTRY(MEM3BLT_ORDER, 1, UNSIGNED_FIELD, BrushStyle),
  515. ETABLE_FIXED_ENTRY(MEM3BLT_ORDER, 1, UNSIGNED_FIELD, BrushHatch),
  516. ETABLE_DATA_ENTRY(MEM3BLT_ORDER, 7, UNSIGNED_FIELD, BrushExtra),
  517. { 0 }
  518. },
  519. //
  520. // Entries for the TEXTOUT_ORDER
  521. //
  522. {
  523. ETABLE_FIXED_ENTRY(TEXTOUT_ORDER, 2, SIGNED_FIELD, common.BackMode),
  524. ETABLE_FIXED_COORDS_ENTRY(TEXTOUT_ORDER, 2, SIGNED_FIELD,
  525. common.nXStart),
  526. ETABLE_FIXED_COORDS_ENTRY(TEXTOUT_ORDER, 2, SIGNED_FIELD,
  527. common.nYStart),
  528. ETABLE_DATA_ENTRY(TEXTOUT_ORDER, 3, UNSIGNED_FIELD, common.BackColor),
  529. ETABLE_DATA_ENTRY(TEXTOUT_ORDER, 3, UNSIGNED_FIELD, common.ForeColor),
  530. ETABLE_FIXED_ENTRY(TEXTOUT_ORDER, 2, SIGNED_FIELD, common.CharExtra),
  531. ETABLE_FIXED_ENTRY(TEXTOUT_ORDER, 2, SIGNED_FIELD, common.BreakExtra),
  532. ETABLE_FIXED_ENTRY(TEXTOUT_ORDER, 2, SIGNED_FIELD, common.BreakCount),
  533. ETABLE_FIXED_ENTRY(TEXTOUT_ORDER, 2, SIGNED_FIELD, common.FontHeight),
  534. ETABLE_FIXED_ENTRY(TEXTOUT_ORDER, 2, SIGNED_FIELD, common.FontWidth),
  535. ETABLE_FIXED_ENTRY(TEXTOUT_ORDER, 2, UNSIGNED_FIELD,
  536. common.FontWeight),
  537. ETABLE_FIXED_ENTRY(TEXTOUT_ORDER, 2, UNSIGNED_FIELD,
  538. common.FontFlags),
  539. ETABLE_FIXED_ENTRY(TEXTOUT_ORDER, 2, UNSIGNED_FIELD,
  540. common.FontIndex),
  541. ETABLE_VARIABLE_ENTRY(TEXTOUT_ORDER, 1, UNSIGNED_FIELD,
  542. variableString, string),
  543. { 0 }
  544. },
  545. //
  546. // Entries for the EXTTEXTOUT_ORDER
  547. //
  548. {
  549. ETABLE_FIXED_ENTRY(EXTTEXTOUT_ORDER, 2, SIGNED_FIELD,
  550. common.BackMode),
  551. ETABLE_FIXED_COORDS_ENTRY(EXTTEXTOUT_ORDER, 2, SIGNED_FIELD,
  552. common.nXStart),
  553. ETABLE_FIXED_COORDS_ENTRY(EXTTEXTOUT_ORDER, 2, SIGNED_FIELD,
  554. common.nYStart),
  555. ETABLE_DATA_ENTRY(EXTTEXTOUT_ORDER, 3, UNSIGNED_FIELD,
  556. common.BackColor),
  557. ETABLE_DATA_ENTRY(EXTTEXTOUT_ORDER, 3, UNSIGNED_FIELD,
  558. common.ForeColor),
  559. ETABLE_FIXED_ENTRY(EXTTEXTOUT_ORDER, 2, SIGNED_FIELD,
  560. common.CharExtra),
  561. ETABLE_FIXED_ENTRY(EXTTEXTOUT_ORDER, 2, SIGNED_FIELD,
  562. common.BreakExtra),
  563. ETABLE_FIXED_ENTRY(EXTTEXTOUT_ORDER, 2, SIGNED_FIELD,
  564. common.BreakCount),
  565. ETABLE_FIXED_ENTRY(EXTTEXTOUT_ORDER, 2, SIGNED_FIELD,
  566. common.FontHeight),
  567. ETABLE_FIXED_ENTRY(EXTTEXTOUT_ORDER, 2, SIGNED_FIELD,
  568. common.FontWidth),
  569. ETABLE_FIXED_ENTRY(EXTTEXTOUT_ORDER, 2, UNSIGNED_FIELD,
  570. common.FontWeight),
  571. ETABLE_FIXED_ENTRY(EXTTEXTOUT_ORDER, 2, UNSIGNED_FIELD,
  572. common.FontFlags),
  573. ETABLE_FIXED_ENTRY(EXTTEXTOUT_ORDER, 2, UNSIGNED_FIELD,
  574. common.FontIndex),
  575. ETABLE_FIXED_ENTRY(EXTTEXTOUT_ORDER, 2, UNSIGNED_FIELD, fuOptions),
  576. ETABLE_FIXED_COORDS_ENTRY(EXTTEXTOUT_ORDER, 2, SIGNED_FIELD,
  577. rectangle.left),
  578. ETABLE_FIXED_COORDS_ENTRY(EXTTEXTOUT_ORDER, 2, SIGNED_FIELD,
  579. rectangle.top),
  580. ETABLE_FIXED_COORDS_ENTRY(EXTTEXTOUT_ORDER, 2, SIGNED_FIELD,
  581. rectangle.right),
  582. ETABLE_FIXED_COORDS_ENTRY(EXTTEXTOUT_ORDER, 2, SIGNED_FIELD,
  583. rectangle.bottom),
  584. ETABLE_VARIABLE_ENTRY(EXTTEXTOUT_ORDER, 1, UNSIGNED_FIELD,
  585. variableString, string),
  586. ETABLE_VARIABLE_COORDS_ENTRY(EXTTEXTOUT_ORDER, 2, SIGNED_FIELD,
  587. variableDeltaX, deltaX),
  588. { 0 }
  589. },
  590. //
  591. // Entries for the RECTANGLE_ORDER
  592. //
  593. {
  594. ETABLE_FIXED_ENTRY(RECTANGLE_ORDER, 2, SIGNED_FIELD, BackMode),
  595. ETABLE_FIXED_COORDS_ENTRY(RECTANGLE_ORDER, 2, SIGNED_FIELD,
  596. nLeftRect),
  597. ETABLE_FIXED_COORDS_ENTRY(RECTANGLE_ORDER, 2, SIGNED_FIELD, nTopRect),
  598. ETABLE_FIXED_COORDS_ENTRY(RECTANGLE_ORDER, 2, SIGNED_FIELD,
  599. nRightRect),
  600. ETABLE_FIXED_COORDS_ENTRY(RECTANGLE_ORDER, 2, SIGNED_FIELD,
  601. nBottomRect),
  602. ETABLE_DATA_ENTRY(RECTANGLE_ORDER, 3, UNSIGNED_FIELD, BackColor),
  603. ETABLE_DATA_ENTRY(RECTANGLE_ORDER, 3, UNSIGNED_FIELD, ForeColor),
  604. ETABLE_FIXED_ENTRY(RECTANGLE_ORDER, 1, SIGNED_FIELD, BrushOrgX),
  605. ETABLE_FIXED_ENTRY(RECTANGLE_ORDER, 1, SIGNED_FIELD, BrushOrgY),
  606. ETABLE_FIXED_ENTRY(RECTANGLE_ORDER, 1, UNSIGNED_FIELD, BrushStyle),
  607. ETABLE_FIXED_ENTRY(RECTANGLE_ORDER, 1, UNSIGNED_FIELD, BrushHatch),
  608. ETABLE_DATA_ENTRY(RECTANGLE_ORDER, 7, UNSIGNED_FIELD, BrushExtra),
  609. ETABLE_FIXED_ENTRY(RECTANGLE_ORDER, 1, UNSIGNED_FIELD, ROP2),
  610. ETABLE_FIXED_ENTRY(RECTANGLE_ORDER, 1, UNSIGNED_FIELD, PenStyle),
  611. ETABLE_FIXED_ENTRY(RECTANGLE_ORDER, 1, UNSIGNED_FIELD, PenWidth),
  612. ETABLE_DATA_ENTRY(RECTANGLE_ORDER, 3, UNSIGNED_FIELD, PenColor),
  613. { 0 }
  614. },
  615. //
  616. // Entries for the LINETO_ORDER
  617. //
  618. {
  619. ETABLE_FIXED_ENTRY(LINETO_ORDER, 2, SIGNED_FIELD, BackMode),
  620. ETABLE_FIXED_COORDS_ENTRY(LINETO_ORDER, 2, SIGNED_FIELD, nXStart),
  621. ETABLE_FIXED_COORDS_ENTRY(LINETO_ORDER, 2, SIGNED_FIELD, nYStart),
  622. ETABLE_FIXED_COORDS_ENTRY(LINETO_ORDER, 2, SIGNED_FIELD, nXEnd),
  623. ETABLE_FIXED_COORDS_ENTRY(LINETO_ORDER, 2, SIGNED_FIELD, nYEnd),
  624. ETABLE_DATA_ENTRY(LINETO_ORDER, 3, UNSIGNED_FIELD, BackColor),
  625. ETABLE_FIXED_ENTRY(LINETO_ORDER, 1, UNSIGNED_FIELD, ROP2),
  626. ETABLE_FIXED_ENTRY(LINETO_ORDER, 1, UNSIGNED_FIELD, PenStyle),
  627. ETABLE_FIXED_ENTRY(LINETO_ORDER, 1, UNSIGNED_FIELD, PenWidth),
  628. ETABLE_DATA_ENTRY(LINETO_ORDER, 3, UNSIGNED_FIELD, PenColor),
  629. { 0 }
  630. },
  631. //
  632. // Entries for the OPAQUERECT_ORDER
  633. //
  634. {
  635. ETABLE_FIXED_COORDS_ENTRY(OPAQUERECT_ORDER, 2, SIGNED_FIELD,
  636. nLeftRect),
  637. ETABLE_FIXED_COORDS_ENTRY(OPAQUERECT_ORDER, 2, SIGNED_FIELD,
  638. nTopRect),
  639. ETABLE_FIXED_COORDS_ENTRY(OPAQUERECT_ORDER, 2, SIGNED_FIELD, nWidth),
  640. ETABLE_FIXED_COORDS_ENTRY(OPAQUERECT_ORDER, 2, SIGNED_FIELD, nHeight),
  641. ETABLE_DATA_ENTRY(OPAQUERECT_ORDER, 3, UNSIGNED_FIELD, Color),
  642. { 0 }
  643. },
  644. //
  645. // Entries for the SAVEBITMAP_ORDER
  646. //
  647. {
  648. ETABLE_FIXED_ENTRY(SAVEBITMAP_ORDER, 4, UNSIGNED_FIELD,
  649. SavedBitmapPosition),
  650. ETABLE_FIXED_COORDS_ENTRY(SAVEBITMAP_ORDER, 2, SIGNED_FIELD,
  651. nLeftRect),
  652. ETABLE_FIXED_COORDS_ENTRY(SAVEBITMAP_ORDER, 2, SIGNED_FIELD,
  653. nTopRect),
  654. ETABLE_FIXED_COORDS_ENTRY(SAVEBITMAP_ORDER, 2, SIGNED_FIELD,
  655. nRightRect),
  656. ETABLE_FIXED_COORDS_ENTRY(SAVEBITMAP_ORDER, 2, SIGNED_FIELD,
  657. nBottomRect),
  658. ETABLE_FIXED_ENTRY(SAVEBITMAP_ORDER, 1, UNSIGNED_FIELD, Operation),
  659. { 0 }
  660. },
  661. //
  662. // Entries for the DESKSCROLL_ORDER
  663. //
  664. {
  665. ETABLE_FIXED_COORDS_ENTRY(DESKSCROLL_ORDER, 2, SIGNED_FIELD, xOrigin),
  666. ETABLE_FIXED_COORDS_ENTRY(DESKSCROLL_ORDER, 2, SIGNED_FIELD, yOrigin),
  667. { 0 }
  668. },
  669. //
  670. // Entries for the MEMBLT_R2_ORDER
  671. //
  672. {
  673. ETABLE_FIXED_ENTRY(MEMBLT_R2_ORDER, 2, UNSIGNED_FIELD, cacheId),
  674. ETABLE_FIXED_COORDS_ENTRY(MEMBLT_R2_ORDER, 2, SIGNED_FIELD,
  675. nLeftRect),
  676. ETABLE_FIXED_COORDS_ENTRY(MEMBLT_R2_ORDER, 2, SIGNED_FIELD, nTopRect),
  677. ETABLE_FIXED_COORDS_ENTRY(MEMBLT_R2_ORDER, 2, SIGNED_FIELD, nWidth),
  678. ETABLE_FIXED_COORDS_ENTRY(MEMBLT_R2_ORDER, 2, SIGNED_FIELD, nHeight),
  679. ETABLE_FIXED_ENTRY(MEMBLT_R2_ORDER, 1, UNSIGNED_FIELD, bRop),
  680. ETABLE_FIXED_COORDS_ENTRY(MEMBLT_R2_ORDER, 2, SIGNED_FIELD, nXSrc),
  681. ETABLE_FIXED_COORDS_ENTRY(MEMBLT_R2_ORDER, 2, SIGNED_FIELD, nYSrc),
  682. ETABLE_FIXED_ENTRY(MEMBLT_R2_ORDER, 2, UNSIGNED_FIELD, cacheIndex),
  683. { 0 }
  684. },
  685. //
  686. // Entries for the MEM3BLT_R2_ORDER
  687. //
  688. {
  689. ETABLE_FIXED_ENTRY(MEM3BLT_R2_ORDER, 2, UNSIGNED_FIELD, cacheId),
  690. ETABLE_FIXED_COORDS_ENTRY(MEM3BLT_R2_ORDER, 2, SIGNED_FIELD,
  691. nLeftRect),
  692. ETABLE_FIXED_COORDS_ENTRY(MEM3BLT_R2_ORDER, 2, SIGNED_FIELD,
  693. nTopRect),
  694. ETABLE_FIXED_COORDS_ENTRY(MEM3BLT_R2_ORDER, 2, SIGNED_FIELD, nWidth),
  695. ETABLE_FIXED_COORDS_ENTRY(MEM3BLT_R2_ORDER, 2, SIGNED_FIELD, nHeight),
  696. ETABLE_FIXED_ENTRY(MEM3BLT_R2_ORDER, 1, UNSIGNED_FIELD, bRop),
  697. ETABLE_FIXED_COORDS_ENTRY(MEM3BLT_R2_ORDER, 2, SIGNED_FIELD, nXSrc),
  698. ETABLE_FIXED_COORDS_ENTRY(MEM3BLT_R2_ORDER, 2, SIGNED_FIELD, nYSrc),
  699. ETABLE_FIXED_ENTRY(MEM3BLT_R2_ORDER, 3, UNSIGNED_FIELD, BackColor),
  700. ETABLE_FIXED_ENTRY(MEM3BLT_R2_ORDER, 3, UNSIGNED_FIELD, ForeColor),
  701. ETABLE_FIXED_ENTRY(MEM3BLT_R2_ORDER, 1, SIGNED_FIELD, BrushOrgX),
  702. ETABLE_FIXED_ENTRY(MEM3BLT_R2_ORDER, 1, SIGNED_FIELD, BrushOrgY),
  703. ETABLE_FIXED_ENTRY(MEM3BLT_R2_ORDER, 1, UNSIGNED_FIELD, BrushStyle),
  704. ETABLE_FIXED_ENTRY(MEM3BLT_R2_ORDER, 1, UNSIGNED_FIELD, BrushHatch),
  705. ETABLE_FIXED_ENTRY(MEM3BLT_R2_ORDER, 7, UNSIGNED_FIELD, BrushExtra),
  706. ETABLE_FIXED_ENTRY(MEM3BLT_R2_ORDER, 2, UNSIGNED_FIELD, cacheIndex),
  707. { 0 }
  708. },
  709. //
  710. // Entries for the POLYGON_ORDER
  711. //
  712. {
  713. ETABLE_FIXED_ENTRY(POLYGON_ORDER, 2, SIGNED_FIELD, BackMode),
  714. ETABLE_DATA_ENTRY(POLYGON_ORDER, 3, UNSIGNED_FIELD, BackColor),
  715. ETABLE_DATA_ENTRY(POLYGON_ORDER, 3, UNSIGNED_FIELD, ForeColor),
  716. ETABLE_FIXED_ENTRY(POLYGON_ORDER, 1, SIGNED_FIELD, BrushOrgX),
  717. ETABLE_FIXED_ENTRY(POLYGON_ORDER, 1, SIGNED_FIELD, BrushOrgY),
  718. ETABLE_FIXED_ENTRY(POLYGON_ORDER, 1, UNSIGNED_FIELD, BrushStyle),
  719. ETABLE_FIXED_ENTRY(POLYGON_ORDER, 1, UNSIGNED_FIELD, BrushHatch),
  720. ETABLE_DATA_ENTRY(POLYGON_ORDER, 7, UNSIGNED_FIELD, BrushExtra),
  721. ETABLE_FIXED_ENTRY(POLYGON_ORDER, 1, UNSIGNED_FIELD, ROP2),
  722. ETABLE_FIXED_ENTRY(POLYGON_ORDER, 1, UNSIGNED_FIELD, PenStyle),
  723. ETABLE_FIXED_ENTRY(POLYGON_ORDER, 1, UNSIGNED_FIELD, PenWidth),
  724. ETABLE_DATA_ENTRY(POLYGON_ORDER, 3, UNSIGNED_FIELD, PenColor),
  725. ETABLE_FIXED_ENTRY(POLYGON_ORDER, 1, UNSIGNED_FIELD, FillMode),
  726. ETABLE_VARIABLE_ENTRY_POINTS(POLYGON_ORDER, 2, UNSIGNED_FIELD,
  727. variablePoints, aPoints),
  728. { 0 }
  729. },
  730. //
  731. // Entries for the PIE_ORDER
  732. //
  733. {
  734. ETABLE_FIXED_ENTRY(PIE_ORDER, 2, SIGNED_FIELD, BackMode),
  735. ETABLE_FIXED_COORDS_ENTRY(PIE_ORDER, 2, SIGNED_FIELD, nLeftRect),
  736. ETABLE_FIXED_COORDS_ENTRY(PIE_ORDER, 2, SIGNED_FIELD, nTopRect),
  737. ETABLE_FIXED_COORDS_ENTRY(PIE_ORDER, 2, SIGNED_FIELD, nRightRect),
  738. ETABLE_FIXED_COORDS_ENTRY(PIE_ORDER, 2, SIGNED_FIELD, nBottomRect),
  739. ETABLE_FIXED_COORDS_ENTRY(PIE_ORDER, 2, SIGNED_FIELD, nXStart),
  740. ETABLE_FIXED_COORDS_ENTRY(PIE_ORDER, 2, SIGNED_FIELD, nYStart),
  741. ETABLE_FIXED_COORDS_ENTRY(PIE_ORDER, 2, SIGNED_FIELD, nXEnd),
  742. ETABLE_FIXED_COORDS_ENTRY(PIE_ORDER, 2, SIGNED_FIELD, nYEnd),
  743. ETABLE_FIXED_ENTRY(PIE_ORDER, 3, UNSIGNED_FIELD, BackColor),
  744. ETABLE_FIXED_ENTRY(PIE_ORDER, 3, UNSIGNED_FIELD, ForeColor),
  745. ETABLE_FIXED_ENTRY(PIE_ORDER, 1, SIGNED_FIELD, BrushOrgX),
  746. ETABLE_FIXED_ENTRY(PIE_ORDER, 1, SIGNED_FIELD, BrushOrgY),
  747. ETABLE_FIXED_ENTRY(PIE_ORDER, 1, UNSIGNED_FIELD, BrushStyle),
  748. ETABLE_FIXED_ENTRY(PIE_ORDER, 1, UNSIGNED_FIELD, BrushHatch),
  749. ETABLE_FIXED_ENTRY(PIE_ORDER, 7, UNSIGNED_FIELD, BrushExtra),
  750. ETABLE_FIXED_ENTRY(PIE_ORDER, 1, UNSIGNED_FIELD, ROP2),
  751. ETABLE_FIXED_ENTRY(PIE_ORDER, 1, UNSIGNED_FIELD, PenStyle),
  752. ETABLE_FIXED_ENTRY(PIE_ORDER, 1, UNSIGNED_FIELD, PenWidth),
  753. ETABLE_FIXED_ENTRY(PIE_ORDER, 3, UNSIGNED_FIELD, PenColor),
  754. ETABLE_FIXED_ENTRY(PIE_ORDER, 1, UNSIGNED_FIELD, ArcDirection),
  755. { 0 }
  756. },
  757. //
  758. // Entries for the ELLIPSE_ORDER
  759. //
  760. {
  761. ETABLE_FIXED_ENTRY(ELLIPSE_ORDER, 2, SIGNED_FIELD, BackMode),
  762. ETABLE_FIXED_COORDS_ENTRY(ELLIPSE_ORDER, 2, SIGNED_FIELD, nLeftRect),
  763. ETABLE_FIXED_COORDS_ENTRY(ELLIPSE_ORDER, 2, SIGNED_FIELD, nTopRect),
  764. ETABLE_FIXED_COORDS_ENTRY(ELLIPSE_ORDER, 2, SIGNED_FIELD, nRightRect),
  765. ETABLE_FIXED_COORDS_ENTRY(ELLIPSE_ORDER, 2, SIGNED_FIELD,
  766. nBottomRect),
  767. ETABLE_FIXED_ENTRY(ELLIPSE_ORDER, 3, UNSIGNED_FIELD, BackColor),
  768. ETABLE_FIXED_ENTRY(ELLIPSE_ORDER, 3, UNSIGNED_FIELD, ForeColor),
  769. ETABLE_FIXED_ENTRY(ELLIPSE_ORDER, 1, SIGNED_FIELD, BrushOrgX),
  770. ETABLE_FIXED_ENTRY(ELLIPSE_ORDER, 1, SIGNED_FIELD, BrushOrgY),
  771. ETABLE_FIXED_ENTRY(ELLIPSE_ORDER, 1, UNSIGNED_FIELD, BrushStyle),
  772. ETABLE_FIXED_ENTRY(ELLIPSE_ORDER, 1, UNSIGNED_FIELD, BrushHatch),
  773. ETABLE_FIXED_ENTRY(ELLIPSE_ORDER, 7, UNSIGNED_FIELD, BrushExtra),
  774. ETABLE_FIXED_ENTRY(ELLIPSE_ORDER, 1, UNSIGNED_FIELD, ROP2),
  775. ETABLE_FIXED_ENTRY(ELLIPSE_ORDER, 1, UNSIGNED_FIELD, PenStyle),
  776. ETABLE_FIXED_ENTRY(ELLIPSE_ORDER, 1, UNSIGNED_FIELD, PenWidth),
  777. ETABLE_FIXED_ENTRY(ELLIPSE_ORDER, 3, UNSIGNED_FIELD, PenColor),
  778. { 0 }
  779. },
  780. //
  781. // Entries for the ARC_ORDER
  782. //
  783. {
  784. ETABLE_FIXED_ENTRY(ARC_ORDER, 2, SIGNED_FIELD, BackMode),
  785. ETABLE_FIXED_COORDS_ENTRY(ARC_ORDER, 2, SIGNED_FIELD, nLeftRect),
  786. ETABLE_FIXED_COORDS_ENTRY(ARC_ORDER, 2, SIGNED_FIELD, nTopRect),
  787. ETABLE_FIXED_COORDS_ENTRY(ARC_ORDER, 2, SIGNED_FIELD, nRightRect),
  788. ETABLE_FIXED_COORDS_ENTRY(ARC_ORDER, 2, SIGNED_FIELD, nBottomRect),
  789. ETABLE_FIXED_COORDS_ENTRY(ARC_ORDER, 2, SIGNED_FIELD, nXStart),
  790. ETABLE_FIXED_COORDS_ENTRY(ARC_ORDER, 2, SIGNED_FIELD, nYStart),
  791. ETABLE_FIXED_COORDS_ENTRY(ARC_ORDER, 2, SIGNED_FIELD, nXEnd),
  792. ETABLE_FIXED_COORDS_ENTRY(ARC_ORDER, 2, SIGNED_FIELD, nYEnd),
  793. ETABLE_FIXED_ENTRY(ARC_ORDER, 3, UNSIGNED_FIELD, BackColor),
  794. ETABLE_FIXED_ENTRY(ARC_ORDER, 1, UNSIGNED_FIELD, ROP2),
  795. ETABLE_FIXED_ENTRY(ARC_ORDER, 1, UNSIGNED_FIELD, PenStyle),
  796. ETABLE_FIXED_ENTRY(ARC_ORDER, 1, UNSIGNED_FIELD, PenWidth),
  797. ETABLE_FIXED_ENTRY(ARC_ORDER, 3, UNSIGNED_FIELD, PenColor),
  798. ETABLE_FIXED_ENTRY(ARC_ORDER, 1, UNSIGNED_FIELD, ArcDirection),
  799. { 0 }
  800. },
  801. //
  802. // Entries for the CHORD_ORDER
  803. //
  804. {
  805. ETABLE_FIXED_ENTRY(CHORD_ORDER, 2, SIGNED_FIELD, BackMode),
  806. ETABLE_FIXED_COORDS_ENTRY(CHORD_ORDER, 2, SIGNED_FIELD, nLeftRect),
  807. ETABLE_FIXED_COORDS_ENTRY(CHORD_ORDER, 2, SIGNED_FIELD, nTopRect),
  808. ETABLE_FIXED_COORDS_ENTRY(CHORD_ORDER, 2, SIGNED_FIELD, nRightRect),
  809. ETABLE_FIXED_COORDS_ENTRY(CHORD_ORDER, 2, SIGNED_FIELD, nBottomRect),
  810. ETABLE_FIXED_COORDS_ENTRY(CHORD_ORDER, 2, SIGNED_FIELD, nXStart),
  811. ETABLE_FIXED_COORDS_ENTRY(CHORD_ORDER, 2, SIGNED_FIELD, nYStart),
  812. ETABLE_FIXED_COORDS_ENTRY(CHORD_ORDER, 2, SIGNED_FIELD, nXEnd),
  813. ETABLE_FIXED_COORDS_ENTRY(CHORD_ORDER, 2, SIGNED_FIELD, nYEnd),
  814. ETABLE_FIXED_ENTRY(CHORD_ORDER, 3, UNSIGNED_FIELD, BackColor),
  815. ETABLE_FIXED_ENTRY(CHORD_ORDER, 3, UNSIGNED_FIELD, ForeColor),
  816. ETABLE_FIXED_ENTRY(CHORD_ORDER, 1, SIGNED_FIELD, BrushOrgX),
  817. ETABLE_FIXED_ENTRY(CHORD_ORDER, 1, SIGNED_FIELD, BrushOrgY),
  818. ETABLE_FIXED_ENTRY(CHORD_ORDER, 1, UNSIGNED_FIELD, BrushStyle),
  819. ETABLE_FIXED_ENTRY(CHORD_ORDER, 1, UNSIGNED_FIELD, BrushHatch),
  820. ETABLE_FIXED_ENTRY(CHORD_ORDER, 7, UNSIGNED_FIELD, BrushExtra),
  821. ETABLE_FIXED_ENTRY(CHORD_ORDER, 1, UNSIGNED_FIELD, ROP2),
  822. ETABLE_FIXED_ENTRY(CHORD_ORDER, 1, UNSIGNED_FIELD, PenStyle),
  823. ETABLE_FIXED_ENTRY(CHORD_ORDER, 1, UNSIGNED_FIELD, PenWidth),
  824. ETABLE_FIXED_ENTRY(CHORD_ORDER, 3, UNSIGNED_FIELD, PenColor),
  825. ETABLE_FIXED_ENTRY(CHORD_ORDER, 1, UNSIGNED_FIELD, ArcDirection),
  826. { 0 }
  827. },
  828. //
  829. // Entries for the POLYBEZIER_ORDER
  830. //
  831. {
  832. ETABLE_FIXED_ENTRY(POLYBEZIER_ORDER, 2, SIGNED_FIELD, BackMode),
  833. ETABLE_DATA_ENTRY(POLYBEZIER_ORDER, 3, UNSIGNED_FIELD, BackColor),
  834. ETABLE_DATA_ENTRY(POLYBEZIER_ORDER, 3, UNSIGNED_FIELD, ForeColor),
  835. ETABLE_FIXED_ENTRY(POLYBEZIER_ORDER, 1, UNSIGNED_FIELD, ROP2),
  836. ETABLE_FIXED_ENTRY(POLYBEZIER_ORDER, 1, UNSIGNED_FIELD, PenStyle),
  837. ETABLE_FIXED_ENTRY(POLYBEZIER_ORDER, 1, UNSIGNED_FIELD, PenWidth),
  838. ETABLE_DATA_ENTRY(POLYBEZIER_ORDER, 3, UNSIGNED_FIELD, PenColor),
  839. ETABLE_VARIABLE_ENTRY_POINTS(POLYBEZIER_ORDER, 2, UNSIGNED_FIELD,
  840. variablePoints, aPoints),
  841. { 0 }
  842. },
  843. //
  844. // Entries for the ROUNDRECT_ORDER
  845. //
  846. {
  847. ETABLE_FIXED_ENTRY(ROUNDRECT_ORDER, 2, SIGNED_FIELD, BackMode),
  848. ETABLE_FIXED_COORDS_ENTRY(ROUNDRECT_ORDER, 2, SIGNED_FIELD,
  849. nLeftRect),
  850. ETABLE_FIXED_COORDS_ENTRY(ROUNDRECT_ORDER, 2, SIGNED_FIELD, nTopRect),
  851. ETABLE_FIXED_COORDS_ENTRY(ROUNDRECT_ORDER, 2, SIGNED_FIELD,
  852. nRightRect),
  853. ETABLE_FIXED_COORDS_ENTRY(ROUNDRECT_ORDER, 2, SIGNED_FIELD,
  854. nBottomRect),
  855. ETABLE_FIXED_COORDS_ENTRY(ROUNDRECT_ORDER, 2, SIGNED_FIELD,
  856. nEllipseWidth),
  857. ETABLE_FIXED_COORDS_ENTRY(ROUNDRECT_ORDER, 2, SIGNED_FIELD,
  858. nEllipseHeight),
  859. ETABLE_DATA_ENTRY(ROUNDRECT_ORDER, 3, UNSIGNED_FIELD, BackColor),
  860. ETABLE_DATA_ENTRY(ROUNDRECT_ORDER, 3, UNSIGNED_FIELD, ForeColor),
  861. ETABLE_FIXED_ENTRY(ROUNDRECT_ORDER, 1, SIGNED_FIELD, BrushOrgX),
  862. ETABLE_FIXED_ENTRY(ROUNDRECT_ORDER, 1, SIGNED_FIELD, BrushOrgY),
  863. ETABLE_FIXED_ENTRY(ROUNDRECT_ORDER, 1, UNSIGNED_FIELD, BrushStyle),
  864. ETABLE_FIXED_ENTRY(ROUNDRECT_ORDER, 1, UNSIGNED_FIELD, BrushHatch),
  865. ETABLE_DATA_ENTRY(ROUNDRECT_ORDER, 7, UNSIGNED_FIELD, BrushExtra),
  866. ETABLE_FIXED_ENTRY(ROUNDRECT_ORDER, 1, UNSIGNED_FIELD, ROP2),
  867. ETABLE_FIXED_ENTRY(ROUNDRECT_ORDER, 1, UNSIGNED_FIELD, PenStyle),
  868. ETABLE_FIXED_ENTRY(ROUNDRECT_ORDER, 1, UNSIGNED_FIELD, PenWidth),
  869. ETABLE_DATA_ENTRY(ROUNDRECT_ORDER, 3, UNSIGNED_FIELD, PenColor),
  870. { 0 }
  871. }
  872. };
  873. #endif // !DC_DEFINE_DATA
  874. //
  875. // T.120 S20
  876. //
  877. //
  878. // The S20 MCS channel registered with GCC.
  879. //
  880. DC_DATA( NET_UID, g_s20LocalID );
  881. DC_DATA( NET_CHANNEL_ID, g_s20BroadcastID );
  882. DC_DATA( UINT, g_s20State );
  883. DC_DATA( PMG_CLIENT, g_s20pmgClient );
  884. DC_DATA( BOOL, g_s20JoinedLocal );
  885. DC_DATA( UINT, g_s20ShareCorrelator );
  886. DC_DATA( UINT, g_s20Generation );
  887. //
  888. // This is S20_CREATE or S20_JOIN if we need to issue a create or join when
  889. // we have succesfully joined the channel.
  890. //
  891. DC_DATA( UINT, g_s20Pend );
  892. //
  893. // The control packet queue and indexes. The head is the next packet which
  894. // should be sent, the tail is where the next packet should be added. If
  895. // they are equal there are no packets on the queue.
  896. //
  897. DC_DATA( UINT, g_s20ControlPacketQHead );
  898. DC_DATA( UINT, g_s20ControlPacketQTail );
  899. DC_DATA_ARRAY( S20CONTROLPACKETQENTRY,
  900. g_s20ControlPacketQ,
  901. S20_MAX_QUEUED_CONTROL_PACKETS );
  902. //
  903. // Sent Bitmap Cache
  904. //
  905. DC_DATA ( BOOL, g_sbcEnabled );
  906. DC_DATA_ARRAY ( LPSBC_SHUNT_BUFFER, g_asbcShuntBuffers, SBC_NUM_TILE_SIZES );
  907. DC_DATA_ARRAY ( DWORD, g_asbcBitMasks, 3 );
  908. //
  909. // Share Controller
  910. //
  911. DC_DATA ( PCM_CLIENT, g_pcmClientSc);
  912. //
  913. // Scheduler
  914. //
  915. DC_DATA ( BOOL, g_schTerminating );
  916. DC_DATA ( UINT, g_schCurrentMode );
  917. DC_DATA ( UINT, g_schTimeoutPeriod );
  918. DC_DATA ( UINT, g_schLastTurboModeSwitch );
  919. DC_DATA ( HANDLE, g_schEvent );
  920. DC_DATA ( DWORD, g_schThreadID );
  921. DC_DATA ( BOOL, g_schMessageOutstanding );
  922. DC_DATA ( BOOL, g_schStayAwake );
  923. DC_DATA ( CRITICAL_SECTION, g_schCriticalSection );