Krita Source Code Documentation
Loading...
Searching...
No Matches
KisOptimizedBrushOutline.h
Go to the documentation of this file.
1
/*
2
* SPDX-FileCopyrightText: 2022 Dmitry Kazakov <dimula73@gmail.com>
3
*
4
* SPDX-License-Identifier: GPL-2.0-or-later
5
*/
6
7
#ifndef KISOPTIMIZEDBRUSHOUTLINE_H
8
#define KISOPTIMIZEDBRUSHOUTLINE_H
9
10
#include <QPolygonF>
11
#include <QTransform>
12
#include <boost/iterator/iterator_facade.hpp>
13
#include <optional>
14
#include <kritaimage_export.h>
15
16
class
QPainterPath;
17
26
class
KRITAIMAGE_EXPORT
KisOptimizedBrushOutline
27
{
28
public
:
29
class
KRITAIMAGE_EXPORT
const_iterator
:
30
public
boost::iterator_facade <const_iterator,
31
QPolygonF,
32
boost::forward_traversal_tag,
33
QPolygonF>
34
{
35
public
:
36
const_iterator
()
37
: m_outline(0),
38
m_index(0) {}
39
40
const_iterator
(
const
KisOptimizedBrushOutline
*outline,
int
index)
41
: m_outline(outline),
42
m_index(index) {}
43
44
private
:
45
friend
class
boost::iterator_core_access;
46
47
void
increment
() {
48
m_index++;
49
}
50
51
bool
equal
(
const_iterator
const
& other)
const
{
52
return
m_index == other.
m_index
&&
53
m_outline == other.
m_outline
;
54
}
55
56
QPolygonF dereference()
const
;
57
58
private
:
59
const
KisOptimizedBrushOutline
*
m_outline
;
60
int
m_index
;
61
};
62
63
public
:
64
KisOptimizedBrushOutline
();
65
KisOptimizedBrushOutline
(
const
QPainterPath &path,
const
std::optional<QRectF> &
bounds
= std::nullopt);
66
KisOptimizedBrushOutline
(
const
QVector<QPolygonF>
&subpaths,
const
std::optional<QRectF> &
bounds
= std::nullopt);
67
68
QRectF boundingRect()
const
;
69
70
bool
isEmpty()
const
;
71
72
void
addRect(
const
QRectF &rc);
73
void
addEllipse(
const
QPointF ¢er, qreal rx, qreal ry);
74
void
addPath(
const
QPainterPath &path);
75
void
addPath(
const
KisOptimizedBrushOutline
&path);
76
77
void
translate(qreal tx, qreal ty);
78
void
translate(
const
QPointF &offset);
79
86
void
map(
const
QTransform &t);
87
91
KisOptimizedBrushOutline
mapped(
const
QTransform &t)
const
;
92
103
const_iterator
begin()
const
;
104
108
const_iterator
end()
const
;
109
110
private
:
111
QVector<QPolygonF>
m_subpaths
;
112
QVector<QPolygonF>
m_additionalDecorations
;
113
std::optional<QRectF>
m_explicitBounds
;
114
QTransform
m_transform
;
115
mutable
QRectF
m_cachedBoundingRect
;
116
};
117
118
#endif
// KISOPTIMIZEDBRUSHOUTLINE_H
KisOptimizedBrushOutline::const_iterator
Definition
KisOptimizedBrushOutline.h:34
KisOptimizedBrushOutline::const_iterator::const_iterator
const_iterator(const KisOptimizedBrushOutline *outline, int index)
Definition
KisOptimizedBrushOutline.h:40
KisOptimizedBrushOutline::const_iterator::const_iterator
const_iterator()
Definition
KisOptimizedBrushOutline.h:36
KisOptimizedBrushOutline::const_iterator::m_outline
const KisOptimizedBrushOutline * m_outline
Definition
KisOptimizedBrushOutline.h:59
KisOptimizedBrushOutline::const_iterator::increment
void increment()
Definition
KisOptimizedBrushOutline.h:47
KisOptimizedBrushOutline::const_iterator::equal
bool equal(const_iterator const &other) const
Definition
KisOptimizedBrushOutline.h:51
KisOptimizedBrushOutline::const_iterator::m_index
int m_index
Definition
KisOptimizedBrushOutline.h:60
KisOptimizedBrushOutline
Definition
KisOptimizedBrushOutline.h:27
KisOptimizedBrushOutline::m_explicitBounds
std::optional< QRectF > m_explicitBounds
Definition
KisOptimizedBrushOutline.h:113
KisOptimizedBrushOutline::m_additionalDecorations
QVector< QPolygonF > m_additionalDecorations
Definition
KisOptimizedBrushOutline.h:112
KisOptimizedBrushOutline::m_transform
QTransform m_transform
Definition
KisOptimizedBrushOutline.h:114
KisOptimizedBrushOutline::m_cachedBoundingRect
QRectF m_cachedBoundingRect
Definition
KisOptimizedBrushOutline.h:115
KisOptimizedBrushOutline::m_subpaths
QVector< QPolygonF > m_subpaths
Definition
KisOptimizedBrushOutline.h:111
QList
Definition
KisQStringListFwd.h:16
bounds
#define bounds(x, a, b)
Definition
kis_curve_widget.cpp:46
libs
image
brushengine
KisOptimizedBrushOutline.h
Generated at
2025-11-04 02:30:02+01:00
from
Krita
branch
master
, commit
c9dde2e79561a8aea4a7e8d9ac99c98a7bac9e52