/src/gdal/ogr/ogrsf_frmts/cad/libopencad/cadobjects.cpp
Line | Count | Source |
1 | | /******************************************************************************* |
2 | | * Project: libopencad |
3 | | * Purpose: OpenSource CAD formats support library |
4 | | * Author: Alexandr Borzykh, mush3d at gmail.com |
5 | | * Author: Dmitry Baryshnikov, bishop.dev@gmail.com |
6 | | * Language: C++ |
7 | | ******************************************************************************* |
8 | | * The MIT License (MIT) |
9 | | * |
10 | | * Copyright (c) 2016 Alexandr Borzykh |
11 | | * Copyright (c) 2016-2018 NextGIS, <info@nextgis.com> |
12 | | * |
13 | | * SPDX-License-Identifier: MIT |
14 | | *******************************************************************************/ |
15 | | |
16 | | #include "cadobjects.h" |
17 | | |
18 | | #include <limits> |
19 | | #include <math.h> |
20 | | #include <algorithm> |
21 | | |
22 | | //------------------------------------------------------------------------------ |
23 | | // CADVector |
24 | | //------------------------------------------------------------------------------ |
25 | 933 | #define EPSILON std::numeric_limits<double>::epsilon() * 16 |
26 | | |
27 | 211k | CADObject::~CADObject() = default; |
28 | 131k | CADEntityObject::~CADEntityObject() = default; |
29 | | |
30 | | CADVector::CADVector( double x, double y ) : |
31 | 25.6k | X( x ), |
32 | 25.6k | Y( y ), |
33 | 25.6k | Z( 0.0 ), |
34 | 25.6k | bHasZ( false ) |
35 | 25.6k | { |
36 | | |
37 | 25.6k | } |
38 | | |
39 | | CADVector::CADVector( double x, double y, double z ) : |
40 | 233k | X( x ), |
41 | 233k | Y( y ), |
42 | 233k | Z( z ), |
43 | 233k | bHasZ( true ) |
44 | 233k | { |
45 | | |
46 | 233k | } |
47 | | |
48 | | CADVector::CADVector( const CADVector& other ) |
49 | 1.85M | { |
50 | 1.85M | X = other.X; |
51 | 1.85M | Y = other.Y; |
52 | 1.85M | Z = other.Z; |
53 | 1.85M | bHasZ = other.bHasZ; |
54 | 1.85M | } |
55 | | |
56 | | bool operator==( const CADVector& first, const CADVector& second ) |
57 | 418 | { |
58 | 418 | return ( CADVector::fcmp( first.X, second.X ) && |
59 | 303 | CADVector::fcmp( first.Y, second.Y ) && |
60 | 212 | CADVector::fcmp( first.Z, second.Z ) ); |
61 | 418 | } |
62 | | |
63 | | CADVector& CADVector::operator=( const CADVector& second ) |
64 | 276k | { |
65 | 276k | if( &second != this ) |
66 | 276k | { |
67 | 276k | X = second.X; |
68 | 276k | Y = second.Y; |
69 | 276k | Z = second.Z; |
70 | 276k | bHasZ = second.bHasZ; |
71 | 276k | } |
72 | 276k | return * this; |
73 | 276k | } |
74 | | |
75 | | bool CADVector::fcmp( double x, double y ) |
76 | 933 | { |
77 | 933 | return fabs( x - y ) < EPSILON ? true : false; |
78 | 933 | } |
79 | | |
80 | | bool CADVector::getBHasZ() const |
81 | 0 | { |
82 | 0 | return bHasZ; |
83 | 0 | } |
84 | | |
85 | | void CADVector::setBHasZ( bool value ) |
86 | 0 | { |
87 | 0 | bHasZ = value; |
88 | 0 | } |
89 | | |
90 | | double CADVector::getZ() const |
91 | 108k | { |
92 | 108k | return Z; |
93 | 108k | } |
94 | | |
95 | | void CADVector::setZ( double value ) |
96 | 33.4k | { |
97 | 33.4k | if( !bHasZ ) |
98 | 1.44k | bHasZ = true; |
99 | 33.4k | Z = value; |
100 | 33.4k | } |
101 | | |
102 | | double CADVector::getY() const |
103 | 1.11M | { |
104 | 1.11M | return Y; |
105 | 1.11M | } |
106 | | |
107 | | void CADVector::setY( double value ) |
108 | 723k | { |
109 | 723k | Y = value; |
110 | 723k | } |
111 | | |
112 | | double CADVector::getX() const |
113 | 1.10M | { |
114 | 1.10M | return X; |
115 | 1.10M | } |
116 | | |
117 | | void CADVector::setX( double value ) |
118 | 723k | { |
119 | 723k | X = value; |
120 | 723k | } |
121 | | |
122 | 322k | CADVector::CADVector() : X( .0 ), Y( .0 ), Z( .0 ), bHasZ( true ) |
123 | 322k | { |
124 | | |
125 | 322k | } |
126 | | |
127 | | //------------------------------------------------------------------------------ |
128 | | // CADText |
129 | | //------------------------------------------------------------------------------ |
130 | | |
131 | | CADTextObject::CADTextObject() : |
132 | 2.46k | CADEntityObject(TEXT), |
133 | 2.46k | DataFlags(0), |
134 | 2.46k | dfElevation(0.0), |
135 | 2.46k | dfThickness(0.0), |
136 | 2.46k | dfObliqueAng(0.0), |
137 | 2.46k | dfRotationAng(0.0), |
138 | 2.46k | dfHeight(0.0), |
139 | 2.46k | dfWidthFactor(0.0), |
140 | 2.46k | dGeneration(0), |
141 | 2.46k | dHorizAlign(0), |
142 | 2.46k | dVertAlign(0) |
143 | 2.46k | { |
144 | 2.46k | } |
145 | | |
146 | 2.46k | CADTextObject::~CADTextObject() = default; |
147 | | |
148 | | //------------------------------------------------------------------------------ |
149 | | // CADAttribObject |
150 | | //------------------------------------------------------------------------------ |
151 | | |
152 | | CADAttribObject::CADAttribObject(ObjectType typeIn) : |
153 | 7.63k | CADEntityObject(typeIn), |
154 | 7.63k | DataFlags( 0 ), |
155 | 7.63k | dfElevation(0.0), |
156 | 7.63k | dfThickness(0.0), |
157 | 7.63k | dfObliqueAng(0.0), |
158 | 7.63k | dfRotationAng(0.0), |
159 | 7.63k | dfHeight(0.0), |
160 | 7.63k | dfWidthFactor(0.0), |
161 | 7.63k | dGeneration(0), |
162 | 7.63k | dHorizAlign(0), |
163 | 7.63k | dVertAlign(0), |
164 | 7.63k | dVersion(0), |
165 | 7.63k | nFieldLength(0), |
166 | 7.63k | nFlags(0), |
167 | 7.63k | bLockPosition(false) |
168 | 7.63k | { |
169 | 7.63k | } |
170 | | |
171 | 7.63k | CADAttribObject::~CADAttribObject() = default; |
172 | | |
173 | | //------------------------------------------------------------------------------ |
174 | | // CADAttdef |
175 | | //------------------------------------------------------------------------------ |
176 | | |
177 | | CADAttdefObject::CADAttdefObject() : |
178 | 5.68k | CADAttribObject(ATTDEF) |
179 | 5.68k | { |
180 | 5.68k | } |
181 | | |
182 | 5.68k | CADAttdefObject::~CADAttdefObject() = default; |
183 | | |
184 | | //------------------------------------------------------------------------------ |
185 | | // CADBlockObject |
186 | | //------------------------------------------------------------------------------ |
187 | | |
188 | | CADBlockObject::CADBlockObject() : |
189 | 0 | CADEntityObject(BLOCK) |
190 | 0 | { |
191 | 0 | } |
192 | | |
193 | 0 | CADBlockObject::~CADBlockObject() = default; |
194 | | |
195 | | //------------------------------------------------------------------------------ |
196 | | // CADEndblkObject |
197 | | //------------------------------------------------------------------------------ |
198 | | |
199 | | CADEndblkObject::CADEndblkObject() : |
200 | 0 | CADEntityObject(ENDBLK) |
201 | 0 | { |
202 | 0 | } |
203 | | |
204 | | CADEndblkObject::~CADEndblkObject() = default; |
205 | | |
206 | | |
207 | | //------------------------------------------------------------------------------ |
208 | | // CADSeqendObject |
209 | | //------------------------------------------------------------------------------ |
210 | | |
211 | | CADSeqendObject::CADSeqendObject() : |
212 | 0 | CADEntityObject(SEQEND) |
213 | 0 | { |
214 | 0 | } |
215 | | |
216 | | CADSeqendObject::~CADSeqendObject() = default; |
217 | | |
218 | | |
219 | | //------------------------------------------------------------------------------ |
220 | | // CADInsertObject |
221 | | //------------------------------------------------------------------------------ |
222 | | |
223 | | CADInsertObject::CADInsertObject(ObjectType typeIn) : |
224 | 30.3k | CADEntityObject(typeIn), |
225 | 30.3k | dfRotation( 0.0 ), |
226 | 30.3k | bHasAttribs( false ), |
227 | 30.3k | nObjectsOwned( 0 ) |
228 | 30.3k | { |
229 | 30.3k | } |
230 | | |
231 | 30.3k | CADInsertObject::~CADInsertObject() = default; |
232 | | |
233 | | //------------------------------------------------------------------------------ |
234 | | // CADMInsertObject |
235 | | //------------------------------------------------------------------------------ |
236 | | |
237 | | CADMInsertObject::CADMInsertObject() : |
238 | 0 | CADEntityObject(MINSERT1), // TODO: it has 2 type codes? |
239 | 0 | dfRotation( 0.0 ), |
240 | 0 | bHasAttribs( false ), |
241 | 0 | nObjectsOwned( 0 ), |
242 | 0 | nNumCols( 0 ), |
243 | 0 | nNumRows( 0 ), |
244 | 0 | nColSpacing( 0 ), |
245 | 0 | nRowSpacing( 0 ) |
246 | 0 | { |
247 | 0 | } |
248 | | |
249 | 0 | CADMInsertObject::~CADMInsertObject() = default; |
250 | | |
251 | | //------------------------------------------------------------------------------ |
252 | | // CADVertex2DObject |
253 | | //------------------------------------------------------------------------------ |
254 | | |
255 | | CADVertex2DObject::CADVertex2DObject() : |
256 | 0 | CADEntityObject(VERTEX2D), |
257 | 0 | dfStartWidth( 0.0 ), |
258 | 0 | dfEndWidth( 0.0 ), |
259 | 0 | dfBulge( 0.0 ), |
260 | 0 | nVertexID( 0 ), |
261 | 0 | dfTangentDir( 0.0 ) |
262 | 0 | { |
263 | 0 | } |
264 | | |
265 | | CADVertex2DObject::~CADVertex2DObject() = default; |
266 | | |
267 | | //------------------------------------------------------------------------------ |
268 | | // CADVertex3DObject |
269 | | //------------------------------------------------------------------------------ |
270 | | |
271 | | CADVertex3DObject::CADVertex3DObject() : |
272 | 456 | CADEntityObject(VERTEX3D) |
273 | 456 | { |
274 | 456 | } |
275 | | |
276 | | CADVertex3DObject::~CADVertex3DObject() = default; |
277 | | |
278 | | //------------------------------------------------------------------------------ |
279 | | // CADVertexMeshObject |
280 | | //------------------------------------------------------------------------------ |
281 | | |
282 | | CADVertexMeshObject::CADVertexMeshObject() : |
283 | 1.02k | CADEntityObject(VERTEX_MESH) |
284 | 1.02k | { |
285 | 1.02k | } |
286 | | |
287 | | CADVertexMeshObject::~CADVertexMeshObject() = default; |
288 | | |
289 | | //------------------------------------------------------------------------------ |
290 | | // CADVertexPFaceObject |
291 | | //------------------------------------------------------------------------------ |
292 | | |
293 | | CADVertexPFaceObject::CADVertexPFaceObject() : |
294 | 602 | CADEntityObject(VERTEX_PFACE) |
295 | 602 | { |
296 | 602 | } |
297 | | |
298 | | CADVertexPFaceObject::~CADVertexPFaceObject() = default; |
299 | | |
300 | | //------------------------------------------------------------------------------ |
301 | | // CADVertexPFaceFaceObject |
302 | | //------------------------------------------------------------------------------ |
303 | | |
304 | | CADVertexPFaceFaceObject::CADVertexPFaceFaceObject() : |
305 | 0 | CADEntityObject(VERTEX_PFACE_FACE), |
306 | 0 | iVertexIndex1( 0 ), |
307 | 0 | iVertexIndex2( 0 ), |
308 | 0 | iVertexIndex3( 0 ), |
309 | 0 | iVertexIndex4( 0 ) |
310 | 0 | { |
311 | 0 | } |
312 | | |
313 | | CADVertexPFaceFaceObject::~CADVertexPFaceFaceObject() = default; |
314 | | |
315 | | //------------------------------------------------------------------------------ |
316 | | // CADPolyline2DObject |
317 | | //------------------------------------------------------------------------------ |
318 | | |
319 | | CADPolyline2DObject::CADPolyline2DObject() : |
320 | 779 | CADEntityObject(POLYLINE2D), |
321 | 779 | dFlags( 0 ), |
322 | 779 | dCurveNSmoothSurfType( 0 ), |
323 | 779 | dfStartWidth( 0.0 ), |
324 | 779 | dfEndWidth( 0.0 ), |
325 | 779 | dfThickness( 0.0 ), |
326 | 779 | dfElevation( 0.0 ), |
327 | 779 | nObjectsOwned( 0 ) |
328 | 779 | { |
329 | 779 | } |
330 | | |
331 | 779 | CADPolyline2DObject::~CADPolyline2DObject() = default; |
332 | | |
333 | | //------------------------------------------------------------------------------ |
334 | | // CADPolyline3DObject |
335 | | //------------------------------------------------------------------------------ |
336 | | |
337 | | CADPolyline3DObject::CADPolyline3DObject() : |
338 | 4.16k | CADEntityObject(POLYLINE3D), |
339 | 4.16k | SplinedFlags( 0 ), |
340 | 4.16k | ClosedFlags( 0 ), |
341 | 4.16k | nObjectsOwned( 0 ) |
342 | 4.16k | { |
343 | 4.16k | } |
344 | | |
345 | 4.16k | CADPolyline3DObject::~CADPolyline3DObject() = default; |
346 | | |
347 | | //------------------------------------------------------------------------------ |
348 | | // CADArcObject |
349 | | //------------------------------------------------------------------------------ |
350 | | |
351 | | CADArcObject::CADArcObject() : |
352 | 1.84k | CADEntityObject(ARC), |
353 | 1.84k | dfRadius( 0.0 ), |
354 | 1.84k | dfThickness( 0.0 ), |
355 | 1.84k | dfStartAngle( 0.0 ), |
356 | 1.84k | dfEndAngle( 0.0 ) |
357 | 1.84k | { |
358 | 1.84k | } |
359 | | |
360 | | CADArcObject::~CADArcObject() = default; |
361 | | |
362 | | //------------------------------------------------------------------------------ |
363 | | // CADCircleObject |
364 | | //------------------------------------------------------------------------------ |
365 | | |
366 | | CADCircleObject::CADCircleObject() : |
367 | 1.37k | CADEntityObject(CIRCLE), |
368 | 1.37k | dfRadius( 0.0 ), |
369 | 1.37k | dfThickness( 0.0 ) |
370 | 1.37k | { |
371 | 1.37k | } |
372 | | |
373 | | CADCircleObject::~CADCircleObject() = default; |
374 | | |
375 | | //------------------------------------------------------------------------------ |
376 | | // CADLineObject |
377 | | //------------------------------------------------------------------------------ |
378 | | |
379 | | CADLineObject::CADLineObject() : |
380 | 1.60k | CADEntityObject(LINE), |
381 | 1.60k | dfThickness( 0.0 ) |
382 | 1.60k | { |
383 | 1.60k | } |
384 | | |
385 | | CADLineObject::~CADLineObject() = default; |
386 | | |
387 | | //------------------------------------------------------------------------------ |
388 | | // CADBaseControlObject |
389 | | //------------------------------------------------------------------------------ |
390 | | |
391 | | CADBaseControlObject::CADBaseControlObject(ObjectType typeIn) : |
392 | 79.9k | CADObject(typeIn), |
393 | 79.9k | nObjectSizeInBits( 0 ), |
394 | 79.9k | nNumReactors( 0 ), |
395 | 79.9k | bNoXDictionaryPresent( false ) |
396 | 79.9k | { |
397 | 79.9k | } |
398 | | |
399 | 79.9k | CADBaseControlObject::~CADBaseControlObject() = default; |
400 | | |
401 | | //------------------------------------------------------------------------------ |
402 | | // CADBlockControlObject |
403 | | //------------------------------------------------------------------------------ |
404 | | |
405 | | CADBlockControlObject::CADBlockControlObject() : |
406 | 2.86k | CADBaseControlObject(BLOCK_CONTROL_OBJ), |
407 | 2.86k | nNumEntries( 0 ) |
408 | 2.86k | { |
409 | 2.86k | } |
410 | | |
411 | 2.86k | CADBlockControlObject::~CADBlockControlObject() = default; |
412 | | |
413 | | //------------------------------------------------------------------------------ |
414 | | // CADBlockHeaderObject |
415 | | //------------------------------------------------------------------------------ |
416 | | |
417 | | CADBlockHeaderObject::CADBlockHeaderObject() : |
418 | 32.5k | CADBaseControlObject(BLOCK_HEADER), |
419 | 32.5k | b64Flag( false ), |
420 | 32.5k | dXRefIndex( 0 ), |
421 | 32.5k | bXDep( false ), |
422 | 32.5k | bAnonymous( false ), |
423 | 32.5k | bHasAtts( false ), |
424 | 32.5k | bBlkisXRef( false ), |
425 | 32.5k | bXRefOverlaid( false ), |
426 | 32.5k | bLoadedBit( false ), |
427 | 32.5k | nOwnedObjectsCount( 0 ), |
428 | 32.5k | nSizeOfPreviewData( 0 ), |
429 | 32.5k | nInsertUnits( 0 ), |
430 | 32.5k | bExplodable( false ), |
431 | 32.5k | dBlockScaling( 0 ) |
432 | 32.5k | { |
433 | 32.5k | } |
434 | | |
435 | 32.5k | CADBlockHeaderObject::~CADBlockHeaderObject() = default; |
436 | | |
437 | | //------------------------------------------------------------------------------ |
438 | | // CADLayerControlObject |
439 | | //------------------------------------------------------------------------------ |
440 | | |
441 | | CADLayerControlObject::CADLayerControlObject() : |
442 | 10.6k | CADBaseControlObject(LAYER_CONTROL_OBJ), |
443 | 10.6k | nNumEntries( 0 ) |
444 | 10.6k | { |
445 | 10.6k | } |
446 | | |
447 | 10.6k | CADLayerControlObject::~CADLayerControlObject() = default; |
448 | | |
449 | | //------------------------------------------------------------------------------ |
450 | | // CADLayerObject |
451 | | //------------------------------------------------------------------------------ |
452 | | |
453 | | CADLayerObject::CADLayerObject() : |
454 | 17.5k | CADBaseControlObject(LAYER), |
455 | 17.5k | b64Flag( 0 ), |
456 | 17.5k | dXRefIndex( 0 ), |
457 | 17.5k | bXDep( 0 ), |
458 | 17.5k | bFrozen( false ), |
459 | 17.5k | bOn( false ), |
460 | 17.5k | bFrozenInNewVPORT( false ), |
461 | 17.5k | bLocked( false ), |
462 | 17.5k | bPlottingFlag( false ), |
463 | 17.5k | dLineWeight( 0 ), |
464 | 17.5k | dCMColor( 0 ) |
465 | 17.5k | { |
466 | 17.5k | } |
467 | | |
468 | 17.5k | CADLayerObject::~CADLayerObject() = default; |
469 | | |
470 | | //------------------------------------------------------------------------------ |
471 | | // CADLineTypeControlObject |
472 | | //------------------------------------------------------------------------------ |
473 | | |
474 | | CADLineTypeControlObject::CADLineTypeControlObject() : |
475 | 1.71k | CADBaseControlObject(LTYPE_CONTROL_OBJ), |
476 | 1.71k | nNumEntries( 0 ) |
477 | 1.71k | { |
478 | 1.71k | } |
479 | | |
480 | 1.71k | CADLineTypeControlObject::~CADLineTypeControlObject() = default; |
481 | | |
482 | | //------------------------------------------------------------------------------ |
483 | | // CADLineTypeObject |
484 | | //------------------------------------------------------------------------------ |
485 | | |
486 | | CADLineTypeObject::CADLineTypeObject() : |
487 | 5.91k | CADBaseControlObject(LTYPE1), |
488 | 5.91k | b64Flag( false ), |
489 | 5.91k | dXRefIndex( 0 ), |
490 | 5.91k | bXDep( false ), |
491 | 5.91k | dfPatternLen( 0.0 ), |
492 | 5.91k | dAlignment( 0 ), |
493 | 5.91k | nNumDashes( 0 ) |
494 | 5.91k | { |
495 | 5.91k | } |
496 | | |
497 | 5.91k | CADLineTypeObject::~CADLineTypeObject() = default; |
498 | | |
499 | | //------------------------------------------------------------------------------ |
500 | | // CADPointObject |
501 | | //------------------------------------------------------------------------------ |
502 | | |
503 | | CADPointObject::CADPointObject() : |
504 | 823 | CADEntityObject(POINT), |
505 | 823 | dfThickness( 0.0 ), |
506 | 823 | dfXAxisAng( 0.0 ) |
507 | 823 | { |
508 | 823 | } |
509 | | |
510 | | CADPointObject::~CADPointObject() = default; |
511 | | |
512 | | //------------------------------------------------------------------------------ |
513 | | // CADSolidObject |
514 | | //------------------------------------------------------------------------------ |
515 | | |
516 | | CADSolidObject::CADSolidObject() : |
517 | 1.39k | CADEntityObject(SOLID), |
518 | 1.39k | dfThickness( 0.0 ), |
519 | 1.39k | dfElevation( 0.0 ) |
520 | 1.39k | { |
521 | 1.39k | avertCorners.reserve( 4 ); |
522 | 1.39k | } |
523 | | |
524 | 1.39k | CADSolidObject::~CADSolidObject() = default; |
525 | | |
526 | | //------------------------------------------------------------------------------ |
527 | | // CADEllipseObject |
528 | | //------------------------------------------------------------------------------ |
529 | | |
530 | | CADEllipseObject::CADEllipseObject() : |
531 | 724 | CADEntityObject(ELLIPSE), |
532 | 724 | dfAxisRatio( 0.0 ), |
533 | 724 | dfBegAngle( 0.0 ), |
534 | 724 | dfEndAngle( 0.0 ) |
535 | 724 | { |
536 | 724 | } |
537 | | |
538 | | CADEllipseObject::~CADEllipseObject() = default; |
539 | | |
540 | | //------------------------------------------------------------------------------ |
541 | | // CADRayObject |
542 | | //------------------------------------------------------------------------------ |
543 | | |
544 | | CADRayObject::CADRayObject() : |
545 | 563 | CADEntityObject(RAY) |
546 | 563 | { |
547 | 563 | } |
548 | | |
549 | | CADRayObject::~CADRayObject() = default; |
550 | | |
551 | | //------------------------------------------------------------------------------ |
552 | | // CADXLineObject |
553 | | //------------------------------------------------------------------------------ |
554 | | |
555 | | CADXLineObject::CADXLineObject() : |
556 | 521 | CADEntityObject(XLINE) |
557 | 521 | { |
558 | 521 | } |
559 | | |
560 | | CADXLineObject::~CADXLineObject() = default; |
561 | | |
562 | | //------------------------------------------------------------------------------ |
563 | | // CADDictionaryObject |
564 | | //------------------------------------------------------------------------------ |
565 | | |
566 | | CADDictionaryObject::CADDictionaryObject() : |
567 | 3.02k | CADBaseControlObject(DICTIONARY), |
568 | 3.02k | nNumItems( 0 ), |
569 | 3.02k | dCloningFlag( 0 ), |
570 | 3.02k | dHardOwnerFlag( 0 ) |
571 | 3.02k | { |
572 | 3.02k | } |
573 | | |
574 | 3.02k | CADDictionaryObject::~CADDictionaryObject() = default; |
575 | | |
576 | | //------------------------------------------------------------------------------ |
577 | | // CADLWPolylineObject |
578 | | //------------------------------------------------------------------------------ |
579 | | |
580 | | CADLWPolylineObject::CADLWPolylineObject() : |
581 | 4.09k | CADEntityObject(LWPOLYLINE), |
582 | 4.09k | bClosed( false ), |
583 | 4.09k | dfConstWidth( 0.0 ), |
584 | 4.09k | dfElevation( 0.0 ), |
585 | 4.09k | dfThickness( 0.0 ) |
586 | 4.09k | { |
587 | 4.09k | } |
588 | | |
589 | 4.09k | CADLWPolylineObject::~CADLWPolylineObject() = default; |
590 | | |
591 | | //------------------------------------------------------------------------------ |
592 | | // CADSplineObject |
593 | | //------------------------------------------------------------------------------ |
594 | | |
595 | | CADSplineObject::CADSplineObject() : |
596 | 4.23k | CADEntityObject( SPLINE ), |
597 | 4.23k | dScenario( 0 ), |
598 | 4.23k | dSplineFlags( 0 ), |
599 | 4.23k | dKnotParameter( 0 ), |
600 | 4.23k | dDegree( 0 ), |
601 | 4.23k | dfFitTol( 0.0 ), |
602 | 4.23k | nNumFitPts( 0 ), |
603 | 4.23k | bRational( false ), |
604 | 4.23k | bClosed( false ), |
605 | 4.23k | bPeriodic( false ), |
606 | 4.23k | dfKnotTol( 0.0 ), |
607 | 4.23k | dfCtrlTol( 0.0 ), |
608 | 4.23k | nNumKnots( 0 ), |
609 | 4.23k | nNumCtrlPts( 0 ), |
610 | 4.23k | bWeight( false ) |
611 | 4.23k | { |
612 | 4.23k | } |
613 | | |
614 | 4.23k | CADSplineObject::~CADSplineObject() = default; |
615 | | |
616 | | //------------------------------------------------------------------------------ |
617 | | |
618 | | const std::vector<char> CADCommonEntityObjectTypes{ |
619 | | CADObject::POINT, CADObject::ARC, CADObject::TEXT, CADObject::ELLIPSE, |
620 | | CADObject::CIRCLE, CADObject::LINE, CADObject::LWPOLYLINE, |
621 | | CADObject::POLYLINE3D, CADObject::MLINE, CADObject::SPLINE, CADObject::SOLID, |
622 | | CADObject::MTEXT, CADObject::IMAGE, CADObject::XLINE, CADObject::RAY, |
623 | | CADObject::MLINE, CADObject::FACE3D, CADObject::POLYLINE_PFACE, |
624 | | CADObject::ATTRIB, CADObject::ATTDEF, CADObject::POLYLINE2D, CADObject::HATCH, |
625 | | CADObject::INSERT, CADObject::VERTEX3D, CADObject::VERTEX2D, |
626 | | CADObject::VERTEX_MESH, CADObject::VERTEX_PFACE, CADObject::VERTEX_PFACE_FACE, |
627 | | CADObject::TOLERANCE, CADObject::SOLID3D, CADObject::WIPEOUT, CADObject::TRACE |
628 | | }; |
629 | | |
630 | | const std::vector<char> CADSupportedGeometryTypes{ |
631 | | CADObject::POINT, CADObject::ARC, CADObject::TEXT, CADObject::ELLIPSE, |
632 | | CADObject::CIRCLE, CADObject::LINE, CADObject::LWPOLYLINE, |
633 | | CADObject::POLYLINE3D, CADObject::MLINE, CADObject::ATTRIB, CADObject::ATTDEF, |
634 | | CADObject::RAY, CADObject::SPLINE, CADObject::SOLID, CADObject::IMAGE, |
635 | | CADObject::MTEXT, CADObject::POLYLINE_PFACE, CADObject::XLINE, |
636 | | CADObject::FACE3D |
637 | | }; |
638 | | |
639 | | bool isCommonEntityType( short nType ) |
640 | 482k | { |
641 | 482k | return std::find( CADCommonEntityObjectTypes.begin(), |
642 | 482k | CADCommonEntityObjectTypes.end(), |
643 | 482k | nType ) != CADCommonEntityObjectTypes.end(); |
644 | 482k | } |
645 | | |
646 | | bool isSupportedGeometryType( short nType ) |
647 | 19.4k | { |
648 | 19.4k | return std::find( CADSupportedGeometryTypes.begin(), |
649 | 19.4k | CADSupportedGeometryTypes.end(), |
650 | 19.4k | nType ) != CADSupportedGeometryTypes.end(); |
651 | 19.4k | } |
652 | | |
653 | | const std::map<char, std::string> CADObjectNames{ |
654 | | { CADObject::UNUSED, "UNUSED" }, |
655 | | { CADObject::TEXT, "TEXT" }, |
656 | | { CADObject::ATTRIB, "ATTRIB" }, |
657 | | { CADObject::ATTDEF, "ATTDEF" }, |
658 | | { CADObject::BLOCK, "BLOCK" }, |
659 | | { CADObject::ENDBLK, "ENDBLK" }, |
660 | | { CADObject::SEQEND, "SEQEND" }, |
661 | | { CADObject::INSERT, "INSERT" }, |
662 | | { CADObject::MINSERT1, "MINSERT" }, |
663 | | { CADObject::MINSERT2, "MINSERT" }, |
664 | | { CADObject::VERTEX2D, "VERTEX 2D" }, |
665 | | { CADObject::VERTEX3D, "VERTEX 3D" }, |
666 | | { CADObject::VERTEX_MESH, "VERTEX MESH" }, |
667 | | { CADObject::VERTEX_PFACE, "VERTEX PFACE" }, |
668 | | { CADObject::VERTEX_PFACE_FACE, "VERTEX PFACE FACE" }, |
669 | | { CADObject::POLYLINE2D, "POLYLINE 2D" }, |
670 | | { CADObject::POLYLINE3D, "POLYLINE 3D" }, |
671 | | { CADObject::ARC, "ARC" }, |
672 | | { CADObject::CIRCLE, "CIRCLE" }, |
673 | | { CADObject::LINE, "LINE" }, |
674 | | { CADObject::DIMENSION_ORDINATE, "DIMENSION ORDINATE" }, |
675 | | { CADObject::DIMENSION_LINEAR, "DIMENSION LINEAR" }, |
676 | | { CADObject::DIMENSION_ALIGNED, "DIMENSION ALIGNED" }, |
677 | | { CADObject::DIMENSION_ANG_3PT, "DIMENSION ANG 3PT" }, |
678 | | { CADObject::DIMENSION_ANG_2LN, "DIMENSION AND 2LN" }, |
679 | | { CADObject::DIMENSION_RADIUS, "DIMENSION RADIUS" }, |
680 | | { CADObject::DIMENSION_DIAMETER, "DIMENSION DIAMETER" }, |
681 | | { CADObject::POINT, "POINT" }, |
682 | | { CADObject::FACE3D, "3DFACE" }, |
683 | | { CADObject::POLYLINE_PFACE, "POLYLINE PFACE" }, |
684 | | { CADObject::POLYLINE_MESH, "POLYLINE MESH" }, |
685 | | { CADObject::SOLID, "SOLID" }, |
686 | | { CADObject::TRACE, "TRACE" }, |
687 | | { CADObject::SHAPE, "SHAPE" }, |
688 | | { CADObject::VIEWPORT, "VIEWPORT" }, |
689 | | { CADObject::ELLIPSE, "ELLIPSE" }, |
690 | | { CADObject::SPLINE, "SPLINE" }, |
691 | | { CADObject::REGION, "REGION" }, |
692 | | { CADObject::SOLID3D, "3DSOLID" }, |
693 | | { CADObject::BODY, "BODY" }, |
694 | | { CADObject::RAY, "RAY" }, |
695 | | { CADObject::XLINE, "XLINE" }, |
696 | | { CADObject::DICTIONARY, "DICTIONARY" }, |
697 | | { CADObject::OLEFRAME, "OLEFRAME" }, |
698 | | { CADObject::MTEXT, "MTEXT" }, |
699 | | { CADObject::LEADER, "LEADER" }, |
700 | | { CADObject::TOLERANCE, "TOLERANCE" }, |
701 | | { CADObject::MLINE, "MLINE" }, |
702 | | { CADObject::BLOCK_CONTROL_OBJ, "BLOCK CONTROL OBJ" }, |
703 | | { CADObject::BLOCK_HEADER, "BLOCK HEADER" }, |
704 | | { CADObject::LAYER_CONTROL_OBJ, "LAYER CONTROL OBJ" }, |
705 | | { CADObject::LAYER, "LAYER" }, |
706 | | { CADObject::STYLE_CONTROL_OBJ, "STYLE CONTROL OBJ" }, |
707 | | { CADObject::STYLE1, "STYLE1" }, |
708 | | { CADObject::STYLE2, "STYLE2" }, |
709 | | { CADObject::STYLE3, "STYLE3" }, |
710 | | { CADObject::LTYPE_CONTROL_OBJ, "LTYPE CONTROL OBJ" }, |
711 | | { CADObject::LTYPE1, "LTYPE1" }, |
712 | | { CADObject::LTYPE2, "LTYPE2" }, |
713 | | { CADObject::LTYPE3, "LTYPE3" }, |
714 | | { CADObject::VIEW_CONTROL_OBJ, "VIEW CONTROL OBJ" }, |
715 | | { CADObject::VIEW, "VIEW" }, |
716 | | { CADObject::UCS_CONTROL_OBJ, "UCS CONTROL OBJ" }, |
717 | | { CADObject::UCS, "UCS" }, |
718 | | { CADObject::VPORT_CONTROL_OBJ, "VPORT CONTROL OBJ" }, |
719 | | { CADObject::VPORT, "VPORT" }, |
720 | | { CADObject::APPID_CONTROL_OBJ, "APPID CONTROL OBJ" }, |
721 | | { CADObject::APPID, "APPID" }, |
722 | | { CADObject::DIMSTYLE_CONTROL_OBJ, "DIMSTYLE CONTROL OBJ" }, |
723 | | { CADObject::DIMSTYLE, "DIMSTYLE" }, |
724 | | { CADObject::VP_ENT_HDR_CTRL_OBJ, "VP ENT HDR CTRL OBJ" }, |
725 | | { CADObject::VP_ENT_HDR, "VP ENT HDR" }, |
726 | | { CADObject::GROUP, "GROUP" }, |
727 | | { CADObject::MLINESTYLE, "MLINESTYLE" }, |
728 | | { CADObject::OLE2FRAME, "OLE2FRAME" }, |
729 | | { CADObject::DUMMY, "DUMMY" }, |
730 | | { CADObject::LONG_TRANSACTION, "LONG TRANSACTION" }, |
731 | | { CADObject::LWPOLYLINE, "LWPOLYLINE" }, |
732 | | { CADObject::HATCH, "HATCH" }, |
733 | | { CADObject::XRECORD, "XRECORD" }, |
734 | | { CADObject::ACDBPLACEHOLDER, "ACDBPLACEHOLDER" }, |
735 | | { CADObject::VBA_PROJECT, "VBA PROJECT" }, |
736 | | { CADObject::LAYOUT, "LAYOUT" } |
737 | | }; |
738 | | |
739 | | std::string getNameByType( CADObject::ObjectType eType ) |
740 | 4.19k | { |
741 | 4.19k | auto it = CADObjectNames.find( eType ); |
742 | 4.19k | if( it == CADObjectNames.end() ) |
743 | 54 | return ""; |
744 | | |
745 | 4.14k | return it->second; |
746 | 4.19k | } |
747 | | //------------------------------------------------------------------------------ |
748 | | // CADObject |
749 | | //------------------------------------------------------------------------------ |
750 | | |
751 | | CADObject::ObjectType CADObject::getType() const |
752 | 75.8k | { |
753 | 75.8k | return type; |
754 | 75.8k | } |
755 | | |
756 | | long CADObject::getSize() const |
757 | 0 | { |
758 | 0 | return size; |
759 | 0 | } |
760 | | |
761 | | void CADObject::setSize( long value ) |
762 | 211k | { |
763 | 211k | size = value; |
764 | 211k | } |
765 | | |
766 | | short CADObject::getCRC() const |
767 | 0 | { |
768 | 0 | return CRC; |
769 | 0 | } |
770 | | |
771 | | void CADObject::setCRC( unsigned short value ) |
772 | 195k | { |
773 | 195k | CRC = value; |
774 | 195k | } |
775 | | |
776 | | //------------------------------------------------------------------------------ |
777 | | // CADDimensionObject |
778 | | //------------------------------------------------------------------------------ |
779 | | |
780 | 0 | CADDimensionObject::~CADDimensionObject() = default; |
781 | | |
782 | | //------------------------------------------------------------------------------ |
783 | | // CADDimensionOrdinateObject |
784 | | //------------------------------------------------------------------------------ |
785 | | |
786 | | CADDimensionOrdinateObject::CADDimensionOrdinateObject() : |
787 | 0 | CADDimensionObject(DIMENSION_ORDINATE), |
788 | 0 | Flags2( 0 ) |
789 | 0 | { |
790 | 0 | } |
791 | | |
792 | | CADDimensionOrdinateObject::~CADDimensionOrdinateObject() = default; |
793 | | |
794 | | //------------------------------------------------------------------------------ |
795 | | // CADDimensionLinearObject |
796 | | //------------------------------------------------------------------------------ |
797 | | |
798 | | CADDimensionLinearObject::CADDimensionLinearObject() : |
799 | 0 | CADDimensionObject(DIMENSION_LINEAR), |
800 | 0 | dfExtLnRot( 0.0 ), |
801 | 0 | dfDimRot( 0.0 ) |
802 | 0 | { |
803 | 0 | } |
804 | | |
805 | | CADDimensionLinearObject::~CADDimensionLinearObject() = default; |
806 | | |
807 | | //------------------------------------------------------------------------------ |
808 | | // CADDimensionAlignedObject |
809 | | //------------------------------------------------------------------------------ |
810 | | |
811 | | CADDimensionAlignedObject::CADDimensionAlignedObject() : |
812 | 0 | CADDimensionObject(DIMENSION_ALIGNED), |
813 | 0 | dfExtLnRot( 0.0 ) |
814 | 0 | { |
815 | 0 | } |
816 | | |
817 | | CADDimensionAlignedObject::~CADDimensionAlignedObject() = default; |
818 | | |
819 | | //------------------------------------------------------------------------------ |
820 | | // CADDimensionAngular3PtObject |
821 | | //------------------------------------------------------------------------------ |
822 | | |
823 | | CADDimensionAngular3PtObject::CADDimensionAngular3PtObject(ObjectType typeIn) : |
824 | 0 | CADDimensionObject(typeIn) |
825 | 0 | { |
826 | 0 | } |
827 | | |
828 | | CADDimensionAngular3PtObject::~CADDimensionAngular3PtObject() = default; |
829 | | |
830 | | //------------------------------------------------------------------------------ |
831 | | // CADDimensionAngular2LnObject |
832 | | //------------------------------------------------------------------------------ |
833 | | |
834 | | CADDimensionAngular2LnObject::CADDimensionAngular2LnObject() : |
835 | 0 | CADDimensionAngular3PtObject(DIMENSION_ANG_2LN) |
836 | 0 | { |
837 | 0 | } |
838 | | |
839 | | CADDimensionAngular2LnObject::~CADDimensionAngular2LnObject() = default; |
840 | | |
841 | | //------------------------------------------------------------------------------ |
842 | | // CADDimensionRadiusObject |
843 | | //------------------------------------------------------------------------------ |
844 | | |
845 | | CADDimensionRadiusObject::CADDimensionRadiusObject(ObjectType typeIn) : |
846 | 0 | CADDimensionObject(typeIn), |
847 | 0 | dfLeaderLen( 0.0 ) |
848 | 0 | { |
849 | 0 | } |
850 | | |
851 | | CADDimensionRadiusObject::~CADDimensionRadiusObject() = default; |
852 | | |
853 | | //------------------------------------------------------------------------------ |
854 | | // CADDimensionDiameterObject |
855 | | //------------------------------------------------------------------------------ |
856 | | |
857 | | CADDimensionDiameterObject::CADDimensionDiameterObject() : |
858 | 0 | CADDimensionRadiusObject(DIMENSION_DIAMETER) |
859 | 0 | { |
860 | 0 | } |
861 | | |
862 | | CADDimensionDiameterObject::~CADDimensionDiameterObject() = default; |
863 | | |
864 | | //------------------------------------------------------------------------------ |
865 | | // CADImageObject |
866 | | //------------------------------------------------------------------------------ |
867 | | |
868 | | CADImageObject::CADImageObject() : |
869 | 1.70k | CADEntityObject(IMAGE), |
870 | 1.70k | dClassVersion( 0 ), |
871 | 1.70k | dfSizeX( 0.0 ), |
872 | 1.70k | dfSizeY( 0.0 ), |
873 | 1.70k | dDisplayProps( 0 ), |
874 | 1.70k | bClipping( false ), |
875 | 1.70k | dBrightness( 0 ), |
876 | 1.70k | dContrast( 0 ), |
877 | 1.70k | dFade( 0 ), |
878 | 1.70k | bClipMode( false ), |
879 | 1.70k | dClipBoundaryType( 0 ), |
880 | 1.70k | nNumberVerticesInClipPolygon( 0 ) |
881 | 1.70k | { |
882 | 1.70k | } |
883 | | |
884 | 1.70k | CADImageObject::~CADImageObject() = default; |
885 | | |
886 | | //------------------------------------------------------------------------------ |
887 | | // CADImageDefObject |
888 | | //------------------------------------------------------------------------------ |
889 | | |
890 | | CADImageDefObject::CADImageDefObject() : |
891 | 1.44k | CADImageDefReactorObject(IMAGEDEF), |
892 | 1.44k | dfXImageSizeInPx( 0.0 ), |
893 | 1.44k | dfYImageSizeInPx( 0.0 ), |
894 | 1.44k | bIsLoaded( false ), |
895 | 1.44k | dResUnits( 0 ), |
896 | 1.44k | dfXPixelSize( 0.0 ), |
897 | 1.44k | dfYPixelSize( 0.0 ) |
898 | 1.44k | { |
899 | 1.44k | } |
900 | | |
901 | 1.44k | CADImageDefObject::~CADImageDefObject() = default; |
902 | | |
903 | | //------------------------------------------------------------------------------ |
904 | | // CADImageDefReactorObject |
905 | | //------------------------------------------------------------------------------ |
906 | | |
907 | | CADImageDefReactorObject::CADImageDefReactorObject(ObjectType typeIn) : |
908 | 2.60k | CADBaseControlObject(typeIn), |
909 | 2.60k | dClassVersion( 0 ) |
910 | 2.60k | { |
911 | 2.60k | } |
912 | | |
913 | 2.60k | CADImageDefReactorObject::~CADImageDefReactorObject() = default; |
914 | | |
915 | | //------------------------------------------------------------------------------ |
916 | | // CADMTextObject |
917 | | //------------------------------------------------------------------------------ |
918 | | |
919 | | CADMTextObject::CADMTextObject() : |
920 | 834 | CADEntityObject(MTEXT), |
921 | 834 | dfRectWidth( 0.0 ), |
922 | 834 | dfTextHeight( 0.0 ), |
923 | 834 | dAttachment( 0 ), |
924 | 834 | dDrawingDir( 0 ), |
925 | 834 | dfExtents( 0.0 ), |
926 | 834 | dfExtentsWidth( 0.0 ), |
927 | 834 | dLineSpacingStyle( 0 ), |
928 | 834 | dLineSpacingFactor( 0 ), |
929 | 834 | bUnknownBit( false), |
930 | 834 | dBackgroundFlags( 0 ), |
931 | 834 | dBackgroundScaleFactor( 0 ), |
932 | 834 | dBackgroundColor( 0 ), |
933 | 834 | dBackgroundTransparency( 0 ) |
934 | 834 | { |
935 | 834 | } |
936 | | |
937 | 834 | CADMTextObject::~CADMTextObject() = default; |
938 | | |
939 | | //------------------------------------------------------------------------------ |
940 | | // CADMLineObject |
941 | | //------------------------------------------------------------------------------ |
942 | | |
943 | | CADMLineObject::CADMLineObject() : |
944 | 2.36k | CADEntityObject(MLINE), |
945 | 2.36k | dfScale( 0.0 ), |
946 | 2.36k | dJust( 0 ), |
947 | 2.36k | dOpenClosed( 0 ), |
948 | 2.36k | nLinesInStyle( 0 ), |
949 | 2.36k | nNumVertices( 0 ) |
950 | 2.36k | { |
951 | 2.36k | } |
952 | | |
953 | 2.36k | CADMLineObject::~CADMLineObject() = default; |
954 | | |
955 | | //------------------------------------------------------------------------------ |
956 | | // CAD3DFaceObject |
957 | | //------------------------------------------------------------------------------ |
958 | | |
959 | | CAD3DFaceObject::CAD3DFaceObject() : |
960 | 1.96k | CADEntityObject(FACE3D), |
961 | 1.96k | bHasNoFlagInd( false ), |
962 | 1.96k | bZZero( false ), |
963 | 1.96k | dInvisFlags( 0 ) |
964 | 1.96k | { |
965 | 1.96k | } |
966 | | |
967 | 1.96k | CAD3DFaceObject::~CAD3DFaceObject() = default; |
968 | | |
969 | | //------------------------------------------------------------------------------ |
970 | | // CADPolylinePFaceObject |
971 | | //------------------------------------------------------------------------------ |
972 | | |
973 | | CADPolylinePFaceObject::CADPolylinePFaceObject() : |
974 | 881 | CADEntityObject(POLYLINE_PFACE), |
975 | 881 | nNumVertices( 0 ), |
976 | 881 | nNumFaces( 0 ), |
977 | 881 | nObjectsOwned( 0 ) |
978 | 881 | { |
979 | 881 | } |
980 | | |
981 | 881 | CADPolylinePFaceObject::~CADPolylinePFaceObject() = default; |
982 | | |
983 | | //------------------------------------------------------------------------------ |
984 | | // CADXRecordObject |
985 | | //------------------------------------------------------------------------------ |
986 | | |
987 | | CADXRecordObject::CADXRecordObject() : |
988 | 3.12k | CADBaseControlObject(XRECORD), |
989 | 3.12k | nNumDataBytes( 0 ), |
990 | 3.12k | dCloningFlag( 0 ) |
991 | 3.12k | { |
992 | 3.12k | } |
993 | | |
994 | 3.12k | CADXRecordObject::~CADXRecordObject() = default; |