198 assert( !bIsCleared );
220 else if( bIsCleared )
288 assert( !bIsCleared );
322 else if( bIsCleared )
407 return mpImpl->isCleared();
420 return !(*
this == rRHS);
425 mpImpl->unionRange(rRange);
430 mpImpl->unionPolyPolygon(rPolyPoly);
435 mpImpl->intersectRange(rRange);
440 mpImpl->intersectPolyPolygon(rPolyPoly);
445 mpImpl->subtractRange(rRange);
450 mpImpl->subtractPolyPolygon(rPolyPoly);
460 mpImpl->xorPolyPolygon(rPolyPoly);
465 return mpImpl->getClipPoly();
470 return mpImpl->transform(rTranslate);
B2DPolygon const & getB2DPolygon(sal_uInt32 nIndex) const
void append(const B2DPolygon &rPolygon, sal_uInt32 nCount=1)
void transform(const basegfx::B2DHomMatrix &rMatrix)
Multiple ranges in one object.
sal_uInt32 count() const
Number of included ranges.
B2DPolyPolygon solveCrossovers() const
Request a poly-polygon with solved cross-overs.
void appendElement(const B2DRange &rRange, B2VectorOrientation eOrient)
void transform(const B2DHomMatrix &rTranslate)
sal_uInt32 count() const
member count
A two-dimensional interval over doubles.
bool isEmpty() const
Check if the interval set is empty.
This class provides an optimized, symbolic clip state for graphical output.
void intersectPolyPolygon(const B2DPolyPolygon &)
void intersectRange(const B2DRange &)
void unionRange(const B2DRange &)
void makeNull()
Set clip to 'null' - nothing is visible.
void subtractPolyPolygon(const B2DPolyPolygon &)
B2DClipState & operator=(const B2DClipState &)
bool operator==(const B2DClipState &) const
void unionPolyPolygon(const B2DPolyPolygon &)
B2DClipState()
Init clip, in 'cleared' state - everything is visible.
bool isCleared() const
returns true when clip is 'cleared' - everything is visible
void subtractRange(const B2DRange &)
void transform(const B2DHomMatrix &)
B2DPolyPolygon const & getClipPoly() const
void xorPolyPolygon(const B2DPolyPolygon &)
bool operator!=(const B2DClipState &) const
void xorRange(const B2DRange &)
void unionRange(const B2DRange &rRange)
B2DPolyPolygon const & getClipPoly() const
void xorRange(const B2DRange &rRange)
B2DPolyPolygon maClipPoly
void subtractRange(const B2DRange &rRange)
void unionPolyPolygon(const B2DPolyPolygon &rPolyPoly)
void intersectPolyPolygon(const B2DPolyPolygon &rPolyPoly)
void subtractPolyPolygon(const B2DPolyPolygon &rPolyPoly)
void xorPolyPolygon(const B2DPolyPolygon &rPolyPoly)
void addPolyPolygon(const B2DPolyPolygon &aPoly, Operation eOp)
ImplB2DClipState(B2DPolyPolygon aPoly)
bool isNullClipPoly() const
void addRange(const B2DRange &rRange, Operation eOp)
void intersectRange(const B2DRange &rRange)
B2DPolyRange maPendingRanges
bool operator==(const ImplB2DClipState &rRHS) const
void transform(const basegfx::B2DHomMatrix &rTranslate)
void commitPendingRanges() const
void commitPendingPolygons() const
B2DPolyPolygon maPendingPolygons
bool same_object(const cow_wrapper &rOther) const
B2DPolyPolygon prepareForPolygonOperation(const B2DPolygon &rCandidate)
prep for ops - solve self-intersections and intersections, remove neutral parts and check orientation...
B2DPolygon createPolygonFromRect(const B2DRectangle &rRect, double fRadiusX, double fRadiusY)
Create a polygon from a rectangle.
B2DPolyPolygon solvePolygonOperationOr(const B2DPolyPolygon &rCandidateA, const B2DPolyPolygon &rCandidateB)
OR: Return all areas where CandidateA or CandidateB exist.
B2DPolyPolygon solvePolygonOperationAnd(const B2DPolyPolygon &rCandidateA, const B2DPolyPolygon &rCandidateB)
AND: Return all areas where CandidateA and CandidateB exist.
B2DPolyPolygon correctOrientations(const B2DPolyPolygon &rCandidate)
B2DPolyPolygon solvePolygonOperationXor(const B2DPolyPolygon &rCandidateA, const B2DPolyPolygon &rCandidateB)
XOR: Return all areas where CandidateA or CandidateB exist, but not both.
B2DPolyPolygon stripNeutralPolygons(const B2DPolyPolygon &rCandidate)
Strip neutral polygons from PolyPolygon.
B2DPolyPolygon solveCrossovers(const B2DPolyPolygon &rCandidate, size_t *pPointLimit)
Solve all crossovers (aka self-intersections) in a polyPolygon.
B2DPolyPolygon stripDispensablePolygons(const B2DPolyPolygon &rCandidate, bool bKeepAboveZero)
Remove unnecessary/non-displayed polygons.
B2DPolyPolygon solvePolygonOperationDiff(const B2DPolyPolygon &rCandidateA, const B2DPolyPolygon &rCandidateB)
DIFF: Return all areas where CandidateA is not covered by CandidateB (cut B out of A)
@ Positive
mathematically positive oriented