-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathReceiveRecords.pas
99 lines (66 loc) · 1.85 KB
/
ReceiveRecords.pas
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
unit ReceiveRecords;
interface
type
{$Z4} //integer enum
RxRectTypeEnum = (RxRectType_Point, RxRectType_Line, RxRectType_Arc, RxRectType_Polyline, RxRectType_GeometryList);
{$Z1}
const
RxRectType_Undefined = RxRectTypeEnum(-1);
Type
//The base memory block of all parameter recs,
// also serves as a signal parameter (no data transmitted)
PPRxRec = ^PRxRec; //array of pointers to RxRec
PRxRec = ^RxRec;
RxRec = Record
Size: Cardinal; //UInt32
RecType: RxRectTypeEnum; // Integer
End;
PPointRec = ^PointRec;
PointRec = Record
X, Y : double;
End;
PRxPointRec = ^RxPointRec;
RxPointRec = Record
// Common header
Size: Cardinal; //UInt32
RecType: RxRectTypeEnum;
//Point Specific
p: PointRec;
End;
PRxLineRec = ^RxLineRec;
RxLineRec = Record
// Common header
Size: Cardinal; //UInt32
RecType: RxRectTypeEnum;
//Line Specific
p1, p2 : PointRec;
End;
PRxArcRec = ^RxArcRec;
RxArcRec = Record
// Common header
Size: Cardinal; //UInt32
RecType: RxRectTypeEnum;
// Arc Specific
p : PointRec;
CCW: Boolean; //in Delphi a Boolean has size of Byte
StartAngle, EndAngle: Double;
End;
PRxPolyLineRec = ^RxPolyLineRec;
RxPolyLineRec = Record
// Common header
Size: Cardinal; //UInt32
RecType: RxRectTypeEnum;
// Polyline Specific
VertexCount: Uint32;
Vertices : PPointRec; // since x can have a valid value of zero, we need a count, we can't use null termination
End;
PRxGeometryListRec = ^RxGeometryListRec;
RxGeometryListRec = Record
// Common header
Size: Cardinal; //UInt32
RecType: RxRectTypeEnum;
// GeometryListRec Specific
Geometry : PPRxRec; // null terminated
End;
implementation
end.