Cppcheck warnings.

--HG--
branch : develop
This commit is contained in:
Roman Telezhynskyi 2017-07-06 12:58:26 +03:00
parent 189f091bb4
commit e6eb9c756b
41 changed files with 255 additions and 253 deletions

View file

@ -6,11 +6,12 @@
CPPCHECK="../../../../cppcheck/cppcheck" CPPCHECK="../../../../cppcheck/cppcheck"
$CPPCHECK \ $CPPCHECK \
-j4 -f -q \ -j4 -f -q \
-UDRW_DBG \
-U__INTEL_COMPILER_UPDATE \ -U__INTEL_COMPILER_UPDATE \
-UqApp \ -UqApp \
--template '{file}:{line}:{message}:{id}' \ --template '{file}:{line}:{message}:{id}' \
--inline-suppr \ --inline-suppr \
--platform=unix32 \ --platform=unix64 \
--std=c++11 \ --std=c++11 \
--std=posix \ --std=posix \
--enable=all \ --enable=all \

View file

@ -1923,9 +1923,10 @@ void TMainWindow::SetupMenu()
{ {
QAction *action = new QAction(this); QAction *action = new QAction(this);
recentFileActs[i] = action; recentFileActs[i] = action;
connect(action, &QAction::triggered, this, [action, this]() connect(action, &QAction::triggered, this, [this]()
{ {
if (action != nullptr) QAction *action = qobject_cast<QAction *>(sender());
if (action)
{ {
const QString filePath = action->data().toString(); const QString filePath = action->data().toString();
if (not filePath.isEmpty()) if (not filePath.isEmpty())

View file

@ -311,7 +311,7 @@ UTF8STRING dx_iface::AddFont(const QFont &f)
return ts.name; return ts.name;
} }
std::string dx_iface::LocaleToISO() const std::string dx_iface::LocaleToISO()
{ {
QMap <std::string, std::string> locMap; QMap <std::string, std::string> locMap;
locMap["croatian"] = "ISO8859-2"; locMap["croatian"] = "ISO8859-2";

View file

@ -26,7 +26,7 @@ public:
: path() : path()
{} {}
dx_ifaceImg(const DRW_Image& p) explicit dx_ifaceImg(const DRW_Image& p)
: DRW_Image(p), : DRW_Image(p),
path() path()
{} {}
@ -42,7 +42,7 @@ public:
: ent() : ent()
{} {}
dx_ifaceBlock(const DRW_Block& p) explicit dx_ifaceBlock(const DRW_Block& p)
: DRW_Block(p), : DRW_Block(p),
ent() ent()
{} {}
@ -132,7 +132,7 @@ private:
void InitTextstyles(); void InitTextstyles();
void InitAppId(); void InitAppId();
std::string LocaleToISO() const; static std::string LocaleToISO();
}; };
#endif // DX_IFACE_H #endif // DX_IFACE_H

View file

@ -194,6 +194,12 @@ public:
z(iz) z(iz)
{} {}
DRW_Coord(const DRW_Coord &data)
: x(data.x),
y(data.y),
z(data.z)
{}
DRW_Coord &operator = (const DRW_Coord& data) DRW_Coord &operator = (const DRW_Coord& data)
{ {
if ( &data == this ) if ( &data == this )
@ -310,7 +316,7 @@ public:
addDouble(d); addDouble(d);
} }
DRW_Variant(int c, UTF8STRING s) DRW_Variant(int c, const UTF8STRING &s)
: content(), : content(),
type(), type(),
code(c), code(c),
@ -320,7 +326,7 @@ public:
addString(s); addString(s);
} }
DRW_Variant(int c, DRW_Coord crd) DRW_Variant(int c, const DRW_Coord &crd)
: content(), : content(),
type(), type(),
code(c), code(c),
@ -352,11 +358,11 @@ public:
~DRW_Variant() = default; ~DRW_Variant() = default;
void addString(UTF8STRING s) {setType(STRING); sdata = s; content.s = &sdata;} void addString(const UTF8STRING &s) {setType(STRING); sdata = s; content.s = &sdata;}
void addInt(int i) {setType(INTEGER); content.i = i;} void addInt(int i) {setType(INTEGER); content.i = i;}
void addDouble(double d) {setType(DOUBLE); content.d = d;} void addDouble(double d) {setType(DOUBLE); content.d = d;}
void addCoord() {setType(COORD); vdata.x=0.0; vdata.y=0.0; vdata.z=0.0; content.v = &vdata;} void addCoord() {setType(COORD); vdata.x=0.0; vdata.y=0.0; vdata.z=0.0; content.v = &vdata;}
void addCoord(DRW_Coord v) {setType(COORD); vdata = v; content.v = &vdata;} void addCoord(const DRW_Coord &v) {setType(COORD); vdata = v; content.v = &vdata;}
void setType(enum TYPE t) { type = t;} void setType(enum TYPE t) { type = t;}
void setCoordX(double d) { if (type == COORD) vdata.x = d;} void setCoordX(double d) { if (type == COORD) vdata.x = d;}
void setCoordY(double d) { if (type == COORD) vdata.y = d;} void setCoordY(double d) { if (type == COORD) vdata.y = d;}
@ -376,6 +382,7 @@ public:
int code; /*!< dxf code of this value*/ int code; /*!< dxf code of this value*/
private: private:
DRW_Variant &operator=(const DRW_Variant &) Q_DECL_EQ_DELETE;
std::string sdata; std::string sdata;
DRW_Coord vdata; DRW_Coord vdata;
}; };

View file

@ -55,7 +55,7 @@ void DRW_Entity::calculateAxis(DRW_Coord extPoint){
* apply extrusion in a point using arbitary axis (previous calculated) * apply extrusion in a point using arbitary axis (previous calculated)
* @author Rallaz * @author Rallaz
*/ */
void DRW_Entity::extrudePoint(DRW_Coord extPoint, DRW_Coord *point){ void DRW_Entity::extrudePoint(DRW_Coord extPoint, DRW_Coord *point) const{
double px, py, pz; double px, py, pz;
px = (extAxisX.x*point->x)+(extAxisY.x*point->y)+(extPoint.x*point->z); px = (extAxisX.x*point->x)+(extAxisY.x*point->y)+(extPoint.x*point->z);
py = (extAxisX.y*point->x)+(extAxisY.y*point->y)+(extPoint.y*point->z); py = (extAxisX.y*point->x)+(extAxisY.y*point->y)+(extPoint.y*point->z);
@ -782,7 +782,6 @@ bool DRW_Ellipse::parseDwg(DRW::Version version, dwgBuffer *buf, duint32 bs){
//parts are the number of vertex to split polyline, default 128 //parts are the number of vertex to split polyline, default 128
void DRW_Ellipse::toPolyline(DRW_Polyline *pol, int parts){ void DRW_Ellipse::toPolyline(DRW_Polyline *pol, int parts){
double radMajor, radMinor, cosRot, sinRot, incAngle, curAngle; double radMajor, radMinor, cosRot, sinRot, incAngle, curAngle;
double cosCurr, sinCurr;
radMajor = sqrt(secPoint.x*secPoint.x + secPoint.y*secPoint.y); radMajor = sqrt(secPoint.x*secPoint.x + secPoint.y*secPoint.y);
radMinor = radMajor*ratio; radMinor = radMajor*ratio;
//calculate sin & cos of included angle //calculate sin & cos of included angle
@ -797,8 +796,8 @@ void DRW_Ellipse::toPolyline(DRW_Polyline *pol, int parts){
curAngle = endparam; curAngle = endparam;
i = parts+2; i = parts+2;
} }
cosCurr = cos(curAngle); double cosCurr = cos(curAngle);
sinCurr = sin(curAngle); double sinCurr = sin(curAngle);
double x = basePoint.x + (cosCurr*cosRot*radMajor) - (sinCurr*sinRot*radMinor); double x = basePoint.x + (cosCurr*cosRot*radMajor) - (sinCurr*sinRot*radMinor);
double y = basePoint.y + (cosCurr*sinRot*radMajor) + (sinCurr*cosRot*radMinor); double y = basePoint.y + (cosCurr*sinRot*radMajor) + (sinCurr*cosRot*radMinor);
pol->addVertex( DRW_Vertex(x, y, 0.0, 0.0)); pol->addVertex( DRW_Vertex(x, y, 0.0, 0.0));

View file

@ -216,7 +216,7 @@ protected:
//calculates extrusion axis (normal vector) //calculates extrusion axis (normal vector)
void calculateAxis(DRW_Coord extPoint); void calculateAxis(DRW_Coord extPoint);
//apply extrusion to @extPoint and return data in @point //apply extrusion to @extPoint and return data in @point
void extrudePoint(DRW_Coord extPoint, DRW_Coord *point); void extrudePoint(DRW_Coord extPoint, DRW_Coord *point) const;
virtual bool parseDwg(DRW::Version version, dwgBuffer *buf, duint32 bs=0)=0; virtual bool parseDwg(DRW::Version version, dwgBuffer *buf, duint32 bs=0)=0;
//parses dwg common start part to read entity //parses dwg common start part to read entity
bool parseDwg(DRW::Version version, dwgBuffer *buf, dwgBuffer* strBuf, duint32 bs=0); bool parseDwg(DRW::Version version, dwgBuffer *buf, dwgBuffer* strBuf, duint32 bs=0);
@ -398,23 +398,23 @@ public:
virtual void applyExtrusion(); virtual void applyExtrusion();
//! center point in OCS //! center point in OCS
const DRW_Coord & center() { return basePoint; } const DRW_Coord & center() const { return basePoint; }
//! the radius of the circle //! the radius of the circle
double radius() { return radious; } double radius() const { return radious; }
//! start angle in radians //! start angle in radians
double startAngle() { return staangle; } double startAngle() const { return staangle; }
//! end angle in radians //! end angle in radians
double endAngle() { return endangle; } double endAngle() const { return endangle; }
//! thickness //! thickness
double thick() { return thickness; } double thick() const { return thickness; }
//! extrusion //! extrusion
const DRW_Coord & extrusion() { return extPoint; } const DRW_Coord & extrusion() const { return extPoint; }
protected: protected:
//! interpret code in dxf reading process or dispatch to inherited class //! interpret code in dxf reading process or dispatch to inherited class
void parseCode(int code, dxfReader *reader); void parseCode(int code, dxfReader *reader);
//! interpret dwg data (was already determined to be part of this object) //! interpret dwg data (was already determined to be part of this object)
virtual bool parseDwg(DRW::Version v, dwgBuffer *buf, duint32 bs=0); virtual bool parseDwg(DRW::Version version, dwgBuffer *buf, duint32 bs=0);
public: public:
double staangle; /*!< start angle, code 50 in radians*/ double staangle; /*!< start angle, code 50 in radians*/
@ -448,7 +448,7 @@ protected:
//! interpret code in dxf reading process or dispatch to inherited class //! interpret code in dxf reading process or dispatch to inherited class
void parseCode(int code, dxfReader *reader); void parseCode(int code, dxfReader *reader);
//! interpret dwg data (was already determined to be part of this object) //! interpret dwg data (was already determined to be part of this object)
virtual bool parseDwg(DRW::Version v, dwgBuffer *buf, duint32 bs=0); virtual bool parseDwg(DRW::Version version, dwgBuffer *buf, duint32 bs=0);
private: private:
void correctAxis(); void correctAxis();
@ -479,7 +479,7 @@ public:
protected: protected:
void parseCode(int code, dxfReader *reader); void parseCode(int code, dxfReader *reader);
virtual bool parseDwg(DRW::Version v, dwgBuffer *buf, duint32 bs=0); virtual bool parseDwg(DRW::Version version, dwgBuffer *buf, duint32 bs=0);
public: public:
DRW_Coord thirdPoint; /*!< third point, code 12, 22 & 32 */ DRW_Coord thirdPoint; /*!< third point, code 12, 22 & 32 */
@ -506,19 +506,19 @@ protected:
public: public:
//! first corner (2D) //! first corner (2D)
const DRW_Coord & firstCorner() { return basePoint; } const DRW_Coord & firstCorner() const { return basePoint; }
//! second corner (2D) //! second corner (2D)
const DRW_Coord & secondCorner() { return secPoint; } const DRW_Coord & secondCorner() const { return secPoint; }
//! third corner (2D) //! third corner (2D)
const DRW_Coord & thirdCorner() { return thirdPoint; } const DRW_Coord & thirdCorner() const { return thirdPoint; }
//! fourth corner (2D) //! fourth corner (2D)
const DRW_Coord & fourthCorner() { return thirdPoint; } const DRW_Coord & fourthCorner() const { return thirdPoint; }
//! thickness //! thickness
double thick() { return thickness; } double thick() const { return thickness; }
//! elevation //! elevation
double elevation() { return basePoint.z; } double elevation() const { return basePoint.z; }
//! extrusion //! extrusion
const DRW_Coord & extrusion() { return extPoint; } const DRW_Coord & extrusion() const { return extPoint; }
}; };
@ -545,18 +545,18 @@ public:
eType = DRW::E3DFACE; eType = DRW::E3DFACE;
} }
virtual void applyExtrusion(){} virtual void applyExtrusion() {}
//! first corner in WCS //! first corner in WCS
const DRW_Coord & firstCorner() { return basePoint; } const DRW_Coord & firstCorner() const { return basePoint; }
//! second corner in WCS //! second corner in WCS
const DRW_Coord & secondCorner() { return secPoint; } const DRW_Coord & secondCorner() const { return secPoint; }
//! third corner in WCS //! third corner in WCS
const DRW_Coord & thirdCorner() { return thirdPoint; } const DRW_Coord & thirdCorner() const { return thirdPoint; }
//! fourth corner in WCS //! fourth corner in WCS
const DRW_Coord & fourthCorner() { return fourPoint; } const DRW_Coord & fourthCorner() const { return fourPoint; }
//! edge visibility flags //! edge visibility flags
InvisibleEdgeFlags edgeFlags() { return static_cast<InvisibleEdgeFlags>(invisibleflag); } InvisibleEdgeFlags edgeFlags() const { return static_cast<InvisibleEdgeFlags>(invisibleflag); }
protected: protected:
//! interpret code in dxf reading process or dispatch to inherited class //! interpret code in dxf reading process or dispatch to inherited class
@ -590,7 +590,7 @@ public:
protected: protected:
void parseCode(int code, dxfReader *reader); void parseCode(int code, dxfReader *reader);
virtual bool parseDwg(DRW::Version v, dwgBuffer *buf, duint32 bs=0); virtual bool parseDwg(DRW::Version version, dwgBuffer *buf, duint32 bs=0);
public: public:
UTF8STRING name; /*!< block name, code 2 */ UTF8STRING name; /*!< block name, code 2 */
@ -628,7 +628,7 @@ public:
protected: protected:
void parseCode(int code, dxfReader *reader); void parseCode(int code, dxfReader *reader);
virtual bool parseDwg(DRW::Version v, dwgBuffer *buf, duint32 bs=0); virtual bool parseDwg(DRW::Version version, dwgBuffer *buf, duint32 bs=0);
public: public:
UTF8STRING name; /*!< block name, code 2 */ UTF8STRING name; /*!< block name, code 2 */
@ -706,7 +706,7 @@ public:
protected: protected:
void parseCode(int code, dxfReader *reader); void parseCode(int code, dxfReader *reader);
bool parseDwg(DRW::Version v, dwgBuffer *buf, duint32 bs=0); bool parseDwg(DRW::Version version, dwgBuffer *buf, duint32 bs=0);
public: public:
int vertexnum; /*!< number of vertex, code 90 */ int vertexnum; /*!< number of vertex, code 90 */
@ -963,6 +963,7 @@ public:
std::vector<DRW_Vertex *> vertlist; /*!< vertex list */ std::vector<DRW_Vertex *> vertlist; /*!< vertex list */
private: private:
DRW_Polyline &operator=(const DRW_Polyline &) Q_DECL_EQ_DELETE;
std::list<duint32>hadlesList; //list of handles, only in 2004+ std::list<duint32>hadlesList; //list of handles, only in 2004+
duint32 firstEH; //handle of first entity, only in pre-2004 duint32 firstEH; //handle of first entity, only in pre-2004
duint32 lastEH; //handle of last entity, only in pre-2004 duint32 lastEH; //handle of last entity, only in pre-2004
@ -1078,7 +1079,7 @@ private:
*/ */
class DRW_HatchLoop { class DRW_HatchLoop {
public: public:
DRW_HatchLoop(int t) explicit DRW_HatchLoop(int t)
: type(t), : type(t),
numedges(0), numedges(0),
objlist() objlist()
@ -1342,26 +1343,26 @@ protected:
public: public:
DRW_Coord getDefPoint() const {return defPoint;} /*!< Definition point, code 10, 20 & 30 */ DRW_Coord getDefPoint() const {return defPoint;} /*!< Definition point, code 10, 20 & 30 */
void setDefPoint(const DRW_Coord p) {defPoint =p;} void setDefPoint(const DRW_Coord &p) {defPoint =p;}
DRW_Coord getTextPoint() const {return textPoint;} /*!< Middle point of text, code 11, 21 & 31 */ DRW_Coord getTextPoint() const {return textPoint;} /*!< Middle point of text, code 11, 21 & 31 */
void setTextPoint(const DRW_Coord p) {textPoint =p;} void setTextPoint(const DRW_Coord &p) {textPoint =p;}
std::string getStyle() const {return style;} /*!< Dimension style, code 3 */ std::string getStyle() const {return style;} /*!< Dimension style, code 3 */
void setStyle(const std::string s) {style = s;} void setStyle(const std::string &s) {style = s;}
int getAlign() const { return align;} /*!< attachment point, code 71 */ int getAlign() const { return align;} /*!< attachment point, code 71 */
void setAlign(const int a) { align = a;} void setAlign(const int a) { align = a;}
int getTextLineStyle() const { return linesty;} /*!< Dimension text line spacing style, code 72, default 1 */ int getTextLineStyle() const { return linesty;} /*!< Dimension text line spacing style, code 72, default 1 */
void setTextLineStyle(const int l) { linesty = l;} void setTextLineStyle(const int l) { linesty = l;}
std::string getText() const {return text;} /*!< Dimension text explicitly entered by the user, code 1 */ std::string getText() const {return text;} /*!< Dimension text explicitly entered by the user, code 1 */
void setText(const std::string t) {text = t;} void setText(const std::string &t) {text = t;}
double getTextLineFactor() const { return linefactor;} /*!< Dimension text line spacing factor, code 41, default 1? */ double getTextLineFactor() const { return linefactor;} /*!< Dimension text line spacing factor, code 41, default 1? */
void setTextLineFactor(const double l) { linefactor = l;} void setTextLineFactor(const double l) { linefactor = l;}
double getDir() const { return rot;} /*!< rotation angle of the dimension text, code 53 (optional) default 0 */ double getDir() const { return rot;} /*!< rotation angle of the dimension text, code 53 (optional) default 0 */
void setDir(const double d) { rot = d;} void setDir(const double d) { rot = d;}
DRW_Coord getExtrusion(){return extPoint;} /*!< extrusion, code 210, 220 & 230 */ DRW_Coord getExtrusion() const {return extPoint;} /*!< extrusion, code 210, 220 & 230 */
void setExtrusion(const DRW_Coord p) {extPoint =p;} void setExtrusion(const DRW_Coord &p) {extPoint = p;}
std::string getName(){return name;} /*!< Name of the block that contains the entities, code 2 */ std::string getName() const {return name;} /*!< Name of the block that contains the entities, code 2 */
void setName(const std::string s) {name = s;} void setName(const std::string &s) {name = s;}
// int getType(){ return type;} /*!< Dimension type, code 70 */ // int getType(){ return type;} /*!< Dimension type, code 70 */
bool hasActualMeasurement() const { return hasActual; } bool hasActualMeasurement() const { return hasActual; }
void setActualMeasurement(double value) { hasActual = true; actual = value; } void setActualMeasurement(double value) { hasActual = true; actual = value; }
@ -1369,15 +1370,15 @@ public:
protected: protected:
DRW_Coord getPt2() const {return clonePoint;} DRW_Coord getPt2() const {return clonePoint;}
void setPt2(const DRW_Coord p) {clonePoint= p;} void setPt2(const DRW_Coord &p) {clonePoint= p;}
DRW_Coord getPt3() const {return def1;} DRW_Coord getPt3() const {return def1;}
void setPt3(const DRW_Coord p) {def1= p;} void setPt3(const DRW_Coord &p) {def1= p;}
DRW_Coord getPt4() const {return def2;} DRW_Coord getPt4() const {return def2;}
void setPt4(const DRW_Coord p) {def2= p;} void setPt4(const DRW_Coord &p) {def2= p;}
DRW_Coord getPt5() const {return circlePoint;} DRW_Coord getPt5() const {return circlePoint;}
void setPt5(const DRW_Coord p) {circlePoint= p;} void setPt5(const DRW_Coord &p) {circlePoint= p;}
DRW_Coord getPt6() const {return arcPoint;} DRW_Coord getPt6() const {return arcPoint;}
void setPt6(const DRW_Coord p) {arcPoint= p;} void setPt6(const DRW_Coord &p) {arcPoint= p;}
double getAn50() const {return angle;} /*!< Angle of rotated, horizontal, or vertical dimensions, code 50 */ double getAn50() const {return angle;} /*!< Angle of rotated, horizontal, or vertical dimensions, code 50 */
void setAn50(const double d) {angle = d;} void setAn50(const double d) {angle = d;}
double getOb52() const {return oblique;} /*!< oblique angle, code 52 */ double getOb52() const {return oblique;} /*!< oblique angle, code 52 */
@ -1387,6 +1388,7 @@ protected:
public: public:
int type; /*!< Dimension type, code 70 */ int type; /*!< Dimension type, code 70 */
private: private:
DRW_Dimension &operator=(const DRW_Dimension &) Q_DECL_EQ_DELETE;
std::string name; /*!< Name of the block that contains the entities, code 2 */ std::string name; /*!< Name of the block that contains the entities, code 2 */
DRW_Coord defPoint; /*!< definition point, code 10, 20 & 30 (WCS) */ DRW_Coord defPoint; /*!< definition point, code 10, 20 & 30 (WCS) */
DRW_Coord textPoint; /*!< Middle point of text, code 11, 21 & 31 (OCS) */ DRW_Coord textPoint; /*!< Middle point of text, code 11, 21 & 31 (OCS) */
@ -1429,19 +1431,21 @@ public:
eType = DRW::DIMALIGNED; eType = DRW::DIMALIGNED;
type = 1; type = 1;
} }
DRW_DimAligned(const DRW_Dimension& d): DRW_Dimension(d) { explicit DRW_DimAligned(const DRW_Dimension& d)
: DRW_Dimension(d)
{
eType = DRW::DIMALIGNED; eType = DRW::DIMALIGNED;
} }
DRW_Coord getClonepoint() const {return getPt2();} /*!< Insertion for clones (Baseline & Continue), 12, 22 & 32 */ DRW_Coord getClonepoint() const {return getPt2();} /*!< Insertion for clones (Baseline & Continue), 12, 22 & 32 */
void setClonePoint(DRW_Coord c){setPt2(c);} void setClonePoint(DRW_Coord &c){setPt2(c);}
DRW_Coord getDimPoint() const {return getDefPoint();} /*!< dim line location point, code 10, 20 & 30 */ DRW_Coord getDimPoint() const {return getDefPoint();} /*!< dim line location point, code 10, 20 & 30 */
void setDimPoint(const DRW_Coord p){setDefPoint(p);} void setDimPoint(const DRW_Coord &p){setDefPoint(p);}
DRW_Coord getDef1Point() const {return getPt3();} /*!< Definition point 1, code 13, 23 & 33 */ DRW_Coord getDef1Point() const {return getPt3();} /*!< Definition point 1, code 13, 23 & 33 */
void setDef1Point(const DRW_Coord p) {setPt3(p);} void setDef1Point(const DRW_Coord &p) {setPt3(p);}
DRW_Coord getDef2Point() const {return getPt4();} /*!< Definition point 2, code 14, 24 & 34 */ DRW_Coord getDef2Point() const {return getPt4();} /*!< Definition point 2, code 14, 24 & 34 */
void setDef2Point(const DRW_Coord p) {setPt4(p);} void setDef2Point(const DRW_Coord &p) {setPt4(p);}
protected: protected:
virtual bool parseDwg(DRW::Version version, dwgBuffer *buf, duint32 bs=0); virtual bool parseDwg(DRW::Version version, dwgBuffer *buf, duint32 bs=0);
@ -1458,7 +1462,9 @@ public:
eType = DRW::DIMLINEAR; eType = DRW::DIMLINEAR;
type = 0; type = 0;
} }
DRW_DimLinear(const DRW_Dimension& d): DRW_DimAligned(d) { explicit DRW_DimLinear(const DRW_Dimension& d)
: DRW_DimAligned(d)
{
eType = DRW::DIMLINEAR; eType = DRW::DIMLINEAR;
} }
@ -1480,14 +1486,16 @@ public:
eType = DRW::DIMRADIAL; eType = DRW::DIMRADIAL;
type = 4; type = 4;
} }
DRW_DimRadial(const DRW_Dimension& d): DRW_Dimension(d) { explicit DRW_DimRadial(const DRW_Dimension& d)
: DRW_Dimension(d)
{
eType = DRW::DIMRADIAL; eType = DRW::DIMRADIAL;
} }
DRW_Coord getCenterPoint() const {return getDefPoint();} /*!< center point, code 10, 20 & 30 */ DRW_Coord getCenterPoint() const {return getDefPoint();} /*!< center point, code 10, 20 & 30 */
void setCenterPoint(const DRW_Coord p){setDefPoint(p);} void setCenterPoint(const DRW_Coord &p){setDefPoint(p);}
DRW_Coord getDiameterPoint() const {return getPt5();} /*!< Definition point for radius, code 15, 25 & 35 */ DRW_Coord getDiameterPoint() const {return getPt5();} /*!< Definition point for radius, code 15, 25 & 35 */
void setDiameterPoint(const DRW_Coord p){setPt5(p);} void setDiameterPoint(const DRW_Coord &p){setPt5(p);}
double getLeaderLength() const {return getRa40();} /*!< Leader length, code 40 */ double getLeaderLength() const {return getRa40();} /*!< Leader length, code 40 */
void setLeaderLength(const double d) {setRa40(d);} void setLeaderLength(const double d) {setRa40(d);}
@ -1507,14 +1515,16 @@ public:
eType = DRW::DIMDIAMETRIC; eType = DRW::DIMDIAMETRIC;
type = 3; type = 3;
} }
DRW_DimDiametric(const DRW_Dimension& d): DRW_Dimension(d) { explicit DRW_DimDiametric(const DRW_Dimension& d)
: DRW_Dimension(d)
{
eType = DRW::DIMDIAMETRIC; eType = DRW::DIMDIAMETRIC;
} }
DRW_Coord getDiameter1Point() const {return getPt5();} /*!< First definition point for diameter, code 15, 25 & 35 */ DRW_Coord getDiameter1Point() const {return getPt5();} /*!< First definition point for diameter, code 15, 25 & 35 */
void setDiameter1Point(const DRW_Coord p){setPt5(p);} void setDiameter1Point(const DRW_Coord &p){setPt5(p);}
DRW_Coord getDiameter2Point() const {return getDefPoint();} /*!< Oposite point for diameter, code 10, 20 & 30 */ DRW_Coord getDiameter2Point() const {return getDefPoint();} /*!< Oposite point for diameter, code 10, 20 & 30 */
void setDiameter2Point(const DRW_Coord p){setDefPoint(p);} void setDiameter2Point(const DRW_Coord &p){setDefPoint(p);}
double getLeaderLength() const {return getRa40();} /*!< Leader length, code 40 */ double getLeaderLength() const {return getRa40();} /*!< Leader length, code 40 */
void setLeaderLength(const double d) {setRa40(d);} void setLeaderLength(const double d) {setRa40(d);}
@ -1534,20 +1544,21 @@ public:
eType = DRW::DIMANGULAR; eType = DRW::DIMANGULAR;
type = 2; type = 2;
} }
DRW_DimAngular(const DRW_Dimension& d): DRW_Dimension(d) { explicit DRW_DimAngular(const DRW_Dimension& d): DRW_Dimension(d)
{
eType = DRW::DIMANGULAR; eType = DRW::DIMANGULAR;
} }
DRW_Coord getFirstLine1() const {return getPt3();} /*!< Definition point line 1-1, code 13, 23 & 33 */ DRW_Coord getFirstLine1() const {return getPt3();} /*!< Definition point line 1-1, code 13, 23 & 33 */
void setFirstLine1(const DRW_Coord p) {setPt3(p);} void setFirstLine1(const DRW_Coord &p) {setPt3(p);}
DRW_Coord getFirstLine2() const {return getPt4();} /*!< Definition point line 1-2, code 14, 24 & 34 */ DRW_Coord getFirstLine2() const {return getPt4();} /*!< Definition point line 1-2, code 14, 24 & 34 */
void setFirstLine2(const DRW_Coord p) {setPt4(p);} void setFirstLine2(const DRW_Coord &p) {setPt4(p);}
DRW_Coord getSecondLine1() const {return getPt5();} /*!< Definition point line 2-1, code 15, 25 & 35 */ DRW_Coord getSecondLine1() const {return getPt5();} /*!< Definition point line 2-1, code 15, 25 & 35 */
void setSecondLine1(const DRW_Coord p) {setPt5(p);} void setSecondLine1(const DRW_Coord &p) {setPt5(p);}
DRW_Coord getSecondLine2() const {return getDefPoint();} /*!< Definition point line 2-2, code 10, 20 & 30 */ DRW_Coord getSecondLine2() const {return getDefPoint();} /*!< Definition point line 2-2, code 10, 20 & 30 */
void setSecondLine2(const DRW_Coord p){setDefPoint(p);} void setSecondLine2(const DRW_Coord &p){setDefPoint(p);}
DRW_Coord getDimPoint() const {return getPt6();} /*!< Dimension definition point, code 16, 26 & 36 */ DRW_Coord getDimPoint() const {return getPt6();} /*!< Dimension definition point, code 16, 26 & 36 */
void setDimPoint(const DRW_Coord p) {setPt6(p);} void setDimPoint(const DRW_Coord &p) {setPt6(p);}
protected: protected:
virtual bool parseDwg(DRW::Version version, dwgBuffer *buf, duint32 bs=0); virtual bool parseDwg(DRW::Version version, dwgBuffer *buf, duint32 bs=0);
@ -1566,18 +1577,19 @@ public:
eType = DRW::DIMANGULAR3P; eType = DRW::DIMANGULAR3P;
type = 5; type = 5;
} }
DRW_DimAngular3p(const DRW_Dimension& d): DRW_Dimension(d) { explicit DRW_DimAngular3p(const DRW_Dimension& d): DRW_Dimension(d)
{
eType = DRW::DIMANGULAR3P; eType = DRW::DIMANGULAR3P;
} }
DRW_Coord getFirstLine() const {return getPt3();} /*!< Definition point line 1, code 13, 23 & 33 */ DRW_Coord getFirstLine() const {return getPt3();} /*!< Definition point line 1, code 13, 23 & 33 */
void setFirstLine(const DRW_Coord p) {setPt3(p);} void setFirstLine(const DRW_Coord &p) {setPt3(p);}
DRW_Coord getSecondLine() const {return getPt4();} /*!< Definition point line 2, code 14, 24 & 34 */ DRW_Coord getSecondLine() const {return getPt4();} /*!< Definition point line 2, code 14, 24 & 34 */
void setSecondLine(const DRW_Coord p) {setPt4(p);} void setSecondLine(const DRW_Coord &p) {setPt4(p);}
DRW_Coord getVertexPoint() const {return getPt5();} /*!< Vertex point, code 15, 25 & 35 */ DRW_Coord getVertexPoint() const {return getPt5();} /*!< Vertex point, code 15, 25 & 35 */
void SetVertexPoint(const DRW_Coord p) {setPt5(p);} void SetVertexPoint(const DRW_Coord &p) {setPt5(p);}
DRW_Coord getDimPoint() const {return getDefPoint();} /*!< Dimension definition point, code 10, 20 & 30 */ DRW_Coord getDimPoint() const {return getDefPoint();} /*!< Dimension definition point, code 10, 20 & 30 */
void setDimPoint(const DRW_Coord p) {setDefPoint(p);} void setDimPoint(const DRW_Coord &p) {setDefPoint(p);}
protected: protected:
virtual bool parseDwg(DRW::Version version, dwgBuffer *buf, duint32 bs=0); virtual bool parseDwg(DRW::Version version, dwgBuffer *buf, duint32 bs=0);
@ -1595,16 +1607,18 @@ public:
eType = DRW::DIMORDINATE; eType = DRW::DIMORDINATE;
type = 6; type = 6;
} }
DRW_DimOrdinate(const DRW_Dimension& d): DRW_Dimension(d) { explicit DRW_DimOrdinate(const DRW_Dimension& d)
: DRW_Dimension(d)
{
eType = DRW::DIMORDINATE; eType = DRW::DIMORDINATE;
} }
DRW_Coord getOriginPoint() const {return getDefPoint();} /*!< Origin definition point, code 10, 20 & 30 */ DRW_Coord getOriginPoint() const {return getDefPoint();} /*!< Origin definition point, code 10, 20 & 30 */
void setOriginPoint(const DRW_Coord p) {setDefPoint(p);} void setOriginPoint(const DRW_Coord &p) {setDefPoint(p);}
DRW_Coord getFirstLine() const {return getPt3();} /*!< Feature location point, code 13, 23 & 33 */ DRW_Coord getFirstLine() const {return getPt3();} /*!< Feature location point, code 13, 23 & 33 */
void setFirstLine(const DRW_Coord p) {setPt3(p);} void setFirstLine(const DRW_Coord &p) {setPt3(p);}
DRW_Coord getSecondLine() const {return getPt4();} /*!< Leader end point, code 14, 24 & 34 */ DRW_Coord getSecondLine() const {return getPt4();} /*!< Leader end point, code 14, 24 & 34 */
void setSecondLine(const DRW_Coord p) {setPt4(p);} void setSecondLine(const DRW_Coord &p) {setPt4(p);}
protected: protected:
virtual bool parseDwg(DRW::Version version, dwgBuffer *buf, duint32 bs=0); virtual bool parseDwg(DRW::Version version, dwgBuffer *buf, duint32 bs=0);

