25 : m_subpaths(subpaths)
65 bool resultInitialized =
false;
69 resultInitialized =
true;
82 auto it = polyIt->cbegin();
84 if (!resultInitialized && it != polyIt->cend()) {
86 resultInitialized =
true;
90 for (; it != polyIt->cend(); ++it) {
96 auto it = polyIt->cbegin();
98 if (!resultInitialized && it != polyIt->cend()) {
100 resultInitialized =
true;
104 for (; it != polyIt->cend(); ++it) {
129 path.addEllipse(center, rx, ry);
140 const QTransform invertedTransform = path.m_transform *
m_transform.inverted();
143 path.m_subpaths.size() +
144 path.m_additionalDecorations.size());
146 for (
auto it = path.m_subpaths.cbegin(); it != path.m_subpaths.cend(); ++it) {
150 for (
auto it = path.m_additionalDecorations.cbegin(); it != path.m_additionalDecorations.cend(); ++it) {
159 map(QTransform::fromTranslate(tx, ty));
const KisOptimizedBrushOutline * m_outline
QPolygonF dereference() const
const_iterator begin() const
void translate(qreal tx, qreal ty)
std::optional< QRectF > m_explicitBounds
void addPath(const QPainterPath &path)
const_iterator end() const
void addRect(const QRectF &rc)
QVector< QPolygonF > m_additionalDecorations
QRectF boundingRect() const
QRectF m_cachedBoundingRect
KisOptimizedBrushOutline()
void map(const QTransform &t)
KisOptimizedBrushOutline mapped(const QTransform &t) const
void addEllipse(const QPointF ¢er, qreal rx, qreal ry)
QVector< QPolygonF > m_subpaths
#define KIS_SAFE_ASSERT_RECOVER_RETURN_VALUE(cond, val)
void resetEmptyRectangle(const QPoint &pt, QRect *rc)
void accumulateBoundsNonEmpty(const Point &pt, Rect *bounds)