VAbstractDetail parent class for VDetail.
--HG-- branch : feature
This commit is contained in:
parent
112dbd7f4e
commit
4ba488d0c0
|
@ -393,6 +393,15 @@ DEPENDPATH += $$PWD/../libs/vobj
|
||||||
win32:!win32-g++: PRE_TARGETDEPS += $$OUT_PWD/../libs/vobj/$${DESTDIR}/vobj.lib
|
win32:!win32-g++: PRE_TARGETDEPS += $$OUT_PWD/../libs/vobj/$${DESTDIR}/vobj.lib
|
||||||
else:unix|win32-g++: PRE_TARGETDEPS += $$OUT_PWD/../libs/vobj/$${DESTDIR}/libvobj.a
|
else:unix|win32-g++: PRE_TARGETDEPS += $$OUT_PWD/../libs/vobj/$${DESTDIR}/libvobj.a
|
||||||
|
|
||||||
|
# VLayout static library
|
||||||
|
unix|win32: LIBS += -L$$OUT_PWD/../libs/vlayout/$${DESTDIR}/ -lvlayout
|
||||||
|
|
||||||
|
INCLUDEPATH += $$PWD/../libs/vlayout
|
||||||
|
DEPENDPATH += $$PWD/../libs/vlayout
|
||||||
|
|
||||||
|
win32:!win32-g++: PRE_TARGETDEPS += $$OUT_PWD/../libs/vlayout/$${DESTDIR}/vlayout.lib
|
||||||
|
else:unix|win32-g++: PRE_TARGETDEPS += $$OUT_PWD/../libs/vlayout/$${DESTDIR}/libvlayout.a
|
||||||
|
|
||||||
|
|
||||||
# Strip after you link all libaries.
|
# Strip after you link all libaries.
|
||||||
CONFIG(release, debug|release){
|
CONFIG(release, debug|release){
|
||||||
|
|
|
@ -32,27 +32,45 @@
|
||||||
#include <QString>
|
#include <QString>
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
/**
|
||||||
|
* @brief VDetail default contructor. Create empty detail.
|
||||||
|
*/
|
||||||
VDetail::VDetail()
|
VDetail::VDetail()
|
||||||
:d(new VDetailData)
|
:VAbstractDetail(), d(new VDetailData)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
/**
|
||||||
|
* @brief VDetail constructor.
|
||||||
|
* @param name detail name.
|
||||||
|
* @param nodes list of nodes.
|
||||||
|
*/
|
||||||
VDetail::VDetail(const QString &name, const QVector<VNodeDetail> &nodes)
|
VDetail::VDetail(const QString &name, const QVector<VNodeDetail> &nodes)
|
||||||
:d(new VDetailData(name, nodes))
|
:VAbstractDetail(name), d(new VDetailData(nodes))
|
||||||
{}
|
{}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
/**
|
||||||
|
* @brief VDetail copy constructor.
|
||||||
|
* @param detail detail.
|
||||||
|
*/
|
||||||
VDetail::VDetail(const VDetail &detail)
|
VDetail::VDetail(const VDetail &detail)
|
||||||
:d (detail.d)
|
:VAbstractDetail(detail), d (detail.d)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
/**
|
||||||
|
* @brief operator = assignment operator.
|
||||||
|
* @param detail detail.
|
||||||
|
* @return new detail.
|
||||||
|
*/
|
||||||
VDetail &VDetail::operator =(const VDetail &detail)
|
VDetail &VDetail::operator =(const VDetail &detail)
|
||||||
{
|
{
|
||||||
if ( &detail == this )
|
if ( &detail == this )
|
||||||
{
|
{
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
VAbstractDetail::operator=(detail);
|
||||||
d = detail.d;
|
d = detail.d;
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
@ -62,24 +80,31 @@ VDetail::~VDetail()
|
||||||
{}
|
{}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
/**
|
||||||
|
* @brief Clear detail full clear.
|
||||||
|
*/
|
||||||
void VDetail::Clear()
|
void VDetail::Clear()
|
||||||
{
|
{
|
||||||
d->nodes.clear();
|
d->nodes.clear();
|
||||||
d->name.clear();
|
|
||||||
d->mx = 0;
|
d->mx = 0;
|
||||||
d->my = 0;
|
d->my = 0;
|
||||||
d->seamAllowance = true;
|
|
||||||
d->closed = true;
|
|
||||||
d->width = 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
/**
|
||||||
|
* @brief ClearNodes clear list of nodes.
|
||||||
|
*/
|
||||||
void VDetail::ClearNodes()
|
void VDetail::ClearNodes()
|
||||||
{
|
{
|
||||||
d->nodes.clear();
|
d->nodes.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
/**
|
||||||
|
* @brief Containes check if detail containe this id.
|
||||||
|
* @param id object id.
|
||||||
|
* @return true if containe.
|
||||||
|
*/
|
||||||
bool VDetail::Containes(const quint32 &id) const
|
bool VDetail::Containes(const quint32 &id) const
|
||||||
{
|
{
|
||||||
for (int i = 0; i < d->nodes.size(); ++i)
|
for (int i = 0; i < d->nodes.size(); ++i)
|
||||||
|
@ -94,36 +119,66 @@ bool VDetail::Containes(const quint32 &id) const
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
/**
|
||||||
|
* @brief operator [] find node by index in list.
|
||||||
|
* @param indx index node in list.
|
||||||
|
* @return node
|
||||||
|
*/
|
||||||
VNodeDetail &VDetail::operator [](int indx)
|
VNodeDetail &VDetail::operator [](int indx)
|
||||||
{
|
{
|
||||||
return d->nodes[indx];
|
return d->nodes[indx];
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
/**
|
||||||
|
* @brief at find node by index in list.
|
||||||
|
* @param indx index node in list.
|
||||||
|
* @return const node.
|
||||||
|
*/
|
||||||
const VNodeDetail &VDetail::at(int indx) const
|
const VNodeDetail &VDetail::at(int indx) const
|
||||||
{
|
{
|
||||||
return d->nodes.at(indx);
|
return d->nodes.at(indx);
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
/**
|
||||||
|
* @brief indexOfNode return index in list node using id object.
|
||||||
|
* @param id object (arc, point, spline, splinePath) id.
|
||||||
|
* @return index in list or -1 id can't find.
|
||||||
|
*/
|
||||||
int VDetail::indexOfNode(const quint32 &id) const
|
int VDetail::indexOfNode(const quint32 &id) const
|
||||||
{
|
{
|
||||||
return indexOfNode(d->nodes, id);
|
return indexOfNode(d->nodes, id);
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
/**
|
||||||
|
* @brief id return id detail in list data.
|
||||||
|
* @return id.
|
||||||
|
*/
|
||||||
quint32 VDetail::id() const
|
quint32 VDetail::id() const
|
||||||
{
|
{
|
||||||
return d->_id;
|
return d->_id;
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
/**
|
||||||
|
* @brief setId set id detail in list data.
|
||||||
|
* @param id detail id.
|
||||||
|
*/
|
||||||
void VDetail::setId(const quint32 &id)
|
void VDetail::setId(const quint32 &id)
|
||||||
{
|
{
|
||||||
d->_id = id;
|
d->_id = id;
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
/**
|
||||||
|
* @brief OnEdge checks if two poins located on the edge. Edge is line between two points. If between two points
|
||||||
|
* located arcs or splines ignore this.
|
||||||
|
* @param p1 id first point.
|
||||||
|
* @param p2 id second point.
|
||||||
|
* @return true - on edge, false - no.
|
||||||
|
*/
|
||||||
bool VDetail::OnEdge(const quint32 &p1, const quint32 &p2) const
|
bool VDetail::OnEdge(const quint32 &p1, const quint32 &p2) const
|
||||||
{
|
{
|
||||||
QVector<VNodeDetail> list = listNodePoint();
|
QVector<VNodeDetail> list = listNodePoint();
|
||||||
|
@ -162,6 +217,13 @@ bool VDetail::OnEdge(const quint32 &p1, const quint32 &p2) const
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
/**
|
||||||
|
* @brief Edge return edge index in detail. Edge is line between two points. If between two points
|
||||||
|
* located arcs or splines ignore this.
|
||||||
|
* @param p1 id first point.
|
||||||
|
* @param p2 id second point.
|
||||||
|
* @return edge index or -1 if points don't located on edge
|
||||||
|
*/
|
||||||
int VDetail::Edge(const quint32 &p1, const quint32 &p2) const
|
int VDetail::Edge(const quint32 &p1, const quint32 &p2) const
|
||||||
{
|
{
|
||||||
if (OnEdge(p1, p2) == false)
|
if (OnEdge(p1, p2) == false)
|
||||||
|
@ -187,6 +249,12 @@ int VDetail::Edge(const quint32 &p1, const quint32 &p2) const
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
/**
|
||||||
|
* @brief NodeOnEdge return nodes located on edge with index.
|
||||||
|
* @param index index of edge.
|
||||||
|
* @param p1 first node.
|
||||||
|
* @param p2 second node.
|
||||||
|
*/
|
||||||
void VDetail::NodeOnEdge(const quint32 &index, VNodeDetail &p1, VNodeDetail &p2) const
|
void VDetail::NodeOnEdge(const quint32 &index, VNodeDetail &p1, VNodeDetail &p2) const
|
||||||
{
|
{
|
||||||
QVector<VNodeDetail> list = listNodePoint();
|
QVector<VNodeDetail> list = listNodePoint();
|
||||||
|
@ -207,6 +275,11 @@ void VDetail::NodeOnEdge(const quint32 &index, VNodeDetail &p1, VNodeDetail &p2)
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
/**
|
||||||
|
* @brief RemoveEdge return detail without edge with index.
|
||||||
|
* @param index idex of edge.
|
||||||
|
* @return detail without edge with index.
|
||||||
|
*/
|
||||||
VDetail VDetail::RemoveEdge(const quint32 &index) const
|
VDetail VDetail::RemoveEdge(const quint32 &index) const
|
||||||
{
|
{
|
||||||
VDetail det(*this);
|
VDetail det(*this);
|
||||||
|
@ -250,6 +323,12 @@ VDetail VDetail::RemoveEdge(const quint32 &index) const
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
/**
|
||||||
|
* @brief Missing find missing ids in detail. When we deleted object in detail and return this detail need
|
||||||
|
* understand, what nodes need make invisible.
|
||||||
|
* @param det changed detail.
|
||||||
|
* @return list with missing detail.
|
||||||
|
*/
|
||||||
QList<quint32> VDetail::Missing(const VDetail &det) const
|
QList<quint32> VDetail::Missing(const VDetail &det) const
|
||||||
{
|
{
|
||||||
if (d->nodes.size() == det.CountNode())
|
if (d->nodes.size() == det.CountNode())
|
||||||
|
@ -275,6 +354,10 @@ QList<quint32> VDetail::Missing(const VDetail &det) const
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
/**
|
||||||
|
* @brief listNodePoint return list nodes only with points.
|
||||||
|
* @return list points node.
|
||||||
|
*/
|
||||||
QVector<VNodeDetail> VDetail::listNodePoint() const
|
QVector<VNodeDetail> VDetail::listNodePoint() const
|
||||||
{
|
{
|
||||||
QVector<VNodeDetail> list;
|
QVector<VNodeDetail> list;
|
||||||
|
@ -289,6 +372,12 @@ QVector<VNodeDetail> VDetail::listNodePoint() const
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
/**
|
||||||
|
* @brief indexOfNode return index in list node using id object.
|
||||||
|
* @param list list nodes detail.
|
||||||
|
* @param id object (arc, point, spline, splinePath) id.
|
||||||
|
* @return index in list or -1 id can't find.
|
||||||
|
*/
|
||||||
int VDetail::indexOfNode(const QVector<VNodeDetail> &list, const quint32 &id)
|
int VDetail::indexOfNode(const QVector<VNodeDetail> &list, const quint32 &id)
|
||||||
{
|
{
|
||||||
for (int i = 0; i < list.size(); ++i)
|
for (int i = 0; i < list.size(); ++i)
|
||||||
|
@ -303,96 +392,80 @@ int VDetail::indexOfNode(const QVector<VNodeDetail> &list, const quint32 &id)
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
/**
|
||||||
|
* @brief append append in the end of list node.
|
||||||
|
* @param node new node.
|
||||||
|
*/
|
||||||
void VDetail::append(const VNodeDetail &node)
|
void VDetail::append(const VNodeDetail &node)
|
||||||
{
|
{
|
||||||
d->nodes.append(node);
|
d->nodes.append(node);
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
/**
|
||||||
|
* @brief CountNode return count nodes.
|
||||||
|
* @return count.
|
||||||
|
*/
|
||||||
qint32 VDetail::CountNode() const
|
qint32 VDetail::CountNode() const
|
||||||
{
|
{
|
||||||
return d->nodes.size();
|
return d->nodes.size();
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
QString VDetail::getName() const
|
/**
|
||||||
{
|
* @brief getMx return bias for X axis.
|
||||||
return d->name;
|
* @return x bias.
|
||||||
}
|
*/
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
|
||||||
void VDetail::setName(const QString &value)
|
|
||||||
{
|
|
||||||
d->name = value;
|
|
||||||
}
|
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
|
||||||
qreal VDetail::getMx() const
|
qreal VDetail::getMx() const
|
||||||
{
|
{
|
||||||
return d->mx;
|
return d->mx;
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
/**
|
||||||
|
* @brief setMx set bias for X axis.
|
||||||
|
* @param value new x bias.
|
||||||
|
*/
|
||||||
void VDetail::setMx(const qreal &value)
|
void VDetail::setMx(const qreal &value)
|
||||||
{
|
{
|
||||||
d->mx = value;
|
d->mx = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
/**
|
||||||
|
* @brief getMy get bias for y axis.
|
||||||
|
* @return y axis.
|
||||||
|
*/
|
||||||
qreal VDetail::getMy() const
|
qreal VDetail::getMy() const
|
||||||
{
|
{
|
||||||
return d->my;
|
return d->my;
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
/**
|
||||||
|
* @brief setMy set bias for y axis.
|
||||||
|
* @param value new y bias.
|
||||||
|
*/
|
||||||
void VDetail::setMy(const qreal &value)
|
void VDetail::setMy(const qreal &value)
|
||||||
{
|
{
|
||||||
d->my = value;
|
d->my = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
bool VDetail::getSeamAllowance() const
|
/**
|
||||||
{
|
* @brief getNodes return list of nodes.
|
||||||
return d->seamAllowance;
|
* @return list of nodes.
|
||||||
}
|
*/
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
|
||||||
void VDetail::setSeamAllowance(bool value)
|
|
||||||
{
|
|
||||||
d->seamAllowance = value;
|
|
||||||
}
|
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
|
||||||
bool VDetail::getClosed() const
|
|
||||||
{
|
|
||||||
return d->closed;
|
|
||||||
}
|
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
|
||||||
void VDetail::setClosed(bool value)
|
|
||||||
{
|
|
||||||
d->closed = value;
|
|
||||||
}
|
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
|
||||||
qreal VDetail::getWidth() const
|
|
||||||
{
|
|
||||||
return d->width;
|
|
||||||
}
|
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
|
||||||
void VDetail::setWidth(const qreal &value)
|
|
||||||
{
|
|
||||||
d->width = value;
|
|
||||||
}
|
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
|
||||||
QVector<VNodeDetail> VDetail::getNodes() const
|
QVector<VNodeDetail> VDetail::getNodes() const
|
||||||
{
|
{
|
||||||
return d->nodes;
|
return d->nodes;
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
/**
|
||||||
|
* @brief setNodes set list of nodes
|
||||||
|
* @param value list of nodes
|
||||||
|
*/
|
||||||
void VDetail::setNodes(const QVector<VNodeDetail> &value)
|
void VDetail::setNodes(const QVector<VNodeDetail> &value)
|
||||||
{
|
{
|
||||||
d->nodes = value;
|
d->nodes = value;
|
||||||
|
|
|
@ -30,212 +30,56 @@
|
||||||
#define VDETAIL_H
|
#define VDETAIL_H
|
||||||
|
|
||||||
#include "vnodedetail.h"
|
#include "vnodedetail.h"
|
||||||
#include <QString>
|
|
||||||
#include <QVector>
|
#include <QVector>
|
||||||
|
|
||||||
class QString;
|
#include "../libs/vlayout/vabstractdetail.h"
|
||||||
|
|
||||||
class VDetailData;
|
class VDetailData;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief The VDetail class for path of object (points, arcs, splines).
|
* @brief The VDetail class for path of object (points, arcs, splines).
|
||||||
*/
|
*/
|
||||||
class VDetail
|
class VDetail :public VAbstractDetail
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
/**
|
|
||||||
* @brief VDetail default contructor. Create empty detail.
|
|
||||||
*/
|
|
||||||
VDetail();
|
VDetail();
|
||||||
/**
|
|
||||||
* @brief VDetail constructor.
|
|
||||||
* @param name detail name.
|
|
||||||
* @param nodes list of nodes.
|
|
||||||
*/
|
|
||||||
VDetail(const QString &name, const QVector<VNodeDetail> &nodes);
|
VDetail(const QString &name, const QVector<VNodeDetail> &nodes);
|
||||||
/**
|
|
||||||
* @brief VDetail copy constructor.
|
|
||||||
* @param detail detail.
|
|
||||||
*/
|
|
||||||
VDetail(const VDetail &detail);
|
VDetail(const VDetail &detail);
|
||||||
/**
|
|
||||||
* @brief operator = assignment operator.
|
|
||||||
* @param detail detail.
|
|
||||||
* @return new detail.
|
|
||||||
*/
|
|
||||||
VDetail &operator=(const VDetail &detail);
|
VDetail &operator=(const VDetail &detail);
|
||||||
~VDetail();
|
virtual ~VDetail();
|
||||||
/**
|
|
||||||
* @brief append append in the end of list node.
|
|
||||||
* @param node new node.
|
|
||||||
*/
|
|
||||||
void append(const VNodeDetail &node);
|
void append(const VNodeDetail &node);
|
||||||
/**
|
|
||||||
* @brief Clear detail full clear.
|
|
||||||
*/
|
|
||||||
void Clear();
|
void Clear();
|
||||||
/**
|
|
||||||
* @brief ClearNodes clear list of nodes.
|
|
||||||
*/
|
|
||||||
void ClearNodes();
|
void ClearNodes();
|
||||||
/**
|
|
||||||
* @brief CountNode return count nodes.
|
|
||||||
* @return count.
|
|
||||||
*/
|
|
||||||
qint32 CountNode() const;
|
qint32 CountNode() const;
|
||||||
/**
|
|
||||||
* @brief Containes check if detail containe this id.
|
|
||||||
* @param id object id.
|
|
||||||
* @return true if containe.
|
|
||||||
*/
|
|
||||||
bool Containes(const quint32 &id)const;
|
bool Containes(const quint32 &id)const;
|
||||||
/**
|
|
||||||
* @brief operator [] find node by index in list.
|
|
||||||
* @param indx index node in list.
|
|
||||||
* @return node
|
|
||||||
*/
|
|
||||||
VNodeDetail & operator[](int indx);
|
VNodeDetail & operator[](int indx);
|
||||||
/**
|
|
||||||
* @brief at find node by index in list.
|
|
||||||
* @param indx index node in list.
|
|
||||||
* @return const node.
|
|
||||||
*/
|
|
||||||
const VNodeDetail & at ( int indx ) const;
|
const VNodeDetail & at ( int indx ) const;
|
||||||
/**
|
|
||||||
* @brief getName return detail name.
|
qreal getMx() const;
|
||||||
* @return name.
|
void setMx(const qreal &value);
|
||||||
*/
|
|
||||||
QString getName() const;
|
qreal getMy() const;
|
||||||
/**
|
void setMy(const qreal &value);
|
||||||
* @brief setName set detail name.
|
|
||||||
* @param value new name.
|
quint32 id() const;
|
||||||
*/
|
void setId(const quint32 &id);
|
||||||
void setName(const QString &value);
|
|
||||||
/**
|
|
||||||
* @brief getMx return bias for X axis.
|
|
||||||
* @return x bias.
|
|
||||||
*/
|
|
||||||
qreal getMx() const;
|
|
||||||
/**
|
|
||||||
* @brief setMx set bias for X axis.
|
|
||||||
* @param value new x bias.
|
|
||||||
*/
|
|
||||||
void setMx(const qreal &value);
|
|
||||||
/**
|
|
||||||
* @brief getMy get bias for y axis.
|
|
||||||
* @return y axis.
|
|
||||||
*/
|
|
||||||
qreal getMy() const;
|
|
||||||
/**
|
|
||||||
* @brief setMy set bias for y axis.
|
|
||||||
* @param value new y bias.
|
|
||||||
*/
|
|
||||||
void setMy(const qreal &value);
|
|
||||||
/**
|
|
||||||
* @brief getSeamAllowance keep status for seam allowance detail.
|
|
||||||
* @return true - need seam allowance, false - no need seam allowance.
|
|
||||||
*/
|
|
||||||
bool getSeamAllowance() const;
|
|
||||||
/**
|
|
||||||
* @brief setSeamAllowance set status for seam allowance detail.
|
|
||||||
* @param value true - need seam allowance, false - no need seam allowance.
|
|
||||||
*/
|
|
||||||
void setSeamAllowance(bool value);
|
|
||||||
/**
|
|
||||||
* @brief getClosed keep close status for detail equdistant.
|
|
||||||
* @return true - close equdistant, false - don't close equdistant.
|
|
||||||
*/
|
|
||||||
bool getClosed() const;
|
|
||||||
/**
|
|
||||||
* @brief setClosed set close status for detail equdistant.
|
|
||||||
* @param value true - close equdistant, false - don't close equdistant.
|
|
||||||
*/
|
|
||||||
void setClosed(bool value);
|
|
||||||
/**
|
|
||||||
* @brief getWidth return value detail seam allowance.
|
|
||||||
* @return value in mm.
|
|
||||||
*/
|
|
||||||
qreal getWidth() const;
|
|
||||||
/**
|
|
||||||
* @brief setWidth set value detail seam allowance.
|
|
||||||
* @param value width in mm.
|
|
||||||
*/
|
|
||||||
void setWidth(const qreal &value);
|
|
||||||
/**
|
|
||||||
* @brief getNodes return list of nodes.
|
|
||||||
* @return list of nodes.
|
|
||||||
*/
|
|
||||||
QVector<VNodeDetail> getNodes() const;
|
QVector<VNodeDetail> getNodes() const;
|
||||||
/**
|
void setNodes(const QVector<VNodeDetail> &value);
|
||||||
* @brief setNodes set list of nodes
|
|
||||||
* @param value list of nodes
|
int indexOfNode(const quint32 &id) const;
|
||||||
*/
|
bool OnEdge(const quint32 &p1, const quint32 &p2)const;
|
||||||
void setNodes(const QVector<VNodeDetail> &value);
|
int Edge(const quint32 &p1, const quint32 &p2)const;
|
||||||
/**
|
void NodeOnEdge(const quint32 &index, VNodeDetail &p1, VNodeDetail &p2)const;
|
||||||
* @brief indexOfNode return index in list node using id object.
|
VDetail RemoveEdge(const quint32 &index) const;
|
||||||
* @param id object (arc, point, spline, splinePath) id.
|
|
||||||
* @return index in list or -1 id can't find.
|
|
||||||
*/
|
|
||||||
int indexOfNode(const quint32 &id) const;
|
|
||||||
/**
|
|
||||||
* @brief id return id detail in list data.
|
|
||||||
* @return id.
|
|
||||||
*/
|
|
||||||
quint32 id() const;
|
|
||||||
/**
|
|
||||||
* @brief setId set id detail in list data.
|
|
||||||
* @param id detail id.
|
|
||||||
*/
|
|
||||||
void setId(const quint32 &id);
|
|
||||||
/**
|
|
||||||
* @brief OnEdge checks if two poins located on the edge. Edge is line between two points. If between two points
|
|
||||||
* located arcs or splines ignore this.
|
|
||||||
* @param p1 id first point.
|
|
||||||
* @param p2 id second point.
|
|
||||||
* @return true - on edge, false - no.
|
|
||||||
*/
|
|
||||||
bool OnEdge(const quint32 &p1, const quint32 &p2)const;
|
|
||||||
/**
|
|
||||||
* @brief Edge return edge index in detail. Edge is line between two points. If between two points
|
|
||||||
* located arcs or splines ignore this.
|
|
||||||
* @param p1 id first point.
|
|
||||||
* @param p2 id second point.
|
|
||||||
* @return edge index or -1 if points don't located on edge
|
|
||||||
*/
|
|
||||||
int Edge(const quint32 &p1, const quint32 &p2)const;
|
|
||||||
/**
|
|
||||||
* @brief NodeOnEdge return nodes located on edge with index.
|
|
||||||
* @param index index of edge.
|
|
||||||
* @param p1 first node.
|
|
||||||
* @param p2 second node.
|
|
||||||
*/
|
|
||||||
void NodeOnEdge(const quint32 &index, VNodeDetail &p1, VNodeDetail &p2)const;
|
|
||||||
/**
|
|
||||||
* @brief RemoveEdge return detail without edge with index.
|
|
||||||
* @param index idex of edge.
|
|
||||||
* @return detail without edge with index.
|
|
||||||
*/
|
|
||||||
VDetail RemoveEdge(const quint32 &index) const;
|
|
||||||
/**
|
|
||||||
* @brief Missing find missing ids in detail. When we deleted object in detail and return this detail need
|
|
||||||
* understand, what nodes need make invisible.
|
|
||||||
* @param det changed detail.
|
|
||||||
* @return list with missing detail.
|
|
||||||
*/
|
|
||||||
QList<quint32> Missing(const VDetail &det) const;
|
QList<quint32> Missing(const VDetail &det) const;
|
||||||
private:
|
private:
|
||||||
QSharedDataPointer<VDetailData> d;
|
QSharedDataPointer<VDetailData> d;
|
||||||
/**
|
|
||||||
* @brief listNodePoint return list nodes only with points.
|
|
||||||
* @return list points node.
|
|
||||||
*/
|
|
||||||
QVector<VNodeDetail> listNodePoint()const;
|
QVector<VNodeDetail> listNodePoint()const;
|
||||||
/**
|
static int indexOfNode(const QVector<VNodeDetail> &list, const quint32 &id);
|
||||||
* @brief indexOfNode return index in list node using id object.
|
|
||||||
* @param list list nodes detail.
|
|
||||||
* @param id object (arc, point, spline, splinePath) id.
|
|
||||||
* @return index in list or -1 id can't find.
|
|
||||||
*/
|
|
||||||
static int indexOfNode(const QVector<VNodeDetail> &list, const quint32 &id);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // VDETAIL_H
|
#endif // VDETAIL_H
|
||||||
|
|
|
@ -42,53 +42,30 @@ class VDetailData : public QSharedData
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
VDetailData()
|
VDetailData()
|
||||||
:_id(NULL_ID), nodes(QVector<VNodeDetail>()), name(QString()), mx(0), my(0), seamAllowance(true), closed(true),
|
:_id(NULL_ID), nodes(QVector<VNodeDetail>()), mx(0), my(0)
|
||||||
width(0)
|
|
||||||
{}
|
{}
|
||||||
|
|
||||||
VDetailData(const QString &name, const QVector<VNodeDetail> &nodes)
|
VDetailData(const QVector<VNodeDetail> &nodes)
|
||||||
:_id(NULL_ID), nodes(nodes), name(name), mx(0), my(0), seamAllowance(true), closed(true), width(0)
|
:_id(NULL_ID), nodes(nodes), mx(0), my(0)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
VDetailData(const VDetailData &detail)
|
VDetailData(const VDetailData &detail)
|
||||||
:QSharedData(detail), _id(NULL_ID), nodes(detail.nodes), name(detail.name), mx(detail.mx), my(detail.my),
|
:QSharedData(detail), _id(NULL_ID), nodes(detail.nodes), mx(detail.mx), my(detail.my)
|
||||||
seamAllowance(detail.seamAllowance), closed(detail.closed), width(detail.width)
|
|
||||||
{}
|
{}
|
||||||
|
|
||||||
~VDetailData() {}
|
~VDetailData() {}
|
||||||
|
|
||||||
/**
|
/** @brief _id id detail. */
|
||||||
* @brief _id id detail.
|
|
||||||
*/
|
|
||||||
quint32 _id;
|
quint32 _id;
|
||||||
/**
|
|
||||||
* @brief nodes list detail nodes.
|
/** @brief nodes list detail nodes. */
|
||||||
*/
|
|
||||||
QVector<VNodeDetail> nodes;
|
QVector<VNodeDetail> nodes;
|
||||||
/**
|
|
||||||
* @brief name detail name.
|
/** @brief mx bias x axis. */
|
||||||
*/
|
|
||||||
QString name;
|
|
||||||
/**
|
|
||||||
* @brief mx bias x axis.
|
|
||||||
*/
|
|
||||||
qreal mx;
|
qreal mx;
|
||||||
/**
|
|
||||||
* @brief my bias y axis.
|
/** @brief my bias y axis. */
|
||||||
*/
|
|
||||||
qreal my;
|
qreal my;
|
||||||
/**
|
|
||||||
* @brief seamAllowance status seamAllowance detail.
|
|
||||||
*/
|
|
||||||
bool seamAllowance;
|
|
||||||
/**
|
|
||||||
* @brief closed status equdistant detail.
|
|
||||||
*/
|
|
||||||
bool closed;
|
|
||||||
/**
|
|
||||||
* @brief width value seamAllowance in mm.
|
|
||||||
*/
|
|
||||||
qreal width;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#ifdef Q_CC_GNU
|
#ifdef Q_CC_GNU
|
||||||
|
|
|
@ -44,7 +44,7 @@ public:
|
||||||
VAbstractDetail(const QString &name);
|
VAbstractDetail(const QString &name);
|
||||||
VAbstractDetail(const VAbstractDetail &detail);
|
VAbstractDetail(const VAbstractDetail &detail);
|
||||||
VAbstractDetail &operator=(const VAbstractDetail &detail);
|
VAbstractDetail &operator=(const VAbstractDetail &detail);
|
||||||
~VAbstractDetail();
|
virtual ~VAbstractDetail();
|
||||||
|
|
||||||
void Clear();
|
void Clear();
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user