File indexing completed on 2024-05-12 15:58:11

0001 /*
0002  *  SPDX-FileCopyrightText: 2014 Dmitry Kazakov <dimula73@gmail.com>
0003  *
0004  *  SPDX-License-Identifier: GPL-2.0-or-later
0005  */
0006 
0007 #ifndef __KIS_CAGE_TRANSFORM_WORKER_H
0008 #define __KIS_CAGE_TRANSFORM_WORKER_H
0009 
0010 #include <QScopedPointer>
0011 #include <kritaimage_export.h>
0012 #include <kis_types.h>
0013 
0014 class QImage;
0015 
0016 class KRITAIMAGE_EXPORT KisCageTransformWorker
0017 {
0018 public:
0019     KisCageTransformWorker(const QRect &deviceNonDefaultRegion,
0020                            const QVector<QPointF> &origCage,
0021                            KoUpdater *progress,
0022                            int pixelPrecision = 8);
0023 
0024     KisCageTransformWorker(const QImage &srcImage,
0025                            const QPointF &srcImageOffset,
0026                            const QVector<QPointF> &origCage,
0027                            KoUpdater *progress,
0028                            int pixelPrecision = 8);
0029 
0030     ~KisCageTransformWorker();
0031 
0032     void prepareTransform();
0033     void setTransformedCage(const QVector<QPointF> &transformedCage);
0034     void run(KisPaintDeviceSP srcDevice, KisPaintDeviceSP dstDevice);
0035 
0036     QRect approxChangeRect(const QRect &rc);
0037     QRect approxNeedRect(const QRect &rc, const QRect &fullBounds);
0038 
0039     QImage runOnQImage(QPointF *newOffset);
0040 
0041 private:
0042     struct Private;
0043     const QScopedPointer<Private> m_d;
0044 };
0045 
0046 #endif /* __KIS_CAGE_TRANSFORM_WORKER_H */