File indexing completed on 2024-05-12 15:58:41

0001 /*
0002  *  SPDX-FileCopyrightText: 2007 Sven Langkamp <sven.langkamp@gmail.com>
0003  *
0004  *  SPDX-License-Identifier: GPL-2.0-or-later
0005  */
0006 #ifndef KIS_SELECTION_COMPONENT_H
0007 #define KIS_SELECTION_COMPONENT_H
0008 
0009 #include <kritaimage_export.h>
0010 
0011 #include <QTransform>
0012 
0013 class QRect;
0014 class KUndo2Command;
0015 class KisSelection;
0016 
0017 #include "kis_types.h"
0018 
0019 class KRITAIMAGE_EXPORT KisSelectionComponent
0020 {
0021 public:
0022     KisSelectionComponent() {}
0023     virtual ~KisSelectionComponent() {}
0024 
0025     virtual KisSelectionComponent* clone(KisSelection* selection) = 0;
0026 
0027     virtual void renderToProjection(KisPaintDeviceSP projection) = 0;
0028     virtual void renderToProjection(KisPaintDeviceSP projection, const QRect& r) = 0;
0029 
0030     virtual void moveX(qint32 x);
0031     virtual void moveY(qint32 y) { Q_UNUSED(y); }
0032 
0033     virtual KUndo2Command* transform(const QTransform &transform) {
0034         Q_UNUSED(transform);
0035         return 0;
0036     }
0037 
0038     virtual bool isEmpty() const = 0;
0039     virtual QPainterPath outlineCache() const = 0;
0040     virtual bool outlineCacheValid() const = 0;
0041     virtual void recalculateOutlineCache() = 0;
0042 
0043     virtual KUndo2Command* resetToEmpty() { return 0; }
0044 };
0045 
0046 #endif