Krita Source Code Documentation
Loading...
Searching...
No Matches
KisBezierTransformMesh.h
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2020 Dmitry Kazakov <dimula73@gmail.com>
3 *
4 * SPDX-License-Identifier: GPL-2.0-or-later
5 */
6
7#ifndef KISBEZIERTRANSFORMMESH_H
8#define KISBEZIERTRANSFORMMESH_H
9
10#include "kritaimage_export.h"
11#include "KisBezierMesh.h"
12
13#include "kis_types.h"
14
16
17class KRITAIMAGE_EXPORT KisBezierTransformMesh : public KisBezierMesh
18{
19public:
23 KisBezierTransformMesh(const QRectF &srcRect, const QSize &size = QSize(2,2))
24 : KisBezierMesh(srcRect, size)
25 {
26 }
27
28 PatchIndex hitTestPatch(const QPointF &pt, QPointF *localPointResult = 0) const;
29
30 static void transformPatch(const KisBezierPatch &patch,
31 const QPoint &srcQImageOffset,
32 const QImage &srcImage,
33 const QPoint &dstQImageOffset,
34 QImage *dstImage);
35
36 static void transformPatch(const KisBezierPatch &patch,
37 KisPaintDeviceSP srcDevice,
38 KisPaintDeviceSP dstDevice);
39
40
41 void transformMesh(const QPoint &srcQImageOffset,
42 const QImage &srcImage,
43 const QPoint &dstQImageOffset,
44 QImage *dstImage) const;
45
46 void transformMesh(KisPaintDeviceSP srcDevice,
47 KisPaintDeviceSP dstDevice) const;
48
49 QRect approxNeedRect(const QRect &rc) const;
50 QRect approxChangeRect(const QRect &rc) const;
51
52 static QRectF calcTightSrcRectRangeInParamSpace(const KisBezierPatch &patch,
53 const QRectF &srcSpaceRect,
54 qreal srcPrecision);
55
56 friend KRITAIMAGE_EXPORT void saveValue(QDomElement *parent, const QString &tag, const KisBezierTransformMesh &mesh);
57 friend KRITAIMAGE_EXPORT bool loadValue(const QDomElement &parent, KisBezierTransformMesh *mesh);
58
59 QRect hitTestPatchInSourceSpace(const QRectF &rect) const;
60
61private:
62 patch_const_iterator hitTestPatchImpl(const QPointF &pt, QPointF *localPointResult = 0) const;
63};
64
65KRITAIMAGE_EXPORT
66void saveValue(QDomElement *parent, const QString &tag, const KisBezierTransformMesh &mesh);
67
68KRITAIMAGE_EXPORT
69bool loadValue(const QDomElement &parent, KisBezierTransformMesh *mesh);
70
71}
72
73namespace KisDomUtils {
76}
77
79
80#endif // KISBEZIERTRANSFORMMESH_H
friend KRITAIMAGE_EXPORT bool loadValue(const QDomElement &parent, KisBezierTransformMesh *mesh)
KisBezierTransformMesh(const QRectF &srcRect, const QSize &size=QSize(2, 2))
friend KRITAIMAGE_EXPORT void saveValue(QDomElement *parent, const QString &tag, const KisBezierTransformMesh &mesh)
KRITAIMAGE_EXPORT bool loadValue(const QDomElement &parent, KisBezierTransformMesh *mesh)
KRITAIMAGE_EXPORT void saveValue(QDomElement *parent, const QString &tag, const KisBezierTransformMesh &mesh)