QGIS API Documentation 3.28.0-Firenze (ed3ad0430f)
qgsgradientstopeditor.h
Go to the documentation of this file.
1/***************************************************************************
2 qgsgradientstopeditor.h
3 -----------------------
4 begin : April 2016
5 copyright : (C) 2016 by Nyall Dawson
6 email : nyall dot dawson at gmail dot com
7 ***************************************************************************
8 * *
9 * This program is free software; you can redistribute it and/or modify *
10 * it under the terms of the GNU General Public License as published by *
11 * the Free Software Foundation; either version 2 of the License, or *
12 * (at your option) any later version. *
13 * *
14 ***************************************************************************/
15
16#ifndef QGSGRADIENTSTOPEDITOR_H
17#define QGSGRADIENTSTOPEDITOR_H
18
19#include "qgscolorrampimpl.h"
20#include "qgis_sip.h"
21#include <QWidget>
22#include "qgis_gui.h"
23
24
33class GUI_EXPORT QgsGradientStopEditor : public QWidget
34{
35 Q_OBJECT
36
37 public:
38
44 QgsGradientStopEditor( QWidget *parent SIP_TRANSFERTHIS = nullptr, QgsGradientColorRamp *ramp = nullptr );
45
51 void setGradientRamp( const QgsGradientColorRamp &ramp );
52
57 QgsGradientColorRamp gradientRamp() const { return mGradient; }
58
64 void selectStop( int index );
65
70 QgsGradientStop selectedStop() const;
71
72 QSize sizeHint() const override;
73 void paintEvent( QPaintEvent *event ) override;
74
75 public slots:
76
85 void setSelectedStopColor( const QColor &color );
86
94 void setSelectedStopOffset( double offset );
95
101 void setSelectedStopColorSpec( QColor::Spec spec );
102
108 void setSelectedStopDirection( Qgis::AngularDirection direction );
109
117 void setSelectedStopDetails( const QColor &color, double offset );
118
123 void deleteSelectedStop();
124
131 void setColor1( const QColor &color );
132
139 void setColor2( const QColor &color );
140
141 signals:
142
144 void changed();
145
151
152 protected:
153
154 void mouseMoveEvent( QMouseEvent *event ) override;
155 void mousePressEvent( QMouseEvent *event ) override;
156 void mouseDoubleClickEvent( QMouseEvent *event ) override;
157 void keyPressEvent( QKeyEvent *event ) override;
158
159 //Reimplemented to accept dragged colors
160 void dragEnterEvent( QDragEnterEvent *e ) override;
161
162 //Reimplemented to accept dropped colors
163 void dropEvent( QDropEvent *e ) override;
164
165 private:
166
171 QPixmap transparentBackground();
172
180 void drawStopMarker( QPainter &painter, QPoint topMiddle, const QColor &color, bool selected = false );
181
183 double pointToRelativePosition( int x ) const;
184
186 int relativePositionToPoint( double position ) const;
187
189 bool selectedStopIsMovable() const;
190
192 int findClosestStop( int x, int threshold = -1 ) const;
193
194 QgsGradientColorRamp mGradient;
195
198
200 int mSelectedStop = 0;
201
203 QPolygonF sOuterTriangle;
204
206 QPolygonF sInnerTriangle;
207
208};
209
210#endif // QGSGRADIENTSTOPEDITOR_H
AngularDirection
Angular directions.
Definition: qgis.h:1805
Gradient color ramp, which smoothly interpolates between two colors and also supports optional extra ...
An interactive editor for previewing a gradient color ramp and modifying the position of color stops ...
QgsGradientColorRamp gradientRamp() const
Returns the current ramp created by the editor.
void changed()
Emitted when the gradient ramp is changed by a user.
void selectedStopChanged(const QgsGradientStop &stop)
Emitted when the current selected stop changes.
Represents a color stop within a QgsGradientColorRamp color ramp.
#define SIP_TRANSFERTHIS
Definition: qgis_sip.h:53
QList< QgsGradientStop > QgsGradientStopsList
List of gradient stops.