Krita Source Code Documentation
Loading...
Searching...
No Matches
kis_perspectivetransform_worker.h
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2006 Cyrille Berger <cberger@cberger.net>
3 * SPDX-FileCopyrightText: 2010 Marc Pegon <pe.marc@free.fr>
4 *
5 * SPDX-License-Identifier: GPL-2.0-or-later
6 */
7
8#ifndef KIS_PERSPECTIVETRANSFORM_WORKER_H
9#define KIS_PERSPECTIVETRANSFORM_WORKER_H
10
11#include "kis_types.h"
12#include "kritaimage_export.h"
13
14#include <QRect>
15#include <KisRegion.h>
16#include <QTransform>
17#include <KoUpdater.h>
18
19
20class KRITAIMAGE_EXPORT KisPerspectiveTransformWorker
21{
22public:
23 KisPerspectiveTransformWorker(KisPaintDeviceSP dev, QPointF center, double aX, double aY, double distance, bool cropDst, KoUpdaterPtr progress);
24 KisPerspectiveTransformWorker(KisPaintDeviceSP dev, const QTransform &transform, bool cropDst, KoUpdaterPtr progress);
25
27
29 NearestNeighbour = 0,
30 Bilinear
31 };
32
33 void run(SampleType sampleType = Bilinear);
34 void runPartialDst(KisPaintDeviceSP srcDev,
35 KisPaintDeviceSP dstDev,
36 const QRect &dstRect);
37
38 void setForwardTransform(const QTransform &transform);
39
40 QTransform forwardTransform() const;
41 QTransform backwardTransform() const;
42
43 bool forceSubPixelTranslation() const;
44 void setForceSubPixelTranslation(bool value);
45
46private:
47 void init(const QTransform &transform);
48
49 void fillParams(const QRectF &srcRect,
50 const QRect &dstBaseClipRect,
51 KisRegion *dstRegion,
52 QPolygonF *dstClipPolygon);
53
54 template <class SrcAccessorPolicy>
55 void runImpl();
56
57private:
61 QRectF m_srcRect;
67 bool m_forceSubPixelTranslation {false};
68};
69
70#endif
float value(const T *src, size_t ch)
qreal distance(const QPointF &p1, const QPointF &p2)