Krita Source Code Documentation
Loading...
Searching...
No Matches
KisVisualTriangleSelectorShape Class Reference

#include <KisVisualTriangleSelectorShape.h>

+ Inheritance diagram for KisVisualTriangleSelectorShape:

Public Member Functions

QRect getSpaceForCircle (QRect geom) override
 
QRect getSpaceForSquare (QRect geom) override
 getSpaceForSquare
 
QRect getSpaceForTriangle (QRect geom) override
 
 KisVisualTriangleSelectorShape (KisVisualColorSelector *parent, Dimensions dimension, int channel1, int channel2, int margin=5)
 
void setBorderWidth (int) override
 setBorderWidth set the border of the single dimensional selector.
 
 ~KisVisualTriangleSelectorShape () override
 
- Public Member Functions inherited from KisVisualColorSelectorShape
int channel (int dimension) const
 channel Get the channel index associated with a selector shape dimension
 
quint32 channelMask () const
 
void forceImageUpdate ()
 forceImageUpdate force the image to recache.
 
QColor getColorFromConverter (KoColor c)
 getColorFromConverter
 
KoColor getCurrentColor ()
 getCurrentColor
 
QPointF getCursorPosition () const
 getCursorPosition
 
Dimensions getDimensions () const
 getDimensions
 
const QImage & getImageMap ()
 getImageMap returns the updated base image
 
bool isHueControl () const
 
 KisVisualColorSelectorShape (KisVisualColorSelector *parent, KisVisualColorSelectorShape::Dimensions dimension, int channel1, int channel2)
 
void setAcceptTabletEvents (bool on)
 
void setChannelValues (QVector4D channelValues, quint32 channelFlags)
 setChannelValues Set the current channel values; Note that channel values controlled by the shape itself have no effect unless setCursor is true. This will trigger a full widget repaint.
 
void setCursorPosition (QPointF position, bool signal=false)
 setCursorPosition Set the cursor to normalized shape coordinates. This will only repaint the cursor.
 
virtual bool supportsGamutMask () const
 
virtual void updateGamutMask ()
 Notify shape that the gamut mask changed.
 
 ~KisVisualColorSelectorShape () override
 

Protected Member Functions

QImage renderAlphaMask () const override
 render the alpha mask for the widget background the returned image is expected to be QImage::Format_Alpha8
 
- Protected Member Functions inherited from KisVisualColorSelectorShape
KisVisualColorSelectorcolorSelector () const
 
virtual QImage compositeBackground () const
 
QImage convertImageMap (const quint8 *rawColor, quint32 bufferSize, QSize imgSize) const
 convertImageMap convert image data containing raw KoColor data into a QImage
 
void mouseMoveEvent (QMouseEvent *e) override
 
virtual QPointF mousePositionToShapeCoordinate (const QPointF &pos, const QPointF &dragStart) const
 default implementation just calls convertWidgetCoordinateToShapeCoordinate(pos)
 
void mousePressEvent (QMouseEvent *e) override
 
void mouseReleaseEvent (QMouseEvent *e) override
 
void paintEvent (QPaintEvent *) override
 
virtual QImage renderBackground (const QVector4D &channelValues, const QImage &alpha) const
 renderBackground Render the widget background visible inside the widget's mask in current color space Rendering shall be done with the conversion functions of KisVisualColorSelector
 
virtual QImage renderStaticAlphaMask () const
 
void resizeEvent (QResizeEvent *) override
 
KisVisualColorModelselectorModel () const
 
void tabletEvent (QTabletEvent *event) override
 

Private Member Functions

QPointF convertShapeCoordinateToWidgetCoordinate (QPointF coordinate) const override
 convertShapeCoordinateToWidgetCoordinate
 
QPointF convertWidgetCoordinateToShapeCoordinate (QPointF coordinate) const override
 convertWidgetCoordinateToShapeCoordinate Convert a coordinate in the widget's height/width to a shape coordinate.
 
void drawCursor (QPainter &painter) override
 
QRegion getMaskMap () override
 getPixmap
 

Private Attributes

int m_margin { 5 }
 

Additional Inherited Members

- Public Types inherited from KisVisualColorSelectorShape
enum  Dimensions { onedimensional , twodimensional }
 The Dimensions enum Whether or not the shape is single or two dimensional. More...
 
- Signals inherited from KisVisualColorSelectorShape
void sigCursorMoved (QPointF pos)
 

Detailed Description

