|
|
1.1 ! root 1: /* $Header: packet.h,v 10.3 86/02/01 15:47:13 tony Rel $ */ ! 2: /* packet.h Packet descriptions for Workstation Graphics Architecture ! 3: * command packets ! 4: * ! 5: * Each object has two definitions. The more human-readable one ! 6: * has "reasonable" definitions, the one beginning with a_ expresses ! 7: * the structure as an array of shorts so that the C compiler doesn't ! 8: * move it around for silly alignment reasons. ! 9: * ! 10: * Author: Paul J. Asente ! 11: * Digital Equipment Corporation ! 12: * Western Reseach Lab ! 13: * Date: June 1983 ! 14: */ ! 15: ! 16: /**************************************************************************** ! 17: * * ! 18: * Copyright (c) 1983, 1984 by * ! 19: * DIGITAL EQUIPMENT CORPORATION, Maynard, Massachusetts. * ! 20: * All rights reserved. * ! 21: * * ! 22: * This software is furnished on an as-is basis and may be used and copied * ! 23: * only with inclusion of the above copyright notice. This software or any * ! 24: * other copies thereof may be provided or otherwise made available to * ! 25: * others only for non-commercial purposes. No title to or ownership of * ! 26: * the software is hereby transferred. * ! 27: * * ! 28: * The information in this software is subject to change without notice * ! 29: * and should not be construed as a commitment by DIGITAL EQUIPMENT * ! 30: * CORPORATION. * ! 31: * * ! 32: * DIGITAL assumes no responsibility for the use or reliability of its * ! 33: * software on equipment which is not supplied by DIGITAL. * ! 34: * * ! 35: * * ! 36: ****************************************************************************/ ! 37: ! 38: #ifndef WGA_PACKET ! 39: #define WGA_PACKET ! 40: ! 41: typedef struct _CopyAreaMod { ! 42: unsigned : 8; ! 43: unsigned m_source : 3; ! 44: unsigned m_mask : 3; ! 45: unsigned : 3; ! 46: unsigned m_map : 3; ! 47: unsigned m_clipping : 3; ! 48: } CopyAreaMod; ! 49: ! 50: typedef struct _DrawCurveMod { ! 51: unsigned : 8; ! 52: unsigned m_source : 3; ! 53: unsigned m_mask : 3; ! 54: unsigned : 3; ! 55: unsigned m_map : 3; ! 56: unsigned m_clipping : 3; ! 57: unsigned m_drawMode : 1; ! 58: unsigned m_patState : 2; ! 59: unsigned m_patMode : 2; ! 60: } DrawCurveMod; ! 61: ! 62: typedef struct _PrintTextMod { ! 63: unsigned : 8; ! 64: unsigned m_source : 3; ! 65: unsigned m_mask: 3; ! 66: unsigned m_dest : 3; ! 67: unsigned m_map : 3; ! 68: unsigned m_clipping : 3; ! 69: unsigned m_textSize : 1; ! 70: unsigned m_control : 1; ! 71: } PrintTextMod; ! 72: ! 73: typedef struct _FillAreaMod { ! 74: unsigned : 8; ! 75: unsigned m_source : 3; ! 76: unsigned : 6; ! 77: unsigned m_map : 3; ! 78: unsigned m_clipping : 3; ! 79: } FillAreaMod; ! 80: ! 81: typedef struct _FloodAreaMod { ! 82: unsigned : 8; ! 83: unsigned m_source : 3; ! 84: unsigned : 9; ! 85: unsigned m_clipping : 3; ! 86: unsigned m_boundary : 1; ! 87: } FloodAreaMod; ! 88: ! 89: typedef struct _LoadCursorMod { ! 90: unsigned : 8; ! 91: unsigned m_source : 3; ! 92: unsigned m_mask : 3; ! 93: unsigned : 3; ! 94: unsigned m_map : 3; ! 95: } LoadCursorMod; ! 96: ! 97: typedef struct _SetMouseCharacteristicsMod { ! 98: unsigned : 8; ! 99: unsigned m_tracking : 3; ! 100: } SetMouseCharacteristicsMod; ! 101: ! 102: typedef struct _SetTabletCharacteristicsMod { ! 103: unsigned : 8; ! 104: unsigned m_tracking : 3; ! 105: } SetTabletCharacteristicsMod; ! 106: ! 107: typedef struct _PacketHeader { ! 108: union { ! 109: struct { ! 110: unsigned _opcode : 8; ! 111: unsigned _modifier : 24; ! 112: } ph; ! 113: long emptymod; ! 114: CopyAreaMod copy; ! 115: DrawCurveMod draw; ! 116: PrintTextMod text; ! 117: FillAreaMod fill; ! 118: FloodAreaMod flood; ! 119: LoadCursorMod cursor; ! 120: SetMouseCharacteristicsMod mouse; ! 121: SetTabletCharacteristicsMod tablet; ! 122: } ph_modifier; ! 123: a_CharPtr ph_next; ! 124: } PacketHeader; ! 125: ! 126: #define ph_copyMod ph_modifier.copy ! 127: #define ph_drawMod ph_modifier.draw ! 128: #define ph_textMod ph_modifier.text ! 129: #define ph_fillMod ph_modifier.fill ! 130: #define ph_floodMod ph_modifier.flood ! 131: #define ph_cursorMod ph_modifier.cursor ! 132: #define ph_mouseMod ph_modifier.mouse ! 133: #define ph_tabletMod ph_modifier.tablet ! 134: ! 135: typedef short a_PacketHeader[4]; ! 136: ! 137: #define ph_opcode ph_modifier.ph._opcode ! 138: ! 139: #define COPY_AREA 1 ! 140: ! 141: typedef struct _CopyAreaPacket { ! 142: a_PacketHeader cap_head; ! 143: union { ! 144: a_SubBitmap image; ! 145: Constant const; ! 146: a_Halftone pattern; ! 147: } cap_source; ! 148: a_SubBitmap cap_sourceMask; ! 149: a_Extent cap_maskSize; ! 150: a_Bitmap cap_destImage; ! 151: a_Point cap_destOffset; ! 152: union { ! 153: a_MapPtr ptr; ! 154: a_Map literal; ! 155: } cap_map; ! 156: union { ! 157: a_RectangleList rectList; ! 158: a_Rectangle litRect; ! 159: } cap_clipping; ! 160: } CopyAreaPacket; ! 161: ! 162: typedef short a_CopyAreaPacket[33]; ! 163: ! 164: #define DRAW_CURVE 2 ! 165: ! 166: typedef struct _DrawCurvePacket { ! 167: a_PacketHeader dcp_head; ! 168: union { ! 169: a_SubBitmap image; ! 170: Constant const; ! 171: a_Halftone pattern; ! 172: } dcp_source; ! 173: a_SubBitmap dcp_sourceMask; ! 174: a_Extent dcp_maskSize; ! 175: a_Bitmap dcp_destImage; ! 176: a_Point dcp_destOffset; ! 177: union { ! 178: a_MapPtr ptr; ! 179: a_Map literal; ! 180: } dcp_map; ! 181: union { ! 182: a_RectangleList rectList; ! 183: a_Rectangle litRect; ! 184: } dcp_clipping; ! 185: a_SegmentList dcp_path; ! 186: a_PatternString dcp_pattern; ! 187: union { ! 188: a_PatternState literal; ! 189: a_PatternStatePtr ptr; ! 190: } dcp_patState; ! 191: union { ! 192: a_SubBitmap image; ! 193: Constant const; ! 194: a_Halftone pattern; ! 195: } dcp_secondSource; ! 196: } DrawCurvePacket; ! 197: ! 198: typedef short a_DrawCurvePacket[49]; ! 199: ! 200: #define PRINT_TEXT 3 ! 201: ! 202: typedef struct _PrintTextPacket { ! 203: a_PacketHeader ptp_head; ! 204: union { ! 205: a_FontPtr font; ! 206: Constant const; ! 207: a_Halftone pattern; ! 208: } ptp_source; ! 209: a_FontPtr ptp_mask; ! 210: short filler[7]; ! 211: a_Bitmap ptp_destImage; ! 212: union { ! 213: a_Point literal; ! 214: a_PointPtr ptr; ! 215: } ptp_initialOffset; ! 216: union { ! 217: a_MapPtr ptr; ! 218: a_Map literal; ! 219: } ptp_map; ! 220: union { ! 221: a_RectangleList rectList; ! 222: a_Rectangle litRect; ! 223: } ptp_clipping; ! 224: a_TextString ptp_text; ! 225: a_ControlString ptp_control; ! 226: short ptp_charPad; ! 227: short ptp_spacePad; ! 228: } PrintTextPacket; ! 229: ! 230: typedef short a_PrintTextPacket[41]; ! 231: ! 232: #define FILL_AREA 11 ! 233: ! 234: typedef struct _FillAreaPacket { ! 235: a_PacketHeader fap_head; ! 236: union { ! 237: Constant const; ! 238: a_Halftone pattern; ! 239: } fap_source; ! 240: a_Bitmap fap_destImage; ! 241: a_Point fap_destOffset; ! 242: union { ! 243: a_MapPtr ptr; ! 244: a_Map literal; ! 245: } fap_map; ! 246: a_Rectangle fap_clippingRec; ! 247: a_SegmentList fap_path; ! 248: } FillAreaPacket; ! 249: ! 250: typedef short a_FillAreaPacket[28]; ! 251: ! 252: #define FLOOD_AREA 4 ! 253: ! 254: typedef struct _FloodAreaPacket { ! 255: a_PacketHeader flp_head; ! 256: union { ! 257: Constant const; ! 258: a_Halftone pattern; ! 259: } flp_source; ! 260: a_Bitmap flp_destImage; ! 261: a_Point flp_seed; ! 262: Rectangle flp_clippingRec; ! 263: union { ! 264: a_MapPtr ptr; ! 265: a_Map literal; ! 266: } flp_boundary; ! 267: } FloodAreaPacket; ! 268: ! 269: typedef short a_FloodAreaPacket[24]; ! 270: ! 271: #define LOAD_CURSOR 5 ! 272: ! 273: typedef struct _LoadCursorPacket { ! 274: a_PacketHeader lcp_head; ! 275: union { ! 276: a_SubBitmap image; ! 277: Constant const; ! 278: a_Halftone pattern; ! 279: } lcp_source; ! 280: a_SubBitmap lcp_sourceMask; ! 281: a_Extent lcp_maskSize; ! 282: union { ! 283: a_MapPtr ptr; ! 284: a_Map literal; ! 285: } lcp_map; ! 286: short lcp_blink; ! 287: short lcp_tip_x; ! 288: short lcp_tip_y; ! 289: short lcp_center_x; ! 290: short lcp_center_y; ! 291: } LoadCursorPacket; ! 292: ! 293: typedef short a_LoadCursorPacket[29]; ! 294: ! 295: #define SET_CURSOR_POSITION 6 ! 296: ! 297: typedef struct _SetCursorPositionPacket { ! 298: a_PacketHeader scp_head; ! 299: a_Point scp_position; ! 300: } SetCursorPositionPacket; ! 301: ! 302: typedef short a_SetCursorPositionPacket[6]; ! 303: ! 304: #define ATTACH_CURSOR 7 ! 305: ! 306: typedef struct _AttachCursorPacket { ! 307: a_PacketHeader acp_head; ! 308: short acp_device; ! 309: } AttachCursorPacket; ! 310: ! 311: typedef short a_AttachCursorPacket[5]; ! 312: ! 313: #define GET_CURSOR_POSITION 8 ! 314: ! 315: typedef struct _GetCursorPositionPacket { ! 316: a_PacketHeader gcp_head; ! 317: a_Point gcp_position; ! 318: } GetCursorPositionPacket; ! 319: ! 320: typedef short a_GetCursorPositionPacket[6]; ! 321: ! 322: #define MOVE_OBJECT 9 ! 323: #define MOVE_OBJECT_ROM 128 ! 324: ! 325: typedef struct _MoveObjectPacket { ! 326: a_PacketHeader mop_head; ! 327: short mop_objectType; ! 328: a_MemSize mop_objectSize; ! 329: a_CharPtr mop_source; ! 330: a_CharPtr mop_dest; ! 331: } MoveObjectPacket; ! 332: ! 333: typedef short a_MoveObjectPacket[11]; ! 334: ! 335: #define REPORT_STATUS 10 ! 336: #define REPORT_STATUS_ROM 129 ! 337: ! 338: typedef struct _ReportStatusPacket { ! 339: a_PacketHeader rsp_head; ! 340: char rsp_deviceType[4]; ! 341: short rsp_deviceVersion; ! 342: short rsp_ucodeVersion; ! 343: a_Bitmap rsp_visibleFramebuffer; ! 344: a_MemArea rsp_freeFramebuffer; ! 345: a_MemArea rsp_freeProgramMemory; ! 346: a_MemArea rsp_hostMemory; ! 347: } ReportStatusPacket; ! 348: ! 349: typedef short a_ReportStatusPacket[25]; ! 350: ! 351: #define NO_OPERATION 0 ! 352: ! 353: typedef struct _NoopPacket { ! 354: a_PacketHeader nop_head; ! 355: } NoopPacket; ! 356: ! 357: typedef short a_NoopPacket[4]; ! 358: ! 359: #define GET_MOUSE_POSITION 12 ! 360: ! 361: typedef struct _GetMousePositionPacket { ! 362: a_PacketHeader gmp_head; ! 363: a_Point gmp_position; ! 364: } GetMousePositionPacket; ! 365: ! 366: typedef short a_GetMousePositionPacket[6]; ! 367: ! 368: #define SET_MOUSE_CHARACTERISTICS 13 ! 369: ! 370: typedef struct _SetMouseCharacteristicsPacket { ! 371: a_PacketHeader smc_head; ! 372: union { ! 373: struct { ! 374: short multiplier; ! 375: short divisor; ! 376: } linear; ! 377: struct { ! 378: short scale; ! 379: short threshold; ! 380: } exponential; ! 381: } tracking; ! 382: } SetMouseCharacteristicsPacket; ! 383: ! 384: ! 385: #define smc_multiplier tracking.linear.multiplier ! 386: #define smc_divisor tracking.linear.divisor ! 387: #define smc_threshold tracking.exponential.threshold ! 388: #define smc_scale tracking.exponential.scale ! 389: ! 390: typedef short a_SetMouseCharacteristicsPacket[6]; ! 391: ! 392: #define GET_TABLET_POSITION 14 ! 393: ! 394: typedef struct _GetTabletPositionPacket { ! 395: a_PacketHeader gtp_head; ! 396: a_Point gtp_position; ! 397: } GetTabletPositionPacket; ! 398: ! 399: typedef short a_GetTabletPositionPacket[6]; ! 400: ! 401: #define SET_TABLET_CHARACTERISTICS 16 ! 402: ! 403: typedef struct _SetTabletCharacteristicsPacket { ! 404: a_PacketHeader stc_head; ! 405: union { ! 406: struct { ! 407: short multiplier; ! 408: short divisor; ! 409: } linear; ! 410: struct { ! 411: a_Point input; ! 412: a_Point output; ! 413: } quantized; ! 414: } tracking; ! 415: } SetTabletCharacteristicsPacket; ! 416: ! 417: #define stc_multiplier tracking.linear.multiplier ! 418: #define stc_divisor tracking.linear.divisor ! 419: #define stc_input tracking.quantized.input ! 420: #define stc_output tracking.quantized.output ! 421: ! 422: typedef short a_SetTabletCharacteristicsPacket[8]; ! 423: ! 424: #define SET_POINTING_DEVICE_REPORTING 15 ! 425: ! 426: typedef struct _SetPointingDeviceReportingPacket { ! 427: a_PacketHeader spdp_head; ! 428: short spdp_enable; ! 429: } SetPointingDeviceReportingPacket; ! 430: ! 431: typedef short a_SetPointingDeviceReportingPacket[5]; ! 432: ! 433: typedef union _Packet { ! 434: a_CopyAreaPacket copyArea; ! 435: a_DrawCurvePacket drawCurve; ! 436: a_PrintTextPacket writeText; ! 437: a_FillAreaPacket fillArea; ! 438: a_FloodAreaPacket floodArea; ! 439: a_LoadCursorPacket loadCursor; ! 440: a_SetCursorPositionPacket setCursor; ! 441: a_AttachCursorPacket attachCursor; ! 442: a_GetCursorPositionPacket getCursor; ! 443: a_MoveObjectPacket moveObject; ! 444: a_ReportStatusPacket reportStatus; ! 445: a_NoopPacket noop; ! 446: a_GetMousePositionPacket getMouse; ! 447: a_SetMouseCharacteristicsPacket setMouse; ! 448: a_GetTabletPositionPacket getTablet; ! 449: a_SetTabletCharacteristicsPacket setTablet; ! 450: a_SetPointingDeviceReportingPacket setPointingDevice; ! 451: } Packet; ! 452: ! 453: #endif
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.