diff --git a/src/app/puzzle/layout/vppiece.cpp b/src/app/puzzle/layout/vppiece.cpp index cf385fb76..775300376 100644 --- a/src/app/puzzle/layout/vppiece.cpp +++ b/src/app/puzzle/layout/vppiece.cpp @@ -49,9 +49,9 @@ QT_WARNING_POP namespace { -constexpr qreal minStickyDistance = 3 / 25.4 * PrintDPI; // 3 mm -constexpr qreal maxStickyDistance = 10 / 25.4 * PrintDPI; // 10 mm -constexpr qreal stickyShift = 1 / 25.4 * PrintDPI; // 1 mm +constexpr qreal minStickyDistance = MmToPixel(3.); +constexpr qreal maxStickyDistance = MmToPixel(10.); +constexpr qreal stickyShift = MmToPixel(1.); //--------------------------------------------------------------------------------------------------------------------- auto CutEdge(const QLineF &edge) -> QVector diff --git a/src/app/puzzle/vptilefactory.h b/src/app/puzzle/vptilefactory.h index 403d9000a..8b9725b66 100644 --- a/src/app/puzzle/vptilefactory.h +++ b/src/app/puzzle/vptilefactory.h @@ -95,7 +95,7 @@ public: /** * @brief tileStripeWidth the width of the info / glueing stripe in Px */ - static constexpr qreal tileStripeWidth = 10.0 / 25.4 * PrintDPI; // 1 cm to pixels + static constexpr qreal tileStripeWidth = CmToPixel(1.0); auto WatermarkData() const -> const VWatermarkData &; diff --git a/src/libs/vgeometry/vabstractcurve.cpp b/src/libs/vgeometry/vabstractcurve.cpp index e292b173d..02fe1a5a2 100644 --- a/src/libs/vgeometry/vabstractcurve.cpp +++ b/src/libs/vgeometry/vabstractcurve.cpp @@ -40,10 +40,6 @@ #include "../vmisc/compatibility.h" #include "../ifc/exception/vexceptionobjecterror.h" -#if defined(__cpp_constexpr) && __cpp_constexpr-0 < 201304 -const qreal VAbstractCurve::minLength = ToPixel(1, Unit::Mm); -#endif - VAbstractCurve::VAbstractCurve(const GOType &type, const quint32 &idObject, const Draw &mode) :VGObject(type, idObject, mode), d (new VAbstractCurveData()) {} diff --git a/src/libs/vgeometry/vabstractcurve.h b/src/libs/vgeometry/vabstractcurve.h index b4f9949b0..71cd2365c 100644 --- a/src/libs/vgeometry/vabstractcurve.h +++ b/src/libs/vgeometry/vabstractcurve.h @@ -112,11 +112,7 @@ public: void SetAliasSuffix(const QString &aliasSuffix) override; -#if defined(__cpp_constexpr) && __cpp_constexpr-0 >= 201304 - static constexpr qreal minLength = ToPixel(1, Unit::Mm); -#else - static const qreal minLength; -#endif + static constexpr qreal minLength = MmToPixel(1.); protected: virtual void CreateName() =0; diff --git a/src/libs/vgeometry/vellipticalarc.cpp b/src/libs/vgeometry/vellipticalarc.cpp index 0ca6a3696..f9da95246 100644 --- a/src/libs/vgeometry/vellipticalarc.cpp +++ b/src/libs/vgeometry/vellipticalarc.cpp @@ -214,7 +214,7 @@ auto JoinVectors(const QVector &v1, const QVector &v2) -> QVec v = v1; - constexpr qreal accuracy = (0.0001/*mm*/ / 25.4) * PrintDPI; + constexpr qreal accuracy = MmToPixel(0.0001); for (auto p : v2) { diff --git a/src/libs/vgeometry/vgeometrydef.h b/src/libs/vgeometry/vgeometrydef.h index 75f2119cf..28571e649 100644 --- a/src/libs/vgeometry/vgeometrydef.h +++ b/src/libs/vgeometry/vgeometrydef.h @@ -97,7 +97,7 @@ private: }; Q_DECLARE_METATYPE(VLayoutPassmark) -constexpr qreal accuracyPointOnLine = (0.1555/*mm*/ / 25.4) * PrintDPI; +constexpr qreal accuracyPointOnLine = MmToPixel(0.1555); Q_REQUIRED_RESULT static inline bool VFuzzyComparePoints(const QPointF &p1, const QPointF &p2, qreal accuracy = accuracyPointOnLine); diff --git a/src/libs/vlayout/vabstractpiece.cpp b/src/libs/vlayout/vabstractpiece.cpp index 456f0401b..2126a56ba 100644 --- a/src/libs/vlayout/vabstractpiece.cpp +++ b/src/libs/vlayout/vabstractpiece.cpp @@ -54,7 +54,7 @@ const quint16 VAbstractPieceData::classVersion = 3; const qreal maxL = 3.5; const qreal VSAPoint::passmarkFactor = 0.5; -const qreal VSAPoint::maxPassmarkLength = (10/*mm*/ / 25.4) * PrintDPI; +const qreal VSAPoint::maxPassmarkLength = MmToPixel(10.); const qreal VSAPoint::minSAWidth = accuracyPointOnLine + accuracyPointOnLine*0.5; namespace diff --git a/src/libs/vlayout/vabstractpiece.h b/src/libs/vlayout/vabstractpiece.h index beab83021..b830d147c 100644 --- a/src/libs/vlayout/vabstractpiece.h +++ b/src/libs/vlayout/vabstractpiece.h @@ -246,7 +246,7 @@ auto VAbstractPiece::RemoveDublicates(const QVector &points, bool removeFirst p.append(ConstFirst(points)); // Default accuracy is not enough - constexpr qreal accuracy = (0.5/*mm*/ / 25.4) * PrintDPI; + constexpr qreal accuracy = MmToPixel(0.5); for (int i = 0; i < points.size(); ++i) { diff --git a/src/libs/vlayout/vposter.cpp b/src/libs/vlayout/vposter.cpp index 7c2b2b986..4f0155b7b 100644 --- a/src/libs/vlayout/vposter.cpp +++ b/src/libs/vlayout/vposter.cpp @@ -120,7 +120,7 @@ QPixmap WatermarkImageFromCache(const VWatermarkData &watermarkData, const QStri //--------------------------------------------------------------------------------------------------------------------- VPoster::VPoster(const QPrinter *printer) - :printer(printer), allowance(static_cast(qRound(10./25.4*PrintDPI)))//1 cm + :printer(printer), allowance(static_cast(qRound(CmToPixel(1.)))) { } diff --git a/src/libs/vmisc/def.h b/src/libs/vmisc/def.h index 3d2d3cb8e..e43af650a 100644 --- a/src/libs/vmisc/def.h +++ b/src/libs/vmisc/def.h @@ -375,17 +375,21 @@ const int userMaterialPlaceholdersQuantity = 20; QPixmap QPixmapFromCache(const QString &pixmapPath); void SetItemOverrideCursor(QGraphicsItem *item, const QString & pixmapPath, int hotX = -1, int hotY = -1); +template Q_DECL_CONSTEXPR inline auto MmToPixel(T val) -> T { return (val / 25.4) * PrintDPI; } +template Q_DECL_CONSTEXPR inline auto CmToPixel(T val) -> T { return ((val * 10.0) / 25.4) * PrintDPI; } +template Q_DECL_CONSTEXPR inline auto InchToPixel(T val) -> T { return val * PrintDPI; } + //--------------------------------------------------------------------------------------------------------------------- -Q_DECL_RELAXED_CONSTEXPR inline double ToPixel(double val, const Unit &unit) +Q_DECL_RELAXED_CONSTEXPR inline auto ToPixel(double val, const Unit &unit) -> double { switch (unit) { case Unit::Mm: - return (val / 25.4) * PrintDPI; + return MmToPixel(val); case Unit::Cm: - return ((val * 10.0) / 25.4) * PrintDPI; + return CmToPixel(val); case Unit::Inch: - return val * PrintDPI; + return InchToPixel(val); case Unit::Px: return val; default: @@ -394,17 +398,21 @@ Q_DECL_RELAXED_CONSTEXPR inline double ToPixel(double val, const Unit &unit) return 0; } +template Q_DECL_CONSTEXPR inline auto PixelToMm(T pix) -> T { return (pix / PrintDPI) * 25.4; } +template Q_DECL_CONSTEXPR inline auto PixelToCm(T pix) -> T { return ((pix / PrintDPI) * 25.4) / 10.0; } +template Q_DECL_CONSTEXPR inline auto PixelToInch(T pix) -> T { return pix / PrintDPI; } + //--------------------------------------------------------------------------------------------------------------------- -Q_DECL_RELAXED_CONSTEXPR inline double FromPixel(double pix, const Unit &unit) +Q_DECL_RELAXED_CONSTEXPR inline auto FromPixel(double pix, const Unit &unit) -> double { switch (unit) { case Unit::Mm: - return (pix / PrintDPI) * 25.4; + return PixelToMm(pix); case Unit::Cm: - return ((pix / PrintDPI) * 25.4) / 10.0; + return PixelToCm(pix); case Unit::Inch: - return pix / PrintDPI; + return PixelToInch(pix); case Unit::Px: return pix; default: @@ -414,7 +422,7 @@ Q_DECL_RELAXED_CONSTEXPR inline double FromPixel(double pix, const Unit &unit) } //--------------------------------------------------------------------------------------------------------------------- -Q_DECL_RELAXED_CONSTEXPR inline qreal UnitConvertor(qreal value, const Unit &from, const Unit &to) +Q_DECL_RELAXED_CONSTEXPR inline auto UnitConvertor(qreal value, const Unit &from, const Unit &to) -> qreal { switch (from) { @@ -489,14 +497,15 @@ Q_DECL_RELAXED_CONSTEXPR inline qreal UnitConvertor(qreal value, const Unit &fro * @brief UnitConvertor Converts the values of the given margin from given unit to the new unit. * returns a new instand of QMarginsF. */ -Q_DECL_RELAXED_CONSTEXPR inline QMarginsF UnitConvertor(const QMarginsF &margins, const Unit &from, const Unit &to) +Q_DECL_RELAXED_CONSTEXPR inline auto UnitConvertor(const QMarginsF &margins, const Unit &from, + const Unit &to) -> QMarginsF { const qreal left = UnitConvertor(margins.left(), from, to); const qreal top = UnitConvertor(margins.top(), from, to); const qreal right = UnitConvertor(margins.right(), from, to); const qreal bottom = UnitConvertor(margins.bottom(), from, to); - return QMarginsF(left, top, right, bottom); + return {left, top, right, bottom}; } void InitLanguages(QComboBox *combobox); diff --git a/src/libs/vpatterndb/vpassmark.cpp b/src/libs/vpatterndb/vpassmark.cpp index 70e84f917..d1e7bed66 100644 --- a/src/libs/vpatterndb/vpassmark.cpp +++ b/src/libs/vpatterndb/vpassmark.cpp @@ -141,7 +141,7 @@ bool FixNotchPoint(const QVector &seamAllowance, const QPointF ¬chBa return fixed; } -const qreal passmarkGap = (1.5/*mm*/ / 25.4) * PrintDPI; +const qreal passmarkGap = MmToPixel(1.5); //--------------------------------------------------------------------------------------------------------------------- QVector CreateOnePassmarkLines(const QLineF &line) diff --git a/src/libs/vtest/abstracttest.cpp b/src/libs/vtest/abstracttest.cpp index 84907a2cc..ab15dbb9f 100644 --- a/src/libs/vtest/abstracttest.cpp +++ b/src/libs/vtest/abstracttest.cpp @@ -312,7 +312,7 @@ void AbstractTest::Comparison(const QVector &ekv, const QVector