Krita Source Code Documentation
Loading...
Searching...
No Matches
kis_liquify_transform_worker.h
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2014 Dmitry Kazakov <dimula73@gmail.com>
3 *
4 * SPDX-License-Identifier: GPL-2.0-or-later
5 */
6
7#ifndef __KIS_LIQUIFY_TRANSFORM_WORKER_H
8#define __KIS_LIQUIFY_TRANSFORM_WORKER_H
9
10#include <QScopedPointer>
11#include <boost/operators.hpp>
12
13#include <kritaimage_export.h>
14#include <kis_types.h>
15
16class QImage;
17class QRect;
18class QSize;
19class QTransform;
20class QDomElement;
21
22
23class KRITAIMAGE_EXPORT KisLiquifyTransformWorker : boost::equality_comparable<KisLiquifyTransformWorker>
24{
25public:
26 KisLiquifyTransformWorker(const QRect &srcBounds,
27 KoUpdater *progress,
28 int pixelPrecision = 8);
29
31
33
34 bool operator==(const KisLiquifyTransformWorker &other) const;
35 bool isIdentity() const;
36
37
38 int pointToIndex(const QPoint &cellPt);
39 QSize gridSize() const;
40
41 void translatePoints(const QPointF &base,
42 const QPointF &offset,
43 qreal sigma,
44 bool useWashMode,
45 qreal flow);
46
47 void scalePoints(const QPointF &base,
48 qreal scale,
49 qreal sigma,
50 bool useWashMode,
51 qreal flow);
52
53 void rotatePoints(const QPointF &base,
54 qreal angle,
55 qreal sigma,
56 bool useWashMode,
57 qreal flow);
58
59 void undoPoints(const QPointF &base,
60 qreal amount,
61 qreal sigma);
62
65
66 void run(KisPaintDeviceSP srcDevice, KisPaintDeviceSP dstDevice);
67 QImage runOnQImage(const QImage &srcImage,
68 const QPointF &srcImageOffset,
69 const QTransform &imageToThumbTransform,
70 QPointF *newOffset);
71
72 void toXML(QDomElement *e) const;
73 static KisLiquifyTransformWorker* fromXML(const QDomElement &e);
74
75 void translate(const QPointF &offset);
76 void translateDstSpace(const QPointF &offset);
77
78 QRect approxChangeRect(const QRect &rc);
79 QRect approxNeedRect(const QRect &rc, const QRect &fullBounds);
80
81 void transformSrcAndDst(const QTransform &t);
82
83private:
84 struct Private;
85 const QScopedPointer<Private> m_d;
86};
87
88#endif /* __KIS_LIQUIFY_TRANSFORM_WORKER_H */
bool operator==(const KisRegion &lhs, const KisRegion &rhs)
int pointToIndex(const QPoint &cellPt, const QSize &gridSize)
QVector< QPointF > & transformedPoints()
const QScopedPointer< Private > m_d
const QVector< QPointF > & originalPoints() const