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