File indexing completed on 2024-04-28 04:05:13
0001 /* 0002 SPDX-FileCopyrightText: 2009 Stefan Majewsky <majewsky@gmx.net> 0003 0004 SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #ifndef PALAPELISLICERS_JIGSAW_SLICER_H //krazy:excludeall=includes 0008 #define PALAPELISLICERS_JIGSAW_SLICER_H 0009 0010 #include <Pala/Slicer> 0011 #include <Pala/SlicerJob> 0012 #include <Pala/SlicerProperty> 0013 #include <Pala/SlicerPropertySet> 0014 0015 struct JigsawPlugParams 0016 { 0017 qreal plugPosition, plugLength, plugWidth; 0018 qreal distortion1, distortion2; 0019 qreal baseHeight, baseDistortion; 0020 0021 static JigsawPlugParams createRandomParams(); 0022 JigsawPlugParams mirrored(); 0023 }; 0024 0025 class JigsawSlicer : public Pala::Slicer, public Pala::SimpleGridPropertySet 0026 { 0027 Q_OBJECT 0028 public: 0029 explicit JigsawSlicer(QObject* parent = nullptr, const QVariantList& args = QVariantList()); 0030 bool run(Pala::SlicerJob* job) override; 0031 protected: 0032 void addPlugToPath(QPainterPath& path, qreal plugNormLength, const QLineF& line, const QPointF& plugDirection, const JigsawPlugParams& parameters); 0033 }; 0034 0035 #endif // PALAPELISLICERS_JIGSAW_SLICER_H