File indexing completed on 2024-05-12 15:57:00

0001 /*
0002  *  SPDX-FileCopyrightText: 2020 Dmitry Kazakov <dimula73@gmail.com>
0003  *
0004  *  SPDX-License-Identifier: GPL-2.0-or-later
0005  */
0006 
0007 #ifndef KISBEZIERPATCH_H
0008 #define KISBEZIERPATCH_H
0009 
0010 #include "kritaglobal_export.h"
0011 
0012 #include <QRectF>
0013 #include <array>
0014 
0015 class QDebug;
0016 
0017 class KRITAGLOBAL_EXPORT KisBezierPatch
0018 {
0019 public:
0020     enum ControlPointType {
0021         TL = 0,
0022         TL_HC,
0023         TL_VC,
0024         TR,
0025         TR_HC,
0026         TR_VC,
0027         BL,
0028         BL_HC,
0029         BL_VC,
0030         BR,
0031         BR_HC,
0032         BR_VC
0033     };
0034 
0035     QRectF originalRect;
0036     std::array<QPointF, 12> points;
0037 
0038     QRectF dstBoundingRect() const;
0039 
0040     QRectF srcBoundingRect() const;
0041 
0042     QPointF localToGlobal(const QPointF &pt) const;
0043     QPointF globalToLocal(const QPointF &pt) const;
0044 
0045     void sampleRegularGrid(QSize &gridSize,
0046                            QVector<QPointF> &origPoints,
0047                            QVector<QPointF> &transfPoints,
0048                            const QPointF &dstStep) const;
0049 
0050     void sampleRegularGridSVG2(QSize &gridSize,
0051                                QVector<QPointF> &origPoints,
0052                                QVector<QPointF> &transfPoints,
0053                                const QPointF &dstStep) const;
0054 };
0055 
0056 KRITAGLOBAL_EXPORT
0057 QDebug operator<<(QDebug dbg, const KisBezierPatch &p);
0058 
0059 #endif // KISBEZIERPATCH_H