35 bool bPolyPolyChanged =
false;
37 auto aIter( rAbsPoints.
rbegin() );
38 for( ; aIter != rAbsPoints.
rend(); ++aIter )
40 sal_uInt32 nPoly, nPnt;
49 if( aCandidate.count() < 2 )
58 bPolyPolyChanged =
true;
62 return bPolyPolyChanged;
67 bool bPolyPolyChanged =
false;
69 auto aIter( rAbsPoints.
rbegin() );
70 for( ; aIter != rAbsPoints.
rend(); ++aIter )
72 sal_uInt32 nPolyNum, nPntNum;
78 const sal_uInt32
nCount(aCandidate.count());
80 if(
nCount && (nPntNum + 1 <
nCount || aCandidate.isClosed()))
82 bool bCandidateChanged(
false);
85 const sal_uInt32 nNextIndex((nPntNum + 1) %
nCount);
86 const bool bContolUsed(aCandidate.areControlPointsUsed()
87 && (aCandidate.isNextControlPointUsed(nPntNum) || aCandidate.isPrevControlPointUsed(nNextIndex)));
94 aCandidate.resetNextControlPoint(nPntNum);
95 aCandidate.resetPrevControlPoint(nNextIndex);
96 bCandidateChanged =
true;
107 aCandidate.setNextControlPoint(nPntNum,
interpolate(aStart, aEnd, (1.0 / 3.0)));
108 aCandidate.setPrevControlPoint(nNextIndex,
interpolate(aStart, aEnd, (2.0 / 3.0)));
109 bCandidateChanged =
true;
113 if(bCandidateChanged)
116 bPolyPolyChanged =
true;
122 return bPolyPolyChanged;
127 bool bPolyPolygonChanged(
false);
129 auto aIter( rAbsPoints.
rbegin() );
130 for( ; aIter != rAbsPoints.
rend(); ++aIter )
132 sal_uInt32 nPolyNum, nPntNum;
146 bPolyPolygonChanged =
true;
151 return bPolyPolygonChanged;
156 const sal_uInt32 nPolyCount(rPoly.
count());
157 sal_uInt32 nPolyNum(0);
159 while(nPolyNum < nPolyCount)
163 if(nAbsPnt < nPointCount)
173 nAbsPnt -= nPointCount;
void remove(sal_uInt32 nIndex, sal_uInt32 nCount=1)
bool setContinuityInPoint(B2DPolygon &rCandidate, sal_uInt32 nIndex, B2VectorContinuity eContinuity)
PolyPolygonEditor(const basegfx::B2DPolyPolygon &rPolyPolygon)
void setB2DPolygon(sal_uInt32 nIndex, const B2DPolygon &rPolygon)
HSLColor interpolate(const HSLColor &rFrom, const HSLColor &rTo, double t, bool bCCW)
B2DPolygon const & getB2DPolygon(sal_uInt32 nIndex) const
basegfx::B2DPolyPolygon maPolyPolygon
bool DeletePoints(const o3tl::sorted_vector< sal_uInt16 > &rAbsPoints)
returns true if the B2DPolyPolygon was changed.
bool SetPointsSmooth(basegfx::B2VectorContinuity eFlags, const o3tl::sorted_vector< sal_uInt16 > &rAbsPoints)
returns true if the B2DPolyPolygon was changed.
static bool GetRelativePolyPoint(const basegfx::B2DPolyPolygon &rPoly, sal_uInt32 nAbsPnt, sal_uInt32 &rPolyNum, sal_uInt32 &rPointNum)
Outputs the relative position ( polygon number and point number in that polygon ) from the absolute p...
bool expandToCurveInPoint(B2DPolygon &rCandidate, sal_uInt32 nIndex)
void remove(sal_uInt32 nIndex, sal_uInt32 nCount=1)
bool SetSegmentsKind(SdrPathSegmentKind eKind, const o3tl::sorted_vector< sal_uInt16 > &rAbsPoints)
returns true if the B2DPolyPolygon was changed.
const_reverse_iterator rend() const
const_reverse_iterator rbegin() const
basegfx::B2DPolyPolygon maPolyPolygon