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

#include <kis_equalizer_slider.h>

+ Inheritance diagram for KisEqualizerSlider:

Classes

struct  Private
 

Public Member Functions

 KisEqualizerSlider (QWidget *parent)
 
QSize minimumSizeHint () const override
 
void mouseMoveEvent (QMouseEvent *ev) override
 
void mousePressEvent (QMouseEvent *ev) override
 
void mouseReleaseEvent (QMouseEvent *ev) override
 
void paintEvent (QPaintEvent *event) override
 
void setRightmost (bool value)
 
void setToggleState (bool value)
 
QSize sizeHint () const override
 
 ~KisEqualizerSlider () override
 

Private Attributes

const QScopedPointer< Privatem_d
 

Detailed Description

Definition at line 16 of file kis_equalizer_slider.h.

Constructor & Destructor Documentation

◆ KisEqualizerSlider()

KisEqualizerSlider::KisEqualizerSlider ( QWidget * parent)

Definition at line 36 of file kis_equalizer_slider.cpp.

37 : QAbstractSlider(parent),
38 m_d(new Private(this))
39{
40 setOrientation(Qt::Vertical);
41 setFocusPolicy(Qt::WheelFocus);
42 setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
43}
const QScopedPointer< Private > m_d

◆ ~KisEqualizerSlider()

KisEqualizerSlider::~KisEqualizerSlider ( )
override

Definition at line 45 of file kis_equalizer_slider.cpp.

46{
47}

Member Function Documentation

◆ minimumSizeHint()

QSize KisEqualizerSlider::minimumSizeHint ( ) const
override

Definition at line 137 of file kis_equalizer_slider.cpp.

138{
139 return QSize(10, 40);
140}

◆ mouseMoveEvent()

void KisEqualizerSlider::mouseMoveEvent ( QMouseEvent * ev)
override

Definition at line 109 of file kis_equalizer_slider.cpp.

110{
111 if (ev->modifiers() & Qt::ShiftModifier &&
112 !rect().contains(ev->pos())) {
113
114 ev->ignore();
115 return;
116 }
117
118 const bool precise = ev->modifiers() & Qt::ControlModifier ||
119 ev->buttons() & Qt::RightButton;
120
121 int value = m_d->mousePosToValue(ev->pos(), !precise);
122 setSliderPosition(value);
123 triggerAction(SliderMove);
124 setRepeatAction(SliderNoAction);
125}
float value(const T *src, size_t ch)

References m_d, and value().

◆ mousePressEvent()

void KisEqualizerSlider::mousePressEvent ( QMouseEvent * ev)
override

Definition at line 93 of file kis_equalizer_slider.cpp.

94{
95 if (maximum() == minimum() || (ev->buttons() ^ ev->button())) {
96 ev->ignore();
97 return;
98 }
99
100 const bool precise = ev->modifiers() & Qt::ControlModifier ||
101 ev->button() == Qt::RightButton;
102
103 int value = m_d->mousePosToValue(ev->pos(), !precise);
104 setSliderPosition(value);
105 triggerAction(SliderMove);
106 setRepeatAction(SliderNoAction);
107}

References m_d, and value().

◆ mouseReleaseEvent()

void KisEqualizerSlider::mouseReleaseEvent ( QMouseEvent * ev)
override

Definition at line 127 of file kis_equalizer_slider.cpp.

128{
129 Q_UNUSED(ev);
130}

◆ paintEvent()

void KisEqualizerSlider::paintEvent ( QPaintEvent * event)
override

Definition at line 142 of file kis_equalizer_slider.cpp.

143{
144 Q_UNUSED(event);
145
146 const QRect bounds = m_d->boundingRect();
147 const QColor backgroundColor = palette().color(QPalette::Base);
148
149
150 QPainter p(this);
151
152 { // draw border
153
154 QStyleOptionViewItem option; // empty!
155 const int gridHint = style()->styleHint(QStyle::SH_Table_GridLineColor, &option, this);
156 const QColor gridColor = static_cast<QRgb>(gridHint);
157 const QPen gridPen(gridColor);
158
159 p.setPen(gridPen);
160 p.setBrush(backgroundColor);
161 p.drawRect(bounds);
162 }
163
164 { // draw slider
165 QRect sliderRect = m_d->sliderRect();
166 const int sliderPos = QStyle::sliderPositionFromValue(minimum(), maximum(), value(), sliderRect.height());
167 sliderRect.adjust(0, sliderRect.height() - sliderPos, 0, 0);
168
169 p.setPen(Qt::transparent);
170
171 QColor color = m_d->toggleState ?
174 p.setBrush(color);
175
176 p.drawRect(sliderRect);
177 }
178
179 QString textValue = QString::number(value());
180
181 /* Text isn't really needed for onion skinning and makes it look a bit cluttered. Uncomment this out of that changes.
182 { // draw text
183 QPalette::ColorRole textRole = QPalette::Text;
184
185 //Draw text shadow, This will increase readability when the background of same color
186 QRect shadowRect(bounds);
187 shadowRect.translate(1,1);
188 QColor textColor = palette().color(textRole);
189 QColor shadowColor = (textColor.value() <= 128)
190 ? QColor(255,255,255,160) : QColor(0,0,0,160);
191
192 p.setPen(shadowColor);
193 p.drawText(shadowRect, Qt::AlignCenter, textValue);
194
195 p.setPen(textColor);
196 p.drawText(bounds, Qt::AlignCenter, textValue);
197 }
198 */
199
200 // draw focus rect
201 if (hasFocus()) {
202 QStyleOptionFocusRect fropt;
203 fropt.initFrom(this);
204 fropt.backgroundColor = backgroundColor;
205
206 int dfw1 = style()->pixelMetric(QStyle::PM_DefaultFrameWidth, &fropt, this) + 1,
207 dfw2 = dfw1 * 2;
208 fropt.rect = kisGrowRect(bounds, -dfw1 - dfw2);
209
210 style()->drawPrimitive(QStyle::PE_FrameFocusRect, &fropt, &p, this);
211 }
212}
const Params2D p
QColor onionSkinsSliderEnabledColor() const
QColor onionSkinsSliderDisabledColor() const
static KisAnimTimelineColors * instance()
unsigned int QRgb
#define bounds(x, a, b)
T kisGrowRect(const T &rect, U offset)
Definition kis_global.h:186
rgba palette[MAX_PALETTE]
Definition palette.c:35

References bounds, KisAnimTimelineColors::instance(), kisGrowRect(), m_d, KisAnimTimelineColors::onionSkinsSliderDisabledColor(), KisAnimTimelineColors::onionSkinsSliderEnabledColor(), p, palette, and value().

◆ setRightmost()

void KisEqualizerSlider::setRightmost ( bool value)

Definition at line 49 of file kis_equalizer_slider.cpp.

50{
51 m_d->isRightmost = value;
52}

References m_d, and value().

◆ setToggleState()

void KisEqualizerSlider::setToggleState ( bool value)

Definition at line 54 of file kis_equalizer_slider.cpp.

55{
56 m_d->toggleState = value;
57 update();
58
59}
bool update(QSpinBox *spinBox)

References m_d, and value().

◆ sizeHint()

QSize KisEqualizerSlider::sizeHint ( ) const
override

Definition at line 132 of file kis_equalizer_slider.cpp.

133{
134 return QSize(25, 150);
135}

Member Data Documentation

◆ m_d

const QScopedPointer<Private> KisEqualizerSlider::m_d
private

Definition at line 35 of file kis_equalizer_slider.h.


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