Definition at line 11 of file KisVisualTriangleSelectorShape.h.

Constructor & Destructor Documentation

◆ KisVisualTriangleSelectorShape()

KisVisualTriangleSelectorShape::KisVisualTriangleSelectorShape ( KisVisualColorSelector * parent,
Dimensions dimension,
int channel1,
int channel2,
int margin = 5 )
explicit

Definition at line 16 of file KisVisualTriangleSelectorShape.cpp.

20 : KisVisualColorSelectorShape(parent, dimension, channel1, channel2),
21 m_margin(margin)
22{
23 //qDebug() << "creating KisVisualTriangleSelectorShape" << this;
24}
KisVisualColorSelectorShape(KisVisualColorSelector *parent, KisVisualColorSelectorShape::Dimensions dimension, int channel1, int channel2)

◆ ~KisVisualTriangleSelectorShape()

KisVisualTriangleSelectorShape::~KisVisualTriangleSelectorShape ( )
override

Definition at line 26 of file KisVisualTriangleSelectorShape.cpp.

27{
28 //qDebug() << "deleting KisVisualTriangleSelectorShape" << this;
29}

Member Function Documentation

◆ convertShapeCoordinateToWidgetCoordinate()

QPointF KisVisualTriangleSelectorShape::convertShapeCoordinateToWidgetCoordinate ( QPointF ) const
overrideprivatevirtual

convertShapeCoordinateToWidgetCoordinate

Returns
take the position in the shape and convert it to screen coordinates.

Implements KisVisualColorSelectorShape.

Definition at line 51 of file KisVisualTriangleSelectorShape.cpp.

52{
53 // margin serves to render the cursor, and triangle is rendered 1px larger than its active area
54 qreal offset = m_margin + 1.0;
55
56 qreal y = (coordinate.y() * (height() - 1 - 2 * offset)) + offset;
57
58 qreal triWidth = width() - 1 - 2 * offset;
59 qreal horizontalLineLength = coordinate.y() * triWidth;
60 qreal horizontalLineStart = offset + 0.5 * (triWidth - horizontalLineLength);
61
62 qreal x = coordinate.x() * horizontalLineLength + horizontalLineStart;
63
64 return QPointF(x, y);
65}

References m_margin.

◆ convertWidgetCoordinateToShapeCoordinate()

QPointF KisVisualTriangleSelectorShape::convertWidgetCoordinateToShapeCoordinate ( QPointF coordinate) const
overrideprivatevirtual

convertWidgetCoordinateToShapeCoordinate Convert a coordinate in the widget's height/width to a shape coordinate.

Parameters
coordinatethe position your wish to have the shape coordinates of.

Implements KisVisualColorSelectorShape.

Definition at line 67 of file KisVisualTriangleSelectorShape.cpp.

68{
69 // margin serves to render the cursor, and triangle is rendered 1px larger than its active area
70 qreal offset = m_margin + 1.0;
71
72 qreal x = 0.5;
73 qreal y = qBound(0.0, (coordinate.y() - offset)/(height() - 1 - 2 * offset), 1.0);
74
75 if (y > 0) {
76 qreal triWidth = width() - 1 - 2 * offset;
77 qreal horizontalLineLength = y * triWidth;
78 qreal horizontalLineStart = offset + 0.5 * (triWidth - horizontalLineLength);
79
80 x = qBound(0.0, (coordinate.x() - horizontalLineStart) / horizontalLineLength, 1.0);
81 }
82
83 return QPointF(x, y);
84}

References m_margin.

◆ drawCursor()

void KisVisualTriangleSelectorShape::drawCursor ( QPainter & painter)
overrideprivatevirtual

Implements KisVisualColorSelectorShape.

Definition at line 124 of file KisVisualTriangleSelectorShape.cpp.

125{
126 //qDebug() << this << "KisVisualTriangleSelectorShape::drawCursor: image needs update" << imagesNeedUpdate();
129 QBrush fill(Qt::SolidPattern);
130
131 int cursorwidth = 5;
132
133 painter.setPen(Qt::white);
134 fill.setColor(Qt::white);
135 painter.setBrush(fill);
136 painter.drawEllipse(cursorPoint, cursorwidth, cursorwidth);
137 fill.setColor(col);
138 painter.setPen(Qt::black);
139 painter.setBrush(fill);
140 painter.drawEllipse(cursorPoint, cursorwidth-1.0, cursorwidth-1.0);
141}
QPointF getCursorPosition() const
getCursorPosition
QColor getColorFromConverter(KoColor c)
getColorFromConverter
QPointF convertShapeCoordinateToWidgetCoordinate(QPointF coordinate) const override
convertShapeCoordinateToWidgetCoordinate

