diff --git a/src/libs/vdxf/dxfdef.h b/src/libs/vdxf/dxfdef.h index b92073651..d9cc7a44b 100644 --- a/src/libs/vdxf/dxfdef.h +++ b/src/libs/vdxf/dxfdef.h @@ -34,4 +34,20 @@ enum class VarMeasurement : unsigned char { English=0, Metric=1 }; //Default drawing units for AutoCAD DesignCenter blocks: enum class VarInsunits : unsigned char { Inches=1, Millimeters=4, Centimeters=5 }; +static inline bool DL_FuzzyComparePossibleNulls(double p1, double p2) +{ + if(qFuzzyIsNull(p1)) + { + return qFuzzyIsNull(p2); + } + else if(qFuzzyIsNull(p2)) + { + return false; + } + else + { + return qFuzzyCompare(p1, p2); + } +} + #endif // DXFDEF_H diff --git a/src/libs/vdxf/dxflib/dl_codes.h b/src/libs/vdxf/dxflib/dl_codes.h index 4cd116fad..2336b3685 100644 --- a/src/libs/vdxf/dxflib/dl_codes.h +++ b/src/libs/vdxf/dxflib/dl_codes.h @@ -32,9 +32,11 @@ #include "dl_global.h" -#if _MSC_VER > 1000 -#pragma once -#endif // _MSC_VER > 1000 +#if defined(Q_CC_MSVC) + #if (_MSC_VER > 1000) + #pragma once + #endif // _MSC_VER > 1000 +#endif // Q_CC_MSVC #if defined(__OS2__)||defined(__EMX__) #define strcasecmp(s,t) stricmp(s,t) diff --git a/src/libs/vdxf/dxflib/dl_creationinterface.h b/src/libs/vdxf/dxflib/dl_creationinterface.h index a824d4aa6..7683d76c6 100644 --- a/src/libs/vdxf/dxflib/dl_creationinterface.h +++ b/src/libs/vdxf/dxflib/dl_creationinterface.h @@ -47,9 +47,8 @@ class DXFLIB_EXPORT DL_CreationInterface { public: - DL_CreationInterface() + DL_CreationInterface() : extrusion(new DL_Extrusion), attributes() { - extrusion = new DL_Extrusion; } virtual ~DL_CreationInterface() { @@ -365,9 +364,12 @@ public: return extrusion; } +private: + Q_DISABLE_COPY(DL_CreationInterface); + protected: - DL_Attributes attributes; DL_Extrusion *extrusion; + DL_Attributes attributes; }; #endif diff --git a/src/libs/vdxf/dxflib/dl_dxf.cpp b/src/libs/vdxf/dxflib/dl_dxf.cpp index 3eea2dd09..7ce27f418 100644 --- a/src/libs/vdxf/dxflib/dl_dxf.cpp +++ b/src/libs/vdxf/dxflib/dl_dxf.cpp @@ -41,31 +41,36 @@ * Default constructor. */ DL_Dxf::DL_Dxf() + : version(DL_VERSION_2000), + polylineLayer(), + vertices(nullptr), + maxVertices(0), + vertexIndex(0), + + knots(nullptr), + maxKnots(0), + knotIndex(0), + + weights(nullptr), + weightIndex(0), + + controlPoints(nullptr), + maxControlPoints(0), + controlPointIndex(0), + + fitPoints(nullptr), + maxFitPoints(0), + fitPointIndex(0), + + leaderVertices(nullptr), + maxLeaderVertices(0), + leaderVertexIndex(0), + + firstHatchLoop(), hatchEdge(), hatchEdges(), + xRecordHandle(), xRecordValues(), groupCodeTmp(), groupCode(), groupValue(), + currentObjectType(), settingKey(), values(), firstCall(), attrib(), + libVersion(), appDictionaryHandle(), styleHandleStd() { - version = DL_VERSION_2000; - - vertices = NULL; - maxVertices = 0; - vertexIndex = 0; - - knots = NULL; - maxKnots = 0; - knotIndex = 0; - - weights = NULL; - weightIndex = 0; - - controlPoints = NULL; - maxControlPoints = 0; - controlPointIndex = 0; - - fitPoints = NULL; - maxFitPoints = 0; - fitPointIndex = 0; - - leaderVertices = NULL; - maxLeaderVertices = 0; - leaderVertexIndex = 0; } @@ -75,27 +80,27 @@ DL_Dxf::DL_Dxf() */ DL_Dxf::~DL_Dxf() { - if (vertices!=NULL) + if (vertices!=nullptr) { delete[] vertices; } - if (knots!=NULL) + if (knots!=nullptr) { delete[] knots; } - if (controlPoints!=NULL) + if (controlPoints!=nullptr) { delete[] controlPoints; } - if (fitPoints!=NULL) + if (fitPoints!=nullptr) { delete[] fitPoints; } - if (weights!=NULL) + if (weights!=nullptr) { delete[] weights; } - if (leaderVertices!=NULL) + if (leaderVertices!=nullptr) { delete[] leaderVertices; } @@ -192,7 +197,7 @@ bool DL_Dxf::readDxfGroups(FILE *fp, DL_CreationInterface* creationInterface) DL_Dxf::getStrippedLine(groupValue, DL_DXF_MAXLINE, fp) ) { - groupCode = (unsigned int)toInt(groupCodeTmp); + groupCode = static_cast(toInt(groupCodeTmp)); creationInterface->processCodeValuePair(groupCode, groupValue); line+=2; @@ -218,7 +223,7 @@ bool DL_Dxf::readDxfGroups(std::stringstream& stream, DL_Dxf::getStrippedLine(groupValue, DL_DXF_MAXLINE, stream) ) { - groupCode = (unsigned int)toInt(groupCodeTmp); + groupCode = static_cast(toInt(groupCodeTmp)); line+=2; processDXFGroup(creationInterface, groupCode, groupValue); @@ -322,7 +327,7 @@ bool DL_Dxf::getStrippedLine(std::string &s, unsigned int size, bool DL_Dxf::stripWhiteSpace(char** s) { // last non-NULL char: - int lastChar = strlen(*s) - 1; + int lastChar = static_cast(strlen(*s) - 1); // Is last character CR or LF? while ( (lastChar >= 0) && @@ -423,7 +428,7 @@ bool DL_Dxf::processDXFGroup(DL_CreationInterface* creationInterface, width, // width linetype, // linetype handle); // handle - attrib.setInPaperSpace((bool)getIntValue(67, 0)); + attrib.setInPaperSpace(static_cast(getIntValue(67, 0))); attrib.setLinetypeScale(getRealValue(48, 1.0)); creationInterface->setAttributes(attrib); @@ -1612,7 +1617,7 @@ bool DL_Dxf::handleLWPolylineData(DL_CreationInterface* /*creationInterface*/) maxVertices = toInt(groupValue); if (maxVertices>0) { - if (vertices!=NULL) + if (vertices!=nullptr) { delete[] vertices; } @@ -1668,7 +1673,7 @@ bool DL_Dxf::handleSplineData(DL_CreationInterface* /*creationInterface*/) maxKnots = toInt(groupValue); if (maxKnots>0) { - if (knots!=NULL) + if (knots!=nullptr) { delete[] knots; } @@ -1688,11 +1693,11 @@ bool DL_Dxf::handleSplineData(DL_CreationInterface* /*creationInterface*/) maxControlPoints = toInt(groupValue); if (maxControlPoints>0) { - if (controlPoints!=NULL) + if (controlPoints!=nullptr) { delete[] controlPoints; } - if (weights!=NULL) + if (weights!=nullptr) { delete[] weights; } @@ -1717,7 +1722,7 @@ bool DL_Dxf::handleSplineData(DL_CreationInterface* /*creationInterface*/) maxFitPoints = toInt(groupValue); if (maxFitPoints>0) { - if (fitPoints!=NULL) + if (fitPoints!=nullptr) { delete[] fitPoints; } @@ -1807,7 +1812,7 @@ bool DL_Dxf::handleLeaderData(DL_CreationInterface* /*creationInterface*/) maxLeaderVertices = toInt(groupValue); if (maxLeaderVertices>0) { - if (leaderVertices!=NULL) + if (leaderVertices!=nullptr) { delete[] leaderVertices; } @@ -2176,7 +2181,7 @@ void DL_Dxf::addHatch(DL_CreationInterface* creationInterface) for (unsigned int i=0; iaddHatchLoop(DL_HatchLoopData(hatchEdges[i].size())); + creationInterface->addHatchLoop(DL_HatchLoopData(static_cast(hatchEdges[i].size()))); for (unsigned int k=0; kaddHatchEdge(DL_HatchEdgeData(hatchEdges[i][k])); @@ -2273,6 +2278,8 @@ bool DL_Dxf::handleHatchData(DL_CreationInterface* creationInterface) hatchEdge.defined = true; } return true; + default: + return false; } } else @@ -2295,6 +2302,8 @@ bool DL_Dxf::handleHatchData(DL_CreationInterface* creationInterface) hatchEdge.y2 = toReal(groupValue); hatchEdge.defined = true; return true; + default: + return false; } } @@ -2319,9 +2328,11 @@ bool DL_Dxf::handleHatchData(DL_CreationInterface* creationInterface) hatchEdge.angle2 = toReal(groupValue)/360.0*2*M_PI; return true; case 73: - hatchEdge.ccw = (bool)toInt(groupValue); + hatchEdge.ccw = static_cast(toInt(groupValue)); hatchEdge.defined = true; return true; + default: + return false; } } @@ -2352,9 +2363,11 @@ bool DL_Dxf::handleHatchData(DL_CreationInterface* creationInterface) hatchEdge.angle2 = toReal(groupValue)/360.0*2*M_PI; return true; case 73: - hatchEdge.ccw = (bool)toInt(groupValue); + hatchEdge.ccw = static_cast(toInt(groupValue)); hatchEdge.defined = true; return true; + default: + return false; } } @@ -2435,6 +2448,8 @@ bool DL_Dxf::handleHatchData(DL_CreationInterface* creationInterface) case 23: hatchEdge.endTangentY = toReal(groupValue); return true; + default: + return false; } } } @@ -2598,6 +2613,8 @@ void DL_Dxf::writeHeader(DL_WriterA& dw) case DL_Codes::AC1015: dw.dxfString(1, "AC1015"); break; + default: + break; } // Newer version require that (otherwise a*cad crashes..) @@ -2727,7 +2744,7 @@ void DL_Dxf::writePolyline(DL_WriterA& dw, dw.entityAttributes(attrib); dw.dxfString(100, "AcDbEntity"); dw.dxfString(100, "AcDbPolyline"); - dw.dxfInt(90, (int)data.number); + dw.dxfInt(90, static_cast(data.number)); dw.dxfInt(70, data.flags); } else @@ -3072,13 +3089,13 @@ void DL_Dxf::writeInsert(DL_WriterA& dw, dw.dxfReal(10, data.ipx); dw.dxfReal(20, data.ipy); dw.dxfReal(30, data.ipz); - if (data.sx!=1.0 || data.sy!=1.0) + if (!DL_FuzzyComparePossibleNulls(data.sx, 1.0) || !DL_FuzzyComparePossibleNulls(data.sy, 1.0)) { dw.dxfReal(41, data.sx); dw.dxfReal(42, data.sy); dw.dxfReal(43, 1.0); } - if (data.angle!=0.0) + if (!DL_FuzzyComparePossibleNulls(data.angle, 0.0)) { dw.dxfReal(50, data.angle); } @@ -3087,7 +3104,7 @@ void DL_Dxf::writeInsert(DL_WriterA& dw, dw.dxfInt(70, data.cols); dw.dxfInt(71, data.rows); } - if (data.colSp!=0.0 || data.rowSp!=0.0) + if (!DL_FuzzyComparePossibleNulls(data.colSp, 0.0) || !DL_FuzzyComparePossibleNulls(data.rowSp, 0.0)) { dw.dxfReal(44, data.colSp); dw.dxfReal(45, data.rowSp); @@ -3126,7 +3143,7 @@ void DL_Dxf::writeMText(DL_WriterA& dw, dw.dxfInt(72, data.drawingDirection); // Creare text chunks of 250 characters each: - int length = data.text.length(); + int length = static_cast(data.text.length()); char chunk[251]; int i; for (i=250; i(data.linearFactor)); dw.dxfString(1002, "}"); } } @@ -3810,7 +3827,7 @@ void DL_Dxf::writeHatch1(DL_WriterA& dw, { dw.dxfString(2, "SOLID"); } - dw.dxfInt(70, (int)data.solid); + dw.dxfInt(70, static_cast(data.solid)); dw.dxfInt(71, 0); // non-associative dw.dxfInt(91, data.numLoops); } @@ -3927,7 +3944,7 @@ void DL_Dxf::writeHatchEdge(DL_WriterA& dw, dw.dxfReal(40, data.radius); dw.dxfReal(50, data.angle1/(2*M_PI)*360.0); dw.dxfReal(51, data.angle2/(2*M_PI)*360.0); - dw.dxfInt(73, (int)(data.ccw)); + dw.dxfInt(73, static_cast((data.ccw))); break; // ellipse arc: @@ -3939,7 +3956,7 @@ void DL_Dxf::writeHatchEdge(DL_WriterA& dw, dw.dxfReal(40, data.ratio); dw.dxfReal(50, data.angle1/(2*M_PI)*360.0); dw.dxfReal(51, data.angle2/(2*M_PI)*360.0); - dw.dxfInt(73, (int)(data.ccw)); + dw.dxfInt(73, static_cast((data.ccw))); break; // spline: @@ -4035,7 +4052,7 @@ int DL_Dxf::writeImage(DL_WriterA& dw, dw.dxfReal(23, data.height); // handle of IMAGEDEF object - int handle = dw.incHandle(); + int handle = static_cast(dw.incHandle()); dw.dxfHex(340, handle); // flags @@ -4670,7 +4687,7 @@ void DL_Dxf::writeDimStyle(DL_WriterA& dw, dw.dxfInt(278, 44); dw.dxfInt(283, 0); dw.dxfInt(284, 8); - dw.dxfHex(340, styleHandleStd); + dw.dxfHex(340, static_cast(styleHandleStd)); //dw.dxfHex(340, 0x11); } // * / @@ -4801,7 +4818,7 @@ void DL_Dxf::writeObjects(DL_WriterA& dw, const std::string& appDictionaryName) dw.dxfString( 3, "ACAD_PLOTSTYLENAME"); dw.dxfHex(350, 0xE); dw.dxfString( 3, "AcDbVariableDictionary"); - int acDbVariableDictionaryHandle = dw.handle(350); + int acDbVariableDictionaryHandle = static_cast(dw.handle(350)); //int acDbVariableDictionaryHandle = dw.getNextHandle(); //dw.dxfHex(350, acDbVariableDictionaryHandle); //dw.incHandle(); @@ -5103,10 +5120,10 @@ void DL_Dxf::writeObjects(DL_WriterA& dw, const std::string& appDictionaryName) dw.dxfInt(281, 1); dw.dxfString( 3, "DIMASSOC"); //dw.dxfHex(350, 0x2F); - dw.dxfHex(350, dw.getNextHandle()+1); // 2E + dw.dxfHex(350, static_cast(dw.getNextHandle()+1)); // 2E dw.dxfString( 3, "HIDETEXT"); //dw.dxfHex(350, 0x2E); - dw.dxfHex(350, dw.getNextHandle()); // 2D + dw.dxfHex(350, static_cast(dw.getNextHandle())); // 2D dw.dxfString( 0, "DICTIONARYVAR"); @@ -5131,7 +5148,7 @@ void DL_Dxf::writeAppDictionary(DL_WriterA& dw) { dw.dxfString( 0, "DICTIONARY"); //dw.handle(); - dw.dxfHex(5, appDictionaryHandle); + dw.dxfHex(5, static_cast(appDictionaryHandle)); dw.dxfString(100, "AcDbDictionary"); dw.dxfInt(281, 1); } @@ -5139,7 +5156,7 @@ void DL_Dxf::writeAppDictionary(DL_WriterA& dw) int DL_Dxf::writeDictionaryEntry(DL_WriterA& dw, const std::string& name) { dw.dxfString( 3, name); - int handle = dw.getNextHandle(); + int handle = static_cast(dw.getNextHandle()); dw.dxfHex(350, handle); dw.incHandle(); return handle; @@ -5149,7 +5166,7 @@ void DL_Dxf::writeXRecord(DL_WriterA& dw, int handle, int value) { dw.dxfString( 0, "XRECORD"); dw.dxfHex(5, handle); - dw.dxfHex(330, appDictionaryHandle); + dw.dxfHex(330, static_cast(appDictionaryHandle)); dw.dxfString(100, "AcDbXrecord"); dw.dxfInt(280, 1); dw.dxfInt(90, value); @@ -5159,7 +5176,7 @@ void DL_Dxf::writeXRecord(DL_WriterA& dw, int handle, double value) { dw.dxfString( 0, "XRECORD"); dw.dxfHex(5, handle); - dw.dxfHex(330, appDictionaryHandle); + dw.dxfHex(330, static_cast(appDictionaryHandle)); dw.dxfString(100, "AcDbXrecord"); dw.dxfInt(280, 1); dw.dxfReal(40, value); @@ -5169,7 +5186,7 @@ void DL_Dxf::writeXRecord(DL_WriterA& dw, int handle, bool value) { dw.dxfString( 0, "XRECORD"); dw.dxfHex(5, handle); - dw.dxfHex(330, appDictionaryHandle); + dw.dxfHex(330, static_cast(appDictionaryHandle)); dw.dxfString(100, "AcDbXrecord"); dw.dxfInt(280, 1); dw.dxfBool(290, value); @@ -5179,7 +5196,7 @@ void DL_Dxf::writeXRecord(DL_WriterA& dw, int handle, const std::string& value) { dw.dxfString( 0, "XRECORD"); dw.dxfHex(5, handle); - dw.dxfHex(330, appDictionaryHandle); + dw.dxfHex(330, static_cast(appDictionaryHandle)); dw.dxfString(100, "AcDbXrecord"); dw.dxfInt(280, 1); dw.dxfString(1000, value); @@ -5813,7 +5830,7 @@ int DL_Dxf::getLibVersion(const std::string& str) if (idx>=2) { - d[3] = str.length(); + d[3] = static_cast(str.length()); v[0] = str.substr(0, d[0]); v[1] = str.substr(d[0]+1, d[1]-d[0]-1); diff --git a/src/libs/vdxf/dxflib/dl_dxf.h b/src/libs/vdxf/dxflib/dl_dxf.h index 32eb0c2a8..80dba39ef 100644 --- a/src/libs/vdxf/dxflib/dl_dxf.h +++ b/src/libs/vdxf/dxflib/dl_dxf.h @@ -416,13 +416,13 @@ public: int toInt(const std::string& str) { char* p; - return strtol(str.c_str(), &p, 10); + return static_cast(strtol(str.c_str(), &p, 10)); } bool toBool(const std::string& str) { char* p; - return (bool)strtol(str.c_str(), &p, 10); + return static_cast(strtol(str.c_str(), &p, 10)); } std::string getStringValue(int code, const std::string& def) @@ -457,6 +457,7 @@ public: } private: + Q_DISABLE_COPY(DL_Dxf); DL_Codes::version version; std::string polylineLayer; diff --git a/src/libs/vdxf/dxflib/dl_entities.h b/src/libs/vdxf/dxflib/dl_entities.h index 67c8597ff..e9e871be0 100644 --- a/src/libs/vdxf/dxflib/dl_entities.h +++ b/src/libs/vdxf/dxflib/dl_entities.h @@ -26,6 +26,7 @@ #define DL_ENTITIES_H #include "dl_global.h" +#include "dxfdef.h" #include #include @@ -39,11 +40,9 @@ struct DXFLIB_EXPORT DL_LayerData * Constructor. * Parameters: see member variables. */ - DL_LayerData(const std::string& lName, - int lFlags) + DL_LayerData(const std::string& lName, int lFlags) + : name(lName), flags(lFlags) { - name = lName; - flags = lFlags; } /** Layer name. */ @@ -63,15 +62,10 @@ struct DXFLIB_EXPORT DL_BlockData * Constructor. * Parameters: see member variables. */ - DL_BlockData(const std::string& bName, - int bFlags, + DL_BlockData(const std::string& bName, int bFlags, double bbpx, double bbpy, double bbpz) - { - name = bName; - flags = bFlags; - bpx = bbpx; - bpy = bbpy; - bpz = bbpz; + : name(bName), flags(bFlags), bpx(bbpx), bpy(bbpy), bpz(bbpz) + { } /** Block name. */ @@ -102,7 +96,7 @@ struct DXFLIB_EXPORT DL_LinetypeData int flags, int numberOfDashes, double patternLength, - double* pattern = NULL + double* pattern = nullptr ) : name(name), description(description), @@ -110,7 +104,12 @@ struct DXFLIB_EXPORT DL_LinetypeData numberOfDashes(numberOfDashes), patternLength(patternLength), pattern(pattern) - {} + { + } + + ~DL_LinetypeData() + { + } /** Linetype name */ std::string name; @@ -124,6 +123,9 @@ struct DXFLIB_EXPORT DL_LinetypeData double patternLength; /** Pattern */ double* pattern; + +private: + Q_DISABLE_COPY(DL_LinetypeData); }; @@ -167,9 +169,9 @@ struct DXFLIB_EXPORT DL_StyleData // ignore lastHeightUsed: return (name==other.name && flags==other.flags && - fixedTextHeight==other.fixedTextHeight && - widthFactor==other.widthFactor && - obliqueAngle==other.obliqueAngle && + DL_FuzzyComparePossibleNulls(fixedTextHeight, other.fixedTextHeight) && + DL_FuzzyComparePossibleNulls(widthFactor, other.widthFactor) && + DL_FuzzyComparePossibleNulls(obliqueAngle, other.obliqueAngle) && textGenerationFlags==other.textGenerationFlags && primaryFontFile==other.primaryFontFile && bigFontFile==other.bigFontFile); @@ -208,10 +210,8 @@ struct DXFLIB_EXPORT DL_PointData * Parameters: see member variables. */ DL_PointData(double px=0.0, double py=0.0, double pz=0.0) + : x(px), y(py), z(pz) { - x = px; - y = py; - z = pz; } /*! X Coordinate of the point. */ @@ -235,14 +235,8 @@ struct DXFLIB_EXPORT DL_LineData */ DL_LineData(double lx1, double ly1, double lz1, double lx2, double ly2, double lz2) + : x1(lx1), y1(ly1), z1(lz1), x2(lx2), y2(ly2), z2(lz2) { - x1 = lx1; - y1 = ly1; - z1 = lz1; - - x2 = lx2; - y2 = ly2; - z2 = lz2; } /*! X Start coordinate of the point. */ @@ -336,14 +330,8 @@ struct DXFLIB_EXPORT DL_ArcData DL_ArcData(double acx, double acy, double acz, double aRadius, double aAngle1, double aAngle2) - { - - cx = acx; - cy = acy; - cz = acz; - radius = aRadius; - angle1 = aAngle1; - angle2 = aAngle2; + : cx(acx), cy(acy), cz(acz), radius(aRadius), angle1(aAngle1), angle2(aAngle2) + { } /*! X Coordinate of center point. */ @@ -374,12 +362,8 @@ struct DXFLIB_EXPORT DL_CircleData */ DL_CircleData(double acx, double acy, double acz, double aRadius) + : cx(acx), cy(acy), cz(acz), radius(aRadius) { - - cx = acx; - cy = acy; - cz = acz; - radius = aRadius; } /*! X Coordinate of center point. */ @@ -405,11 +389,8 @@ struct DXFLIB_EXPORT DL_PolylineData * Parameters: see member variables. */ DL_PolylineData(int pNumber, int pMVerteces, int pNVerteces, int pFlags) + : number(pNumber), m(pMVerteces), n(pNVerteces), flags(pFlags) { - number = pNumber; - m = pMVerteces; - n = pNVerteces; - flags = pFlags; } /*! Number of vertices in this polyline. */ @@ -438,11 +419,8 @@ struct DXFLIB_EXPORT DL_VertexData */ DL_VertexData(double px=0.0, double py=0.0, double pz=0.0, double pBulge=0.0) + : x(px), y(py), z(pz), bulge(pBulge) { - x = px; - y = py; - z = pz; - bulge = pBulge; } /*! X Coordinate of the vertex. */ @@ -463,8 +441,8 @@ struct DXFLIB_EXPORT DL_VertexData struct DXFLIB_EXPORT DL_TraceData { DL_TraceData() + : thickness(0.0) { - thickness = 0.0; for (int i=0; i<4; i++) { x[i] = 0.0; @@ -482,10 +460,8 @@ struct DXFLIB_EXPORT DL_TraceData double sx3, double sy3, double sz3, double sx4, double sy4, double sz4, double sthickness=0.0) + : thickness(sthickness) { - - thickness = sthickness; - x[0] = sx1; y[0] = sy1; z[0] = sz1; @@ -546,7 +522,13 @@ struct DXFLIB_EXPORT DL_SplineData nKnots(nKnots), nControl(nControl), nFit(nFit), - flags(flags) + flags(flags), + tangentStartX(0.0), + tangentStartY(0.0), + tangentStartZ(0.0), + tangentEndX(0.0), + tangentEndY(0.0), + tangentEndZ(0.0) { } @@ -580,14 +562,14 @@ struct DXFLIB_EXPORT DL_SplineData */ struct DXFLIB_EXPORT DL_KnotData { - DL_KnotData() {} + DL_KnotData() : k(0.0) {} /** * Constructor. * Parameters: see member variables. */ DL_KnotData(double pk) + : k(pk) { - k = pk; } /*! Knot value. */ @@ -606,11 +588,8 @@ struct DXFLIB_EXPORT DL_ControlPointData * Parameters: see member variables. */ DL_ControlPointData(double px, double py, double pz, double weight) + : x(px), y(py), z(pz), w(weight) { - x = px; - y = py; - z = pz; - w = weight; } /*! X coordinate of the control point. */ @@ -911,7 +890,6 @@ struct DXFLIB_EXPORT DL_AttributeData : public DL_TextData DL_AttributeData(const DL_TextData& tData, const std::string& tag) : DL_TextData(tData), tag(tag) { - } /** @@ -1063,15 +1041,9 @@ struct DXFLIB_EXPORT DL_DimAlignedData */ DL_DimAlignedData(double depx1, double depy1, double depz1, double depx2, double depy2, double depz2) - { - - epx1 = depx1; - epy1 = depy1; - epz1 = depz1; - - epx2 = depx2; - epy2 = depy2; - epz2 = depz2; + : epx1(depx1), epy1(depy1), epz1(depz1), + epx2(depx2), epy2(depy2), epz2(depz2) + { } /*! X Coordinate of Extension point 1. */ @@ -1103,18 +1075,10 @@ struct DXFLIB_EXPORT DL_DimLinearData DL_DimLinearData(double ddpx1, double ddpy1, double ddpz1, double ddpx2, double ddpy2, double ddpz2, double dAngle, double dOblique) + : dpx1(ddpx1), dpy1(ddpy1), dpz1(ddpz1), + dpx2(ddpx2), dpy2(ddpy2), dpz2(ddpz2), + angle(dAngle), oblique(dOblique) { - - dpx1 = ddpx1; - dpy1 = ddpy1; - dpz1 = ddpz1; - - dpx2 = ddpx2; - dpy2 = ddpy2; - dpz2 = ddpz2; - - angle = dAngle; - oblique = dOblique; } /*! X Coordinate of Extension point 1. */ @@ -1149,12 +1113,8 @@ struct DXFLIB_EXPORT DL_DimRadialData * Parameters: see member variables. */ DL_DimRadialData(double ddpx, double ddpy, double ddpz, double dleader) + : dpx(ddpx), dpy(ddpy), dpz(ddpz), leader(dleader) { - dpx = ddpx; - dpy = ddpy; - dpz = ddpz; - - leader = dleader; } /*! X Coordinate of definition point. */ @@ -1180,12 +1140,8 @@ struct DXFLIB_EXPORT DL_DimDiametricData * Parameters: see member variables. */ DL_DimDiametricData(double ddpx, double ddpy, double ddpz, double dleader) + : dpx(ddpx), dpy(ddpy), dpz(ddpz), leader(dleader) { - dpx = ddpx; - dpy = ddpy; - dpz = ddpz; - - leader = dleader; } /*! X Coordinate of definition point (DXF 15). */ @@ -1214,24 +1170,12 @@ struct DXFLIB_EXPORT DL_DimAngularData double ddpx2, double ddpy2, double ddpz2, double ddpx3, double ddpy3, double ddpz3, double ddpx4, double ddpy4, double ddpz4) - { - - dpx1 = ddpx1; - dpy1 = ddpy1; - dpz1 = ddpz1; - - dpx2 = ddpx2; - dpy2 = ddpy2; - dpz2 = ddpz2; - - dpx3 = ddpx3; - dpy3 = ddpy3; - dpz3 = ddpz3; - - dpx4 = ddpx4; - dpy4 = ddpy4; - dpz4 = ddpz4; - } + : dpx1(ddpx1), dpy1(ddpy1), dpz1(ddpz1), + dpx2(ddpx2), dpy2(ddpy2), dpz2(ddpz2), + dpx3(ddpx3), dpy3(ddpy3), dpz3(ddpz3), + dpx4(ddpx4), dpy4(ddpy4), dpz4(ddpz4) + { + } /*! X Coordinate of definition point 1. */ double dpx1; @@ -1275,20 +1219,11 @@ struct DXFLIB_EXPORT DL_DimAngular3PData DL_DimAngular3PData(double ddpx1, double ddpy1, double ddpz1, double ddpx2, double ddpy2, double ddpz2, double ddpx3, double ddpy3, double ddpz3) - { - - dpx1 = ddpx1; - dpy1 = ddpy1; - dpz1 = ddpz1; - - dpx2 = ddpx2; - dpy2 = ddpy2; - dpz2 = ddpz2; - - dpx3 = ddpx3; - dpy3 = ddpy3; - dpz3 = ddpz3; - } + : dpx1(ddpx1), dpy1(ddpy1), dpz1(ddpz1), + dpx2(ddpx2), dpy2(ddpy2), dpz2(ddpz2), + dpx3(ddpx3), dpy3(ddpy3), dpz3(ddpz3) + { + } /*! X Coordinate of definition point 1. */ double dpx1; @@ -1326,17 +1261,10 @@ struct DXFLIB_EXPORT DL_DimOrdinateData DL_DimOrdinateData(double ddpx1, double ddpy1, double ddpz1, double ddpx2, double ddpy2, double ddpz2, bool dxtype) + : dpx1(ddpx1), dpy1(ddpy1), dpz1(ddpz1), + dpx2(ddpx2), dpy2(ddpy2), dpz2(ddpz2), + xtype(dxtype) { - - dpx1 = ddpx1; - dpy1 = ddpy1; - dpz1 = ddpz1; - - dpx2 = ddpx2; - dpy2 = ddpy2; - dpz2 = ddpz2; - - xtype = dxtype; } /*! X Coordinate of definition point 1. */ @@ -1376,16 +1304,15 @@ struct DXFLIB_EXPORT DL_LeaderData double lTextAnnotationHeight, double lTextAnnotationWidth, int lNumber) + : arrowHeadFlag(lArrowHeadFlag), + leaderPathType(lLeaderPathType), + leaderCreationFlag(lLeaderCreationFlag), + hooklineDirectionFlag(lHooklineDirectionFlag), + hooklineFlag(lHooklineFlag), + textAnnotationHeight(lTextAnnotationHeight), + textAnnotationWidth(lTextAnnotationWidth), + number(lNumber) { - - arrowHeadFlag = lArrowHeadFlag; - leaderPathType = lLeaderPathType; - leaderCreationFlag = lLeaderCreationFlag; - hooklineDirectionFlag = lHooklineDirectionFlag; - hooklineFlag = lHooklineFlag; - textAnnotationHeight = lTextAnnotationHeight; - textAnnotationWidth = lTextAnnotationWidth; - number = lNumber; } /*! Arrow head flag (71). */ @@ -1418,10 +1345,8 @@ struct DXFLIB_EXPORT DL_LeaderVertexData * Parameters: see member variables. */ DL_LeaderVertexData(double px=0.0, double py=0.0, double pz=0.0) + : x(px), y(py), z(pz) { - x = px; - y = py; - z = pz; } /*! X Coordinate of the vertex. */ @@ -1442,7 +1367,8 @@ struct DXFLIB_EXPORT DL_HatchData /** * Default constructor. */ - DL_HatchData() {} + DL_HatchData() : numLoops(0), solid(), scale(0.0), angle(0.0), pattern(), originX(0.0), originY(0.0) + {} /** * Constructor. @@ -1463,7 +1389,6 @@ struct DXFLIB_EXPORT DL_HatchData originX(originX), originY(originY) { - } /*! Number of boundary paths (loops). */ @@ -1491,14 +1416,15 @@ struct DXFLIB_EXPORT DL_HatchLoopData /** * Default constructor. */ - DL_HatchLoopData() {} + DL_HatchLoopData() : numEdges(0) + {} /** * Constructor. * Parameters: see member variables. */ DL_HatchLoopData(int hNumEdges) + : numEdges(hNumEdges) { - numEdges = hNumEdges; } /*! Number of edges in this loop. */ @@ -1515,7 +1441,12 @@ struct DXFLIB_EXPORT DL_HatchEdgeData /** * Default constructor. */ - DL_HatchEdgeData() : defined(false), x1(0.0), y1(0.0), x2(0.0), y2(0.0) + DL_HatchEdgeData() : defined(false), x1(0.0), y1(0.0), x2(0.0), y2(0.0), + type(0), cx(0.0), cy(0.0), radius(0.0), angle1(0.0), angle2(0.0), ccw(), + mx(0.0), my(0.0), ratio(0.0), degree(0), rational(), periodic(), + nKnots(0), nControl(0), nFit(0), controlPoints(), knots(), + weights(), fitPoints(), startTangentX(0.0), startTangentY(0.0), + endTangentX(0.0), endTangentY(0.0), vertices() { } @@ -1526,11 +1457,16 @@ struct DXFLIB_EXPORT DL_HatchEdgeData DL_HatchEdgeData(double x1, double y1, double x2, double y2) : defined(true), - type(1), x1(x1), y1(y1), x2(x2), - y2(y2) + y2(y2), + type(1), + cx(0.0), cy(0.0), radius(0.0), angle1(0.0), angle2(0.0), ccw(), + mx(0.0), my(0.0), ratio(0.0), degree(0), rational(), periodic(), + nKnots(0), nControl(0), nFit(0), controlPoints(), knots(), + weights(), fitPoints(), startTangentX(0.0), startTangentY(0.0), + endTangentX(0.0), endTangentY(0.0), vertices() { } @@ -1543,13 +1479,18 @@ struct DXFLIB_EXPORT DL_HatchEdgeData double angle1, double angle2, bool ccw) : defined(true), + x1(), y1(), x2(), y2(), type(2), cx(cx), cy(cy), radius(radius), angle1(angle1), angle2(angle2), - ccw(ccw) + ccw(ccw), + mx(0.0), my(0.0), ratio(0.0), degree(0), rational(), periodic(), + nKnots(0), nControl(0), nFit(0), controlPoints(), knots(), + weights(), fitPoints(), startTangentX(0.0), startTangentY(0.0), + endTangentX(0.0), endTangentY(0.0), vertices() { } @@ -1563,15 +1504,21 @@ struct DXFLIB_EXPORT DL_HatchEdgeData double angle1, double angle2, bool ccw) : defined(true), + x1(), y1(), x2(), y2(), type(3), cx(cx), cy(cy), + radius(), angle1(angle1), angle2(angle2), ccw(ccw), mx(mx), my(my), - ratio(ratio) + ratio(ratio), + degree(0), rational(), periodic(), + nKnots(0), nControl(0), nFit(0), controlPoints(), knots(), + weights(), fitPoints(), startTangentX(0.0), startTangentY(0.0), + endTangentX(0.0), endTangentY(0.0), vertices() { } @@ -1594,8 +1541,10 @@ struct DXFLIB_EXPORT DL_HatchEdgeData double endTangentX, double endTangentY) : defined(true), - type(4), - degree(degree), + x1(), y1(), x2(), y2(), + type(4), cx(), cy(), radius(), + angle1(), angle2(), ccw(), + mx(), my(), ratio(), degree(degree), rational(rational), periodic(periodic), nKnots(nKnots), @@ -1608,7 +1557,8 @@ struct DXFLIB_EXPORT DL_HatchEdgeData startTangentX(startTangentX), startTangentY(startTangentY), endTangentX(endTangentX), - endTangentY(endTangentY) + endTangentY(endTangentY), + vertices() { } @@ -1617,11 +1567,6 @@ struct DXFLIB_EXPORT DL_HatchEdgeData */ bool defined; - /** - * Edge type. 1=line, 2=arc, 3=elliptic arc, 4=spline. - */ - int type; - // line edges: /*! Start point (X). */ @@ -1633,6 +1578,11 @@ struct DXFLIB_EXPORT DL_HatchEdgeData /*! End point (Y). */ double y2; + /** + * Edge type. 1=line, 2=arc, 3=elliptic arc, 4=spline. + */ + int type; + /*! Center point of arc or ellipse arc (X). */ double cx; /*! Center point of arc or ellipse arc (Y). */ @@ -1698,22 +1648,13 @@ struct DXFLIB_EXPORT DL_ImageData double ivx, double ivy, double ivz, int iwidth, int iheight, int ibrightness, int icontrast, int ifade) + : ref(iref), + ipx(iipx), ipy(iipy), ipz(iipz), + ux(iux), uy(iuy), uz(iuz), + vx(ivx), vy(ivy), vz(ivz), + width(iwidth), height(iheight), + brightness(ibrightness), contrast(icontrast), fade(ifade) { - ref = iref; - ipx = iipx; - ipy = iipy; - ipz = iipz; - ux = iux; - uy = iuy; - uz = iuz; - vx = ivx; - vy = ivy; - vz = ivz; - width = iwidth; - height = iheight; - brightness = ibrightness; - contrast = icontrast; - fade = ifade; } /*! Reference to the image file @@ -1762,9 +1703,8 @@ struct DXFLIB_EXPORT DL_ImageDefData */ DL_ImageDefData(const std::string& iref, const std::string& ifile) - { - ref = iref; - file = ifile; + : ref(iref), file(ifile) + { } /*! Reference to the image file diff --git a/src/libs/vdxf/dxflib/dl_exception.h b/src/libs/vdxf/dxflib/dl_exception.h index fdca72963..506e194c8 100644 --- a/src/libs/vdxf/dxflib/dl_exception.h +++ b/src/libs/vdxf/dxflib/dl_exception.h @@ -28,9 +28,11 @@ #include "dl_global.h" -#if _MSC_VER > 1000 -#pragma once -#endif // _MSC_VER > 1000 +#if defined(Q_CC_MSVC) + #if (_MSC_VER > 1000) + #pragma once + #endif // _MSC_VER > 1000 +#endif // Q_CC_MSVC /** * Used for exception handling. diff --git a/src/libs/vdxf/dxflib/dl_extrusion.h b/src/libs/vdxf/dxflib/dl_extrusion.h index 75f6ff197..0f1ab9790 100644 --- a/src/libs/vdxf/dxflib/dl_extrusion.h +++ b/src/libs/vdxf/dxflib/dl_extrusion.h @@ -44,11 +44,9 @@ public: /** * Default constructor. */ - DL_Extrusion() + DL_Extrusion() : direction(new double[3]), elevation(0.0) { - direction = new double[3]; setDirection(0.0, 0.0, 1.0); - setElevation(0.0); } @@ -60,6 +58,10 @@ public: delete[] direction ; } + DL_Extrusion(const DL_Extrusion &L) + : direction(L.direction), elevation(L.elevation) + { + } /** * Constructor for DXF extrusion. @@ -70,10 +72,9 @@ public: * world coordinate system */ DL_Extrusion(double dx, double dy, double dz, double elevation) + : direction(new double[3]), elevation(elevation) { - direction = new double[3]; setDirection(dx, dy, dz); - setElevation(elevation); } @@ -135,8 +136,12 @@ public: /** * Copies extrusion (deep copies) from another extrusion object. */ - DL_Extrusion operator = (const DL_Extrusion& extru) + DL_Extrusion & operator = (const DL_Extrusion& extru) { + if ( &extru == this ) + { + return *this; + } setDirection(extru.direction[0], extru.direction[1], extru.direction[2]); setElevation(extru.elevation); diff --git a/src/libs/vdxf/dxflib/dl_writer.h b/src/libs/vdxf/dxflib/dl_writer.h index ff744ba50..00515fded 100644 --- a/src/libs/vdxf/dxflib/dl_writer.h +++ b/src/libs/vdxf/dxflib/dl_writer.h @@ -32,9 +32,11 @@ #include #endif -#if _MSC_VER > 1000 -#pragma once -#endif // _MSC_VER > 1000 +#if defined(Q_CC_MSVC) + #if (_MSC_VER > 1000) + #pragma once + #endif // _MSC_VER > 1000 +#endif // Q_CC_MSVC #include #include @@ -60,12 +62,8 @@ public: /** * @param version DXF version. Defaults to DL_VERSION_2002. */ - DL_Writer(DL_Codes::version version) : m_handle(0x30) + DL_Writer(DL_Codes::version version) : m_handle(0x30), modelSpaceHandle(0), paperSpaceHandle(0), paperSpace0Handle(0), version(version) { - this->version = version; - modelSpaceHandle = 0; - paperSpaceHandle = 0; - paperSpace0Handle = 0; } virtual ~DL_Writer() {} @@ -424,7 +422,7 @@ public: } else { - dxfHex(5, h); + dxfHex(5, static_cast(h)); } dxfString(100, "AcDbSymbolTableRecord"); dxfString(100, "AcDbLayerTableRecord"); @@ -450,7 +448,7 @@ public: } else { - dxfHex(5, h); + dxfHex(5, static_cast(h)); } //dxfHex(330, 0x5); dxfString(100, "AcDbSymbolTableRecord"); @@ -477,7 +475,7 @@ public: } else { - dxfHex(5, h); + dxfHex(5, static_cast(h)); } //dxfHex(330, 0x9); dxfString(100, "AcDbSymbolTableRecord"); @@ -504,7 +502,7 @@ public: } else { - dxfHex(5, h); + dxfHex(5, static_cast(h)); } //dxfHex(330, blockHandle); dxfString(100, "AcDbEntity"); @@ -536,7 +534,7 @@ public: } else { - dxfHex(5, h); + dxfHex(5, static_cast(h)); } //dxfHex(330, blockHandle); dxfString(100, "AcDbEntity"); @@ -594,7 +592,7 @@ public: unsigned long handle(int gc=5) const { // handle has to be hex - dxfHex(gc, m_handle); + dxfHex(gc, static_cast(m_handle)); return m_handle++; } @@ -683,7 +681,7 @@ public: */ virtual void dxfBool(int gc, bool value) const { - dxfInt(gc, (int)value); + dxfInt(gc, static_cast(value)); } /** diff --git a/src/libs/vdxf/dxflib/dl_writer_ascii.cpp b/src/libs/vdxf/dxflib/dl_writer_ascii.cpp index 319c34f23..f52596e80 100644 --- a/src/libs/vdxf/dxflib/dl_writer_ascii.cpp +++ b/src/libs/vdxf/dxflib/dl_writer_ascii.cpp @@ -23,9 +23,11 @@ ** **********************************************************************/ -#if _MSC_VER > 1000 -#pragma once -#endif // _MSC_VER > 1000 +#if defined(Q_CC_MSVC) + #if (_MSC_VER > 1000) + #pragma once + #endif // _MSC_VER > 1000 +#endif // Q_CC_MSVC #include #include @@ -84,7 +86,7 @@ void DL_WriterA::dxfReal(int gc, double value) const end = i+1; } } - if (end>0 && end<(int)strlen(str)) + if (end>0 && end(strlen(str))) { str[end] = '\0'; } diff --git a/src/libs/vdxf/dxflib/dl_writer_ascii.h b/src/libs/vdxf/dxflib/dl_writer_ascii.h index 6f8b4f965..51686de8c 100644 --- a/src/libs/vdxf/dxflib/dl_writer_ascii.h +++ b/src/libs/vdxf/dxflib/dl_writer_ascii.h @@ -28,9 +28,11 @@ #include "dl_global.h" -#if _MSC_VER > 1000 -#pragma once -#endif // _MSC_VER > 1000 +#if defined(Q_CC_MSVC) + #if (_MSC_VER > 1000) + #pragma once + #endif // _MSC_VER > 1000 +#endif // Q_CC_MSVC #include "dl_writer.h" #include diff --git a/src/libs/vdxf/vdxfengine.cpp b/src/libs/vdxf/vdxfengine.cpp index 23624c555..e4701a115 100644 --- a/src/libs/vdxf/vdxfengine.cpp +++ b/src/libs/vdxf/vdxfengine.cpp @@ -54,8 +54,8 @@ static inline QPaintEngine::PaintEngineFeatures svgEngineFeatures() //--------------------------------------------------------------------------------------------------------------------- VDxfEngine::VDxfEngine() :QPaintEngine(svgEngineFeatures()), - size(), resolution(PrintDPI), matrix(), varMeasurement(VarMeasurement::Metric), - varInsunits(VarInsunits::Centimeters) + size(), resolution(PrintDPI), fileName(), matrix(), dxf(nullptr), dw(nullptr), + varMeasurement(VarMeasurement::Metric), varInsunits(VarInsunits::Centimeters) { }