File indexing completed on 2024-05-19 04:29:30
0001 /* 0002 * SPDX-FileCopyrightText: 2016 Wolthera van Hovell tot Westerflier <griffinvalley@gmail.com> 0003 * 0004 * SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 #ifndef KISVISUALCOLORSELECTOR_H 0007 #define KISVISUALCOLORSELECTOR_H 0008 0009 #include "KisVisualColorSelectorShape.h" 0010 0011 #include <QTransform> 0012 0013 class KisVisualEllipticalSelectorShape : public KisVisualColorSelectorShape 0014 { 0015 Q_OBJECT 0016 public: 0017 enum singelDTypes{border, borderMirrored}; 0018 explicit KisVisualEllipticalSelectorShape(KisVisualColorSelector *parent, 0019 Dimensions dimension, 0020 int channel1, int channel2, 0021 int barWidth=20, 0022 KisVisualEllipticalSelectorShape::singelDTypes d = KisVisualEllipticalSelectorShape::border 0023 ); 0024 ~KisVisualEllipticalSelectorShape() override; 0025 0026 void setBorderWidth(int width) override; 0027 0028 /** 0029 * @brief getSpaceForSquare 0030 * @param geom the full widget rectangle 0031 * @return rectangle with enough space for second widget 0032 */ 0033 QRect getSpaceForSquare(QRect geom) override; 0034 QRect getSpaceForCircle(QRect geom) override; 0035 QRect getSpaceForTriangle(QRect geom) override; 0036 bool supportsGamutMask() const override; 0037 void updateGamutMask() override; 0038 protected: 0039 QImage renderAlphaMask() const override; 0040 QImage renderStaticAlphaMask() const override; 0041 void renderGamutMask(); 0042 QPointF mousePositionToShapeCoordinate(const QPointF &pos, const QPointF &dragStart) const override; 0043 0044 private: 0045 QImage renderAlphaMaskImpl(qreal outerBorder, qreal innerBorder) const; 0046 QPointF convertShapeCoordinateToWidgetCoordinate(QPointF coordinate) const override; 0047 QPointF convertWidgetCoordinateToShapeCoordinate(QPointF coordinate) const override; 0048 0049 QRegion getMaskMap() override; 0050 void drawCursor(QPainter &painter) override; 0051 void drawGamutMask(QPainter &painter) override; 0052 0053 singelDTypes m_type; 0054 int m_barWidth; 0055 QImage m_gamutMaskImage; 0056 QTransform m_gamutMaskTransform; 0057 bool m_gamutMaskNeedsUpdate; 0058 }; 0059 0060 #endif // KISVISUALCOLORSELECTOR_H