View file

@ -34,7 +34,7 @@ DRW_Header::DRW_Header()
vpEntHeaderCtrl(0) vpEntHeaderCtrl(0)
{} {}
void DRW_Header::addComment(std::string c){ void DRW_Header::addComment(const std::string &c){
if (!comments.empty()) if (!comments.empty())
comments += '\n'; comments += '\n';
comments += c; comments += c;
@ -1703,6 +1703,7 @@ void DRW_Header::write(dxfWriter *writer, DRW::Version ver){
} }
void DRW_Header::addDouble(std::string key, double value, int code){ void DRW_Header::addDouble(std::string key, double value, int code){
// cppcheck-suppress publicAllocationError
curr = new DRW_Variant(); curr = new DRW_Variant();
curr->addDouble( value ); curr->addDouble( value );
curr->code = code; curr->code = code;
@ -1710,6 +1711,7 @@ void DRW_Header::addDouble(std::string key, double value, int code){
} }
void DRW_Header::addInt(std::string key, int value, int code){ void DRW_Header::addInt(std::string key, int value, int code){
// cppcheck-suppress publicAllocationError
curr = new DRW_Variant(); curr = new DRW_Variant();
curr->addInt( value ); curr->addInt( value );
curr->code = code; curr->code = code;
@ -1717,6 +1719,7 @@ void DRW_Header::addInt(std::string key, int value, int code){
} }
void DRW_Header::addStr(std::string key, std::string value, int code){ void DRW_Header::addStr(std::string key, std::string value, int code){
// cppcheck-suppress publicAllocationError
curr = new DRW_Variant(); curr = new DRW_Variant();
curr->addString( value ); curr->addString( value );
curr->code = code; curr->code = code;
@ -1724,6 +1727,7 @@ void DRW_Header::addStr(std::string key, std::string value, int code){
} }
void DRW_Header::addCoord(std::string key, DRW_Coord value, int code){ void DRW_Header::addCoord(std::string key, DRW_Coord value, int code){
// cppcheck-suppress publicAllocationError
curr = new DRW_Variant(); curr = new DRW_Variant();
curr->addCoord( value ); curr->addCoord( value );
curr->code = code; curr->code = code;
@ -1797,7 +1801,6 @@ bool DRW_Header::getCoord(std::string key, DRW_Coord *varCoord){
bool DRW_Header::parseDwg(DRW::Version version, dwgBuffer *buf, dwgBuffer *hBbuf, duint8 mv){ bool DRW_Header::parseDwg(DRW::Version version, dwgBuffer *buf, dwgBuffer *hBbuf, duint8 mv){
bool result = true; bool result = true;
duint32 size = buf->getRawLong32(); duint32 size = buf->getRawLong32();
duint32 bitSize = 0;
duint32 endBitPos = 160; //start bit: 16 sentinel + 4 size duint32 endBitPos = 160; //start bit: 16 sentinel + 4 size
DRW_DBG("\nbyte size of data: "); DRW_DBG(size); DRW_DBG("\nbyte size of data: "); DRW_DBG(size);
if (version > DRW::AC1021 && mv > 3) { //2010+ if (version > DRW::AC1021 && mv > 3) { //2010+
@ -1812,7 +1815,7 @@ bool DRW_Header::parseDwg(DRW::Version version, dwgBuffer *buf, dwgBuffer *hBbuf
//and mark the start of handle stream //and mark the start of handle stream
//header is one object reads data and continue read strings ??? //header is one object reads data and continue read strings ???
if (version > DRW::AC1018) {//2007+ if (version > DRW::AC1018) {//2007+
bitSize = buf->getRawLong32(); duint32 bitSize = buf->getRawLong32();
DRW_DBG("\nsize in bits: "); DRW_DBG(bitSize); DRW_DBG("\nsize in bits: "); DRW_DBG(bitSize);
endBitPos += bitSize; endBitPos += bitSize;
hBbuf->setPosition(endBitPos >>3); hBbuf->setPosition(endBitPos >>3);

View file

@ -83,7 +83,7 @@ public:
void addCoord(std::string key, DRW_Coord value, int code); void addCoord(std::string key, DRW_Coord value, int code);
std::string getComments() const {return comments;} std::string getComments() const {return comments;}
void write(dxfWriter *writer, DRW::Version ver); void write(dxfWriter *writer, DRW::Version ver);
void addComment(std::string c); void addComment(const std::string &c);
protected: protected:
void parseCode(int code, dxfReader *reader); void parseCode(int code, dxfReader *reader);
@ -92,7 +92,7 @@ private:
bool getDouble(std::string key, double *varDouble); bool getDouble(std::string key, double *varDouble);
bool getInt(std::string key, int *varInt); bool getInt(std::string key, int *varInt);
bool getStr(std::string key, std::string *varStr); bool getStr(std::string key, std::string *varStr);
bool getCoord(std::string key, DRW_Coord *varStr); bool getCoord(std::string key, DRW_Coord *varCoord);
void clearVars() void clearVars()
{ {
for (std::map<std::string,DRW_Variant*>::iterator it=vars.begin(); it!=vars.end(); ++it) for (std::map<std::string,DRW_Variant*>::iterator it=vars.begin(); it!=vars.end(); ++it)

View file

@ -1128,7 +1128,7 @@ bool DRW_Vport::parseDwg(DRW::Version version, dwgBuffer *buf, duint32 bs){
void DRW_ImageDef::parseCode(int code, dxfReader *reader){ void DRW_ImageDef::parseCode(int code, dxfReader *reader){
switch (code) { switch (code) {
case 1: case 1:
name = reader->getUtf8String(); fileName = reader->getUtf8String();
break; break;
case 5: case 5:
handle = reader->getHandleString(); handle = reader->getHandleString();
@ -1173,8 +1173,8 @@ bool DRW_ImageDef::parseDwg(DRW::Version version, dwgBuffer *buf, duint32 bs){
DRW_DBG("class Version: "); DRW_DBG(imgVersion); DRW_DBG("class Version: "); DRW_DBG(imgVersion);
DRW_Coord size = buf->get2RawDouble(); DRW_Coord size = buf->get2RawDouble();
(void)size; (void)size;
name = sBuf->getVariableText(version, false); fileName = sBuf->getVariableText(version, false);
DRW_DBG("appId name: "); DRW_DBG(name.c_str()); DRW_DBG("\n"); DRW_DBG("appId name: "); DRW_DBG(fileName.c_str()); DRW_DBG("\n");
loaded = buf->getBit(); loaded = buf->getBit();
resolution = buf->getRawChar8(); resolution = buf->getRawChar8();
up = buf->getRawDouble(); up = buf->getRawDouble();

View file

@ -592,7 +592,7 @@ class DRW_ImageDef : public DRW_TableEntry {//
SETOBJFRIENDS SETOBJFRIENDS
public: public:
DRW_ImageDef() DRW_ImageDef()
: name(), : fileName(),
imgVersion(), imgVersion(),
u(), u(),
v(), v(),
@ -617,7 +617,7 @@ protected:
public: public:
// std::string handle; /*!< entity identifier, code 5 */ // std::string handle; /*!< entity identifier, code 5 */
UTF8STRING name; /*!< File name of image, code 1 */ UTF8STRING fileName; /*!< File name of image, code 1 */
int imgVersion; /*!< class version, code 90, 0=R14 version */ int imgVersion; /*!< class version, code 90, 0=R14 version */
double u; /*!< image size in pixels U value, code 10 */ double u; /*!< image size in pixels U value, code 10 */
double v; /*!< image size in pixels V value, code 20 */ double v; /*!< image size in pixels V value, code 20 */

View file

@ -61,6 +61,11 @@ DRW_dbg::DRW_dbg()
prClass(new print_none) prClass(new print_none)
{} {}
DRW_dbg::~DRW_dbg()
{
delete prClass;
}
void DRW_dbg::setLevel(LEVEL lvl){ void DRW_dbg::setLevel(LEVEL lvl){
level = lvl; level = lvl;
delete prClass; delete prClass;
@ -73,7 +78,7 @@ void DRW_dbg::setLevel(LEVEL lvl){
} }
} }
DRW_dbg::LEVEL DRW_dbg::getLevel(){ DRW_dbg::LEVEL DRW_dbg::getLevel() const{
return level; return level;
} }

View file

@ -15,6 +15,7 @@
#include <string> #include <string>
#include <iostream> #include <iostream>
#include <QtGlobal>
//#include <iomanip> //#include <iomanip>
#define DRW_DBGSL(a) DRW_dbg::getInstance()->setLevel(a) #define DRW_DBGSL(a) DRW_dbg::getInstance()->setLevel(a)
@ -35,7 +36,7 @@ public:
DEBUG DEBUG
}; };
void setLevel(LEVEL lvl); void setLevel(LEVEL lvl);
LEVEL getLevel(); LEVEL getLevel() const;
static DRW_dbg *getInstance(); static DRW_dbg *getInstance();
void print(std::string s); void print(std::string s);
void print(int i); void print(int i);
@ -50,7 +51,9 @@ public:
void printPT(double x, double y, double z); void printPT(double x, double y, double z);
private: private:
Q_DISABLE_COPY(DRW_dbg)
DRW_dbg(); DRW_dbg();
~DRW_dbg();
static DRW_dbg *instance; static DRW_dbg *instance;
LEVEL level; LEVEL level;
std::ios_base::fmtflags flags; std::ios_base::fmtflags flags;

View file

@ -48,7 +48,7 @@ void DRW_TextCodec::setVersion(std::string *v, bool dxfFormat){
} }
} }
void DRW_TextCodec::setCodePage(std::string *c, bool dxfFormat){ void DRW_TextCodec::setCodePage(const std::string *c, bool dxfFormat){
cp = correctCodePage(*c); cp = correctCodePage(*c);
if (version < DRW::AC1021) if (version < DRW::AC1021)
{ {
@ -71,7 +71,7 @@ void DRW_TextCodec::setCodePage(std::string *c, bool dxfFormat){
} }
} }
std::string DRW_TextCodec::toUtf8(std::string s) { std::string DRW_TextCodec::toUtf8(const std::string &s) {
if (conv == nullptr) if (conv == nullptr)
{ {
return s; return s;
@ -81,7 +81,7 @@ std::string DRW_TextCodec::toUtf8(std::string s) {
return encodedString.toStdString(); return encodedString.toStdString();
} }
std::string DRW_TextCodec::fromUtf8(std::string s) { std::string DRW_TextCodec::fromUtf8(const std::__cxx11::string &s) {
if (conv == nullptr) if (conv == nullptr)
{ {
return s; return s;

View file

@ -10,14 +10,14 @@ class DRW_TextCodec
{ {
public: public:
DRW_TextCodec(); DRW_TextCodec();
std::string fromUtf8(std::string s); std::string fromUtf8(const std::string &s);
std::string toUtf8(std::string s); std::string toUtf8(const std::string &s);
int getVersion(){return version;} int getVersion() const {return version;}
void setVersion(std::string *v, bool dxfFormat); void setVersion(std::string *v, bool dxfFormat);
void setVersion(int v, bool dxfFormat); void setVersion(int v, bool dxfFormat);
void setCodePage(std::string *c, bool dxfFormat); void setCodePage(const std::string *c, bool dxfFormat);
void setCodePage(std::string c, bool dxfFormat){setCodePage(&c, dxfFormat);} void setCodePage(const std::string &c, bool dxfFormat){setCodePage(&c, dxfFormat);}
std::string getCodePage(){return cp;} std::string getCodePage() const {return cp;}
private: private:
std::string correctCodePage(const std::string& s); std::string correctCodePage(const std::string& s);

View file

@ -102,14 +102,6 @@ static unsigned int crc32Table[256] ={
0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605, 0xcdd70693, 0x54de5729, 0x23d967bf, 0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605, 0xcdd70693, 0x54de5729, 0x23d967bf,
0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94, 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d}; 0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94, 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d};
union typeCast {
char buf[8];
duint16 i16;
duint32 i32;
duint64 i64;
ddouble64 d64;
};
bool dwgFileStream::setPos(duint64 p){ bool dwgFileStream::setPos(duint64 p){
if (p >= sz) if (p >= sz)
return false; return false;
@ -368,6 +360,7 @@ double dwgBuffer::getBitDouble(){
} else { } else {
filestr->read (buffer,8); filestr->read (buffer,8);
} }
// cppcheck-suppress invalidPointerCast
double* ret = reinterpret_cast<double*>( buffer ); double* ret = reinterpret_cast<double*>( buffer );
return *ret; return *ret;
} }
@ -429,6 +422,7 @@ double dwgBuffer::getRawDouble(){
for (int i = 0; i < 8; i++) for (int i = 0; i < 8; i++)
buffer[i] = getRawChar8(); buffer[i] = getRawChar8();
} }
// cppcheck-suppress invalidPointerCast
double* nOffset = reinterpret_cast<double*>( buffer ); double* nOffset = reinterpret_cast<double*>( buffer );
return *nOffset; return *nOffset;
} }
@ -713,9 +707,11 @@ double dwgBuffer::getDefaultDouble(double d){
} else { } else {
filestr->read (buffer,4); filestr->read (buffer,4);
} }
// cppcheck-suppress invalidPointerCast
tmp = reinterpret_cast<char*>(&d); tmp = reinterpret_cast<char*>(&d);
for (int i = 0; i < 4; i++) for (int i = 0; i < 4; i++)
tmp[i] = buffer[i]; tmp[i] = buffer[i];
// cppcheck-suppress invalidPointerCast
double ret = *reinterpret_cast<double*>( tmp ); double ret = *reinterpret_cast<double*>( tmp );
return ret; return ret;
} else if (b == 2){ } else if (b == 2){
@ -727,11 +723,13 @@ double dwgBuffer::getDefaultDouble(double d){
} else { } else {
filestr->read (buffer,6); filestr->read (buffer,6);
} }
// cppcheck-suppress invalidPointerCast
tmp = reinterpret_cast<char*>(&d); tmp = reinterpret_cast<char*>(&d);
for (int i = 2; i < 6; i++) for (int i = 2; i < 6; i++)
tmp[i-2] = buffer[i]; tmp[i-2] = buffer[i];
tmp[4] = buffer[0]; tmp[4] = buffer[0];
tmp[5] = buffer[1]; tmp[5] = buffer[1];
// cppcheck-suppress invalidPointerCast
double ret = *reinterpret_cast<double*>( tmp ); double ret = *reinterpret_cast<double*>( tmp );
return ret; return ret;
} }
@ -807,7 +805,6 @@ duint32 dwgBuffer::getEnColor(DRW::Version v) {
if (v < DRW::AC1018) //2000- if (v < DRW::AC1018) //2000-
return getSBitShort(); return getSBitShort();
duint32 rgb = 0; duint32 rgb = 0;
duint32 cb = 0;
duint16 idx = getBitShort(); duint16 idx = getBitShort();
DRW_DBG("idx reads COLOR: "); DRW_DBGH(idx); DRW_DBG("idx reads COLOR: "); DRW_DBGH(idx);
duint16 flags = static_cast<duint16>(idx>>8); duint16 flags = static_cast<duint16>(idx>>8);
@ -819,7 +816,7 @@ duint32 dwgBuffer::getEnColor(DRW::Version v) {
// DRW_DBG("\nRGB COLOR: "); DRW_DBGH(rgb); // DRW_DBG("\nRGB COLOR: "); DRW_DBGH(rgb);
// } // }
if (flags & 0x20) { if (flags & 0x20) {
cb = getBitLong(); duint32 cb = getBitLong();
DRW_DBG("\nTransparency COLOR: "); DRW_DBGH(cb); DRW_DBG("\nTransparency COLOR: "); DRW_DBGH(cb);
} }
if (flags & 0x40) if (flags & 0x40)
@ -849,14 +846,13 @@ duint16 dwgBuffer::getBERawShort16(){
/* reads "size" bytes and stores in "buf" return false if fail */ /* reads "size" bytes and stores in "buf" return false if fail */
bool dwgBuffer::getBytes(unsigned char *buf, int size){ bool dwgBuffer::getBytes(unsigned char *buf, int size){
duint8 tmp;
filestr->read (buf,size); filestr->read (buf,size);
if (!filestr->good()) if (!filestr->good())
return false; return false;
if (bitPos != 0){ if (bitPos != 0){
for (int i=0; i<size;i++){ for (int i=0; i<size;i++){
tmp = buf[i]; duint8 tmp = buf[i];
buf[i] = static_cast<unsigned char>((currByte << bitPos) | (tmp >> (8 - bitPos))); buf[i] = static_cast<unsigned char>((currByte << bitPos) | (tmp >> (8 - bitPos)));
currByte = tmp; currByte = tmp;
} }
@ -875,10 +871,8 @@ duint16 dwgBuffer::crc8(duint16 dx, dint32 start, dint32 end){
if (!filestr->good()) if (!filestr->good())
return 0; return 0;
duint8 al;
while (n-- > 0) { while (n-- > 0) {
al = static_cast<duint8>((*p) ^ (static_cast<duint8>(dx & 0xFF))); duint8 al = static_cast<duint8>((*p) ^ (static_cast<duint8>(dx & 0xFF)));
dx = (dx>>8) & 0xFF; dx = (dx>>8) & 0xFF;
dx = static_cast<duint16>(dx ^ crctable[al & 0xFF]); dx = static_cast<duint16>(dx ^ crctable[al & 0xFF]);
p++; p++;

View file

@ -25,7 +25,7 @@ class dwgBasicStream{
protected: protected:
dwgBasicStream(){} dwgBasicStream(){}
public: public:
virtual ~dwgBasicStream(){} virtual ~dwgBasicStream() = default;
virtual bool read(duint8* s, duint64 n) = 0; virtual bool read(duint8* s, duint64 n) = 0;
virtual duint64 size() = 0; virtual duint64 size() = 0;
virtual duint64 getPos() = 0; virtual duint64 getPos() = 0;
@ -36,7 +36,7 @@ public:
class dwgFileStream: public dwgBasicStream{ class dwgFileStream: public dwgBasicStream{
public: public:
dwgFileStream(std::istream *s) explicit dwgFileStream(std::istream *s)
: stream(nullptr), : stream(nullptr),
sz(0) sz(0)
{ {
@ -84,8 +84,8 @@ private:
class dwgBuffer { class dwgBuffer {
public: public:
dwgBuffer(std::istream *stream, DRW_TextCodec *decoder = NULL); dwgBuffer(std::istream *stream, DRW_TextCodec *dc = nullptr);
dwgBuffer(duint8 *buf, int size, DRW_TextCodec *decoder= NULL); dwgBuffer(duint8 *buf, int size, DRW_TextCodec *dc = nullptr);
dwgBuffer( const dwgBuffer& org ); dwgBuffer( const dwgBuffer& org );
dwgBuffer& operator=( const dwgBuffer& org ); dwgBuffer& operator=( const dwgBuffer& org );
~dwgBuffer(); ~dwgBuffer();
@ -94,7 +94,7 @@ public:
duint64 getPosition(); duint64 getPosition();
void resetPosition(){setPosition(0); setBitPos(0);} void resetPosition(){setPosition(0); setBitPos(0);}
void setBitPos(duint8 pos); void setBitPos(duint8 pos);
duint8 getBitPos(){return bitPos;} duint8 getBitPos() const {return bitPos;}
bool moveBitPos(dint32 size); bool moveBitPos(dint32 size);
duint8 getBit(); //B duint8 getBit(); //B

View file

@ -694,13 +694,13 @@ bool dwgReader::readDwgTables(DRW_Header& hdr, dwgBuffer *dbuf) {
oc = mit->second; oc = mit->second;
ObjectMap.erase(mit); ObjectMap.erase(mit);
DRW_DBG("vpEntHeader Control Obj Handle= "); DRW_DBGH(oc.handle); DRW_DBG(" "); DRW_DBG(oc.loc); DRW_DBG("\n"); DRW_DBG("vpEntHeader Control Obj Handle= "); DRW_DBGH(oc.handle); DRW_DBG(" "); DRW_DBG(oc.loc); DRW_DBG("\n");
DRW_ObjControl vpEntHeaderCtrl; // DRW_ObjControl vpEntHeaderCtrl;
dbuf->setPosition(oc.loc); dbuf->setPosition(oc.loc);
int size = dbuf->getModularShort(); int size = dbuf->getModularShort();
if (version > DRW::AC1021) //2010+ // if (version > DRW::AC1021) //2010+
bs = dbuf->getUModularChar(); // bs = dbuf->getUModularChar();
else // else
bs = 0; // bs = 0;
tmpByteStr = new duint8[size]; tmpByteStr = new duint8[size];
dbuf->getBytes(tmpByteStr, size); dbuf->getBytes(tmpByteStr, size);
dwgBuffer buff(tmpByteStr, size, &decoder); dwgBuffer buff(tmpByteStr, size, &decoder);
@ -934,13 +934,12 @@ bool dwgReader::readPlineVertex(DRW_Polyline& pline, dwgBuffer *dbuf){
bool dwgReader::readDwgEntities(DRW_Interface& intfa, dwgBuffer *dbuf){ bool dwgReader::readDwgEntities(DRW_Interface& intfa, dwgBuffer *dbuf){
bool ret = true; bool ret = true;
bool ret2 = true;
DRW_DBG("\nobject map total size= "); DRW_DBG(ObjectMap.size()); DRW_DBG("\nobject map total size= "); DRW_DBG(ObjectMap.size());
std::map<duint32, objHandle>::iterator itB=ObjectMap.begin(); std::map<duint32, objHandle>::iterator itB=ObjectMap.begin();
std::map<duint32, objHandle>::iterator itE=ObjectMap.end(); std::map<duint32, objHandle>::iterator itE=ObjectMap.end();
while (itB != itE){ while (itB != itE){
ret2 = readDwgEntity(dbuf, itB->second, intfa); bool ret2 = readDwgEntity(dbuf, itB->second, intfa);
ObjectMap.erase(itB); ObjectMap.erase(itB);
itB=ObjectMap.begin(); itB=ObjectMap.begin();
if (ret) if (ret)
@ -1170,21 +1169,20 @@ bool dwgReader::readDwgEntity(dwgBuffer *dbuf, objHandle& obj, DRW_Interface& in
bool dwgReader::readDwgObjects(DRW_Interface& intfa, dwgBuffer *dbuf){ bool dwgReader::readDwgObjects(DRW_Interface& intfa, dwgBuffer *dbuf){
bool ret = true; bool ret = true;
bool ret2 = true;
duint32 i=0;
DRW_DBG("\nentities map total size= "); DRW_DBG(ObjectMap.size()); DRW_DBG("\nentities map total size= "); DRW_DBG(ObjectMap.size());
DRW_DBG("\nobjects map total size= "); DRW_DBG(objObjectMap.size()); DRW_DBG("\nobjects map total size= "); DRW_DBG(objObjectMap.size());
std::map<duint32, objHandle>::iterator itB=objObjectMap.begin(); std::map<duint32, objHandle>::iterator itB=objObjectMap.begin();
std::map<duint32, objHandle>::iterator itE=objObjectMap.end(); std::map<duint32, objHandle>::iterator itE=objObjectMap.end();
while (itB != itE){ while (itB != itE){
ret2 = readDwgObject(dbuf, itB->second, intfa); bool ret2 = readDwgObject(dbuf, itB->second, intfa);
objObjectMap.erase(itB); objObjectMap.erase(itB);
itB=objObjectMap.begin(); itB=objObjectMap.begin();
if (ret) if (ret)
ret = ret2; ret = ret2;
} }
if (DRW_DBGGL == DRW_dbg::DEBUG) { if (DRW_DBGGL == DRW_dbg::DEBUG) {
duint32 i=0;
for (std::map<duint32, objHandle>::iterator it=remainingMap.begin(); it != remainingMap.end(); ++it){ for (std::map<duint32, objHandle>::iterator it=remainingMap.begin(); it != remainingMap.end(); ++it){
DRW_DBG("\nnum.# "); DRW_DBG(i++); DRW_DBG(" Remaining object Handle, loc, type= "); DRW_DBG(it->first); DRW_DBG("\nnum.# "); DRW_DBG(i++); DRW_DBG(" Remaining object Handle, loc, type= "); DRW_DBG(it->first);
DRW_DBG(" "); DRW_DBG(it->second.loc); DRW_DBG(" "); DRW_DBG(it->second.type); DRW_DBG(" "); DRW_DBG(it->second.loc); DRW_DBG(" "); DRW_DBG(it->second.type);

View file

@ -140,6 +140,7 @@ public:
: hadlesList() : hadlesList()
{ reset();} { reset();}
// cppcheck-suppress functionStatic
void reset(){} void reset(){}
bool parseDwg(DRW::Version version, dwgBuffer *buf, duint32 bs=0); bool parseDwg(DRW::Version version, dwgBuffer *buf, duint32 bs=0);
std::list<duint32>hadlesList; std::list<duint32>hadlesList;
@ -195,11 +196,11 @@ protected:
std::string findTableName(DRW::TTYPE table, dint32 handle); std::string findTableName(DRW::TTYPE table, dint32 handle);
void setCodePage(std::string *c){decoder.setCodePage(c, false);} void setCodePage(std::string *c){decoder.setCodePage(c, false);}
std::string getCodePage(){ return decoder.getCodePage();} std::string getCodePage() const { return decoder.getCodePage();}
bool readDwgHeader(DRW_Header& hdr, dwgBuffer *buf, dwgBuffer *hBuf); bool readDwgHeader(DRW_Header& hdr, dwgBuffer *buf, dwgBuffer *hBuf);
bool readDwgHandles(dwgBuffer *dbuf, duint32 offset, duint32 size); bool readDwgHandles(dwgBuffer *dbuf, duint32 offset, duint32 size);
bool readDwgTables(DRW_Header& hdr, dwgBuffer *dbuf); bool readDwgTables(DRW_Header& hdr, dwgBuffer *dbuf);
bool checkSentinel(dwgBuffer *buf, enum secEnum::DWGSection, bool start); static bool checkSentinel(dwgBuffer *buf, enum secEnum::DWGSection, bool start);
bool readDwgBlocks(DRW_Interface& intfa, dwgBuffer *dbuf); bool readDwgBlocks(DRW_Interface& intfa, dwgBuffer *dbuf);
bool readDwgEntities(DRW_Interface& intfa, dwgBuffer *dbuf); bool readDwgEntities(DRW_Interface& intfa, dwgBuffer *dbuf);

View file

@ -179,8 +179,7 @@ bool dwgReader15::readDwgHandles() {
if (si.Id<0)//not found, ends if (si.Id<0)//not found, ends
return false; return false;
bool ret = dwgReader::readDwgHandles(fileBuf, static_cast<duint32>(si.address), static_cast<duint32>(si.size)); return dwgReader::readDwgHandles(fileBuf, static_cast<duint32>(si.address), static_cast<duint32>(si.size));
return ret;
} }
/*********** objects ************************/ /*********** objects ************************/
@ -189,9 +188,7 @@ bool dwgReader15::readDwgHandles() {
* (using their object file offsets) * (using their object file offsets)
*/ */
bool dwgReader15::readDwgTables(DRW_Header& hdr) { bool dwgReader15::readDwgTables(DRW_Header& hdr) {
bool ret = dwgReader::readDwgTables(hdr, fileBuf); return dwgReader::readDwgTables(hdr, fileBuf);
return ret;
} }
/** /**
@ -199,7 +196,5 @@ bool dwgReader15::readDwgTables(DRW_Header& hdr) {
* (using their object file offsets) * (using their object file offsets)
*/ */
bool dwgReader15::readDwgBlocks(DRW_Interface& intfa) { bool dwgReader15::readDwgBlocks(DRW_Interface& intfa) {
bool ret = true; return dwgReader::readDwgBlocks(intfa, fileBuf);
ret = dwgReader::readDwgBlocks(intfa, fileBuf);
return ret;
} }

View file

@ -31,14 +31,10 @@ public:
bool readDwgTables(DRW_Header& hdr); bool readDwgTables(DRW_Header& hdr);
bool readDwgBlocks(DRW_Interface& intfa); bool readDwgBlocks(DRW_Interface& intfa);
bool readDwgEntities(DRW_Interface& intfa){ bool readDwgEntities(DRW_Interface& intfa){
bool ret = true; return dwgReader::readDwgEntities(intfa, fileBuf);
ret = dwgReader::readDwgEntities(intfa, fileBuf);
return ret;
} }
bool readDwgObjects(DRW_Interface& intfa){ bool readDwgObjects(DRW_Interface& intfa){
bool ret = true; return dwgReader::readDwgObjects(intfa, fileBuf);
ret = dwgReader::readDwgObjects(intfa, fileBuf);
return ret;
} }
// bool readDwgEntity(objHandle& obj, DRW_Interface& intfa); // bool readDwgEntity(objHandle& obj, DRW_Interface& intfa);
}; };

View file

@ -149,7 +149,10 @@ bool dwgReader18::parseDataPage(dwgSectionInfo si/*, duint8 *dData*/){
//get compresed data //get compresed data
duint8 *cData = new duint8[pi.cSize]; duint8 *cData = new duint8[pi.cSize];
if (!fileBuf->setPosition(pi.address+32)) if (!fileBuf->setPosition(pi.address+32))
{
delete[]cData;
return false; return false;
}
fileBuf->getBytes(cData, static_cast<int>(pi.cSize)); fileBuf->getBytes(cData, static_cast<int>(pi.cSize));
//calculate checksum //calculate checksum
@ -269,8 +272,8 @@ bool dwgReader18::readFileHeader() {
DRW_DBG("\nGap array size= "); DRW_DBGH(buff.getRawLong32()); DRW_DBG("\nGap array size= "); DRW_DBGH(buff.getRawLong32());
//TODO: verify CRC //TODO: verify CRC
DRW_DBG("\nCRC32= "); DRW_DBGH(buff.getRawLong32()); DRW_DBG("\nCRC32= "); DRW_DBGH(buff.getRawLong32());
for (duint8 i = 0x68; i < 0x6c; ++i) // for (duint8 i = 0x68; i < 0x6c; ++i)
byteStr[i] = '\0'; // byteStr[i] = '\0';
// byteStr[i] = '\0'; // byteStr[i] = '\0';
duint32 crcCalc = buff.crc32(0x00,0,0x6C); duint32 crcCalc = buff.crc32(0x00,0,0x6C);
DRW_DBG("\nCRC32 calculated= "); DRW_DBGH(crcCalc); DRW_DBG("\nCRC32 calculated= "); DRW_DBGH(crcCalc);

View file

@ -61,23 +61,17 @@ public:
bool readDwgHandles(); bool readDwgHandles();
bool readDwgTables(DRW_Header& hdr); bool readDwgTables(DRW_Header& hdr);
bool readDwgBlocks(DRW_Interface& intfa){ bool readDwgBlocks(DRW_Interface& intfa){
bool ret = true;
dwgBuffer dataBuf(objData, static_cast<int>(uncompSize), &decoder); dwgBuffer dataBuf(objData, static_cast<int>(uncompSize), &decoder);
ret = dwgReader::readDwgBlocks(intfa, &dataBuf); return dwgReader::readDwgBlocks(intfa, &dataBuf);
return ret;
} }
virtual bool readDwgEntities(DRW_Interface& intfa){ virtual bool readDwgEntities(DRW_Interface& intfa){
bool ret = true;
dwgBuffer dataBuf(objData, static_cast<int>(uncompSize), &decoder); dwgBuffer dataBuf(objData, static_cast<int>(uncompSize), &decoder);
ret = dwgReader::readDwgEntities(intfa, &dataBuf); return dwgReader::readDwgEntities(intfa, &dataBuf);
return ret;
} }
virtual bool readDwgObjects(DRW_Interface& intfa){ virtual bool readDwgObjects(DRW_Interface& intfa){
bool ret = true;
dwgBuffer dataBuf(objData, static_cast<int>(uncompSize), &decoder); dwgBuffer dataBuf(objData, static_cast<int>(uncompSize), &decoder);
ret = dwgReader::readDwgObjects(intfa, &dataBuf); return dwgReader::readDwgObjects(intfa, &dataBuf);
return ret;
} }
// bool readDwgEntity(objHandle& obj, DRW_Interface& intfa){ // bool readDwgEntity(objHandle& obj, DRW_Interface& intfa){
@ -91,11 +85,12 @@ protected:
private: private:
Q_DISABLE_COPY(dwgReader18) Q_DISABLE_COPY(dwgReader18)
void genMagicNumber(); // cppcheck-suppress unusedPrivateFunction
static void genMagicNumber();
// dwgBuffer* bufObj; // dwgBuffer* bufObj;
void parseSysPage(duint8 *decompSec, duint32 decompSize); //called: Section page map: 0x41630e3b void parseSysPage(duint8 *decompSec, duint32 decompSize); //called: Section page map: 0x41630e3b
bool parseDataPage(dwgSectionInfo si/*, duint8 *dData*/); //called ???: Section map: 0x4163003b bool parseDataPage(dwgSectionInfo si/*, duint8 *dData*/); //called ???: Section map: 0x4163003b
duint32 checksum(duint32 seed, duint8* data, duint32 sz); static duint32 checksum(duint32 seed, duint8* data, duint32 sz);
private: private:
duint32 securityFlags; duint32 securityFlags;

View file

@ -481,10 +481,6 @@ bool dwgReader21::readDwgTables(DRW_Header& hdr) {
bool dwgReader21::readDwgBlocks(DRW_Interface& intfa){ bool dwgReader21::readDwgBlocks(DRW_Interface& intfa){
bool ret = true;
dwgBuffer dataBuf(objData, static_cast<int>(dataSize), &decoder); dwgBuffer dataBuf(objData, static_cast<int>(dataSize), &decoder);
ret = dwgReader::readDwgBlocks(intfa, &dataBuf); return dwgReader::readDwgBlocks(intfa, &dataBuf);
return ret;
return false;
} }

View file

@ -40,16 +40,12 @@ public:
bool readDwgTables(DRW_Header& hdr); bool readDwgTables(DRW_Header& hdr);
bool readDwgBlocks(DRW_Interface& intfa); bool readDwgBlocks(DRW_Interface& intfa);
virtual bool readDwgEntities(DRW_Interface& intfa){ virtual bool readDwgEntities(DRW_Interface& intfa){
bool ret = true;
dwgBuffer dataBuf(objData, static_cast<int>(dataSize), &decoder); dwgBuffer dataBuf(objData, static_cast<int>(dataSize), &decoder);
ret = dwgReader::readDwgEntities(intfa, &dataBuf); return dwgReader::readDwgEntities(intfa, &dataBuf);
return ret;
} }
virtual bool readDwgObjects(DRW_Interface& intfa){ virtual bool readDwgObjects(DRW_Interface& intfa){
bool ret = true;
dwgBuffer dataBuf(objData, static_cast<int>(dataSize), &decoder); dwgBuffer dataBuf(objData, static_cast<int>(dataSize), &decoder);
ret = dwgReader::readDwgObjects(intfa, &dataBuf); return dwgReader::readDwgObjects(intfa, &dataBuf);
return ret;
} }
//bool readDwgEntity(objHandle& obj, DRW_Interface& intfa){ //bool readDwgEntity(objHandle& obj, DRW_Interface& intfa){
// return false; // return false;

View file

@ -29,22 +29,16 @@ public:
// bool readDwgHandles(){return false;} // bool readDwgHandles(){return false;}
// bool readDwgTables(){return false;} // bool readDwgTables(){return false;}
bool readDwgBlocks(DRW_Interface& intfa){ bool readDwgBlocks(DRW_Interface& intfa){
bool ret = true;
dwgBuffer dataBuf(objData, static_cast<int>(uncompSize), &decoder); dwgBuffer dataBuf(objData, static_cast<int>(uncompSize), &decoder);
ret = dwgReader::readDwgBlocks(intfa, &dataBuf); return dwgReader::readDwgBlocks(intfa, &dataBuf);
return ret;
} }
virtual bool readDwgEntities(DRW_Interface& intfa){ virtual bool readDwgEntities(DRW_Interface& intfa){
bool ret = true;
dwgBuffer dataBuf(objData, static_cast<int>(uncompSize), &decoder); dwgBuffer dataBuf(objData, static_cast<int>(uncompSize), &decoder);
ret = dwgReader::readDwgEntities(intfa, &dataBuf); return dwgReader::readDwgEntities(intfa, &dataBuf);
return ret;
} }
virtual bool readDwgObjects(DRW_Interface& intfa){ virtual bool readDwgObjects(DRW_Interface& intfa){
bool ret = true;
dwgBuffer dataBuf(objData, static_cast<int>(uncompSize), &decoder); dwgBuffer dataBuf(objData, static_cast<int>(uncompSize), &decoder);
ret = dwgReader::readDwgObjects(intfa, &dataBuf); return dwgReader::readDwgObjects(intfa, &dataBuf);
return ret;
} }
// bool readDwgEntity(objHandle& obj, DRW_Interface& intfa){ // bool readDwgEntity(objHandle& obj, DRW_Interface& intfa){

View file

@ -29,22 +29,16 @@ public:
// bool readDwgHandles(){return false;} // bool readDwgHandles(){return false;}
// bool readDwgTables(){return false;} // bool readDwgTables(){return false;}
bool readDwgBlocks(DRW_Interface& intfa){ bool readDwgBlocks(DRW_Interface& intfa){
bool ret = true;
dwgBuffer dataBuf(objData, static_cast<int>(uncompSize), &decoder); dwgBuffer dataBuf(objData, static_cast<int>(uncompSize), &decoder);
ret = dwgReader::readDwgBlocks(intfa, &dataBuf); return dwgReader::readDwgBlocks(intfa, &dataBuf);
return ret;
} }
virtual bool readDwgEntities(DRW_Interface& intfa){ virtual bool readDwgEntities(DRW_Interface& intfa){
bool ret = true;
dwgBuffer dataBuf(objData, static_cast<int>(uncompSize), &decoder); dwgBuffer dataBuf(objData, static_cast<int>(uncompSize), &decoder);
ret = dwgReader::readDwgEntities(intfa, &dataBuf); return dwgReader::readDwgEntities(intfa, &dataBuf);
return ret;
} }
virtual bool readDwgObjects(DRW_Interface& intfa){ virtual bool readDwgObjects(DRW_Interface& intfa){
bool ret = true;
dwgBuffer dataBuf(objData, static_cast<int>(uncompSize), &decoder); dwgBuffer dataBuf(objData, static_cast<int>(uncompSize), &decoder);
ret = dwgReader::readDwgObjects(intfa, &dataBuf); return dwgReader::readDwgObjects(intfa, &dataBuf);
return ret;
} }
// bool readDwgEntity(objHandle& obj, DRW_Interface& intfa){ // bool readDwgEntity(objHandle& obj, DRW_Interface& intfa){
// DRW_UNUSED(obj); // DRW_UNUSED(obj);

View file

@ -40,11 +40,10 @@ std::string toHexStr(int n){
* @param blk number of codewords ( 1 cw == 255 bytes) * @param blk number of codewords ( 1 cw == 255 bytes)
*/ */
void dwgRSCodec::decode239I(unsigned char *in, unsigned char *out, duint32 blk){ void dwgRSCodec::decode239I(unsigned char *in, unsigned char *out, duint32 blk){
int k=0;
unsigned char data[255]; unsigned char data[255];
RScodec rsc(0x96, 8, 8); //(255, 239) RScodec rsc(0x96, 8, 8); //(255, 239)
for (duint32 i=0; i<blk; i++){ for (duint32 i=0; i<blk; i++){
k = i; int k = i;
for (int j=0; j<255; j++) { for (int j=0; j<255; j++) {
data[j] = in[k]; data[j] = in[k];
k +=blk; k +=blk;
@ -66,11 +65,10 @@ void dwgRSCodec::decode239I(unsigned char *in, unsigned char *out, duint32 blk){
* @param blk number of codewords ( 1 cw == 255 bytes) * @param blk number of codewords ( 1 cw == 255 bytes)
*/ */
void dwgRSCodec::decode251I(unsigned char *in, unsigned char *out, duint32 blk){ void dwgRSCodec::decode251I(unsigned char *in, unsigned char *out, duint32 blk){
int k=0;
unsigned char data[255]; unsigned char data[255];
RScodec rsc(0xB8, 8, 2); //(255, 251) RScodec rsc(0xB8, 8, 2); //(255, 251)
for (duint32 i=0; i<blk; i++){ for (duint32 i=0; i<blk; i++){
k = i; int k = i;
for (int j=0; j<255; j++) { for (int j=0; j<255; j++) {
data[j] = in[k]; data[j] = in[k];
k +=blk; k +=blk;
@ -649,7 +647,7 @@ void dwgCompressor::copyCompBytes21(duint8 *cbuf, duint8 *dbuf, duint32 l, duint
} }
secEnum::DWGSection secEnum::getEnum(std::string nameSec){ secEnum::DWGSection secEnum::getEnum(const std::string &nameSec){
//TODO: complete it //TODO: complete it
if (nameSec=="AcDb:Header"){ if (nameSec=="AcDb:Header"){
return HEADER; return HEADER;

View file

@ -93,7 +93,7 @@ public:
secEnum(){} secEnum(){}
~secEnum(){} ~secEnum(){}
static DWGSection getEnum(std::string nameSec); static DWGSection getEnum(const std::__cxx11::string &nameSec);
}; };
#endif // DWGUTIL_H #endif // DWGUTIL_H

View file

@ -90,6 +90,7 @@ bool dxfReader::readRec(int *codeData) {
int dxfReader::getHandleString(){ int dxfReader::getHandleString(){
int res; int res;
#if defined(__APPLE__) #if defined(__APPLE__)
// cppcheck-suppress invalidScanfArgType_int
int Succeeded = sscanf ( strData.c_str(), "%x", &res ); int Succeeded = sscanf ( strData.c_str(), "%x", &res );
if ( !Succeeded || Succeeded == EOF ) if ( !Succeeded || Succeeded == EOF )
res = 0; res = 0;
@ -169,6 +170,7 @@ bool dxfReaderBinary::readDouble() {
double *result; double *result;
char buffer[8]; char buffer[8];
filestr->read(buffer,8); filestr->read(buffer,8);
// cppcheck-suppress invalidPointerCast
result = reinterpret_cast<double *>(buffer); result = reinterpret_cast<double *>(buffer);
doubleData = *result; doubleData = *result;
DRW_DBG(doubleData); DRW_DBG("\n"); DRW_DBG(doubleData); DRW_DBG("\n");

View file

@ -27,7 +27,7 @@ public:
}; };
enum TYPE type; enum TYPE type;
public: public:
dxfReader(std::istream *stream) explicit dxfReader(std::istream *stream)
: type(INVALID), : type(INVALID),
filestr(stream), filestr(stream),
strData(), strData(),
@ -39,20 +39,20 @@ public:
{} {}
virtual ~dxfReader() = default; virtual ~dxfReader() = default;
bool readRec(int *code); bool readRec(int *codeData);
std::string getString() {return strData;} std::string getString() const {return strData;}
int getHandleString();//Convert hex string to int int getHandleString();//Convert hex string to int
std::string toUtf8String(std::string t) {return decoder.toUtf8(t);} std::string toUtf8String(std::string t) {return decoder.toUtf8(t);}
std::string getUtf8String() {return decoder.toUtf8(strData);} std::string getUtf8String() {return decoder.toUtf8(strData);}
double getDouble() {return doubleData;} double getDouble() const {return doubleData;}
int getInt32() {return intData;} int getInt32() const {return intData;}
unsigned long long int getInt64() {return int64;} unsigned long long int getInt64() const {return int64;}
bool getBool() { return (intData==0) ? false : true;} bool getBool() const { return (intData==0) ? false : true;}
int getVersion(){return decoder.getVersion();} int getVersion() const {return decoder.getVersion();}
void setVersion(std::string *v, bool dxfFormat){decoder.setVersion(v, dxfFormat);} void setVersion(std::string *v, bool dxfFormat){decoder.setVersion(v, dxfFormat);}
void setCodePage(std::string *c){decoder.setCodePage(c, true);} void setCodePage(std::string *c){decoder.setCodePage(c, true);}
std::string getCodePage(){ return decoder.getCodePage();} std::string getCodePage() const { return decoder.getCodePage();}
protected: protected:
virtual bool readCode(int *code) = 0; //return true if sucesful (not EOF) virtual bool readCode(int *code) = 0; //return true if sucesful (not EOF)
@ -78,8 +78,11 @@ private:
class dxfReaderBinary : public dxfReader { class dxfReaderBinary : public dxfReader {
public: public:
dxfReaderBinary(std::istream *stream):dxfReader(stream){skip = false; } explicit dxfReaderBinary(std::istream *stream)
virtual ~dxfReaderBinary() {} : dxfReader(stream)
{skip = false; }
virtual ~dxfReaderBinary() = default;
virtual bool readCode(int *code); virtual bool readCode(int *code);
virtual bool readString(std::string *text); virtual bool readString(std::string *text);
virtual bool readString(); virtual bool readString();
@ -92,8 +95,11 @@ public:
class dxfReaderAscii : public dxfReader { class dxfReaderAscii : public dxfReader {
public: public:
dxfReaderAscii(std::istream *stream):dxfReader(stream){skip = true; } explicit dxfReaderAscii(std::istream *stream)
virtual ~dxfReaderAscii(){} : dxfReader(stream)
{skip = true; }
virtual ~dxfReaderAscii() = default;
virtual bool readCode(int *code); virtual bool readCode(int *code);
virtual bool readString(std::string *text); virtual bool readString(std::string *text);
virtual bool readString(); virtual bool readString();

View file

@ -91,12 +91,12 @@
return (filestr->good()); return (filestr->good());
}*/ }*/
bool dxfWriter::writeUtf8String(int code, std::string text) { bool dxfWriter::writeUtf8String(int code, const std::string &text) {
std::string t = encoder.fromUtf8(text); std::string t = encoder.fromUtf8(text);
return writeString(code, t); return writeString(code, t);
} }
bool dxfWriter::writeUtf8Caps(int code, std::string text) { bool dxfWriter::writeUtf8Caps(int code, const std::string &text) {
std::string strname = text; std::string strname = text;
std::transform(strname.begin(), strname.end(), strname.begin(),::toupper); std::transform(strname.begin(), strname.end(), strname.begin(),::toupper);
std::string t = encoder.fromUtf8(strname); std::string t = encoder.fromUtf8(strname);
@ -194,6 +194,7 @@ bool dxfWriterBinary::writeDouble(int code, double data) {
filestr->write(bufcode, 2); filestr->write(bufcode, 2);
unsigned char *val; unsigned char *val;
// cppcheck-suppress invalidPointerCast
val = reinterpret_cast<unsigned char *>(&data); val = reinterpret_cast<unsigned char *>(&data);
for (int i=0; i<8; i++) { for (int i=0; i<8; i++) {
buffer[i] =val[i]; buffer[i] =val[i];

View file

@ -17,15 +17,15 @@
class dxfWriter { class dxfWriter {
public: public:
dxfWriter(std::ofstream *stream) explicit dxfWriter(std::ofstream *stream)
: filestr(stream), : filestr(stream),
encoder() encoder()
{} {}
virtual ~dxfWriter() = default; virtual ~dxfWriter() = default;
virtual bool writeString(int code, std::string text) = 0; virtual bool writeString(int code, std::string text) = 0;
bool writeUtf8String(int code, std::string text); bool writeUtf8String(int code, const std::__cxx11::string &text);
bool writeUtf8Caps(int code, std::string text); bool writeUtf8Caps(int code, const std::__cxx11::string &text);
std::string fromUtf8String(std::string t) {return encoder.fromUtf8(t);} std::string fromUtf8String(std::string t) {return encoder.fromUtf8(t);}
virtual bool writeInt16(int code, int data) = 0; virtual bool writeInt16(int code, int data) = 0;
virtual bool writeInt32(int code, int data) = 0; virtual bool writeInt32(int code, int data) = 0;
@ -34,7 +34,7 @@ public:
virtual bool writeBool(int code, bool data) = 0; virtual bool writeBool(int code, bool data) = 0;
void setVersion(std::string *v, bool dxfFormat){encoder.setVersion(v, dxfFormat);} void setVersion(std::string *v, bool dxfFormat){encoder.setVersion(v, dxfFormat);}
void setCodePage(std::string *c){encoder.setCodePage(c, true);} void setCodePage(std::string *c){encoder.setCodePage(c, true);}
std::string getCodePage(){return encoder.getCodePage();} std::string getCodePage() const {return encoder.getCodePage();}
protected: protected:
std::ofstream *filestr; std::ofstream *filestr;
private: private:
@ -44,8 +44,10 @@ private:
class dxfWriterBinary : public dxfWriter { class dxfWriterBinary : public dxfWriter {
public: public:
dxfWriterBinary(std::ofstream *stream):dxfWriter(stream){} explicit dxfWriterBinary(std::ofstream *stream)
virtual ~dxfWriterBinary() {} : dxfWriter(stream)
{}
virtual ~dxfWriterBinary() = default;
virtual bool writeString(int code, std::string text); virtual bool writeString(int code, std::string text);
virtual bool writeInt16(int code, int data); virtual bool writeInt16(int code, int data);
virtual bool writeInt32(int code, int data); virtual bool writeInt32(int code, int data);
@ -56,8 +58,8 @@ public:
class dxfWriterAscii : public dxfWriter { class dxfWriterAscii : public dxfWriter {
public: public:
dxfWriterAscii(std::ofstream *stream); explicit dxfWriterAscii(std::ofstream *stream);
virtual ~dxfWriterAscii(){} virtual ~dxfWriterAscii() = default;
virtual bool writeString(int code, std::string text); virtual bool writeString(int code, std::string text);
virtual bool writeInt16(int code, int data); virtual bool writeInt16(int code, int data);
virtual bool writeInt32(int code, int data); virtual bool writeInt32(int code, int data);

View file

@ -58,14 +58,13 @@ RScodec::~RScodec() {
*/ */
void RScodec::RSgenerate_gf(unsigned int pp) { void RScodec::RSgenerate_gf(unsigned int pp) {
int i, mask ; int i, mask ;
int pb;
mask = 1 ; mask = 1 ;
alpha_to[mm] = 0 ; alpha_to[mm] = 0 ;
for (i=0; i<mm; i++) { for (i=0; i<mm; i++) {
alpha_to[i] = mask ; alpha_to[i] = mask ;
index_of[alpha_to[i]] = i ; index_of[alpha_to[i]] = i ;
pb = (pp >>(mm-1-i)) & 1; int pb = (pp >>(mm-1-i)) & 1;
if (pb!=0) { if (pb!=0) {
alpha_to[mm] ^= mask; alpha_to[mm] ^= mask;
} }
@ -110,7 +109,8 @@ void RScodec::RSgen_poly() {
for (i=0; i<=bb; i++) gg[i] = index_of[gg[i]] ; for (i=0; i<=bb; i++) gg[i] = index_of[gg[i]] ;
} }
int RScodec::calcDecode(unsigned char* data, int* recd, int** elp, int* d, int* l, int* u_lu, int* s, int* root, int* loc, int* z, int* err, int* reg, int bb) int RScodec::calcDecode(unsigned char* data, int* recd, int** elp, int* d, int* l, int* u_lu, int* s, int* root,
int* loc, int* z, int* err, int* reg, int bb) const
{ {
if (!isOk) return -1; if (!isOk) return -1;
int count = 0; int count = 0;
@ -315,17 +315,16 @@ int RScodec::calcDecode(unsigned char* data, int* recd, int** elp, int* d, int*
Encoding is done by using a feedback shift register with appropriate Encoding is done by using a feedback shift register with appropriate
connections specified by the elements of gg[], which was generated above. connections specified by the elements of gg[], which was generated above.
Codeword is c(X) = data(X)*X**(nn-kk)+ b(X) */ Codeword is c(X) = data(X)*X**(nn-kk)+ b(X) */
bool RScodec::encode(unsigned char *data, unsigned char *parity) { bool RScodec::encode(unsigned char *data, unsigned char *parity) const {
if (!isOk) return false; if (!isOk) return false;
int i,j ; int i,j ;
int feedback ;
unsigned char *idata = data; unsigned char *idata = data;
unsigned char *bd = parity; unsigned char *bd = parity;
int bb = nn-kk;; //nn-kk length of parity data int bb = nn-kk;; //nn-kk length of parity data
for (i=0; i<bb; i++) bd[i] = 0 ; for (i=0; i<bb; i++) bd[i] = 0 ;
for (i=kk-1; i>=0; i--) { for (i=kk-1; i>=0; i--) {
feedback = index_of[idata[i]^bd[bb-1]] ; int feedback = index_of[idata[i]^bd[bb-1]] ;
if (feedback != -1) { if (feedback != -1) {
for (j=bb-1; j>0; j--) for (j=bb-1; j>0; j--)
if (gg[j] != -1) if (gg[j] != -1)
@ -362,7 +361,7 @@ bool RScodec::encode(unsigned char *data, unsigned char *parity) {
parity part of the transmitted codeword). Of course, these insoluble cases parity part of the transmitted codeword). Of course, these insoluble cases
can be returned as error flags to the calling routine if desired. */ can be returned as error flags to the calling routine if desired. */
/** return value: number of corrected errors or -1 if can't correct it */ /** return value: number of corrected errors or -1 if can't correct it */
int RScodec::decode(unsigned char *data) { int RScodec::decode(unsigned char *data) const {
if (!isOk) return -1; if (!isOk) return -1;
int bb = nn-kk;; //nn-kk length of parity data int bb = nn-kk;; //nn-kk length of parity data

View file

@ -45,16 +45,17 @@ public:
~RScodec(); ~RScodec();
// bool encode(int *data, int *parity); // bool encode(int *data, int *parity);
// int decode(int *recd); // int decode(int *recd);
bool encode(unsigned char *data, unsigned char *parity); bool encode(unsigned char *data, unsigned char *parity) const;
int decode(unsigned char *data); int decode(unsigned char *data) const;
bool isOkey(){return isOk;} bool isOkey() const {return isOk;}
const unsigned int* indexOf() {return index_of;} const unsigned int* indexOf() const {return index_of;}
const int* alphaTo() {return alpha_to;} const int* alphaTo() const {return alpha_to;}
private: private:
void RSgenerate_gf(unsigned int pp); void RSgenerate_gf(unsigned int pp);
void RSgen_poly(); void RSgen_poly();
int calcDecode(unsigned char* data, int* recd, int** elp, int* d, int* l, int* u_lu, int* s, int* root, int* loc, int* z, int* err, int* reg, int bb); int calcDecode(unsigned char* data, int* recd, int** elp, int* d, int* l, int* u_lu, int* s, int* root, int* loc,
int* z, int* err, int* reg, int bb) const;
private: private:

View file

@ -65,9 +65,7 @@ void dwgR::setDebug(DRW::DBG_LEVEL lvl){
/*reads metadata and loads image preview*/ /*reads metadata and loads image preview*/
bool dwgR::getPreview(std::istream &stream){ bool dwgR::getPreview(std::istream &stream){
bool isOk = false; bool isOk = open(&stream);
isOk = open(&stream);
if (!isOk) if (!isOk)
return false; return false;
@ -88,9 +86,7 @@ bool dwgR::read(std::istream &stream, DRW_Interface *interface_, bool ext){
applyExt = ext; applyExt = ext;
iface = interface_; iface = interface_;
bool isOk = false; bool isOk = open(&stream);
isOk = open(&stream);
if (!isOk) if (!isOk)
return false; return false;

View file

@ -29,9 +29,9 @@ public:
//read: return true if all ok //read: return true if all ok
bool read(std::istream &stream, DRW_Interface *interface_, bool ext); bool read(std::istream &stream, DRW_Interface *interface_, bool ext);
bool getPreview(std::istream &stream); bool getPreview(std::istream &stream);
DRW::Version getVersion(){return version;} DRW::Version getVersion() const {return version;}
DRW::error getError(){return error;} DRW::error getError() const {return error;}
void setDebug(DRW::DBG_LEVEL lvl); static void setDebug(DRW::DBG_LEVEL lvl);
private: private:
bool open(std::istream *stream); bool open(std::istream *stream);

View file

@ -1264,7 +1264,7 @@ bool dxfRW::writeViewport(DRW_Viewport *ent) {
return true; return true;
} }
DRW_ImageDef* dxfRW::writeImage(DRW_Image *ent, std::string name){ DRW_ImageDef* dxfRW::writeImage(DRW_Image *ent, const std::string &name){
if (version > DRW::AC1009) { if (version > DRW::AC1009) {
//search if exist imagedef with this mane (image inserted more than 1 time) //search if exist imagedef with this mane (image inserted more than 1 time)
//RLZ: imagedef_reactor seem needed to read in acad //RLZ: imagedef_reactor seem needed to read in acad
@ -1280,7 +1280,7 @@ DRW_ImageDef* dxfRW::writeImage(DRW_Image *ent, std::string name){
imageDef.push_back(id); imageDef.push_back(id);
id->handle = ++entCount; id->handle = ++entCount;
} }
id->name = name; id->fileName = name;
std::string idReactor = toHexStr(++entCount); std::string idReactor = toHexStr(++entCount);
writer->writeString(0, "IMAGE"); writer->writeString(0, "IMAGE");
@ -1775,7 +1775,7 @@ bool dxfRW::writeObjects() {
writer->writeString(102, "}"); writer->writeString(102, "}");
writer->writeString(100, "AcDbRasterImageDef"); writer->writeString(100, "AcDbRasterImageDef");
writer->writeInt16(90, 0); //version 0=R14 to v2010 writer->writeInt16(90, 0); //version 0=R14 to v2010
writer->writeUtf8String(1, id->name); writer->writeUtf8String(1, id->fileName);
writer->writeDouble(10, id->u); writer->writeDouble(10, id->u);
writer->writeDouble(20, id->v); writer->writeDouble(20, id->v);
writer->writeDouble(11, id->up); writer->writeDouble(11, id->up);

View file

@ -25,9 +25,9 @@ class dxfWriter;
class dxfRW { class dxfRW {
public: public:
dxfRW(const char* name); explicit dxfRW(const char* name);
~dxfRW(); ~dxfRW();
void setDebug(DRW::DBG_LEVEL lvl); static void setDebug(DRW::DBG_LEVEL lvl);
/// reads the file specified in constructor /// reads the file specified in constructor
/*! /*!
* An interface must be provided. It is used by the class to signal various * An interface must be provided. It is used by the class to signal various
@ -60,13 +60,13 @@ public:
bool writePolyline(DRW_Polyline *ent); bool writePolyline(DRW_Polyline *ent);
bool writeSpline(DRW_Spline *ent); bool writeSpline(DRW_Spline *ent);
bool writeBlockRecord(std::string name); bool writeBlockRecord(std::string name);
bool writeBlock(DRW_Block *ent); bool writeBlock(DRW_Block *bk);
bool writeInsert(DRW_Insert *ent); bool writeInsert(DRW_Insert *ent);
bool writeMText(DRW_MText *ent); bool writeMText(DRW_MText *ent);
bool writeText(DRW_Text *ent); bool writeText(DRW_Text *ent);
bool writeHatch(DRW_Hatch *ent); bool writeHatch(DRW_Hatch *ent);
bool writeViewport(DRW_Viewport *ent); bool writeViewport(DRW_Viewport *ent);
DRW_ImageDef *writeImage(DRW_Image *ent, std::string name); DRW_ImageDef *writeImage(DRW_Image *ent, const std::__cxx11::string &name);
bool writeLeader(DRW_Leader *ent); bool writeLeader(DRW_Leader *ent);
bool writeDimension(DRW_Dimension *ent); bool writeDimension(DRW_Dimension *ent);
void setEllipseParts(int parts){elParts = parts;} /*!< set parts munber when convert ellipse to polyline */ void setEllipseParts(int parts){elParts = parts;} /*!< set parts munber when convert ellipse to polyline */
@ -120,7 +120,7 @@ private:
bool writeObjects(); bool writeObjects();
bool writeExtData(const std::vector<DRW_Variant*> &ed); bool writeExtData(const std::vector<DRW_Variant*> &ed);
/*use version from dwgutil.h*/ /*use version from dwgutil.h*/
std::string toHexStr(int n);//RLZ removeme static std::string toHexStr(int n);//RLZ removeme
private: private:
DRW::Version version; DRW::Version version;

View file

@ -81,6 +81,7 @@ VAbstractApplication::VAbstractApplication(int &argc, char **argv)
#endif //defined(V_NO_ASSERT) #endif //defined(V_NO_ASSERT)
#endif // QT_VERSION >= QT_VERSION_CHECK(5, 4, 1) #endif // QT_VERSION >= QT_VERSION_CHECK(5, 4, 1)
// cppcheck-suppress reademptycontainer
if (not rules.isEmpty()) if (not rules.isEmpty())
{ {
QLoggingCategory::setFilterRules(rules); QLoggingCategory::setFilterRules(rules);

View file

@ -153,10 +153,10 @@ void VPE::VPropertySet::clear(bool delete_properties)
QString VPE::VPropertySet::getPropertyID(const VProperty *prop, bool look_for_parent_id) const QString VPE::VPropertySet::getPropertyID(const VProperty *prop, bool look_for_parent_id) const
{ {
QString tmpResult; // QString tmpResult;
const VProperty* tmpCurrentProp = prop; const VProperty* tmpCurrentProp = prop;
while (tmpCurrentProp && (look_for_parent_id || prop == tmpCurrentProp) && tmpResult.isEmpty()) while (tmpCurrentProp && (look_for_parent_id || prop == tmpCurrentProp) /*&& tmpResult.isEmpty()*/)
{ {
// todo: The following code doesn't work, because .key() doesn't accept a const VProperty* pointer ... // todo: The following code doesn't work, because .key() doesn't accept a const VProperty* pointer ...
@ -175,7 +175,8 @@ QString VPE::VPropertySet::getPropertyID(const VProperty *prop, bool look_for_pa
tmpCurrentProp = tmpCurrentProp->getParent(); tmpCurrentProp = tmpCurrentProp->getParent();
} }
return tmpResult; // return tmpResult;
return QString();
} }
// cppcheck-suppress unusedFunction // cppcheck-suppress unusedFunction