Krita Source Code Documentation
Loading...
Searching...
No Matches
KisReferenceImagesDecoration::Private Struct Reference

Classes

struct  Buffer
 

Public Member Functions

 Private (KisReferenceImagesDecoration *q)
 
void updateBufferByImageCoordinates (const QRectF &dirtyImageRect)
 
void updateBufferByWidgetCoordinates (const QRectF &dirtyWidgetRect)
 

Public Attributes

Buffer buffer
 
KisWeakSharedPtr< KisReferenceImagesLayerlayer
 
QTransform previousTransform
 
QSizeF previousViewSize
 
KisReferenceImagesDecorationq
 

Private Member Functions

void updateBuffer (QRectF widgetRect, QRectF imageRect)
 

Detailed Description

Definition at line 19 of file KisReferenceImagesDecoration.cpp.

Constructor & Destructor Documentation

◆ Private()

KisReferenceImagesDecoration::Private::Private ( KisReferenceImagesDecoration * q)
inlineexplicit

Definition at line 39 of file KisReferenceImagesDecoration.cpp.

40 : q(q)
41 {}

Member Function Documentation

◆ updateBuffer()

void KisReferenceImagesDecoration::Private::updateBuffer ( QRectF widgetRect,
QRectF imageRect )
inlineprivate

Definition at line 56 of file KisReferenceImagesDecoration.cpp.

57 {
58 KisCoordinatesConverter *viewConverter = q->view()->viewConverter();
59 QTransform transform = viewConverter->imageToWidgetTransform();
60
61 qreal devicePixelRatioF = q->view()->devicePixelRatioF();
62 if (buffer.image.isNull() || !buffer.bounds().contains(widgetRect)) {
63 const QRectF boundingImageRect = layer->boundingImageRect();
64 const QRectF boundingWidgetRect = q->view()->viewConverter()->imageToWidget(boundingImageRect);
65 widgetRect = boundingWidgetRect.intersected(q->view()->rect());
66
67 if (widgetRect.isNull()) return;
68
69 buffer.position = widgetRect.topLeft();
70 // to ensure that buffer is big enough for all the pixels on high dpi displays
71 // BUG 411118
72 QColorSpace space = buffer.image.colorSpace();
73 buffer.image = QImage((widgetRect.size()*devicePixelRatioF).toSize(), QImage::Format_ARGB32);
74 buffer.image.setColorSpace(space);
75 buffer.image.setDevicePixelRatio(devicePixelRatioF);
76
77 imageRect = q->view()->viewConverter()->widgetToImage(widgetRect);
78
79 }
80
81 QPainter gc(&buffer.image);
82
83 gc.translate(-buffer.position);
84 gc.setTransform(transform, true);
85
86 gc.save();
87 gc.setCompositionMode(QPainter::CompositionMode_Source);
88 gc.fillRect(imageRect, Qt::transparent);
89 gc.restore();
90
91 // to ensure that clipping rect is also big enough for all the pixels
92 // BUG 411118
93 gc.setClipRect(QRectF(imageRect.topLeft(), imageRect.size()*devicePixelRatioF));
95 }
QPointer< KisView > view() const
void paintReferences(QPainter &painter)
QPointF position
Top left corner of the buffer relative to the viewport.
KisWeakSharedPtr< KisReferenceImagesLayer > layer

References KisReferenceImagesLayer::boundingImageRect(), KisReferenceImagesDecoration::Private::Buffer::bounds(), buffer, KisReferenceImagesDecoration::Private::Buffer::image, KisCoordinatesConverter::imageToWidgetTransform(), layer, KisReferenceImagesLayer::paintReferences(), KisReferenceImagesDecoration::Private::Buffer::position, q, and KisCanvasDecoration::view().

◆ updateBufferByImageCoordinates()

void KisReferenceImagesDecoration::Private::updateBufferByImageCoordinates ( const QRectF & dirtyImageRect)
inline

Definition at line 43 of file KisReferenceImagesDecoration.cpp.

44 {
45 QRectF dirtyWidgetRect = q->view()->viewConverter()->imageToWidget(dirtyImageRect);
46 updateBuffer(dirtyWidgetRect, dirtyImageRect);
47 }
void updateBuffer(QRectF widgetRect, QRectF imageRect)

References q, updateBuffer(), and KisCanvasDecoration::view().

◆ updateBufferByWidgetCoordinates()

void KisReferenceImagesDecoration::Private::updateBufferByWidgetCoordinates ( const QRectF & dirtyWidgetRect)
inline

Definition at line 49 of file KisReferenceImagesDecoration.cpp.

50 {
51 QRectF dirtyImageRect = q->view()->viewConverter()->widgetToImage(dirtyWidgetRect);
52 updateBuffer(dirtyWidgetRect, dirtyImageRect);
53 }

References q, updateBuffer(), and KisCanvasDecoration::view().

Member Data Documentation

◆ buffer

Buffer KisReferenceImagesDecoration::Private::buffer

Definition at line 35 of file KisReferenceImagesDecoration.cpp.

◆ layer

KisWeakSharedPtr<KisReferenceImagesLayer> KisReferenceImagesDecoration::Private::layer

Definition at line 34 of file KisReferenceImagesDecoration.cpp.

◆ previousTransform

QTransform KisReferenceImagesDecoration::Private::previousTransform

Definition at line 36 of file KisReferenceImagesDecoration.cpp.

◆ previousViewSize

QSizeF KisReferenceImagesDecoration::Private::previousViewSize

Definition at line 37 of file KisReferenceImagesDecoration.cpp.

◆ q

KisReferenceImagesDecoration* KisReferenceImagesDecoration::Private::q

Definition at line 32 of file KisReferenceImagesDecoration.cpp.


The documentation for this struct was generated from the following file: