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 16 of file KisReferenceImagesDecoration.cpp.

Constructor & Destructor Documentation

◆ Private()

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

Definition at line 36 of file KisReferenceImagesDecoration.cpp.

37 : q(q)
38 {}

Member Function Documentation

◆ updateBuffer()

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

Definition at line 53 of file KisReferenceImagesDecoration.cpp.

54 {
55 KisCoordinatesConverter *viewConverter = q->view()->viewConverter();
56 QTransform transform = viewConverter->imageToWidgetTransform();
57
58 qreal devicePixelRatioF = q->view()->devicePixelRatioF();
59 if (buffer.image.isNull() || !buffer.bounds().contains(widgetRect)) {
60 const QRectF boundingImageRect = layer->boundingImageRect();
61 const QRectF boundingWidgetRect = q->view()->viewConverter()->imageToWidget(boundingImageRect);
62 widgetRect = boundingWidgetRect.intersected(q->view()->rect());
63
64 if (widgetRect.isNull()) return;
65
66 buffer.position = widgetRect.topLeft();
67 // to ensure that buffer is big enough for all the pixels on high dpi displays
68 // BUG 411118
69 buffer.image = QImage((widgetRect.size()*devicePixelRatioF).toSize(), QImage::Format_ARGB32);
70 buffer.image.setDevicePixelRatio(devicePixelRatioF);
71
72 imageRect = q->view()->viewConverter()->widgetToImage(widgetRect);
73
74 }
75
76 QPainter gc(&buffer.image);
77
78 gc.translate(-buffer.position);
79 gc.setTransform(transform, true);
80
81 gc.save();
82 gc.setCompositionMode(QPainter::CompositionMode_Source);
83 gc.fillRect(imageRect, Qt::transparent);
84 gc.restore();
85
86 // to ensure that clipping rect is also big enough for all the pixels
87 // BUG 411118
88 gc.setClipRect(QRectF(imageRect.topLeft(), imageRect.size()*devicePixelRatioF));
90 }
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 40 of file KisReferenceImagesDecoration.cpp.

41 {
42 QRectF dirtyWidgetRect = q->view()->viewConverter()->imageToWidget(dirtyImageRect);
43 updateBuffer(dirtyWidgetRect, dirtyImageRect);
44 }
void updateBuffer(QRectF widgetRect, QRectF imageRect)

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

◆ updateBufferByWidgetCoordinates()

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

Definition at line 46 of file KisReferenceImagesDecoration.cpp.

47 {
48 QRectF dirtyImageRect = q->view()->viewConverter()->widgetToImage(dirtyWidgetRect);
49 updateBuffer(dirtyWidgetRect, dirtyImageRect);
50 }

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

Member Data Documentation

◆ buffer

Buffer KisReferenceImagesDecoration::Private::buffer

Definition at line 32 of file KisReferenceImagesDecoration.cpp.

◆ layer

KisWeakSharedPtr<KisReferenceImagesLayer> KisReferenceImagesDecoration::Private::layer

Definition at line 31 of file KisReferenceImagesDecoration.cpp.

◆ previousTransform

QTransform KisReferenceImagesDecoration::Private::previousTransform

Definition at line 33 of file KisReferenceImagesDecoration.cpp.

◆ previousViewSize

QSizeF KisReferenceImagesDecoration::Private::previousViewSize

Definition at line 34 of file KisReferenceImagesDecoration.cpp.

◆ q

KisReferenceImagesDecoration* KisReferenceImagesDecoration::Private::q

Definition at line 29 of file KisReferenceImagesDecoration.cpp.


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