|
Krita Source Code Documentation
|
#include <KisOptimizedBrushOutline.h>
Classes | |
| class | const_iterator |
Public Member Functions | |
| void | addEllipse (const QPointF ¢er, qreal rx, qreal ry) |
| void | addPath (const KisOptimizedBrushOutline &path) |
| void | addPath (const QPainterPath &path) |
| void | addRect (const QRectF &rc) |
| const_iterator | begin () const |
| QRectF | boundingRect () const |
| const_iterator | end () const |
| bool | isEmpty () const |
| KisOptimizedBrushOutline () | |
| KisOptimizedBrushOutline (const QPainterPath &path, const std::optional< QRectF > &bounds=std::nullopt) | |
| KisOptimizedBrushOutline (const QVector< QPolygonF > &subpaths, const std::optional< QRectF > &bounds=std::nullopt) | |
| void | map (const QTransform &t) |
| KisOptimizedBrushOutline | mapped (const QTransform &t) const |
| void | translate (const QPointF &offset) |
| void | translate (qreal tx, qreal ty) |
Private Attributes | |
| QVector< QPolygonF > | m_additionalDecorations |
| QRectF | m_cachedBoundingRect |
| std::optional< QRectF > | m_explicitBounds |
| QVector< QPolygonF > | m_subpaths |
| QTransform | m_transform |
An special class for storing the brush outline in an optimized way. It converts the outline into the vector of QPolygonF objects right away and avoids doing any modifications and/or transformations to it until the final stage, when the outline is requested to be drawn.
Definition at line 26 of file KisOptimizedBrushOutline.h.
| KisOptimizedBrushOutline::KisOptimizedBrushOutline | ( | ) |
Definition at line 13 of file KisOptimizedBrushOutline.cpp.
| KisOptimizedBrushOutline::KisOptimizedBrushOutline | ( | const QPainterPath & | path, |
| const std::optional< QRectF > & | bounds = std::nullopt ) |
Definition at line 17 of file KisOptimizedBrushOutline.cpp.
| KisOptimizedBrushOutline::KisOptimizedBrushOutline | ( | const QVector< QPolygonF > & | subpaths, |
| const std::optional< QRectF > & | bounds = std::nullopt ) |
Definition at line 24 of file KisOptimizedBrushOutline.cpp.
| void KisOptimizedBrushOutline::addEllipse | ( | const QPointF & | center, |
| qreal | rx, | ||
| qreal | ry ) |
Definition at line 126 of file KisOptimizedBrushOutline.cpp.
References addPath().
| void KisOptimizedBrushOutline::addPath | ( | const KisOptimizedBrushOutline & | path | ) |
Definition at line 138 of file KisOptimizedBrushOutline.cpp.
References m_additionalDecorations, m_cachedBoundingRect, and m_transform.
| void KisOptimizedBrushOutline::addPath | ( | const QPainterPath & | path | ) |
Definition at line 133 of file KisOptimizedBrushOutline.cpp.
References addPath(), and KisOptimizedBrushOutline().
| void KisOptimizedBrushOutline::addRect | ( | const QRectF & | rc | ) |
Definition at line 119 of file KisOptimizedBrushOutline.cpp.
References addPath().
| KisOptimizedBrushOutline::const_iterator KisOptimizedBrushOutline::begin | ( | ) | const |
Begins iteration over the polygons contained in the brush outline. KisOptimizedBrushOutline will never return a constructed QVector of the polygons, because it may require too many memory allocations.
One cannot change the internal polygon, because the returned polygon is transformed using the transformation that is stored separately.
Definition at line 43 of file KisOptimizedBrushOutline.cpp.
| QRectF KisOptimizedBrushOutline::boundingRect | ( | ) | const |
We don't use normal begin()/end() iteration here, because it makes too many allocations for the polygons. Instead we calculate the bounding rect by mere iteration over points.
This is a highly optimized way to accumulate a rect from a set of points:
1) QRectF::isEmpty() is expensive, so use resultInitialized instead 2) Use KisAlgebra2D::accumulateBoundsNonEmpty to avoid calling isEmpty()
Definition at line 53 of file KisOptimizedBrushOutline.cpp.
References KisAlgebra2D::accumulateBoundsNonEmpty(), m_additionalDecorations, m_cachedBoundingRect, m_explicitBounds, m_subpaths, m_transform, and KisAlgebra2D::Private::resetEmptyRectangle().
| KisOptimizedBrushOutline::const_iterator KisOptimizedBrushOutline::end | ( | ) | const |
End iterator for iteration over all the embedded polygons
Definition at line 48 of file KisOptimizedBrushOutline.cpp.
References m_additionalDecorations, and m_subpaths.
| bool KisOptimizedBrushOutline::isEmpty | ( | ) | const |
Definition at line 114 of file KisOptimizedBrushOutline.cpp.
| void KisOptimizedBrushOutline::map | ( | const QTransform & | t | ) |
Transforms all the polygons belonging to the outline. The transformation is done in optimized way, that is, no polygons are transformed until the final iteration over them.
Definition at line 30 of file KisOptimizedBrushOutline.cpp.
References m_cachedBoundingRect, and m_transform.
| KisOptimizedBrushOutline KisOptimizedBrushOutline::mapped | ( | const QTransform & | t | ) | const |
A helper function for
Definition at line 36 of file KisOptimizedBrushOutline.cpp.
References map().
| void KisOptimizedBrushOutline::translate | ( | const QPointF & | offset | ) |
Definition at line 162 of file KisOptimizedBrushOutline.cpp.
References translate().
| void KisOptimizedBrushOutline::translate | ( | qreal | tx, |
| qreal | ty ) |
Definition at line 157 of file KisOptimizedBrushOutline.cpp.
References map().
|
private |
Definition at line 112 of file KisOptimizedBrushOutline.h.
|
mutableprivate |
Definition at line 115 of file KisOptimizedBrushOutline.h.
|
private |
Definition at line 113 of file KisOptimizedBrushOutline.h.
|
private |
Definition at line 111 of file KisOptimizedBrushOutline.h.
|
private |
Definition at line 114 of file KisOptimizedBrushOutline.h.