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

#include <kcanvaspreview.h>

+ Inheritance diagram for KCanvasPreview:

Public Slots

void setxOffsetLock (bool)
 
void setyOffsetLock (bool)
 

Signals

void sigModifiedXOffset (int)
 
void sigModifiedYOffset (int)
 

Public Member Functions

 KCanvasPreview (QWidget *parent=0)
 
void mouseMoveEvent (QMouseEvent *event) override
 
void mousePressEvent (QMouseEvent *event) override
 
void mouseReleaseEvent (QMouseEvent *) override
 
void paintEvent (QPaintEvent *) override
 
void setCanvasSize (qint32 w, qint32 h)
 
void setImageOffset (qint32 x, qint32 y)
 
void setImageSize (qint32 w, qint32 h)
 
bool xOffsetLocked () const
 
bool yOffsetLocked () const
 
 ~KCanvasPreview () override
 

Protected Member Functions

bool isInRegion (QPoint point)
 
double scalingFactor ()
 

Protected Attributes

bool m_dragging {false}
 
qint32 m_height {0}
 
QImage m_image
 
qint32 m_imageHeight {0}
 
qint32 m_imageWidth {0}
 
QPoint m_prevDragPoint
 
qint32 m_width {0}
 
qint16 m_xCanvasOffset {0}
 
qint32 m_xOffset {0}
 
bool m_xOffsetLocked {false}
 
qint16 m_yCanvasOffset {0}
 
qint32 m_yOffset {0}
 
bool m_yOffsetLocked {false}
 

Detailed Description

Definition at line 13 of file kcanvaspreview.h.

Constructor & Destructor Documentation

◆ KCanvasPreview()

KCanvasPreview::KCanvasPreview ( QWidget * parent = 0)

Definition at line 14 of file kcanvaspreview.cc.

14 : QWidget(parent), m_dragging(false)
15{
16 setMouseTracking(true);
17}

◆ ~KCanvasPreview()

KCanvasPreview::~KCanvasPreview ( )
override

Definition at line 19 of file kcanvaspreview.cc.

20{
21}

Member Function Documentation

◆ isInRegion()

bool KCanvasPreview::isInRegion ( QPoint point)
protected

Definition at line 82 of file kcanvaspreview.cc.

83{
84 double scale = scalingFactor();
85
86 if ((point.x() >= (m_xOffset * scale) + m_xCanvasOffset) && (point.x() < ((m_xOffset + m_imageWidth) * scale) + m_xCanvasOffset) &&
87 (point.y() >= (m_yOffset * scale) + m_yCanvasOffset) && (point.y() < ((m_yOffset + m_imageHeight) * scale) + m_yCanvasOffset)) {
88 return true;
89 }
90
91 return false;
92}
double scalingFactor()

References m_imageHeight, m_imageWidth, m_xCanvasOffset, m_xOffset, m_yCanvasOffset, m_yOffset, and scalingFactor().

◆ mouseMoveEvent()

void KCanvasPreview::mouseMoveEvent ( QMouseEvent * event)
override

Definition at line 50 of file kcanvaspreview.cc.

51{
52 if (m_dragging) {
53 // calculate new image offset
54 double scale = scalingFactor();
55 int newXOffset , newYOffset;
56 if(!xOffsetLocked()) {
57 newXOffset = ((event->pos().x() - m_prevDragPoint.x()) / scale) + m_xOffset;
58 }
59 if(!yOffsetLocked()) {
60 newYOffset = ((event->pos().y() - m_prevDragPoint.y()) / scale) + m_yOffset;
61 }
62 m_prevDragPoint = event->pos();
63 if(!xOffsetLocked()) {
64 Q_EMIT sigModifiedXOffset(newXOffset);
65 }
66 if(!yOffsetLocked()) {
67 Q_EMIT sigModifiedYOffset(newYOffset);
68 }
69 } else {
70 QCursor cursor;
71
72 if (isInRegion(event->pos())) {
73 cursor.setShape(Qt::SizeAllCursor);
74 } else {
75 cursor.setShape(Qt::ArrowCursor);
76 }
77
78 setCursor(cursor);
79 }
80}
bool isInRegion(QPoint point)
bool xOffsetLocked() const
bool yOffsetLocked() const
void sigModifiedXOffset(int)
void sigModifiedYOffset(int)

References isInRegion(), m_dragging, m_prevDragPoint, m_xOffset, m_yOffset, scalingFactor(), sigModifiedXOffset(), sigModifiedYOffset(), xOffsetLocked(), and yOffsetLocked().

◆ mousePressEvent()

void KCanvasPreview::mousePressEvent ( QMouseEvent * event)
override

Definition at line 37 of file kcanvaspreview.cc.

38{
39 if (isInRegion(event->pos())) {
40 m_dragging = true;
41 m_prevDragPoint = event->pos();
42 }
43}

References isInRegion(), m_dragging, and m_prevDragPoint.

◆ mouseReleaseEvent()

void KCanvasPreview::mouseReleaseEvent ( QMouseEvent * )
override

Definition at line 45 of file kcanvaspreview.cc.

46{
47 m_dragging = false;
48}

References m_dragging.

◆ paintEvent()

void KCanvasPreview::paintEvent ( QPaintEvent * )
override

Definition at line 23 of file kcanvaspreview.cc.

