|
|
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.