File indexing completed on 2024-05-12 15:58:50
0001 /* 0002 * SPDX-FileCopyrightText: 2020 Dmitry Kazakov <dimula73@gmail.com> 0003 * 0004 * SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #ifndef KISBEZIERTRANSFORMMESH_H 0008 #define KISBEZIERTRANSFORMMESH_H 0009 0010 #include "kritaimage_export.h" 0011 #include "KisBezierMesh.h" 0012 0013 #include "kis_types.h" 0014 0015 namespace KisBezierTransformMeshDetail { 0016 0017 class KRITAIMAGE_EXPORT KisBezierTransformMesh : public KisBezierMesh 0018 { 0019 public: 0020 KisBezierTransformMesh() 0021 { 0022 } 0023 KisBezierTransformMesh(const QRectF &srcRect, const QSize &size = QSize(2,2)) 0024 : KisBezierMesh(srcRect, size) 0025 { 0026 } 0027 0028 PatchIndex hitTestPatch(const QPointF &pt, QPointF *localPointResult = 0) const; 0029 0030 static void transformPatch(const KisBezierPatch &patch, 0031 const QPoint &srcQImageOffset, 0032 const QImage &srcImage, 0033 const QPoint &dstQImageOffset, 0034 QImage *dstImage); 0035 0036 static void transformPatch(const KisBezierPatch &patch, 0037 KisPaintDeviceSP srcDevice, 0038 KisPaintDeviceSP dstDevice); 0039 0040 0041 void transformMesh(const QPoint &srcQImageOffset, 0042 const QImage &srcImage, 0043 const QPoint &dstQImageOffset, 0044 QImage *dstImage) const; 0045 0046 void transformMesh(KisPaintDeviceSP srcDevice, 0047 KisPaintDeviceSP dstDevice) const; 0048 0049 QRect approxNeedRect(const QRect &rc) const; 0050 QRect approxChangeRect(const QRect &rc) const; 0051 0052 friend KRITAIMAGE_EXPORT void saveValue(QDomElement *parent, const QString &tag, const KisBezierTransformMesh &mesh); 0053 friend KRITAIMAGE_EXPORT bool loadValue(const QDomElement &parent, KisBezierTransformMesh *mesh); 0054 }; 0055 0056 KRITAIMAGE_EXPORT 0057 void saveValue(QDomElement *parent, const QString &tag, const KisBezierTransformMesh &mesh); 0058 0059 KRITAIMAGE_EXPORT 0060 bool loadValue(const QDomElement &parent, KisBezierTransformMesh *mesh); 0061 0062 } 0063 0064 namespace KisDomUtils { 0065 using KisBezierTransformMeshDetail::loadValue; 0066 using KisBezierTransformMeshDetail::saveValue; 0067 } 0068 0069 using KisBezierTransformMesh = KisBezierTransformMeshDetail::KisBezierTransformMesh; 0070 0071 #endif // KISBEZIERTRANSFORMMESH_H