24{
25 QPainter p(this);
26
27 double scale = scalingFactor();
28
29 m_xCanvasOffset = (width() - scale * m_width) / 2.0;
30 m_yCanvasOffset = (height() - scale * m_height) / 2.0;
31
32 p.fillRect(m_xCanvasOffset, m_yCanvasOffset, m_width * scale, m_height * scale, QBrush(Qt::white));
33 p.setPen(QPen(Qt::red));
34 p.drawRect(m_xCanvasOffset + m_xOffset * scale, m_yCanvasOffset + m_yOffset * scale, m_imageWidth * scale, m_imageHeight * scale);
35}
const Params2D p

References m_height, m_imageHeight, m_imageWidth, m_width, m_xCanvasOffset, m_xOffset, m_yCanvasOffset, m_yOffset, p, and scalingFactor().

◆ scalingFactor()

double KCanvasPreview::scalingFactor ( )
protected

Definition at line 94 of file kcanvaspreview.cc.

95{
96 // take into account offset frame size to show when the canvas has been shrunk
97 const int maxHeight = (m_height > m_imageHeight) ? m_height : m_imageHeight;
98 const int maxWidth = (m_width > m_imageWidth) ? m_width : m_imageWidth;
99
100 const double xScale = (double)(height() - 1) / maxHeight;
101 const double yScale = (double)(width() - 1) / maxWidth;
102
103 return (xScale < yScale) ? xScale : yScale;
104}

References m_height, m_imageHeight, m_imageWidth, and m_width.

◆ setCanvasSize()

void KCanvasPreview::setCanvasSize ( qint32 w,
qint32 h )

Definition at line 114 of file kcanvaspreview.cc.

References m_height, and m_width.

◆ setImageOffset()

void KCanvasPreview::setImageOffset ( qint32 x,
qint32 y )

Definition at line 122 of file kcanvaspreview.cc.

References m_xOffset, and m_yOffset.

◆ setImageSize()

void KCanvasPreview::setImageSize ( qint32 w,
qint32 h )

Definition at line 106 of file kcanvaspreview.cc.

107{
108 m_imageWidth = w;
110
111 update();
112}

References m_imageHeight, and m_imageWidth.

◆ setxOffsetLock

void KCanvasPreview::setxOffsetLock ( bool value)
slot

Definition at line 133 of file kcanvaspreview.cc.

134{
136}
float value(const T *src, size_t ch)

References m_xOffsetLocked, and value().

◆ setyOffsetLock

void KCanvasPreview::setyOffsetLock ( bool value)
slot

Definition at line 141 of file kcanvaspreview.cc.

142{
144}

References m_yOffsetLocked, and value().

◆ sigModifiedXOffset

void KCanvasPreview::sigModifiedXOffset ( int )
signal

◆ sigModifiedYOffset

void KCanvasPreview::sigModifiedYOffset ( int )
signal

◆ xOffsetLocked()

bool KCanvasPreview::xOffsetLocked ( ) const

Definition at line 129 of file kcanvaspreview.cc.

130{
131 return m_xOffsetLocked;
132}

References m_xOffsetLocked.

◆ yOffsetLocked()

bool KCanvasPreview::yOffsetLocked ( ) const

Definition at line 137 of file kcanvaspreview.cc.

138{
139 return m_yOffsetLocked;
140}

References m_yOffsetLocked.

Member Data Documentation

◆ m_dragging

bool KCanvasPreview::m_dragging {false}
protected

Definition at line 52 of file kcanvaspreview.h.

52{false};

◆ m_height

qint32 KCanvasPreview::m_height {0}
protected

Definition at line 47 of file kcanvaspreview.h.

47{0}, m_height {0};

◆ m_image

QImage KCanvasPreview::m_image
protected

Definition at line 54 of file kcanvaspreview.h.

◆ m_imageHeight

qint32 KCanvasPreview::m_imageHeight {0}
protected

Definition at line 48 of file kcanvaspreview.h.

48{0}, m_imageHeight {0};

◆ m_imageWidth

qint32 KCanvasPreview::m_imageWidth {0}
protected

Definition at line 48 of file kcanvaspreview.h.

48{0}, m_imageHeight {0};

◆ m_prevDragPoint

QPoint KCanvasPreview::m_prevDragPoint
protected

Definition at line 55 of file kcanvaspreview.h.

◆ m_width

qint32 KCanvasPreview::m_width {0}
protected

Definition at line 47 of file kcanvaspreview.h.

47{0}, m_height {0};

◆ m_xCanvasOffset

qint16 KCanvasPreview::m_xCanvasOffset {0}
protected

Definition at line 51 of file kcanvaspreview.h.

51{0}, m_yCanvasOffset {0};

◆ m_xOffset

qint32 KCanvasPreview::m_xOffset {0}
protected

Definition at line 49 of file kcanvaspreview.h.

49{0}, m_yOffset {0};

◆ m_xOffsetLocked

bool KCanvasPreview::m_xOffsetLocked {false}
protected

Definition at line 57 of file kcanvaspreview.h.

57{false};

◆ m_yCanvasOffset

qint16 KCanvasPreview::m_yCanvasOffset {0}
protected

Definition at line 51 of file kcanvaspreview.h.

51{0}, m_yCanvasOffset {0};

◆ m_yOffset

qint32 KCanvasPreview::m_yOffset {0}
protected

Definition at line 49 of file kcanvaspreview.h.

49{0}, m_yOffset {0};

◆ m_yOffsetLocked

bool KCanvasPreview::m_yOffsetLocked {false}
protected

Definition at line 58 of file kcanvaspreview.h.

58{false};

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