Refactoring.
This commit is contained in:
parent
576e3bbbf2
commit
05d064af1e
|
@ -53,10 +53,6 @@ const quint16 VAbstractPieceData::classVersion = 3;
|
|||
|
||||
const qreal maxL = 3.5;
|
||||
|
||||
const qreal VSAPoint::passmarkFactor = 0.5;
|
||||
const qreal VSAPoint::maxPassmarkLength = MmToPixel(10.);
|
||||
const qreal VSAPoint::minSAWidth = accuracyPointOnLine + accuracyPointOnLine*0.5;
|
||||
|
||||
namespace
|
||||
{
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
|
@ -1658,45 +1654,6 @@ auto VAbstractPiece::GetUniqueID() const -> QString
|
|||
return d->m_uuid.toString();
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
auto VSAPoint::GetSABefore(qreal width) const -> qreal
|
||||
{
|
||||
if (m_before < 0)
|
||||
{
|
||||
return width;
|
||||
}
|
||||
return qMax(m_before, minSAWidth);
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
auto VSAPoint::GetSAAfter(qreal width) const -> qreal
|
||||
{
|
||||
if (m_after < 0)
|
||||
{
|
||||
return width;
|
||||
}
|
||||
return qMax(m_after, minSAWidth);
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
auto VSAPoint::MaxLocalSA(qreal width) const -> qreal
|
||||
{
|
||||
return qMax(GetSAAfter(width), GetSABefore(width));
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
auto VSAPoint::PassmarkLength(qreal width) const -> qreal
|
||||
{
|
||||
if (not m_manualPassmarkLength)
|
||||
{
|
||||
qreal passmarkLength = MaxLocalSA(width) * passmarkFactor;
|
||||
passmarkLength = qMin(passmarkLength, maxPassmarkLength);
|
||||
return passmarkLength;
|
||||
}
|
||||
|
||||
return m_passmarkLength;
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
auto VSAPoint::toJson() const -> QJsonObject
|
||||
{
|
||||
|
|
|
@ -28,11 +28,14 @@
|
|||
#ifndef VSAPOINT_H
|
||||
#define VSAPOINT_H
|
||||
|
||||
#include <QtGlobal>
|
||||
#include <QMetaType>
|
||||
|
||||
#if QT_VERSION < QT_VERSION_CHECK(5, 5, 0)
|
||||
#include "../vmisc/diagnostic.h"
|
||||
#endif // QT_VERSION < QT_VERSION_CHECK(5, 5, 0)
|
||||
#include "../vmisc/def.h"
|
||||
#include "../ifc/ifcdef.h"
|
||||
#include "../vgeometry/vgeometrydef.h"
|
||||
|
||||
#include <QPointF>
|
||||
|
||||
|
@ -46,35 +49,40 @@ QT_WARNING_DISABLE_GCC("-Wnon-virtual-dtor")
|
|||
class VSAPoint : public QPointF
|
||||
{
|
||||
public:
|
||||
Q_DECL_CONSTEXPR VSAPoint() V_NOEXCEPT_EXPR (true);
|
||||
QT_WARNING_PUSH
|
||||
QT_WARNING_DISABLE_GCC("-Wnoexcept")
|
||||
|
||||
Q_DECL_CONSTEXPR VSAPoint() = default;
|
||||
|
||||
QT_WARNING_POP
|
||||
|
||||
Q_DECL_CONSTEXPR VSAPoint(qreal xpos, qreal ypos);
|
||||
Q_DECL_CONSTEXPR explicit VSAPoint(QPointF p);
|
||||
|
||||
Q_DECL_CONSTEXPR qreal GetSABefore() const;
|
||||
qreal GetSABefore(qreal width) const;
|
||||
void SetSABefore(qreal value);
|
||||
Q_DECL_CONSTEXPR auto GetSABefore() const -> qreal;
|
||||
Q_DECL_CONSTEXPR auto GetSAAfter() const -> qreal;
|
||||
Q_DECL_CONSTEXPR auto GetAngleType() const -> PieceNodeAngle;
|
||||
Q_DECL_CONSTEXPR auto IsManualPasskmarkLength() const -> bool;
|
||||
Q_DECL_CONSTEXPR auto GetPasskmarkLength() const -> qreal;
|
||||
|
||||
Q_DECL_CONSTEXPR qreal GetSAAfter() const;
|
||||
qreal GetSAAfter(qreal width) const;
|
||||
void SetSAAfter(qreal value);
|
||||
Q_DECL_RELAXED_CONSTEXPR auto GetSABefore(qreal width) const -> qreal;
|
||||
Q_DECL_RELAXED_CONSTEXPR auto GetSAAfter(qreal width) const -> qreal;
|
||||
|
||||
Q_DECL_CONSTEXPR PieceNodeAngle GetAngleType() const;
|
||||
void SetAngleType(PieceNodeAngle value);
|
||||
Q_DECL_RELAXED_CONSTEXPR void SetSABefore(qreal value);
|
||||
Q_DECL_RELAXED_CONSTEXPR void SetSAAfter(qreal value);
|
||||
|
||||
Q_DECL_CONSTEXPR bool IsManualPasskmarkLength() const;
|
||||
Q_DECL_RELAXED_CONSTEXPR void SetAngleType(PieceNodeAngle value);
|
||||
Q_DECL_RELAXED_CONSTEXPR void SetManualPasskmarkLength(bool value);
|
||||
|
||||
Q_DECL_CONSTEXPR qreal GetPasskmarkLength() const;
|
||||
Q_DECL_RELAXED_CONSTEXPR void SetPasskmarkLength(qreal value);
|
||||
|
||||
qreal MaxLocalSA(qreal width) const;
|
||||
qreal PassmarkLength(qreal width) const;
|
||||
Q_DECL_RELAXED_CONSTEXPR auto MaxLocalSA(qreal width) const -> qreal;
|
||||
Q_DECL_RELAXED_CONSTEXPR auto PassmarkLength(qreal width) const -> qreal;
|
||||
|
||||
QJsonObject toJson() const;
|
||||
auto toJson() const -> QJsonObject;
|
||||
|
||||
static const qreal passmarkFactor;
|
||||
static const qreal maxPassmarkLength;
|
||||
static const qreal minSAWidth;
|
||||
static constexpr qreal passmarkFactor{0.5};
|
||||
static constexpr qreal maxPassmarkLength{MmToPixel(10.)};
|
||||
static constexpr qreal minSAWidth{accuracyPointOnLine + accuracyPointOnLine*0.5};
|
||||
|
||||
private:
|
||||
qreal m_before{-1};
|
||||
|
@ -84,13 +92,9 @@ private:
|
|||
qreal m_passmarkLength{0};
|
||||
};
|
||||
|
||||
Q_DECLARE_METATYPE(VSAPoint)
|
||||
Q_DECLARE_METATYPE(VSAPoint) // NOLINT
|
||||
Q_DECLARE_TYPEINFO(VSAPoint, Q_MOVABLE_TYPE); // NOLINT
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
Q_DECL_CONSTEXPR inline VSAPoint::VSAPoint() V_NOEXCEPT_EXPR (true)
|
||||
{}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
Q_DECL_CONSTEXPR inline VSAPoint::VSAPoint(qreal xpos, qreal ypos)
|
||||
: QPointF(xpos, ypos)
|
||||
|
@ -102,43 +106,63 @@ Q_DECL_CONSTEXPR inline VSAPoint::VSAPoint(QPointF p)
|
|||
{}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
Q_DECL_CONSTEXPR inline qreal VSAPoint::GetSABefore() const
|
||||
Q_DECL_CONSTEXPR inline auto VSAPoint::GetSABefore() const -> qreal
|
||||
{
|
||||
return m_before;
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
inline void VSAPoint::SetSABefore(qreal value)
|
||||
Q_DECL_RELAXED_CONSTEXPR inline auto VSAPoint::GetSABefore(qreal width) const -> qreal
|
||||
{
|
||||
if (m_before < 0)
|
||||
{
|
||||
return width;
|
||||
}
|
||||
return qMax(m_before, minSAWidth);
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
Q_DECL_RELAXED_CONSTEXPR inline void VSAPoint::SetSABefore(qreal value)
|
||||
{
|
||||
value < 0 ? m_before = -1 : m_before = value;
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
Q_DECL_CONSTEXPR inline qreal VSAPoint::GetSAAfter() const
|
||||
Q_DECL_CONSTEXPR inline auto VSAPoint::GetSAAfter() const -> qreal
|
||||
{
|
||||
return m_after;
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
inline void VSAPoint::SetSAAfter(qreal value)
|
||||
Q_DECL_RELAXED_CONSTEXPR inline auto VSAPoint::GetSAAfter(qreal width) const -> qreal
|
||||
{
|
||||
if (m_after < 0)
|
||||
{
|
||||
return width;
|
||||
}
|
||||
return qMax(m_after, minSAWidth);
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
Q_DECL_RELAXED_CONSTEXPR inline void VSAPoint::SetSAAfter(qreal value)
|
||||
{
|
||||
value < 0 ? m_after = -1 : m_after = value;
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
Q_DECL_CONSTEXPR inline PieceNodeAngle VSAPoint::GetAngleType() const
|
||||
Q_DECL_CONSTEXPR inline auto VSAPoint::GetAngleType() const -> PieceNodeAngle
|
||||
{
|
||||
return m_angle;
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
inline void VSAPoint::SetAngleType(PieceNodeAngle value)
|
||||
Q_DECL_RELAXED_CONSTEXPR inline void VSAPoint::SetAngleType(PieceNodeAngle value)
|
||||
{
|
||||
m_angle = value;
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
Q_DECL_CONSTEXPR inline bool VSAPoint::IsManualPasskmarkLength() const
|
||||
Q_DECL_CONSTEXPR inline auto VSAPoint::IsManualPasskmarkLength() const -> bool
|
||||
{
|
||||
return m_manualPassmarkLength;
|
||||
}
|
||||
|
@ -150,7 +174,7 @@ Q_DECL_RELAXED_CONSTEXPR inline void VSAPoint::SetManualPasskmarkLength(bool val
|
|||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
Q_DECL_CONSTEXPR inline qreal VSAPoint::GetPasskmarkLength() const
|
||||
Q_DECL_CONSTEXPR inline auto VSAPoint::GetPasskmarkLength() const -> qreal
|
||||
{
|
||||
return m_passmarkLength;
|
||||
}
|
||||
|
@ -161,6 +185,25 @@ Q_DECL_RELAXED_CONSTEXPR inline void VSAPoint::SetPasskmarkLength(qreal value)
|
|||
m_passmarkLength = value;
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
Q_DECL_RELAXED_CONSTEXPR inline auto VSAPoint::MaxLocalSA(qreal width) const -> qreal
|
||||
{
|
||||
return qMax(GetSAAfter(width), GetSABefore(width));
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
Q_DECL_RELAXED_CONSTEXPR inline auto VSAPoint::PassmarkLength(qreal width) const -> qreal
|
||||
{
|
||||
if (not m_manualPassmarkLength)
|
||||
{
|
||||
qreal passmarkLength = MaxLocalSA(width) * passmarkFactor;
|
||||
passmarkLength = qMin(passmarkLength, maxPassmarkLength);
|
||||
return passmarkLength;
|
||||
}
|
||||
|
||||
return m_passmarkLength;
|
||||
}
|
||||
|
||||
QT_WARNING_POP
|
||||
|
||||
#endif // VSAPOINT_H
|
||||
|
|
|
@ -1110,6 +1110,9 @@ VPassmark VPiece::CreatePassmark(const QVector<VPieceNode> &path, int previousIn
|
|||
return VPassmark();
|
||||
}
|
||||
|
||||
QT_WARNING_PUSH
|
||||
QT_WARNING_DISABLE_GCC("-Wnoexcept")
|
||||
|
||||
VPiecePassmarkData passmarkData;
|
||||
passmarkData.previousSAPoint = previousSAPoint;
|
||||
passmarkData.passmarkSAPoint = passmarkSAPoint;
|
||||
|
@ -1125,6 +1128,8 @@ VPassmark VPiece::CreatePassmark(const QVector<VPieceNode> &path, int previousIn
|
|||
passmarkData.id = path.at(passmarkIndex).GetId();
|
||||
passmarkData.globalPassmarkLength = ToPixel(GlobalPassmarkLength(data), *data->GetPatternUnit());
|
||||
|
||||
QT_WARNING_POP
|
||||
|
||||
return VPassmark(passmarkData);
|
||||
}
|
||||
|
||||
|
|
|
@ -30,9 +30,6 @@
|
|||
#include "../vpatterndb/vcontainer.h"
|
||||
#include "../vpatterndb/vpiece.h"
|
||||
#include "../vpatterndb/vpassmark.h"
|
||||
#include "../vpatterndb/vpiecenode.h"
|
||||
#include "../vpatterndb/vpiecepath.h"
|
||||
#include "../vgeometry/vsplinepath.h"
|
||||
#include "../vmisc/vabstractvalapplication.h"
|
||||
|
||||
#include <QtTest>
|
||||
|
@ -75,6 +72,9 @@ void TST_VPiece::TestSAPassmark_data()
|
|||
auto ASSERT_TEST_CASE = [this](const char *title, const QString &passmarkData, const QString &seamAllowance,
|
||||
const QString &shape)
|
||||
{
|
||||
QT_WARNING_PUSH
|
||||
QT_WARNING_DISABLE_GCC("-Wnoexcept")
|
||||
|
||||
VPiecePassmarkData inputPassmarkData;
|
||||
AbstractTest::PassmarkDataFromJson(passmarkData, inputPassmarkData);
|
||||
|
||||
|
@ -85,6 +85,8 @@ void TST_VPiece::TestSAPassmark_data()
|
|||
AbstractTest::PassmarkShapeFromJson(shape, inputOutputShape);
|
||||
|
||||
QTest::newRow(title) << inputPassmarkData << inputSeamAllowance << inputOutputShape;
|
||||
|
||||
QT_WARNING_POP
|
||||
};
|
||||
|
||||
// See file src/app/share/collection/bugs/Issue_#924.val
|
||||
|
|
Loading…
Reference in New Issue
Block a user