LCOV - code coverage report
Current view: top level - ogr/ogrsf_frmts/cad/libopencad - cadobjects.cpp (source / functions) Hit Total Coverage
Test: gdal_filtered.info Lines: 93 217 42.9 %
Date: 2024-11-21 22:18:42 Functions: 30 71 42.3 %

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

Generated by: LCOV version 1.14