References convertShapeCoordinateToWidgetCoordinate(), KisVisualColorSelectorShape::getColorFromConverter(), KisVisualColorSelectorShape::getCurrentColor(), and KisVisualColorSelectorShape::getCursorPosition().

◆ getMaskMap()

QRegion KisVisualTriangleSelectorShape::getMaskMap ( )
overrideprivatevirtual

getPixmap

Returns
the pixmap of this shape.

Implements KisVisualColorSelectorShape.

Definition at line 86 of file KisVisualTriangleSelectorShape.cpp.

87{
88 const int cursorWidth = qMax(2 * m_margin, 2);
89 QPolygon maskPoly;
90 maskPoly << QPoint(qFloor(0.5 * (width() - cursorWidth)), 0)
91 << QPoint(qCeil(0.5 * (width() + cursorWidth)), 0)
92 << QPoint(width(), height() - cursorWidth)
93 << QPoint(width(), height())
94 << QPoint(0, height())
95 << QPoint(0, height() - cursorWidth);
96
97 return QRegion(maskPoly);
98}

References m_margin.

◆ getSpaceForCircle()

QRect KisVisualTriangleSelectorShape::getSpaceForCircle ( QRect geom)
overridevirtual

Implements KisVisualColorSelectorShape.

Definition at line 41 of file KisVisualTriangleSelectorShape.cpp.

42{
43 return geom;
44}

◆ getSpaceForSquare()

QRect KisVisualTriangleSelectorShape::getSpaceForSquare ( QRect geom)
overridevirtual

getSpaceForSquare

Parameters
geomthe full widget rectangle
Returns
rectangle with enough space for second widget

Implements KisVisualColorSelectorShape.

Definition at line 36 of file KisVisualTriangleSelectorShape.cpp.

37{
38 return geom;
39}

◆ getSpaceForTriangle()

QRect KisVisualTriangleSelectorShape::getSpaceForTriangle ( QRect geom)
overridevirtual

Implements KisVisualColorSelectorShape.

Definition at line 46 of file KisVisualTriangleSelectorShape.cpp.

47{
48 return geom;
49}

◆ renderAlphaMask()

QImage KisVisualTriangleSelectorShape::renderAlphaMask ( ) const
overrideprotectedvirtual

render the alpha mask for the widget background the returned image is expected to be QImage::Format_Alpha8

Reimplemented from KisVisualColorSelectorShape.

Definition at line 100 of file KisVisualTriangleSelectorShape.cpp.

101{
102 // Hi-DPI aware rendering requires that we determine the device pixel dimension;
103 // actual widget size in device pixels is not accessible unfortunately, it might be 1px smaller...
104 const int deviceWidth = qCeil(width() * devicePixelRatioF());
105 const int deviceHeight = qCeil(height() * devicePixelRatioF());
106
107 QImage alphaMask(deviceWidth, deviceHeight, QImage::Format_Alpha8);
108 alphaMask.fill(0);
109 alphaMask.setDevicePixelRatio(devicePixelRatioF());
110 QPainter painter(&alphaMask);
111 painter.setRenderHint(QPainter::Antialiasing);
112 painter.setBrush(Qt::white);
113 painter.setPen(Qt::NoPen);
114 QPointF triangle[3] = {
115 QPointF(0.5 * width(), m_margin),
116 QPointF(m_margin, height() - m_margin),
117 QPointF(width() - m_margin, height() - m_margin),
118 };
119 painter.drawConvexPolygon(triangle, 3);
120
121 return alphaMask;
122}

References m_margin.

◆ setBorderWidth()

void KisVisualTriangleSelectorShape::setBorderWidth ( int width)
overridevirtual

setBorderWidth set the border of the single dimensional selector.

Parameters
width

Implements KisVisualColorSelectorShape.

Definition at line 31 of file KisVisualTriangleSelectorShape.cpp.

32{
33 // triangle doesn't have a 1-dimensional mode
34}

Member Data Documentation

◆ m_margin

int KisVisualTriangleSelectorShape::m_margin { 5 }
private

Definition at line 44 of file KisVisualTriangleSelectorShape.h.

44{ 5 };

The documentation for this class was generated from the following files: