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 KIS_VISUAL_RECTANGLE_SELECTOR_SHAPE_H
0007 #define KIS_VISUAL_RECTANGLE_SELECTOR_SHAPE_H
0008 
0009 #include "KisVisualColorSelectorShape.h"
0010 
0011 class KisVisualRectangleSelectorShape : public KisVisualColorSelectorShape
0012 {
0013     Q_OBJECT
0014 public:
0015     enum singelDTypes{vertical, horizontal, border, borderMirrored};
0016     explicit KisVisualRectangleSelectorShape(KisVisualColorSelector *parent,
0017                                              Dimensions dimension,
0018                                              int channel1, int channel2, int width=20,
0019                                              KisVisualRectangleSelectorShape::singelDTypes d = KisVisualRectangleSelectorShape::vertical
0020             );
0021     ~KisVisualRectangleSelectorShape() override;
0022 
0023     void setBorderWidth(int width) override;
0024     void setOneDimensionalType(singelDTypes type);
0025 
0026     /**
0027      * @brief getSpaceForSquare
0028      * @param geom the full widget rectangle
0029      * @return rectangle with enough space for second widget
0030      */
0031     QRect getSpaceForSquare(QRect geom) override;
0032     QRect getSpaceForCircle(QRect geom) override;
0033     QRect getSpaceForTriangle(QRect geom) override;
0034 protected:
0035     QRect getAvailableSpace(QRect geom, bool stretch);
0036     QImage renderAlphaMask() const override;
0037 
0038 private:
0039     QPointF convertShapeCoordinateToWidgetCoordinate(QPointF coordinate) const override;
0040     QPointF convertWidgetCoordinateToShapeCoordinate(QPointF coordinate) const override;
0041 
0042     singelDTypes m_type;
0043     int m_barWidth;
0044     QRegion getMaskMap() override;
0045     void drawCursor(QPainter &painter) override;
0046 };
0047 
0048 #endif