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

#include <kis_draggable_tool_button.h>

+ Inheritance diagram for KisDraggableToolButton:

Signals

void offsetChanged (int offset)
 
void valueChanged (int delta)
 

Public Member Functions

void beginDrag (const QPoint &pos)
 
int continueDrag (const QPoint &pos)
 
 KisDraggableToolButton (QWidget *parent)
 
void mouseMoveEvent (QMouseEvent *e) override
 
void mousePressEvent (QMouseEvent *e) override
 
int movementDelta (const QPoint &pos)
 
 ~KisDraggableToolButton () override
 

Private Member Functions

qreal tangent ()
 

Private Attributes

QPoint m_lastPosition
 
Qt::Orientation m_orientation
 
QPoint m_startPoint
 

Detailed Description

Definition at line 13 of file kis_draggable_tool_button.h.

Constructor & Destructor Documentation

◆ KisDraggableToolButton()

KisDraggableToolButton::KisDraggableToolButton ( QWidget * parent)

Definition at line 14 of file kis_draggable_tool_button.cpp.

15 : QToolButton(parent),
16 m_orientation(Qt::Horizontal)
17{
18}

◆ ~KisDraggableToolButton()

KisDraggableToolButton::~KisDraggableToolButton ( )
override

Definition at line 20 of file kis_draggable_tool_button.cpp.

21{
22}

Member Function Documentation

◆ beginDrag()

void KisDraggableToolButton::beginDrag ( const QPoint & pos)

◆ continueDrag()

int KisDraggableToolButton::continueDrag ( const QPoint & pos)

Definition at line 30 of file kis_draggable_tool_button.cpp.

31{
32 QPoint diff = pos - m_startPoint;
33
34 int value = 0;
35
36 qreal tanx = diff.x() != 0 ? qAbs(qreal(diff.y()) / diff.x()) : 100.0;
37
38 if (tanx > 10 && m_orientation == Qt::Horizontal) {
39 m_orientation = Qt::Vertical;
40 } else if (tanx < 0.1 && m_orientation == Qt::Vertical) {
41 m_orientation = Qt::Horizontal;
42 }
43
44 // people like it more when the they can zoom by dragging in both directions
45 Q_UNUSED(m_orientation);
46
47 value = diff.x() - diff.y();
48
49 return value;
50}
float value(const T *src, size_t ch)

References m_orientation, m_startPoint, and value().

◆ mouseMoveEvent()

void KisDraggableToolButton::mouseMoveEvent ( QMouseEvent * e)
override

Definition at line 66 of file kis_draggable_tool_button.cpp.

67{
68 int distance = continueDrag(e->pos());
69 Q_EMIT offsetChanged(distance);
70 int delta = movementDelta(e->pos());
71 Q_EMIT valueChanged(delta);
72
73 QToolButton::mouseMoveEvent(e);
74}
qreal distance(const QPointF &p1, const QPointF &p2)
int continueDrag(const QPoint &pos)
int movementDelta(const QPoint &pos)
void valueChanged(int delta)
void offsetChanged(int offset)

References continueDrag(), distance(), movementDelta(), offsetChanged(), and valueChanged().

◆ mousePressEvent()

void KisDraggableToolButton::mousePressEvent ( QMouseEvent * e)
override

Definition at line 60 of file kis_draggable_tool_button.cpp.

61{
62 beginDrag(e->pos());
63 QToolButton::mousePressEvent(e);
64}
void beginDrag(const QPoint &pos)

References beginDrag().

◆ movementDelta()

int KisDraggableToolButton::movementDelta ( const QPoint & pos)

Definition at line 52 of file kis_draggable_tool_button.cpp.

53{
54 QPoint diff = pos - m_lastPosition;
55 m_lastPosition = pos;
56 return diff.x() - diff.y();
57
58}

References m_lastPosition.

◆ offsetChanged

void KisDraggableToolButton::offsetChanged ( int offset)
signal

◆ tangent()

qreal KisDraggableToolButton::tangent ( )
private

◆ valueChanged

void KisDraggableToolButton::valueChanged ( int delta)
signal

Member Data Documentation

◆ m_lastPosition

QPoint KisDraggableToolButton::m_lastPosition
private

Definition at line 37 of file kis_draggable_tool_button.h.

◆ m_orientation

Qt::Orientation KisDraggableToolButton::m_orientation
private

Definition at line 35 of file kis_draggable_tool_button.h.

◆ m_startPoint

QPoint KisDraggableToolButton::m_startPoint
private

Definition at line 36 of file kis_draggable_tool_button.h.


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