Implicit Sharing for class VGObject.
--HG-- branch : develop
This commit is contained in:
parent
fb750ece99
commit
d75969b331
|
@ -10,7 +10,9 @@ HEADERS += \
|
||||||
geometry/vequidistant.h \
|
geometry/vequidistant.h \
|
||||||
geometry/vabstractcurve.h \
|
geometry/vabstractcurve.h \
|
||||||
geometry/vnodedetail_p.h \
|
geometry/vnodedetail_p.h \
|
||||||
geometry/vdetail_p.h
|
geometry/vdetail_p.h \
|
||||||
|
geometry/vgobject_p.h \
|
||||||
|
geometry/varc_p.h
|
||||||
|
|
||||||
SOURCES += \
|
SOURCES += \
|
||||||
geometry/vsplinepoint.cpp \
|
geometry/vsplinepoint.cpp \
|
||||||
|
|
|
@ -44,20 +44,9 @@ public:
|
||||||
VAbstractCurve& operator= (const VAbstractCurve &curve);
|
VAbstractCurve& operator= (const VAbstractCurve &curve);
|
||||||
virtual QVector<QPointF> GetPoints() const =0;
|
virtual QVector<QPointF> GetPoints() const =0;
|
||||||
virtual QPainterPath GetPath(PathDirection direction = PathDirection::Hide) const;
|
virtual QPainterPath GetPath(PathDirection direction = PathDirection::Hide) const;
|
||||||
virtual QString name() const;
|
|
||||||
virtual qreal GetLength() const =0;
|
virtual qreal GetLength() const =0;
|
||||||
protected:
|
protected:
|
||||||
QPainterPath ShowDirection(const QVector<QPointF> &points) const;
|
QPainterPath ShowDirection(const QVector<QPointF> &points) const;
|
||||||
};
|
};
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
|
||||||
/**
|
|
||||||
* @brief name return curve name. This name used in variables.
|
|
||||||
* @return name
|
|
||||||
*/
|
|
||||||
inline QString VAbstractCurve::name() const
|
|
||||||
{
|
|
||||||
return _name;
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif // VABSTRACTCURVE_H
|
#endif // VABSTRACTCURVE_H
|
||||||
|
|
|
@ -59,7 +59,7 @@ VArc::VArc (VPointF center, qreal radius, QString formulaRadius, qreal f1, QStri
|
||||||
: VAbstractCurve(GOType::Arc, idObject, mode), f1(f1), formulaF1(formulaF1), f2(f2), formulaF2(formulaF2),
|
: VAbstractCurve(GOType::Arc, idObject, mode), f1(f1), formulaF1(formulaF1), f2(f2), formulaF2(formulaF2),
|
||||||
radius(radius), formulaRadius(formulaRadius), center(center)
|
radius(radius), formulaRadius(formulaRadius), center(center)
|
||||||
{
|
{
|
||||||
_name = QString (arc_+"%1").arg(this->GetCenter().name());
|
setName(QString (arc_+"%1").arg(this->GetCenter().name()));
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
@ -67,7 +67,7 @@ VArc::VArc(VPointF center, qreal radius, qreal f1, qreal f2)
|
||||||
: VAbstractCurve(GOType::Arc, 0, Draw::Calculation), f1(f1), formulaF1(QStringLiteral("")), f2(f2),
|
: VAbstractCurve(GOType::Arc, 0, Draw::Calculation), f1(f1), formulaF1(QStringLiteral("")), f2(f2),
|
||||||
formulaF2(QStringLiteral("")), radius(radius), formulaRadius(QStringLiteral("")), center(center)
|
formulaF2(QStringLiteral("")), radius(radius), formulaRadius(QStringLiteral("")), center(center)
|
||||||
{
|
{
|
||||||
_name = QString (arc_+"%1").arg(this->GetCenter().name());
|
setName(QString (arc_+"%1").arg(this->GetCenter().name()));
|
||||||
formulaF1 = QString("%1").arg(f1);
|
formulaF1 = QString("%1").arg(f1);
|
||||||
formulaF2 = QString("%1").arg(f2);
|
formulaF2 = QString("%1").arg(f2);
|
||||||
formulaRadius = QString("%1").arg(radius);
|
formulaRadius = QString("%1").arg(radius);
|
||||||
|
@ -215,10 +215,10 @@ QPointF VArc::CutArc(const qreal &length, VArc &arc1, VArc &arc2) const
|
||||||
line.setAngle(line.angle()+n);
|
line.setAngle(line.angle()+n);
|
||||||
|
|
||||||
arc1 = VArc (center, radius, formulaRadius, f1, formulaF1, line.angle(), QString().setNum(line.angle()),
|
arc1 = VArc (center, radius, formulaRadius, f1, formulaF1, line.angle(), QString().setNum(line.angle()),
|
||||||
idObject, mode);
|
getIdObject(), getMode());
|
||||||
|
|
||||||
arc2 = VArc (center, radius, formulaRadius, line.angle(), QString().setNum(line.angle()), f2, formulaF2,
|
arc2 = VArc (center, radius, formulaRadius, line.angle(), QString().setNum(line.angle()), f2, formulaF2,
|
||||||
idObject, mode);
|
getIdObject(), getMode());
|
||||||
return line.p2();
|
return line.p2();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -238,6 +238,6 @@ QPointF VArc::CutArc(const qreal &length) const
|
||||||
*/
|
*/
|
||||||
void VArc::setId(const quint32 &id)
|
void VArc::setId(const quint32 &id)
|
||||||
{
|
{
|
||||||
_id = id;
|
VAbstractCurve::setId(id);
|
||||||
_name = QString (arc_+"%1_%2").arg(center.name()).arg(id);
|
setName(QString (arc_+"%1_%2").arg(center.name()).arg(id));
|
||||||
}
|
}
|
||||||
|
|
|
@ -27,13 +27,14 @@
|
||||||
*************************************************************************/
|
*************************************************************************/
|
||||||
|
|
||||||
#include "vgobject.h"
|
#include "vgobject.h"
|
||||||
|
#include "vgobject_p.h"
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
/**
|
/**
|
||||||
* @brief VGObject default constructor.
|
* @brief VGObject default constructor.
|
||||||
*/
|
*/
|
||||||
VGObject::VGObject()
|
VGObject::VGObject()
|
||||||
:_id(NULL_ID), type(GOType::Unknown), idObject(NULL_ID), _name(QString()), mode(Draw::Calculation)
|
:d(new VGObjectData)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
@ -44,7 +45,7 @@ VGObject::VGObject()
|
||||||
* @param mode mode creation. Used in modeling mode.
|
* @param mode mode creation. Used in modeling mode.
|
||||||
*/
|
*/
|
||||||
VGObject::VGObject(const GOType &type, const quint32 &idObject, const Draw &mode)
|
VGObject::VGObject(const GOType &type, const quint32 &idObject, const Draw &mode)
|
||||||
:_id(NULL_ID), type(type), idObject(idObject), _name(QString()), mode(mode)
|
:d(new VGObjectData(type, idObject, mode))
|
||||||
{}
|
{}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
@ -53,7 +54,7 @@ VGObject::VGObject(const GOType &type, const quint32 &idObject, const Draw &mode
|
||||||
* @param obj object.
|
* @param obj object.
|
||||||
*/
|
*/
|
||||||
VGObject::VGObject(const VGObject &obj)
|
VGObject::VGObject(const VGObject &obj)
|
||||||
:_id(obj.id()), type(obj.getType()), idObject(obj.getIdObject()), _name(obj.name()), mode(obj.getMode())
|
:d (obj.d)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
@ -68,14 +69,14 @@ VGObject &VGObject::operator=(const VGObject &obj)
|
||||||
{
|
{
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
this->_id = obj.id();
|
d = obj.d;
|
||||||
this->type = obj.getType();
|
|
||||||
this->idObject = obj.getIdObject();
|
|
||||||
this->_name = obj.name();
|
|
||||||
this->mode = obj.getMode();
|
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
VGObject::~VGObject()
|
||||||
|
{}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
/**
|
/**
|
||||||
* @brief getIdObject return parent id.
|
* @brief getIdObject return parent id.
|
||||||
|
@ -83,7 +84,7 @@ VGObject &VGObject::operator=(const VGObject &obj)
|
||||||
*/
|
*/
|
||||||
quint32 VGObject::getIdObject() const
|
quint32 VGObject::getIdObject() const
|
||||||
{
|
{
|
||||||
return idObject;
|
return d->idObject;
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
@ -93,7 +94,7 @@ quint32 VGObject::getIdObject() const
|
||||||
*/
|
*/
|
||||||
void VGObject::setIdObject(const quint32 &value)
|
void VGObject::setIdObject(const quint32 &value)
|
||||||
{
|
{
|
||||||
idObject = value;
|
d->idObject = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
@ -103,7 +104,7 @@ void VGObject::setIdObject(const quint32 &value)
|
||||||
*/
|
*/
|
||||||
QString VGObject::name() const
|
QString VGObject::name() const
|
||||||
{
|
{
|
||||||
return _name;
|
return d->_name;
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
@ -113,7 +114,7 @@ QString VGObject::name() const
|
||||||
*/
|
*/
|
||||||
void VGObject::setName(const QString &name)
|
void VGObject::setName(const QString &name)
|
||||||
{
|
{
|
||||||
_name = name;
|
d->_name = name;
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
@ -123,7 +124,7 @@ void VGObject::setName(const QString &name)
|
||||||
*/
|
*/
|
||||||
Draw VGObject::getMode() const
|
Draw VGObject::getMode() const
|
||||||
{
|
{
|
||||||
return mode;
|
return d->mode;
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
@ -133,7 +134,7 @@ Draw VGObject::getMode() const
|
||||||
*/
|
*/
|
||||||
void VGObject::setMode(const Draw &value)
|
void VGObject::setMode(const Draw &value)
|
||||||
{
|
{
|
||||||
mode = value;
|
d->mode = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
@ -143,7 +144,13 @@ void VGObject::setMode(const Draw &value)
|
||||||
*/
|
*/
|
||||||
GOType VGObject::getType() const
|
GOType VGObject::getType() const
|
||||||
{
|
{
|
||||||
return type;
|
return d->type;
|
||||||
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
void VGObject::setType(const GOType &type)
|
||||||
|
{
|
||||||
|
d->type = type;
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
@ -153,7 +160,7 @@ GOType VGObject::getType() const
|
||||||
*/
|
*/
|
||||||
quint32 VGObject::id() const
|
quint32 VGObject::id() const
|
||||||
{
|
{
|
||||||
return _id;
|
return d->_id;
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
@ -163,5 +170,5 @@ quint32 VGObject::id() const
|
||||||
*/
|
*/
|
||||||
void VGObject::setId(const quint32 &id)
|
void VGObject::setId(const quint32 &id)
|
||||||
{
|
{
|
||||||
_id = id;
|
d->_id = id;
|
||||||
}
|
}
|
||||||
|
|
|
@ -32,8 +32,9 @@
|
||||||
#include "../options.h"
|
#include "../options.h"
|
||||||
#include <QString>
|
#include <QString>
|
||||||
#include <QtGlobal>
|
#include <QtGlobal>
|
||||||
|
#include <QSharedDataPointer>
|
||||||
|
|
||||||
enum class GOType : char { Point, Arc, Spline, SplinePath, Unknown };
|
class VGObjectData;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief The VGObject class keep information graphical objects.
|
* @brief The VGObject class keep information graphical objects.
|
||||||
|
@ -45,31 +46,24 @@ public:
|
||||||
VGObject(const GOType &type, const quint32 &idObject = 0, const Draw &mode = Draw::Calculation);
|
VGObject(const GOType &type, const quint32 &idObject = 0, const Draw &mode = Draw::Calculation);
|
||||||
VGObject(const VGObject &obj);
|
VGObject(const VGObject &obj);
|
||||||
VGObject& operator= (const VGObject &obj);
|
VGObject& operator= (const VGObject &obj);
|
||||||
virtual ~VGObject(){}
|
virtual ~VGObject();
|
||||||
|
|
||||||
quint32 getIdObject() const;
|
quint32 getIdObject() const;
|
||||||
void setIdObject(const quint32 &value);
|
void setIdObject(const quint32 &value);
|
||||||
|
|
||||||
virtual QString name() const;
|
virtual QString name() const;
|
||||||
void setName(const QString &name);
|
void setName(const QString &name);
|
||||||
|
|
||||||
Draw getMode() const;
|
Draw getMode() const;
|
||||||
void setMode(const Draw &value);
|
void setMode(const Draw &value);
|
||||||
|
|
||||||
GOType getType() const;
|
GOType getType() const;
|
||||||
|
void setType(const GOType &type);
|
||||||
|
|
||||||
quint32 id() const;
|
quint32 id() const;
|
||||||
virtual void setId(const quint32 &id);
|
virtual void setId(const quint32 &id);
|
||||||
protected:
|
private:
|
||||||
/** @brief _id id in container. Ned for arcs, spline and spline paths. */
|
QSharedDataPointer<VGObjectData> d;
|
||||||
quint32 _id;
|
|
||||||
|
|
||||||
/** @brief type type of graphical object */
|
|
||||||
GOType type;
|
|
||||||
|
|
||||||
/** @brief idObject id of parent object. Only for modeling. All another return 0. */
|
|
||||||
quint32 idObject;
|
|
||||||
|
|
||||||
/** @brief _name object name */
|
|
||||||
QString _name;
|
|
||||||
|
|
||||||
/** @brief mode object created in calculation or drawing mode */
|
|
||||||
Draw mode;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // VGOBJECT_H
|
#endif // VGOBJECT_H
|
||||||
|
|
|
@ -42,7 +42,7 @@
|
||||||
VPointF::VPointF(qreal x, qreal y, const QString &name, qreal mx, qreal my, quint32 idObject, const Draw &mode)
|
VPointF::VPointF(qreal x, qreal y, const QString &name, qreal mx, qreal my, quint32 idObject, const Draw &mode)
|
||||||
:VGObject(GOType::Point, idObject, mode), _mx(mx), _my(my), _x(x), _y(y)
|
:VGObject(GOType::Point, idObject, mode), _mx(mx), _my(my), _x(x), _y(y)
|
||||||
{
|
{
|
||||||
this->_name = name;
|
setName(name);
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
@ -56,7 +56,7 @@ VPointF::VPointF(qreal x, qreal y, const QString &name, qreal mx, qreal my, quin
|
||||||
VPointF::VPointF(const QPointF &point, const QString &name, qreal mx, qreal my, quint32 idObject, const Draw &mode)
|
VPointF::VPointF(const QPointF &point, const QString &name, qreal mx, qreal my, quint32 idObject, const Draw &mode)
|
||||||
:VGObject(GOType::Point, idObject, mode), _mx(mx), _my(my), _x(point.x()), _y(point.y())
|
:VGObject(GOType::Point, idObject, mode), _mx(mx), _my(my), _x(point.x()), _y(point.y())
|
||||||
{
|
{
|
||||||
this->_name = name;
|
setName(name);
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
|
@ -652,7 +652,7 @@ qreal VSpline::CalcSqDistance (qreal x1, qreal y1, qreal x2, qreal y2)
|
||||||
*/
|
*/
|
||||||
void VSpline::CreateName()
|
void VSpline::CreateName()
|
||||||
{
|
{
|
||||||
_name = QString(spl_+"%1_%2").arg(this->GetP1().name(), this->GetP4().name());
|
setName(QString(spl_+"%1_%2").arg(this->GetP1().name(), this->GetP4().name()));
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
|
@ -45,12 +45,13 @@ VSplinePath::VSplinePath(const VSplinePath &splPath)
|
||||||
void VSplinePath::append(const VSplinePoint &point)
|
void VSplinePath::append(const VSplinePoint &point)
|
||||||
{
|
{
|
||||||
path.append(point);
|
path.append(point);
|
||||||
_name = splPath;
|
QString name = splPath;
|
||||||
_name.append(QString("_%1").arg(path.first().P().name()));
|
name.append(QString("_%1").arg(path.first().P().name()));
|
||||||
if (path.size() > 1)
|
if (path.size() > 1)
|
||||||
{
|
{
|
||||||
_name.append(QString("_%1").arg(path.last().P().name()));
|
name.append(QString("_%1").arg(path.last().P().name()));
|
||||||
}
|
}
|
||||||
|
setName(name);
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
|
@ -78,6 +78,7 @@ enum class MeasurementsType : char { Standard, Individual };
|
||||||
enum class NodeDetail : char { Contour, Modeling };
|
enum class NodeDetail : char { Contour, Modeling };
|
||||||
enum class Contour : char { OpenContour, CloseContour };
|
enum class Contour : char { OpenContour, CloseContour };
|
||||||
enum class EquidistantType : char { OpenEquidistant, CloseEquidistant };
|
enum class EquidistantType : char { OpenEquidistant, CloseEquidistant };
|
||||||
|
enum class GOType : char { Point, Arc, Spline, SplinePath, Unknown };
|
||||||
|
|
||||||
enum class GHeights : unsigned char { ALL,
|
enum class GHeights : unsigned char { ALL,
|
||||||
H92=92, H98=98, H104=104, H110=110, H116=116, H122=122, H128=128, H134=134,
|
H92=92, H98=98, H104=104, H110=110, H116=116, H122=122, H128=128, H134=134,
|
||||||
|
|
Loading…
Reference in New Issue
Block a user