1 {
2 *****************************************************************************
3 * *
4 * This file is part of the ZCAD *
5 * *
6 * See the file COPYING.modifiedLGPL.txt, included in this distribution, *
7 * for details about the copyright. *
8 * *
9 * This program is distributed in the hope that it will be useful, *
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
12 * *
13 *****************************************************************************
14 }
15 {
16 @author(Andrey Zubarev <zamtmn@yandex.ru>)
17 }
18 unit uzbtypes;
19 {$INCLUDE def.inc}
20 interface
21 uses uzbtypesbase,uzbgeomtypes,sysutils;
22 //gdbobjectsconstdef;
23 const
24 cmd_ok=-1;
25 cmd_error=1;
26 cmd_cancel=-2;
27 ZCMD_OK_NOEND=-10;
28 GDBBaseObjectID = 30000;
29 ObjN_NotRecognized='NotRecognized';
30 type
31 TZMessageID=type integer;
32 TProcCounter=procedure(const PInstance,PCounted:GDBPointer;var Counter:GDBInteger);
33 TControlPointAttr=(CPA_Strech);
34 TControlPointAttrs=set of TControlPointAttr;
35 {REGISTEROBJECTTYPE GDBBaseCamera}
36 {EXPORT+}
37 (*varcategoryforoi SUMMARY='Summary'*)
38 (*varcategoryforoi CABLE='Cable params'*)
39 (*varcategoryforoi DEVICE='Device params'*)
40 (*varcategoryforoi OBJFUNC='Function:object'*)
41 (*varcategoryforoi NMO='Name'*)
42 (*varcategoryforoi DB='Data base'*)
43 (*varcategoryforoi GC='Group connection'*)
44 (*varcategoryforoi LENGTH='Length params'*)
45 (*varcategoryforoi BTY='Blockdef params'*)
46 (*varcategoryforoi EL='El(deprecated)'*)
47 (*varcategoryforoi UNITPARAM='Measured parameter'*)
48 (*varcategoryforoi DESC='Description'*)
49
50 (*varcategoryforoi CENTER='Center'*)
51 (*varcategoryforoi START='Start'*)
52 (*varcategoryforoi END='End'*)
53 (*varcategoryforoi DELTA='Delta'*)
54 (*varcategoryforoi INSERT='Insert'*)
55 (*varcategoryforoi NORMAL='Normal'*)
56 (*varcategoryforoi SCALE='Scale'*)
57
58 GDBTypedPointer=packed record
59 Instance:GDBPointer;
60 PTD:GDBPointer;
61 end;
62 TObjID=GDBWord;
63 PGDBaseObject=^GDBaseObject;
64 GDBaseObject={$IFNDEF DELPHI}packed{$ENDIF} object
ObjToGDBStringnull65 function ObjToGDBString(prefix,sufix:GDBString):GDBString; virtual;
GetObjTypenull66 function GetObjType:TObjID;virtual;
67 //procedure Format;virtual;
68 procedure FormatAfterFielfmod(PField,PTypeDescriptor:GDBPointer);virtual;
GetObjTypeNamenull69 function GetObjTypeName:GDBString;virtual;
GetObjNamenull70 function GetObjName:GDBString;virtual;
71 constructor initnul;
72 destructor Done;virtual;{ abstract;}
IsEntitynull73 function IsEntity:GDBBoolean;virtual;
74
75 end;
76 TArcData=packed record
77 r,startangle,endangle:gdbdouble;
78 p:GDBvertex2D;
79 end;
80 GDBCameraBaseProp=packed record
81 point:GDBvertex;
82 look:GDBvertex;
83 ydir:GDBvertex;
84 xdir:GDBvertex;
85 zoom: GDBDouble;
86 end;
87 tmatrixs=packed record
88 pmodelMatrix:PDMatrix4D;
89 pprojMatrix:PDMatrix4D;
90 pviewport:PIMatrix4;
91 end;
92 TActulity=GDBInteger;
93 TEntUpgradeInfo=GDBLongword;
94 PGDBBaseCamera=^GDBBaseCamera;
95 GDBBaseCamera={$IFNDEF DELPHI}packed{$ENDIF} object(GDBaseObject)
96 modelMatrix:DMatrix4D;
97 fovy:GDBDouble;
98 totalobj:GDBInteger;
99 prop:GDBCameraBaseProp;
100 anglx,angly,zmin,zmax:GDBDouble;
101 projMatrix:DMatrix4D;
102 viewport:IMatrix4;
103 clip:DMatrix4D;
104 frustum:ClipArray;
105 infrustum:GDBInteger;
106 obj_zmax,obj_zmin:GDBDouble;
107 DRAWNOTEND:GDBBoolean;
108 DRAWCOUNT:TActulity;
109 POSCOUNT:TActulity;
110 VISCOUNT:TActulity;
111 CamCSOffset:GDBvertex;
112 procedure NextPosition;virtual; abstract;
113 end;
114 PGDBNamedObject=^GDBNamedObject;
115 GDBNamedObject={$IFNDEF DELPHI}packed{$ENDIF} object(GDBaseObject)
116 Name:GDBAnsiString;(*saved_to_shd*)(*'Name'*)
117 constructor initnul;
118 constructor init(n:GDBString);
119 destructor Done;virtual;
120 procedure SetName(n:GDBString);
GetNamenull121 function GetName:GDBString;
GetFullNamenull122 function GetFullName:GDBString;virtual;
123 procedure SetDefaultValues;virtual;
124 procedure IterateCounter(PCounted:GDBPointer;var Counter:GDBInteger;proc:TProcCounter);virtual;
125 end;
126 PGLLWWidth=^GLLWWidth;
127 GLLWWidth=packed record
128 startw:GDBDouble;(*saved_to_shd*)
129 endw:GDBDouble;(*saved_to_shd*)
130 hw:GDBBoolean;(*saved_to_shd*)
131 quad:GDBQuad2d;
132 end;
133 PGDBStrWithPoint=^GDBStrWithPoint;
134 GDBStrWithPoint=packed record
135 str:GDBString;
136 x,y,z,w:GDBDouble;
137 end;
138 GDBArrayVertex2D=packed array[0..300] of GDBVertex2D;
139 PGDBArrayVertex2D=^GDBArrayVertex2D;
140 PGDBArrayGLlwwidth=^GDBArrayGLlwwidth;
141 GDBArrayGLlwwidth=packed array[0..300] of GLLWWidth;
142 PGDBArrayVertex=^GDBArrayVertex;
143 GDBArrayVertex=packed array[0..0] of GDBvertex;
144 pcontrolpointdesc=^controlpointdesc;
145 controlpointdesc=packed record
146 pointtype:GDBInteger;
147 attr:TControlPointAttrs;
148 pobject:GDBPointer;
149 worldcoord:GDBvertex;
150 dcoord:GDBvertex;
151 dispcoord:GDBvertex2DI;
152 selected:GDBBoolean;
153 end;
154 TRTModifyData=packed record
155 point:controlpointdesc;
156 dist,wc:gdbvertex;
157 end;
158 tcontrolpointdist=packed record
159 pcontrolpoint:pcontrolpointdesc;
160 disttomouse:GDBInteger;
161 end;
162 TPolyData=packed record
163 //nearestvertex:gdbinteger;
164 //nearestline:gdbinteger;
165 //dir:gdbinteger;
166 index:gdbinteger;
167 wc:GDBVertex;
168 end;
169 TLoadOpt=(TLOLoad,TLOMerge);
170 PTLayerControl=^TLayerControl;
171 TLayerControl=packed record
172 Enabled:GDBBoolean;(*'Enabled'*)
173 LayerName:GDBAnsiString;(*'Layer name'*)
174 end;
175 TShapeBorder=(SB_Owner,SB_Self,SB_Empty);
176 TShapeClass=(SC_Connector,SC_Terminal,SC_Graphix,SC_Unknown);
177 TShapeGroup=(SG_El_Sch,SG_Cable_Sch,SG_Plan,SG_Unknown);
178
179 TBlockType=(BT_Connector,BT_Unknown);
180 TBlockBorder=(BB_Owner,BB_Self,BB_Empty);
181 TBlockGroup=(BG_El_Device,BG_Unknown);
182 TBlockDesc=packed record
183 BType:TBlockType;(*'Block type'*)
184 BBorder:TBlockBorder;(*'Border'*)
185 BGroup:TBlockGroup;(*'Block group'*)
186 end;
187 PStringTreeType=^TStringTreeType;
188 TStringTreeType=GDBString;
189 TENTID=TStringTreeType;
190 TEentityRepresentation=TStringTreeType;
TStringTreeTypenull191 TEentityFunction=TStringTreeType;
192 PGDBsymdolinfo=^GDBsymdolinfo;
193 GDBsymdolinfo=packed record
194 LLPrimitiveStartIndex: GDBInteger;
195 LLPrimitiveCount: GDBInteger;
196 NextSymX, SymMaxY,SymMinY, SymMaxX,SymMinX, w, h: GDBDouble;
197 Name:GDBString;
198 Number:GDBInteger;
199 LatestCreate:GDBBoolean;
200 end;
201 PGDBUNISymbolInfo=^GDBUNISymbolInfo;
202 GDBUNISymbolInfo=packed record
203 symbol:GDBInteger;
204 symbolinfo:GDBsymdolinfo;
205 end;
206 TTextJustify=(jstl(*'TopLeft'*),
207 jstc(*'TopCenter'*),
208 jstr(*'TopRight'*),
209 jsml(*'MiddleLeft'*),
210 jsmc(*'MiddleCenter'*), //СерединаЦентр
211 jsmr(*'MiddleRight'*),
212 jsbl(*'BottomLeft'*),
213 jsbc(*'BottomCenter'*),
214 jsbr(*'BottomRight'*),
215 jsbtl(*'Left'*),
216 jsbtc(*'Center'*),
217 jsbtr(*'Right'*));
218 TSymbolInfoArray=packed array [0..255] of GDBsymdolinfo;
219 PTAlign=^TAlign;
220 TAlign=(TATop,TABottom,TALeft,TARight);
221 TDWGHandle=GDBQWord;
222 PTGDBLineWeight=^TGDBLineWeight;
223 TGDBLineWeight=GDBSmallint;
224 PTGDBOSMode=^TGDBOSMode;
225 TGDBOSMode=GDBInteger;
226 TGDB3StateBool=(T3SB_Fale(*'False'*),T3SB_True(*'True'*),T3SB_Default(*'Default'*));
227 PTGDB3StateBool=^TGDB3StateBool;
228 PTFaceTypedData=^TFaceTypedData;
229 TFaceTypedData=packed record
230 Instance: GDBPointer;
231 PTD: GDBPointer;
232 end;
233 TLLPrimitiveAttrib=GDBInteger;
234 PTLLVertexIndex=^TLLVertexIndex;
235 TLLVertexIndex=GDBInteger;
236 PTGDBIntegerOverrider=^TGDBIntegerOverrider;
237 TGDBIntegerOverrider=packed record
238 Enable:GDBBoolean;(*'Enable'*)
239 Value:GDBInteger;(*'New value'*)
240 end;
241 TImageDegradation=packed record
242 RD_ID_Enabled:PGDBBoolean;(*'Enabled'*)
243 RD_ID_CurrentDegradationFactor:PGDBDouble;(*'Current degradation factor'*)(*oi_readonly*)
244 RD_ID_MaxDegradationFactor:PGDBDouble;(*'Max degradation factor'*)
245 RD_ID_PrefferedRenderTime:PGDBInteger;(*'Prefered rendertime'*)
246 end;
247 PExtensionData=GDBPointer;
248 {EXPORT-}
249 var
250 VerboseLog:pboolean;
251 {$IFDEF DELPHI}
StrToQWordnull252 function StrToQWord(sh:string):UInt64;
253 {$ENDIF}
254 implementation
255 var
256 DummyVerboseLog:boolean=true;
GDBaseObject.GetObjTypenull257 function GDBaseObject.GetObjType:GDBWord;
258 begin
259 result:=GDBBaseObjectID;
260 end;
GDBaseObject.ObjToGDBStringnull261 function GDBaseObject.ObjToGDBString(prefix,sufix:GDBString):GDBString;
262 begin
263 result:=prefix+GetObjTypeName+sufix;
264 end;
265 constructor GDBaseObject.initnul;
266 begin
267 end;
GDBaseObject.IsEntitynull268 function GDBaseObject.IsEntity:GDBBoolean;
269 begin
270 result:=false;
271 end;
272 destructor GDBaseObject.Done;
273 begin
274
275 end;
276
277 {procedure GDBaseObject.format;
278 begin
279 end;}
280 procedure GDBaseObject.FormatAfterFielfmod(PField,PTypeDescriptor:GDBPointer);
281 begin
282 //format;
283 end;
GDBaseObject.GetObjTypeNamenull284 function GDBaseObject.GetObjTypeName:GDBString;
285 begin
286 //pointer(result):=typeof(testobj);
287 result:='GDBaseObject';
288
289 end;
GDBaseObject.GetObjNamenull290 function GDBaseObject.GetObjName:GDBString;
291 begin
292 //pointer(result):=typeof(testobj);
293 result:=GetObjTypeName;
294
295 end;
296 constructor GDBNamedObject.initnul;
297 begin
298 pointer(name):=nil;
299 SetDefaultValues;
300 end;
301 constructor GDBNamedObject.Init(n:GDBString);
302 begin
303 initnul;
304 SetName(n);
305 end;
306 destructor GDBNamedObject.done;
307 begin
308 SetName('');
309 end;
310 procedure GDBNamedObject.SetName(n:GDBString);
311 begin
312 name:=n;
313 end;
GDBNamedObject.GetNamenull314 function GDBNamedObject.GetName:GDBString;
315 begin
316 result:=name;
317 end;
GDBNamedObject.GetFullNamenull318 function GDBNamedObject.GetFullName:GDBString;
319 begin
320 result:=name;
321 end;
322 procedure GDBNamedObject.SetDefaultValues;
323 begin
324 end;
325 procedure GDBNamedObject.IterateCounter(PCounted:GDBPointer;var Counter:GDBInteger;proc:TProcCounter);
326 begin
327 proc(@self,PCounted,Counter);
328 end;
329 {$IFDEF DELPHI}
StrToQWordnull330 function StrToQWord(sh:string):UInt64;
331 begin
332 result:=strtoint(sh);
333 end;
334 {$ENDIF}
335 begin
336 VerboseLog:=@DummyVerboseLog;
337 end.
338
339