Krita Source Code Documentation
Loading...
Searching...
No Matches
KoBakedShapeRenderer Struct Reference

#include <KoBakedShapeRenderer.h>

Public Member Functions

QPainter * bakeShapePainter ()
 
 KoBakedShapeRenderer (const QPainterPath &dstShapeOutline, const QTransform &dstShapeTransform, const QTransform &bakedTransform, const QRectF &referenceRect, bool contentIsObb, const QRectF &bakedShapeBoundingRect, bool referenceIsObb, const QTransform &patternTransform)
 
QImage patchImage () const
 
void renderShape (QPainter &painter)
 

Private Attributes

bool m_contentIsObb
 
QPainterPath m_dstShapeOutline
 
QTransform m_dstShapeTransform
 
QImage m_patch
 
QPainter m_patchPainter
 
const QTransform & m_patternTransform
 
QRect m_referenceRectUser
 
QTransform m_relativeToShape
 

Detailed Description

Definition at line 19 of file KoBakedShapeRenderer.h.

Constructor & Destructor Documentation

◆ KoBakedShapeRenderer()

KoBakedShapeRenderer::KoBakedShapeRenderer ( const QPainterPath & dstShapeOutline,
const QTransform & dstShapeTransform,
const QTransform & bakedTransform,
const QRectF & referenceRect,
bool contentIsObb,
const QRectF & bakedShapeBoundingRect,
bool referenceIsObb,
const QTransform & patternTransform )
inline

Definition at line 20 of file KoBakedShapeRenderer.h.

26 : m_dstShapeOutline(dstShapeOutline),
27 m_dstShapeTransform(dstShapeTransform),
28 m_contentIsObb(contentIsObb),
29 m_patternTransform(patternTransform)
30 {
31 KIS_SAFE_ASSERT_RECOVER_NOOP(!contentIsObb || !bakedShapeBoundingRect.isEmpty());
32
33 const QRectF dstShapeBoundingRect = dstShapeOutline.boundingRect();
34
35 QTransform relativeToBakedShape;
36
37 if (referenceIsObb || contentIsObb) {
38 m_relativeToShape = KisAlgebra2D::mapToRect(dstShapeBoundingRect);
39 relativeToBakedShape = KisAlgebra2D::mapToRect(bakedShapeBoundingRect);
40 }
41
42
44 referenceIsObb ?
45 m_relativeToShape.mapRect(referenceRect).toAlignedRect() :
46 referenceRect.toAlignedRect();
47
48 m_patch = QImage(m_referenceRectUser.size(), QImage::Format_ARGB32);
49 m_patch.fill(0);
50 m_patchPainter.begin(&m_patch);
51
52 m_patchPainter.translate(-m_referenceRectUser.topLeft());
54
55 if (contentIsObb) {
56 m_patchPainter.setTransform(m_relativeToShape, true);
57 m_patchPainter.setTransform(relativeToBakedShape.inverted(), true);
58 }
59
60 m_patchPainter.setTransform(bakedTransform.inverted(), true);
61 }
#define KIS_SAFE_ASSERT_RECOVER_NOOP(cond)
Definition kis_assert.h:130
QTransform mapToRect(const QRectF &rect)
const QTransform & m_patternTransform

References KIS_SAFE_ASSERT_RECOVER_NOOP, m_patch, m_patchPainter, m_referenceRectUser, m_relativeToShape, and KisAlgebra2D::mapToRect().

Member Function Documentation

◆ bakeShapePainter()

QPainter * KoBakedShapeRenderer::bakeShapePainter ( )
inline

Definition at line 63 of file KoBakedShapeRenderer.h.

63 {
64 return &m_patchPainter;
65 }

References m_patchPainter.

◆ patchImage()

QImage KoBakedShapeRenderer::patchImage ( ) const
inline

Definition at line 100 of file KoBakedShapeRenderer.h.

100 {
101 return m_patch;
102 }

References m_patch.

◆ renderShape()

void KoBakedShapeRenderer::renderShape ( QPainter & painter)
inline

Definition at line 67 of file KoBakedShapeRenderer.h.

67 {
68 painter.save();
69
70 painter.setTransform(m_dstShapeTransform, true);
71 painter.setClipPath(m_dstShapeOutline);
72
73 QTransform brushTransform;
74
75 QPointF patternOffset = m_referenceRectUser.topLeft();
76
77 brushTransform =
78 brushTransform *
79 QTransform::fromTranslate(patternOffset.x(), patternOffset.y());
80
81 if (m_contentIsObb) {
82 brushTransform = brushTransform * m_relativeToShape.inverted();
83 }
84
85 brushTransform = brushTransform * m_patternTransform;
86
87 if (m_contentIsObb) {
88 brushTransform = brushTransform * m_relativeToShape;
89 }
90
91 QBrush brush(m_patch);
92 brush.setTransform(brushTransform);
93
94 painter.setBrush(brush);
95 painter.drawPath(m_dstShapeOutline);
96
97 painter.restore();
98 }

References m_contentIsObb, m_dstShapeOutline, m_dstShapeTransform, m_patch, m_patternTransform, m_referenceRectUser, and m_relativeToShape.

Member Data Documentation

◆ m_contentIsObb

bool KoBakedShapeRenderer::m_contentIsObb
private

Definition at line 109 of file KoBakedShapeRenderer.h.

◆ m_dstShapeOutline

QPainterPath KoBakedShapeRenderer::m_dstShapeOutline
private

Definition at line 106 of file KoBakedShapeRenderer.h.

◆ m_dstShapeTransform

QTransform KoBakedShapeRenderer::m_dstShapeTransform
private

Definition at line 107 of file KoBakedShapeRenderer.h.

◆ m_patch

QImage KoBakedShapeRenderer::m_patch
private

Definition at line 112 of file KoBakedShapeRenderer.h.

◆ m_patchPainter

QPainter KoBakedShapeRenderer::m_patchPainter
private

Definition at line 113 of file KoBakedShapeRenderer.h.

◆ m_patternTransform

const QTransform& KoBakedShapeRenderer::m_patternTransform
private

Definition at line 110 of file KoBakedShapeRenderer.h.

◆ m_referenceRectUser

QRect KoBakedShapeRenderer::m_referenceRectUser
private

Definition at line 116 of file KoBakedShapeRenderer.h.

◆ m_relativeToShape

QTransform KoBakedShapeRenderer::m_relativeToShape
private

Definition at line 115 of file KoBakedShapeRenderer.h.


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