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