File indexing completed on 2024-05-19 04:29:07
0001 /* 0002 * SPDX-FileCopyrightText: 2008 Sven Langkamp <sven.langkamp@gmail.com> 0003 * 0004 * SPDX-License-Identifier: LGPL-2.0-or-later 0005 */ 0006 0007 #ifndef _KIS_SELECTION_DECORATION_H_ 0008 #define _KIS_SELECTION_DECORATION_H_ 0009 0010 #include <QPainterPath> 0011 #include <QTimer> 0012 #include <QPolygon> 0013 #include <QPen> 0014 0015 #include <kis_signal_compressor.h> 0016 #include "canvas/kis_canvas_decoration.h" 0017 0018 class KisView; 0019 class QWindow; 0020 class QScreen; 0021 class KisScreenMigrationTracker; 0022 0023 class KRITAUI_EXPORT KisSelectionDecoration : public KisCanvasDecoration 0024 { 0025 Q_OBJECT 0026 public: 0027 KisSelectionDecoration(QPointer<KisView> view); 0028 ~KisSelectionDecoration() override; 0029 0030 enum Mode { 0031 Ants, 0032 Mask 0033 }; 0034 0035 Mode mode() const; 0036 void setMode(Mode mode); 0037 void setVisible(bool v) override; 0038 0039 void notifyWindowMinimized(bool minimized) override; 0040 0041 protected: 0042 void drawDecoration(QPainter& gc, const QRectF& updateRect, const KisCoordinatesConverter *converter,KisCanvas2* canvas) override; 0043 0044 private Q_SLOTS: 0045 void slotStartUpdateSelection(); 0046 void slotConfigChanged(); 0047 void slotCanvasResourcesChanged(int key, const QVariant &v); 0048 void initializePens(); 0049 0050 public Q_SLOTS: 0051 void selectionChanged(); 0052 void antsAttackEvent(); 0053 private: 0054 bool selectionIsActive(); 0055 0056 private: 0057 0058 KisSignalCompressor m_signalCompressor; 0059 QPainterPath m_outlinePath; 0060 QImage m_thumbnailImage; 0061 QTransform m_thumbnailImageTransform; 0062 QTimer* m_antsTimer; 0063 int m_offset; 0064 0065 QPen m_antsPen; 0066 QPen m_outlinePen; 0067 Mode m_mode; 0068 0069 qreal m_opacity; 0070 0071 QColor m_maskColor; 0072 bool m_antialiasSelectionOutline; 0073 }; 0074 0075 #endif