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