File indexing completed on 2024-06-23 04:28:25

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_STRATEGY_H
0008 #define __KIS_CAGE_TRANSFORM_STRATEGY_H
0009 
0010 #include <QObject>
0011 #include <QScopedPointer>
0012 
0013 #include "kis_warp_transform_strategy.h"
0014 
0015 class QPointF;
0016 class QPainter;
0017 class KisCoordinatesConverter;
0018 class ToolTransformArgs;
0019 class TransformTransactionProperties;
0020 class QImage;
0021 
0022 
0023 class KisCageTransformStrategy : public KisWarpTransformStrategy
0024 {
0025     Q_OBJECT
0026 public:
0027     KisCageTransformStrategy(const KisCoordinatesConverter *converter, KoSnapGuide *snapGuide,
0028                              ToolTransformArgs &currentArgs,
0029                              TransformTransactionProperties &transaction);
0030     ~KisCageTransformStrategy() override;
0031 
0032 protected:
0033     void drawConnectionLines(QPainter &gc,
0034                              const QVector<QPointF> &origPoints,
0035                              const QVector<QPointF> &transfPoints,
0036                              bool isEditingPoints) override;
0037 
0038     QImage calculateTransformedImage(ToolTransformArgs &currentArgs,
0039                                      const QImage &srcImage,
0040                                      const QVector<QPointF> &origPoints,
0041                                      const QVector<QPointF> &transfPoints,
0042                                      const QPointF &srcOffset,
0043                                      QPointF *dstOffset) override;
0044 
0045 private:
0046     struct Private;
0047     const QScopedPointer<Private> m_d;
0048 };
0049 
0050 #endif /* __KIS_CAGE_TRANSFORM_STRATEGY_H */