30#include <com/sun/star/drawing/PointSequence.hpp>
31#include <com/sun/star/drawing/FlagSequence.hpp>
36namespace basegfx {
class B2DPolyPolygon; }
146 const B2DPoint& rEdge1Start,
const B2DVector& rEdge1Delta,
147 const B2DPoint& rEdge2Start,
const B2DVector& rEdge2Delta,
149 double* pCut1 =
nullptr,
double* pCut2 =
nullptr);
155 const B2DPoint& rPoint,
156 const B2DPoint& rEdgeStart,
157 const B2DVector& rEdgeDelta,
158 double* pCut =
nullptr);
208 const B2DPolygon& rCandidate,
209 const std::vector<double>& rDotDashArray,
212 double fDotDashLength = 0.0);
215 const ::std::vector<double>& rDotDashArray,
218 double fDotDashLength = 0.0);
479 const css::drawing::PointSequence& rPointSequenceSource);
482 css::drawing::PointSequence& rPointSequenceRetval);
488 const css::drawing::PointSequence& rPointSequenceSource,
489 const css::drawing::FlagSequence& rFlagSequenceSource);
492 css::drawing::PointSequence& rPointSequenceRetval,
493 css::drawing::FlagSequence& rFlagSequenceRetval);
510 std::u16string_view rSvgPointsAttribute );
#define BASEGFX_DLLPUBLIC
Base Point class with two double values.
A two-dimensional interval over doubles.
Base Point class with two double values.
::std::vector< B2DTriangle > B2DTriangleVector
B2DPolygon removeNeutralPoints(const B2DPolygon &rCandidate)
double getArea(const B2DPolygon &rCandidate)
B2VectorContinuity getContinuityInPoint(const B2DPolygon &rCandidate, sal_uInt32 nIndex)
bool isPointOnLine(const B2DPoint &rStart, const B2DPoint &rEnd, const B2DPoint &rCandidate, bool bWithPoints)
B2DPolygon const & createHalfUnitCircle()
create half circle centered on (0,0) from [0 .. M_PI]
CutFlagValue findCut(const B2DPoint &rEdge1Start, const B2DVector &rEdge1Delta, const B2DPoint &rEdge2Start, const B2DVector &rEdge2Delta, CutFlagValue aCutFlags, double *pCut1, double *pCut2)
bool importFromSvgPoints(B2DPolygon &o_rPoly, std::u16string_view rSvgPointsAttribute)
Read poly-polygon from SVG.
void addTriangleFan(const B2DPolygon &rCandidate, triangulator::B2DTriangleVector &rTarget)
double getLength(const B2DPolygon &rCandidate)
get length of polygon
bool arePointsOnSameSideOfLine(const B2DPoint &rStart, const B2DPoint &rEnd, const B2DPoint &rCandidateA, const B2DPoint &rCandidateB, bool bWithLine)
B2DPolygon reSegmentPolygon(const B2DPolygon &rCandidate, sal_uInt32 nSegments)
B2DPolygon createEdgesOfGivenLength(const B2DPolygon &rCandidate, double fLength, double fStart, double fEnd)
create edges of given length along given B2DPolygon
B2DPolygon createPolygonFromRect(const B2DRectangle &rRect, double fRadiusX, double fRadiusY)
Create a polygon from a rectangle.
B2DPolygon UnoPointSequenceToB2DPolygon(const css::drawing::PointSequence &rPointSequenceSource)
converters for css::drawing::PointSequence
B2DPolygon interpolate(const B2DPolygon &rOld1, const B2DPolygon &rOld2, double t)
B2DPolygon expandToCurve(const B2DPolygon &rCandidate)
B2DPolygon growInNormalDirection(const B2DPolygon &rCandidate, double fValue)
double getSmallestDistancePointToEdge(const B2DPoint &rPointA, const B2DPoint &rPointB, const B2DPoint &rTestPoint, double &rCut)
B2DPoint getPositionAbsolute(const B2DPolygon &rCandidate, double fDistance, double fLength)
B2DPolygon adaptiveSubdivideByDistance(const B2DPolygon &rCandidate, double fDistanceBound, int nRecurseLimit)
void applyLineDashing(const B2DPolygon &rCandidate, const std::vector< double > &rDotDashArray, B2DPolyPolygon *pLineTarget, B2DPolyPolygon *pGapTarget, double fDotDashLength)
sal_uInt32 getIndexOfSuccessor(sal_uInt32 nIndex, const B2DPolygon &rCandidate)
B2VectorOrientation getOrientationForIndex(const B2DPolygon &rCandidate, sal_uInt32 nIndex)
B2VectorOrientation getOrientation(const B2DPolygon &rCandidate)
B2DPolygon const & createPolygonFromUnitCircle(sal_uInt32 nStartQuadrant)
create a polygon which describes the unit circle and close it
double getSignedArea(const B2DPolygon &rCandidate)
bool isInside(const B2DPolygon &rCandidate, const B2DPoint &rPoint, bool bWithBorder)
B2DPoint distort(const B2DPoint &rCandidate, const B2DRange &rOriginal, const B2DPoint &rTopLeft, const B2DPoint &rTopRight, const B2DPoint &rBottomLeft, const B2DPoint &rBottomRight)
B2DPolygon adaptiveSubdivideByAngle(const B2DPolygon &rCandidate, double fAngleBound)
B3DPolygon createB3DPolygonFromB2DPolygon(const B2DPolygon &rCandidate, double fZCoordinate)
B2DPolygon createWaveline(const B2DPolygon &rCandidate, double fWaveWidth, double fWaveHeight)
Create Waveline along given polygon The implementation is based on createEdgesOfGivenLength and creat...
void B2DPolygonToUnoPolygonBezierCoords(const B2DPolygon &rPolygon, css::drawing::PointSequence &rPointSequenceRetval, css::drawing::FlagSequence &rFlagSequenceRetval)
B2DPolygon snapPointsOfHorizontalOrVerticalEdges(const B2DPolygon &rCandidate)
snap some polygon coordinates to discrete coordinates
B2DPolygon createPolygonFromCircle(const B2DPoint &rCenter, double fRadius)
Create a circle polygon with given radius.
void closeWithGeometryChange(B2DPolygon &rCandidate)
bool isPointOnPolygon(const B2DPolygon &rCandidate, const B2DPoint &rPoint, bool bWithPoints)
bool expandToCurveInPoint(B2DPolygon &rCandidate, sal_uInt32 nIndex)
bool isInEpsilonRange(const B2DPoint &rEdgeStart, const B2DPoint &rEdgeEnd, const B2DPoint &rTestPosition, double fDistance)
bool isPointOnEdge(const B2DPoint &rPoint, const B2DPoint &rEdgeStart, const B2DVector &rEdgeDelta, double *pCut)
B2DPolygon createB2DPolygonFromB3DPolygon(const B3DPolygon &rCandidate, const B3DHomMatrix &rMat)
bool isRectangle(const B2DPolygon &rPoly)
Predicate whether a given polygon is a rectangle.
void openWithGeometryChange(B2DPolygon &rCandidate)
sal_uInt32 getIndexOfPredecessor(sal_uInt32 nIndex, const B2DPolygon &rCandidate)
B2DVector getTangentLeavingPoint(const B2DPolygon &rCandidate, sal_uInt32 nIndex)
get the tangent with which the given point is left seen from the following polygon path data.
B2DPolygon getSnippetAbsolute(const B2DPolygon &rCandidate, double fFrom, double fTo, double fLength)
OUString exportToSvgPoints(const B2DPolygon &rPoly)
Write poly-polygon to SVG.
B2DPolygon createPolygonFromEllipseSegment(const B2DPoint &rCenter, double fRadiusX, double fRadiusY, double fStart, double fEnd)
Create a unit ellipse polygon with the given angles, from start to end.
bool hasNeutralPoints(const B2DPolygon &rCandidate)
B2DPoint getPositionRelative(const B2DPolygon &rCandidate, double fDistance, double fLength)
void B2DPolygonToUnoPointSequence(const B2DPolygon &rPolygon, css::drawing::PointSequence &rPointSequenceRetval)
B2DVector getTangentEnteringPoint(const B2DPolygon &rCandidate, sal_uInt32 nIndex)
get the tangent with which the given point is entered seen from the previous polygon path data.
double getEdgeLength(const B2DPolygon &rCandidate, sal_uInt32 nIndex)
get length of polygon edge from point nIndex to nIndex + 1
double getSmallestDistancePointToPolygon(const B2DPolygon &rCandidate, const B2DPoint &rTestPoint, sal_uInt32 &rEdgeIndex, double &rCut)
bool setContinuityInPoint(B2DPolygon &rCandidate, sal_uInt32 nIndex, B2VectorContinuity eContinuity)
B2DPolygon simplifyCurveSegments(const B2DPolygon &rCandidate)
B2DPolygon UnoPolygonBezierCoordsToB2DPolygon(const css::drawing::PointSequence &rPointSequenceSource, const css::drawing::FlagSequence &rFlagSequenceSource)
bool isConvex(const B2DPolygon &rCandidate)
B2DPolygon const & createUnitPolygon()
Create the unit polygon.
B2DPolygon createPolygonFromEllipse(const B2DPoint &rCenter, double fRadiusX, double fRadiusY, sal_uInt32 nStartQuadrant)
Create an ellipse polygon with given radii.
void checkClosed(B2DPolygon &rCandidate)
Check if given polygon is closed.
B2DPolygon createPolygonFromUnitEllipseSegment(double fStart, double fEnd)
B2DPolygon makeStartPoint(const B2DPolygon &rCandidate, sal_uInt32 nIndexOfNewStatPoint)
bool isPointInTriangle(const B2DPoint &rA, const B2DPoint &rB, const B2DPoint &rC, const B2DPoint &rCandidate, bool bWithBorder)
B2DRange getRange(const B2DPolygon &rCandidate)
Get the range of a polygon.
B2VectorContinuity
Descriptor for the mathematical continuity of two 2D Vectors.
B2VectorOrientation
Descriptor for the mathematical orientations of two 2D Vectors.