Modified: openoffice/trunk/main/basegfx/inc/basegfx/polygon/b2dpolygontools.hxx URL: http://svn.apache.org/viewvc/openoffice/trunk/main/basegfx/inc/basegfx/polygon/b2dpolygontools.hxx?rev=1755455&r1=1755454&r2=1755455&view=diff ============================================================================== --- openoffice/trunk/main/basegfx/inc/basegfx/polygon/b2dpolygontools.hxx (original) +++ openoffice/trunk/main/basegfx/inc/basegfx/polygon/b2dpolygontools.hxx Sun Aug 7 19:24:03 2016 @@ -32,6 +32,7 @@ #include <com/sun/star/drawing/PointSequence.hpp> #include <com/sun/star/drawing/FlagSequence.hpp> #include <vector> +#include <basegfx/basegfxdllapi.h> ////////////////////////////////////////////////////////////////////////////// @@ -46,8 +47,8 @@ namespace basegfx // B2DPolygon tools // open/close with point add/remove and control point corrections - void openWithGeometryChange(B2DPolygon& rCandidate); - void closeWithGeometryChange(B2DPolygon& rCandidate); + BASEGFX_DLLPUBLIC void openWithGeometryChange(B2DPolygon& rCandidate); + BASEGFX_DLLPUBLIC void closeWithGeometryChange(B2DPolygon& rCandidate); /** Check if given polygon is closed. @@ -58,20 +59,20 @@ namespace basegfx start/end points) and sets the Closed()-state of the polygon correctly. */ - void checkClosed(B2DPolygon& rCandidate); + BASEGFX_DLLPUBLIC void checkClosed(B2DPolygon& rCandidate); // Get successor and predecessor indices. Returning the same index means there // is none. Same for successor. - sal_uInt32 getIndexOfPredecessor(sal_uInt32 nIndex, const B2DPolygon& rCandidate); - sal_uInt32 getIndexOfSuccessor(sal_uInt32 nIndex, const B2DPolygon& rCandidate); + BASEGFX_DLLPUBLIC sal_uInt32 getIndexOfPredecessor(sal_uInt32 nIndex, const B2DPolygon& rCandidate); + BASEGFX_DLLPUBLIC sal_uInt32 getIndexOfSuccessor(sal_uInt32 nIndex, const B2DPolygon& rCandidate); // Get orientation of Polygon - B2VectorOrientation getOrientation(const B2DPolygon& rCandidate); + BASEGFX_DLLPUBLIC B2VectorOrientation getOrientation(const B2DPolygon& rCandidate); // isInside tests for B2dPoint and other B2dPolygon. On border is not inside as long as // not true is given in bWithBorder flag. - bool isInside(const B2DPolygon& rCandidate, const B2DPoint& rPoint, bool bWithBorder = false); - bool isInside(const B2DPolygon& rCandidate, const B2DPolygon& rPolygon, bool bWithBorder = false); + BASEGFX_DLLPUBLIC bool isInside(const B2DPolygon& rCandidate, const B2DPoint& rPoint, bool bWithBorder = false); + BASEGFX_DLLPUBLIC bool isInside(const B2DPolygon& rCandidate, const B2DPolygon& rPolygon, bool bWithBorder = false); /** Get the range of a polygon including bezier control points @@ -83,7 +84,7 @@ namespace basegfx @return The outer range of the bezier curve containing bezier control points */ - B2DRange getRangeWithControlPoints(const B2DPolygon& rCandidate); + BASEGFX_DLLPUBLIC B2DRange getRangeWithControlPoints(const B2DPolygon& rCandidate); /** Get the range of a polygon @@ -96,53 +97,53 @@ namespace basegfx @return The outer range of the bezier curve */ - B2DRange getRange(const B2DPolygon& rCandidate); + BASEGFX_DLLPUBLIC B2DRange getRange(const B2DPolygon& rCandidate); // get signed area of polygon - double getSignedArea(const B2DPolygon& rCandidate); + BASEGFX_DLLPUBLIC double getSignedArea(const B2DPolygon& rCandidate); // get area of polygon - double getArea(const B2DPolygon& rCandidate); + BASEGFX_DLLPUBLIC double getArea(const B2DPolygon& rCandidate); /** get length of polygon edge from point nIndex to nIndex + 1 */ - double getEdgeLength(const B2DPolygon& rCandidate, sal_uInt32 nIndex); + BASEGFX_DLLPUBLIC double getEdgeLength(const B2DPolygon& rCandidate, sal_uInt32 nIndex); /** get length of polygon */ - double getLength(const B2DPolygon& rCandidate); + BASEGFX_DLLPUBLIC double getLength(const B2DPolygon& rCandidate); // get position on polygon for absolute given distance. If // length is given, it is assumed the correct polygon length, if 0.0 it is calculated // using getLength(...) - B2DPoint getPositionAbsolute(const B2DPolygon& rCandidate, double fDistance, double fLength = 0.0); + BASEGFX_DLLPUBLIC B2DPoint getPositionAbsolute(const B2DPolygon& rCandidate, double fDistance, double fLength = 0.0); // get position on polygon for relative given distance in range [0.0 .. 1.0]. If // length is given, it is assumed the correct polygon length, if 0.0 it is calculated // using getLength(...) - B2DPoint getPositionRelative(const B2DPolygon& rCandidate, double fDistance, double fLength = 0.0); + BASEGFX_DLLPUBLIC B2DPoint getPositionRelative(const B2DPolygon& rCandidate, double fDistance, double fLength = 0.0); // get a snippet from given polygon for absolute distances. The polygon is assumed // to be opened (not closed). fFrom and fTo need to be in range [0.0 .. fLength], where // fTo >= fFrom. If length is given, it is assumed the correct polygon length, // if 0.0 it is calculated using getLength(...) - B2DPolygon getSnippetAbsolute(const B2DPolygon& rCandidate, double fFrom, double fTo, double fLength = 0.0); + BASEGFX_DLLPUBLIC B2DPolygon getSnippetAbsolute(const B2DPolygon& rCandidate, double fFrom, double fTo, double fLength = 0.0); // get a snippet from given polygon for relative distances. The polygon is assumed // to be opened (not closed). fFrom and fTo need to be in range [0.0 .. 1.0], where // fTo >= fFrom. If length is given, it is assumed the correct polygon length, // if 0.0 it is calculated using getLength(...) - B2DPolygon getSnippetRelative(const B2DPolygon& rCandidate, double fFrom = 0.0, double fTo = 1.0, double fLength = 0.0); + BASEGFX_DLLPUBLIC B2DPolygon getSnippetRelative(const B2DPolygon& rCandidate, double fFrom = 0.0, double fTo = 1.0, double fLength = 0.0); // Continuity check for point with given index - B2VectorContinuity getContinuityInPoint(const B2DPolygon& rCandidate, sal_uInt32 nIndex); + BASEGFX_DLLPUBLIC B2VectorContinuity getContinuityInPoint(const B2DPolygon& rCandidate, sal_uInt32 nIndex); // Subdivide all contained curves. Use distanceBound value if given. - B2DPolygon adaptiveSubdivideByDistance(const B2DPolygon& rCandidate, double fDistanceBound = 0.0); + BASEGFX_DLLPUBLIC B2DPolygon adaptiveSubdivideByDistance(const B2DPolygon& rCandidate, double fDistanceBound = 0.0); // Subdivide all contained curves. Use angleBound value if given. - B2DPolygon adaptiveSubdivideByAngle(const B2DPolygon& rCandidate, double fAngleBound = 0.0); + BASEGFX_DLLPUBLIC B2DPolygon adaptiveSubdivideByAngle(const B2DPolygon& rCandidate, double fAngleBound = 0.0); // #i37443# Subdivide all contained curves. - B2DPolygon adaptiveSubdivideByCount(const B2DPolygon& rCandidate, sal_uInt32 nCount = 0L); + BASEGFX_DLLPUBLIC B2DPolygon adaptiveSubdivideByCount(const B2DPolygon& rCandidate, sal_uInt32 nCount = 0L); // Definitions for the cut flags used from the findCut methods typedef sal_uInt16 CutFlagValue; @@ -159,7 +160,7 @@ namespace basegfx // Calculate cut between the points given by the two indices. pCut1 // and pCut2 will contain the cut coordinate on each edge in ]0.0, 1.0] // (if given) and the return value will contain a cut description. - CutFlagValue findCut( + BASEGFX_DLLPUBLIC CutFlagValue findCut( const B2DPolygon& rCandidate, sal_uInt32 nIndex1, sal_uInt32 nIndex2, CutFlagValue aCutFlags = CUTFLAG_DEFAULT, @@ -167,7 +168,7 @@ namespace basegfx // This version is working with two indexed edges from different // polygons. - CutFlagValue findCut( + BASEGFX_DLLPUBLIC CutFlagValue findCut( const B2DPolygon& rCandidate1, sal_uInt32 nIndex1, const B2DPolygon& rCandidate2, sal_uInt32 nIndex2, CutFlagValue aCutFlags = CUTFLAG_DEFAULT, @@ -175,7 +176,7 @@ namespace basegfx // This version works with two points and vectors to define the // edges for the cut test. - CutFlagValue findCut( + BASEGFX_DLLPUBLIC CutFlagValue findCut( const B2DPoint& rEdge1Start, const B2DVector& rEdge1Delta, const B2DPoint& rEdge2Start, const B2DVector& rEdge2Delta, CutFlagValue aCutFlags = CUTFLAG_DEFAULT, @@ -184,7 +185,7 @@ namespace basegfx // test if point is on the given edge in range ]0.0..1.0[ without // the start/end points. If so, return true and put the parameter // value in pCut (if provided) - bool isPointOnEdge( + BASEGFX_DLLPUBLIC bool isPointOnEdge( const B2DPoint& rPoint, const B2DPoint& rEdgeStart, const B2DVector& rEdgeDelta, @@ -223,24 +224,24 @@ namespace basegfx The sumed-up length of the rDotDashArray. If zero, it will be calculated internally. */ - void applyLineDashing( + BASEGFX_DLLPUBLIC void applyLineDashing( const B2DPolygon& rCandidate, const ::std::vector<double>& rDotDashArray, B2DPolyPolygon* pLineTarget, - B2DPolyPolygon* pGapTarget = 0, + B2DPolyPolygon* pGapTarget = 0, double fFullDashDotLen = 0.0); // test if point is inside epsilon-range around an edge defined // by the two given points. Can be used for HitTesting. The epsilon-range // is defined to be the rectangle centered to the given edge, using height // 2 x fDistance, and the circle around both points with radius fDistance. - bool isInEpsilonRange(const B2DPoint& rEdgeStart, const B2DPoint& rEdgeEnd, const B2DPoint& rTestPosition, double fDistance); + BASEGFX_DLLPUBLIC bool isInEpsilonRange(const B2DPoint& rEdgeStart, const B2DPoint& rEdgeEnd, const B2DPoint& rTestPosition, double fDistance); // test if point is inside epsilon-range around the given Polygon. Can be used // for HitTesting. The epsilon-range is defined to be the rectangle centered // to the given edge, using height 2 x fDistance, and the circle around both points // with radius fDistance. - bool isInEpsilonRange(const B2DPolygon& rCandidate, const B2DPoint& rTestPosition, double fDistance); + BASEGFX_DLLPUBLIC bool isInEpsilonRange(const B2DPolygon& rCandidate, const B2DPoint& rTestPosition, double fDistance); /** Create a polygon from a rectangle. @@ -251,7 +252,7 @@ namespace basegfx Radius of the edge rounding, relative to the rectangle size. 0.0 means no rounding, 1.0 will lead to an ellipse */ - B2DPolygon createPolygonFromRect( const B2DRectangle& rRect, double fRadius ); + BASEGFX_DLLPUBLIC B2DPolygon createPolygonFromRect( const B2DRectangle& rRect, double fRadius ); /** Create a polygon from a rectangle. @@ -263,15 +264,15 @@ namespace basegfx Radius of the edge rounding, relative to the rectangle size. 0.0 means no rounding, 1.0 will lead to an ellipse */ - B2DPolygon createPolygonFromRect( const B2DRectangle& rRect, double fRadiusX, double fRadiusY ); + BASEGFX_DLLPUBLIC B2DPolygon createPolygonFromRect( const B2DRectangle& rRect, double fRadiusX, double fRadiusY ); /** Create a polygon from a rectangle. */ - B2DPolygon createPolygonFromRect( const B2DRectangle& rRect ); + BASEGFX_DLLPUBLIC B2DPolygon createPolygonFromRect( const B2DRectangle& rRect ); /** Create the unit polygon */ - B2DPolygon createUnitPolygon(); + BASEGFX_DLLPUBLIC B2DPolygon createUnitPolygon(); /** Create a circle polygon with given radius. @@ -285,7 +286,7 @@ namespace basegfx @param fRadius Radius of the circle */ - B2DPolygon createPolygonFromCircle( const B2DPoint& rCenter, double fRadius ); + BASEGFX_DLLPUBLIC B2DPolygon createPolygonFromCircle( const B2DPoint& rCenter, double fRadius ); /// create half circle centered on (0,0) from [0 .. F_PI] B2DPolygon createHalfUnitCircle(); @@ -300,7 +301,7 @@ namespace basegfx this is the lowest one). This is needed since when lines are dashed, toe old geometry started at bottom point, else it would look different. */ - B2DPolygon createPolygonFromUnitCircle(sal_uInt32 nStartQuadrant = 0); + BASEGFX_DLLPUBLIC B2DPolygon createPolygonFromUnitCircle(sal_uInt32 nStartQuadrant = 0); /** Create an ellipse polygon with given radii. @@ -317,13 +318,13 @@ namespace basegfx @param fRadiusY Radius of the ellipse in Y direction */ - B2DPolygon createPolygonFromEllipse( const B2DPoint& rCenter, double fRadiusX, double fRadiusY ); + BASEGFX_DLLPUBLIC B2DPolygon createPolygonFromEllipse( const B2DPoint& rCenter, double fRadiusX, double fRadiusY ); /** Create an unit ellipse polygon with the given angles, from start to end */ - B2DPolygon createPolygonFromEllipseSegment( const B2DPoint& rCenter, double fRadiusX, double fRadiusY, double fStart, double fEnd ); + BASEGFX_DLLPUBLIC B2DPolygon createPolygonFromEllipseSegment( const B2DPoint& rCenter, double fRadiusX, double fRadiusY, double fStart, double fEnd ); - B2DPolygon createPolygonFromUnitEllipseSegment( double fStart, double fEnd ); + BASEGFX_DLLPUBLIC B2DPolygon createPolygonFromUnitEllipseSegment( double fStart, double fEnd ); /** Predicate whether a given polygon is a rectangle. @@ -335,111 +336,111 @@ namespace basegfx enumerations of a rectangle's vertices). Note that intermediate points and duplicate points are ignored. */ - bool isRectangle( const B2DPolygon& rPoly ); + BASEGFX_DLLPUBLIC bool isRectangle( const B2DPolygon& rPoly ); // create 3d polygon from given 2d polygon. The given fZCoordinate is used to expand the // third coordinate. - B3DPolygon createB3DPolygonFromB2DPolygon(const B2DPolygon& rCandidate, double fZCoordinate = 0.0); + BASEGFX_DLLPUBLIC B3DPolygon createB3DPolygonFromB2DPolygon(const B2DPolygon& rCandidate, double fZCoordinate = 0.0); // create 2d PolyPolygon from given 3d PolyPolygon. All coordinates are transformed using the given // matrix and the resulting x,y is used to form the new polygon. - B2DPolygon createB2DPolygonFromB3DPolygon(const B3DPolygon& rCandidate, const B3DHomMatrix& rMat); + BASEGFX_DLLPUBLIC B2DPolygon createB2DPolygonFromB3DPolygon(const B3DPolygon& rCandidate, const B3DHomMatrix& rMat); // create simplified version of the original polygon by // replacing segments with spikes/loops and self intersections // by several trivial sub-segments - B2DPolygon createSimplifiedPolygon(const B2DPolygon&); + BASEGFX_DLLPUBLIC B2DPolygon createSimplifiedPolygon(const B2DPolygon&); // calculate the distance to the given endless ray and return. The relative position on the edge is returned in Cut. // That position may be less than 0.0 or more than 1.0 - double getDistancePointToEndlessRay(const B2DPoint& rPointA, const B2DPoint& rPointB, const B2DPoint& rTestPoint, double& rCut); + BASEGFX_DLLPUBLIC double getDistancePointToEndlessRay(const B2DPoint& rPointA, const B2DPoint& rPointB, const B2DPoint& rTestPoint, double& rCut); // calculate the smallest distance to given edge and return. The relative position on the edge is returned in Cut. // That position is in the range [0.0 .. 1.0] and the returned distance is adapted accordingly to the start or end // point of the edge - double getSmallestDistancePointToEdge(const B2DPoint& rPointA, const B2DPoint& rPointB, const B2DPoint& rTestPoint, double& rCut); + BASEGFX_DLLPUBLIC double getSmallestDistancePointToEdge(const B2DPoint& rPointA, const B2DPoint& rPointB, const B2DPoint& rTestPoint, double& rCut); // for each contained edge calculate the smallest distance. Return the index to the smallest // edge in rEdgeIndex. The relative position on the edge is returned in rCut. // If nothing was found (e.g. empty input plygon), DBL_MAX is returned. - double getSmallestDistancePointToPolygon(const B2DPolygon& rCandidate, const B2DPoint& rTestPoint, sal_uInt32& rEdgeIndex, double& rCut); + BASEGFX_DLLPUBLIC double getSmallestDistancePointToPolygon(const B2DPolygon& rCandidate, const B2DPoint& rTestPoint, sal_uInt32& rEdgeIndex, double& rCut); // distort single point. rOriginal describes the original range, where the given points describe the distorted corresponding points. - B2DPoint distort(const B2DPoint& rCandidate, const B2DRange& rOriginal, const B2DPoint& rTopLeft, const B2DPoint& rTopRight, const B2DPoint& rBottomLeft, const B2DPoint& rBottomRight); + BASEGFX_DLLPUBLIC B2DPoint distort(const B2DPoint& rCandidate, const B2DRange& rOriginal, const B2DPoint& rTopLeft, const B2DPoint& rTopRight, const B2DPoint& rBottomLeft, const B2DPoint& rBottomRight); // distort polygon. rOriginal describes the original range, where the given points describe the distorted corresponding points. - B2DPolygon distort(const B2DPolygon& rCandidate, const B2DRange& rOriginal, const B2DPoint& rTopLeft, const B2DPoint& rTopRight, const B2DPoint& rBottomLeft, const B2DPoint& rBottomRight); + BASEGFX_DLLPUBLIC B2DPolygon distort(const B2DPolygon& rCandidate, const B2DRange& rOriginal, const B2DPoint& rTopLeft, const B2DPoint& rTopRight, const B2DPoint& rBottomLeft, const B2DPoint& rBottomRight); // rotate polygon around given point with given angle. - B2DPolygon rotateAroundPoint(const B2DPolygon& rCandidate, const B2DPoint& rCenter, double fAngle); + BASEGFX_DLLPUBLIC B2DPolygon rotateAroundPoint(const B2DPolygon& rCandidate, const B2DPoint& rCenter, double fAngle); // expand all segments (which are not yet) to curve segments. This is done with setting the control // vectors on the 1/3 resp. 2/3 distances on each segment. - B2DPolygon expandToCurve(const B2DPolygon& rCandidate); + BASEGFX_DLLPUBLIC B2DPolygon expandToCurve(const B2DPolygon& rCandidate); // expand given segment to curve segment. This is done with setting the control // vectors on the 1/3 resp. 2/3 distances. The return value describes if a change took place. - bool expandToCurveInPoint(B2DPolygon& rCandidate, sal_uInt32 nIndex); + BASEGFX_DLLPUBLIC bool expandToCurveInPoint(B2DPolygon& rCandidate, sal_uInt32 nIndex); // set continuity for the whole curve. If not a curve, nothing will change. Non-curve points are not changed, too. - B2DPolygon setContinuity(const B2DPolygon& rCandidate, B2VectorContinuity eContinuity); + BASEGFX_DLLPUBLIC B2DPolygon setContinuity(const B2DPolygon& rCandidate, B2VectorContinuity eContinuity); // set continuity for given index. If not a curve, nothing will change. Non-curve points are not changed, too. // The return value describes if a change took place. - bool setContinuityInPoint(B2DPolygon& rCandidate, sal_uInt32 nIndex, B2VectorContinuity eContinuity); + BASEGFX_DLLPUBLIC bool setContinuityInPoint(B2DPolygon& rCandidate, sal_uInt32 nIndex, B2VectorContinuity eContinuity); // test if polygon contains neutral points. A neutral point is one whos orientation is neutral // e.g. positioned on the edge of it's predecessor and successor - bool hasNeutralPoints(const B2DPolygon& rCandidate); + BASEGFX_DLLPUBLIC bool hasNeutralPoints(const B2DPolygon& rCandidate); // remove neutral points. A neutral point is one whos orientation is neutral // e.g. positioned on the edge of it's predecessor and successor - B2DPolygon removeNeutralPoints(const B2DPolygon& rCandidate); + BASEGFX_DLLPUBLIC B2DPolygon removeNeutralPoints(const B2DPolygon& rCandidate); // tests if polygon is convex - bool isConvex(const B2DPolygon& rCandidate); + BASEGFX_DLLPUBLIC bool isConvex(const B2DPolygon& rCandidate); // calculates the orientation at edge nIndex - B2VectorOrientation getOrientationForIndex(const B2DPolygon& rCandidate, sal_uInt32 nIndex); + BASEGFX_DLLPUBLIC B2VectorOrientation getOrientationForIndex(const B2DPolygon& rCandidate, sal_uInt32 nIndex); // calculates if given point is on given line, taking care of the numerical epsilon - bool isPointOnLine(const B2DPoint& rStart, const B2DPoint& rEnd, const B2DPoint& rCandidate, bool bWithPoints = false); + BASEGFX_DLLPUBLIC bool isPointOnLine(const B2DPoint& rStart, const B2DPoint& rEnd, const B2DPoint& rCandidate, bool bWithPoints = false); // calculates if given point is on given polygon, taking care of the numerical epsilon. Uses // isPointOnLine internally - bool isPointOnPolygon(const B2DPolygon& rCandidate, const B2DPoint& rPoint, bool bWithPoints = true); + BASEGFX_DLLPUBLIC bool isPointOnPolygon(const B2DPolygon& rCandidate, const B2DPoint& rPoint, bool bWithPoints = true); // test if candidate is inside triangle - bool isPointInTriangle(const B2DPoint& rA, const B2DPoint& rB, const B2DPoint& rC, const B2DPoint& rCandidate, bool bWithBorder = false); + BASEGFX_DLLPUBLIC bool isPointInTriangle(const B2DPoint& rA, const B2DPoint& rB, const B2DPoint& rC, const B2DPoint& rCandidate, bool bWithBorder = false); // test if candidateA and candidateB are on the same side of the given line - bool arePointsOnSameSideOfLine(const B2DPoint& rStart, const B2DPoint& rEnd, const B2DPoint& rCandidateA, const B2DPoint& rCandidateB, bool bWithLine = false); + BASEGFX_DLLPUBLIC bool arePointsOnSameSideOfLine(const B2DPoint& rStart, const B2DPoint& rEnd, const B2DPoint& rCandidateA, const B2DPoint& rCandidateB, bool bWithLine = false); // add triangles for given rCandidate to rTarget. For each triangle, 3 points will be added to rCandidate. // All triangles will go from the start point of rCandidate to two consecutive points, building (rCandidate.count() - 2) // triangles. - void addTriangleFan(const B2DPolygon& rCandidate, B2DPolygon& rTarget); + BASEGFX_DLLPUBLIC void addTriangleFan(const B2DPolygon& rCandidate, B2DPolygon& rTarget); // grow for polygon. Move all geometry in each point in the direction of the normal in that point // with the given amount. Value may be negative. - B2DPolygon growInNormalDirection(const B2DPolygon& rCandidate, double fValue); + BASEGFX_DLLPUBLIC B2DPolygon growInNormalDirection(const B2DPolygon& rCandidate, double fValue); // force all sub-polygons to a point count of nSegments - B2DPolygon reSegmentPolygon(const B2DPolygon& rCandidate, sal_uInt32 nSegments); + BASEGFX_DLLPUBLIC B2DPolygon reSegmentPolygon(const B2DPolygon& rCandidate, sal_uInt32 nSegments); // create polygon state at t from 0.0 to 1.0 between the two polygons. Both polygons must have the same // organisation, e.g. same amount of points - B2DPolygon interpolate(const B2DPolygon& rOld1, const B2DPolygon& rOld2, double t); + BASEGFX_DLLPUBLIC B2DPolygon interpolate(const B2DPolygon& rOld1, const B2DPolygon& rOld2, double t); - bool isPolyPolygonEqualRectangle( const B2DPolyPolygon& rPolyPoly, const B2DRange& rRect ); + BASEGFX_DLLPUBLIC bool isPolyPolygonEqualRectangle( const B2DPolyPolygon& rPolyPoly, const B2DRange& rRect ); // #i76891# Try to remove existing curve segments if they are simply edges - B2DPolygon simplifyCurveSegments(const B2DPolygon& rCandidate); + BASEGFX_DLLPUBLIC B2DPolygon simplifyCurveSegments(const B2DPolygon& rCandidate); // makes the given indexed point the new polygon start point. To do that, the points in the // polygon will be rotated. This is only valid for closed polygons, for non-closed ones // an assertion will be triggered - B2DPolygon makeStartPoint(const B2DPolygon& rCandidate, sal_uInt32 nIndexOfNewStatPoint); + BASEGFX_DLLPUBLIC B2DPolygon makeStartPoint(const B2DPolygon& rCandidate, sal_uInt32 nIndexOfNewStatPoint); /** create edges of given length along given B2DPolygon @@ -469,7 +470,7 @@ namespace basegfx @return The newly created polygon */ - B2DPolygon createEdgesOfGivenLength(const B2DPolygon& rCandidate, double fLength, double fStart = 0.0, double fEnd = 0.0); + BASEGFX_DLLPUBLIC B2DPolygon createEdgesOfGivenLength(const B2DPolygon& rCandidate, double fLength, double fStart = 0.0, double fEnd = 0.0); /** Create Waveline along given polygon The implementation is based on createEdgesOfGivenLength and creates a curve @@ -486,7 +487,7 @@ namespace basegfx @param fgWaveHeight The height of the waveline (amplitude) */ - B2DPolygon createWaveline(const B2DPolygon& rCandidate, double fWaveWidth, double fWaveHeight); + BASEGFX_DLLPUBLIC B2DPolygon createWaveline(const B2DPolygon& rCandidate, double fWaveWidth, double fWaveHeight); /** split each edge of a polygon in exactly nSubEdges equidistant edges @@ -508,12 +509,12 @@ namespace basegfx into nSubEdges part curved edges of equidistant length. If not, straight edges will just be copied. */ - B2DPolygon reSegmentPolygonEdges(const B2DPolygon& rCandidate, sal_uInt32 nSubEdges, bool bHandleCurvedEdges, bool bHandleStraightEdges); + BASEGFX_DLLPUBLIC B2DPolygon reSegmentPolygonEdges(const B2DPolygon& rCandidate, sal_uInt32 nSubEdges, bool bHandleCurvedEdges, bool bHandleStraightEdges); ////////////////////////////////////////////////////////////////////// // comparators with tolerance for 2D Polygons - bool equal(const B2DPolygon& rCandidateA, const B2DPolygon& rCandidateB, const double& rfSmallValue); - bool equal(const B2DPolygon& rCandidateA, const B2DPolygon& rCandidateB); + BASEGFX_DLLPUBLIC bool equal(const B2DPolygon& rCandidateA, const B2DPolygon& rCandidateB, const double& rfSmallValue); + BASEGFX_DLLPUBLIC bool equal(const B2DPolygon& rCandidateA, const B2DPolygon& rCandidateB); /** snap some polygon coordinates to discrete coordinates @@ -527,37 +528,37 @@ namespace basegfx @return The modified version of the source polygon */ - B2DPolygon snapPointsOfHorizontalOrVerticalEdges(const B2DPolygon& rCandidate); + BASEGFX_DLLPUBLIC B2DPolygon snapPointsOfHorizontalOrVerticalEdges(const B2DPolygon& rCandidate); /** returns true if the Polygon only contains horizontal or vertical edges so that it could be represented by RegionBands */ - bool containsOnlyHorizontalAndVerticalEdges(const B2DPolygon& rCandidate); + BASEGFX_DLLPUBLIC bool containsOnlyHorizontalAndVerticalEdges(const B2DPolygon& rCandidate); /// get the tangent with which the given point is entered seen from the previous /// polygon path data. Take into account all stuff like closed state, zero-length edges and others. - B2DVector getTangentEnteringPoint(const B2DPolygon& rCandidate, sal_uInt32 nIndex); + BASEGFX_DLLPUBLIC B2DVector getTangentEnteringPoint(const B2DPolygon& rCandidate, sal_uInt32 nIndex); /// get the tangent with which the given point is left seen from the following /// polygon path data. Take into account all stuff like closed state, zero-length edges and others. - B2DVector getTangentLeavingPoint(const B2DPolygon& rCandidate, sal_uInt32 nIndex); + BASEGFX_DLLPUBLIC B2DVector getTangentLeavingPoint(const B2DPolygon& rCandidate, sal_uInt32 nIndex); /// converters for com::sun::star::drawing::PointSequence - B2DPolygon UnoPointSequenceToB2DPolygon( + BASEGFX_DLLPUBLIC B2DPolygon UnoPointSequenceToB2DPolygon( const com::sun::star::drawing::PointSequence& rPointSequenceSource, bool bCheckClosed = true); - void B2DPolygonToUnoPointSequence( + BASEGFX_DLLPUBLIC void B2DPolygonToUnoPointSequence( const B2DPolygon& rPolygon, com::sun::star::drawing::PointSequence& rPointSequenceRetval); /* converters for com::sun::star::drawing::PointSequence and com::sun::star::drawing::FlagSequence to B2DPolygon (curved polygons) */ - B2DPolygon UnoPolygonBezierCoordsToB2DPolygon( + BASEGFX_DLLPUBLIC B2DPolygon UnoPolygonBezierCoordsToB2DPolygon( const com::sun::star::drawing::PointSequence& rPointSequenceSource, const com::sun::star::drawing::FlagSequence& rFlagSequenceSource, bool bCheckClosed = true); - void B2DPolygonToUnoPolygonBezierCoords( + BASEGFX_DLLPUBLIC void B2DPolygonToUnoPolygonBezierCoords( const B2DPolygon& rPolyPolygon, com::sun::star::drawing::PointSequence& rPointSequenceRetval, com::sun::star::drawing::FlagSequence& rFlagSequenceRetval); @@ -576,7 +577,7 @@ namespace basegfx @return true, if the string was successfully parsed */ - bool importFromSvgPoints( B2DPolygon& o_rPoly, + BASEGFX_DLLPUBLIC bool importFromSvgPoints( B2DPolygon& o_rPoly, const ::rtl::OUString& rSvgPointsAttribute ); /** Write poly-polygon to SVG. @@ -592,7 +593,7 @@ namespace basegfx @return true, if the string was successfully parsed */ - ::rtl::OUString exportToSvgPoints( const B2DPolygon& rPoly ); + BASEGFX_DLLPUBLIC ::rtl::OUString exportToSvgPoints( const B2DPolygon& rPoly ); } // end of namespace tools } // end of namespace basegfx
Modified: openoffice/trunk/main/basegfx/inc/basegfx/polygon/b2dpolygontriangulator.hxx URL: http://svn.apache.org/viewvc/openoffice/trunk/main/basegfx/inc/basegfx/polygon/b2dpolygontriangulator.hxx?rev=1755455&r1=1755454&r2=1755455&view=diff ============================================================================== --- openoffice/trunk/main/basegfx/inc/basegfx/polygon/b2dpolygontriangulator.hxx (original) +++ openoffice/trunk/main/basegfx/inc/basegfx/polygon/b2dpolygontriangulator.hxx Sun Aug 7 19:24:03 2016 @@ -26,6 +26,7 @@ #include <basegfx/polygon/b2dpolypolygon.hxx> #include <vector> +#include <basegfx/basegfxdllapi.h> ////////////////////////////////////////////////////////////////////////////// @@ -34,10 +35,10 @@ namespace basegfx namespace triangulator { // triangulate given polygon - ::basegfx::B2DPolygon triangulate(const ::basegfx::B2DPolygon& rCandidate); + BASEGFX_DLLPUBLIC ::basegfx::B2DPolygon triangulate(const ::basegfx::B2DPolygon& rCandidate); // triangulate given PolyPolygon - ::basegfx::B2DPolygon triangulate(const ::basegfx::B2DPolyPolygon& rCandidate); + BASEGFX_DLLPUBLIC ::basegfx::B2DPolygon triangulate(const ::basegfx::B2DPolyPolygon& rCandidate); } // end of namespace triangulator } // end of namespace basegfx Modified: openoffice/trunk/main/basegfx/inc/basegfx/polygon/b2dpolypolygon.hxx URL: http://svn.apache.org/viewvc/openoffice/trunk/main/basegfx/inc/basegfx/polygon/b2dpolypolygon.hxx?rev=1755455&r1=1755454&r2=1755455&view=diff ============================================================================== --- openoffice/trunk/main/basegfx/inc/basegfx/polygon/b2dpolypolygon.hxx (original) +++ openoffice/trunk/main/basegfx/inc/basegfx/polygon/b2dpolypolygon.hxx Sun Aug 7 19:24:03 2016 @@ -27,6 +27,7 @@ #include <sal/types.h> #include <o3tl/cow_wrapper.hxx> #include <basegfx/range/b2drange.hxx> +#include <basegfx/basegfxdllapi.h> // predeclarations class ImplB2DPolyPolygon; @@ -41,7 +42,7 @@ namespace basegfx namespace basegfx { - class B2DPolyPolygon + class BASEGFX_DLLPUBLIC B2DPolyPolygon { public: typedef o3tl::cow_wrapper< ImplB2DPolyPolygon > ImplType; Modified: openoffice/trunk/main/basegfx/inc/basegfx/polygon/b2dpolypolygoncutter.hxx URL: http://svn.apache.org/viewvc/openoffice/trunk/main/basegfx/inc/basegfx/polygon/b2dpolypolygoncutter.hxx?rev=1755455&r1=1755454&r2=1755455&view=diff ============================================================================== --- openoffice/trunk/main/basegfx/inc/basegfx/polygon/b2dpolypolygoncutter.hxx (original) +++ openoffice/trunk/main/basegfx/inc/basegfx/polygon/b2dpolypolygoncutter.hxx Sun Aug 7 19:24:03 2016 @@ -25,6 +25,7 @@ #define _BGFX_POLYGON_B2DPOLYPOLYGONCUTTER_HXX #include <basegfx/polygon/b2dpolypolygon.hxx> +#include <basegfx/basegfxdllapi.h> ////////////////////////////////////////////////////////////////////////////// @@ -39,18 +40,18 @@ namespace basegfx // Self crossovers of the contained sub-polygons are implicitely handled, but to not lose // the topological information, it may be necessary to remove self-intersections of the // contained sub-polygons in a preparing step and to explicitely correct their orientations. - B2DPolyPolygon solveCrossovers(const B2DPolyPolygon& rCandidate); + BASEGFX_DLLPUBLIC B2DPolyPolygon solveCrossovers(const B2DPolyPolygon& rCandidate); // Version for single polygons. This is for solving self-intersections. Result will be free of // crossovers. When result contains multiple polygons, it may be necessary to rearrange their // orientations since holes may have been created (use correctOrientations eventually). - B2DPolyPolygon solveCrossovers(const B2DPolygon& rCandidate); + BASEGFX_DLLPUBLIC B2DPolyPolygon solveCrossovers(const B2DPolygon& rCandidate); // Neutral polygons will be stripped. Neutral polygons are ones who's orientation is // neutral, so normally they have no volume -> just closed paths. A polygon with the same // positive and negative oriented volume is also neutral, so this may not be wanted. It is // safe to call with crossover-free polygons, though (that's where it's mostly used). - B2DPolyPolygon stripNeutralPolygons(const B2DPolyPolygon& rCandidate); + BASEGFX_DLLPUBLIC B2DPolyPolygon stripNeutralPolygons(const B2DPolyPolygon& rCandidate); // Remove not necessary polygons. Works only correct with crossover-free polygons. For each // polygon, the depth for the PolyPolygon is calculated. The orientation is used to identify holes. @@ -63,14 +64,14 @@ namespace basegfx // one polygon to another and use this mode -> only parts where two polygons overlapped will be kept. // In combination with correct orientation of the input orientations and the SolveCrossover calls this // can be combined for logical polygon operations or polygon clipping. - B2DPolyPolygon stripDispensablePolygons(const B2DPolyPolygon& rCandidate, bool bKeepAboveZero = false); + BASEGFX_DLLPUBLIC B2DPolyPolygon stripDispensablePolygons(const B2DPolyPolygon& rCandidate, bool bKeepAboveZero = false); // geometrically convert PolyPolygons which are proposed to use nonzero fill rule // to a representation where evenodd paint will give the same result. To do this // all intersections and self-intersections get solved (the polygons will be rearranged // if needed). Then all polygons which are inside another one with the same orientation // get deleted - B2DPolyPolygon createNonzeroConform(const B2DPolyPolygon& rCandidate); + BASEGFX_DLLPUBLIC B2DPolyPolygon createNonzeroConform(const B2DPolyPolygon& rCandidate); // For convenience: The four basic operations OR, XOR, AND and DIFF for // two PolyPolygons. These are combinations of the above methods. To not be forced @@ -89,20 +90,20 @@ namespace basegfx // Preparations: solve self-intersections and intersections, remove neutral // parts and correct orientations. - B2DPolyPolygon prepareForPolygonOperation(const B2DPolygon& rCandidate); - B2DPolyPolygon prepareForPolygonOperation(const B2DPolyPolygon& rCandidate); + BASEGFX_DLLPUBLIC B2DPolyPolygon prepareForPolygonOperation(const B2DPolygon& rCandidate); + BASEGFX_DLLPUBLIC B2DPolyPolygon prepareForPolygonOperation(const B2DPolyPolygon& rCandidate); // OR: Return all areas where CandidateA or CandidateB exist - B2DPolyPolygon solvePolygonOperationOr(const B2DPolyPolygon& rCandidateA, const B2DPolyPolygon& rCandidateB); + BASEGFX_DLLPUBLIC B2DPolyPolygon solvePolygonOperationOr(const B2DPolyPolygon& rCandidateA, const B2DPolyPolygon& rCandidateB); // XOR: Return all areas where CandidateA or CandidateB exist, but not both - B2DPolyPolygon solvePolygonOperationXor(const B2DPolyPolygon& rCandidateA, const B2DPolyPolygon& rCandidateB); + BASEGFX_DLLPUBLIC B2DPolyPolygon solvePolygonOperationXor(const B2DPolyPolygon& rCandidateA, const B2DPolyPolygon& rCandidateB); // AND: Return all areas where CandidateA and CandidateB exist - B2DPolyPolygon solvePolygonOperationAnd(const B2DPolyPolygon& rCandidateA, const B2DPolyPolygon& rCandidateB); + BASEGFX_DLLPUBLIC B2DPolyPolygon solvePolygonOperationAnd(const B2DPolyPolygon& rCandidateA, const B2DPolyPolygon& rCandidateB); // DIFF: Return all areas where CandidateA is not covered by CandidateB (cut B out of A) - B2DPolyPolygon solvePolygonOperationDiff(const B2DPolyPolygon& rCandidateA, const B2DPolyPolygon& rCandidateB); + BASEGFX_DLLPUBLIC B2DPolyPolygon solvePolygonOperationDiff(const B2DPolyPolygon& rCandidateA, const B2DPolyPolygon& rCandidateB); /** merge all single PolyPolygons to a single, OR-ed PolyPolygon @@ -111,7 +112,7 @@ namespace basegfx @return A single PolyPolygon containing the Or-merged result */ - B2DPolyPolygon mergeToSinglePolyPolygon(const B2DPolyPolygonVector& rInput); + BASEGFX_DLLPUBLIC B2DPolyPolygon mergeToSinglePolyPolygon(const B2DPolyPolygonVector& rInput); } // end of namespace tools } // end of namespace basegfx Modified: openoffice/trunk/main/basegfx/inc/basegfx/polygon/b2dpolypolygonrasterconverter.hxx URL: http://svn.apache.org/viewvc/openoffice/trunk/main/basegfx/inc/basegfx/polygon/b2dpolypolygonrasterconverter.hxx?rev=1755455&r1=1755454&r2=1755455&view=diff ============================================================================== --- openoffice/trunk/main/basegfx/inc/basegfx/polygon/b2dpolypolygonrasterconverter.hxx (original) +++ openoffice/trunk/main/basegfx/inc/basegfx/polygon/b2dpolypolygonrasterconverter.hxx Sun Aug 7 19:24:03 2016 @@ -30,6 +30,7 @@ #include <basegfx/polygon/b2dpolypolygonfillrule.hxx> #include <vector> #include <utility> +#include <basegfx/basegfxdllapi.h> ////////////////////////////////////////////////////////////////////////////// @@ -44,7 +45,7 @@ namespace basegfx @derive Overwrite span() with the render output method of your choice. */ - class B2DPolyPolygonRasterConverter + class BASEGFX_DLLPUBLIC B2DPolyPolygonRasterConverter { public: /** Create raster-converter for given poly-polygon Modified: openoffice/trunk/main/basegfx/inc/basegfx/polygon/b2dpolypolygontools.hxx URL: http://svn.apache.org/viewvc/openoffice/trunk/main/basegfx/inc/basegfx/polygon/b2dpolypolygontools.hxx?rev=1755455&r1=1755454&r2=1755455&view=diff ============================================================================== --- openoffice/trunk/main/basegfx/inc/basegfx/polygon/b2dpolypolygontools.hxx (original) +++ openoffice/trunk/main/basegfx/inc/basegfx/polygon/b2dpolypolygontools.hxx Sun Aug 7 19:24:03 2016 @@ -30,6 +30,7 @@ #include <com/sun/star/drawing/PolyPolygonBezierCoords.hpp> #include <vector> #include <set> +#include <basegfx/basegfxdllapi.h> namespace rtl { @@ -51,27 +52,27 @@ namespace basegfx // Check and evtl. correct orientations of all contained Polygons so that // the orientations of contained polygons will variate to express areas and // holes - B2DPolyPolygon correctOrientations(const B2DPolyPolygon& rCandidate); + BASEGFX_DLLPUBLIC B2DPolyPolygon correctOrientations(const B2DPolyPolygon& rCandidate); // make sure polygon with index 0L is not a hole. This may evtl. change the // sequence of polygons, but allows to use polygon with index 0L to // get the correct normal for the whole polyPolygon - B2DPolyPolygon correctOutmostPolygon(const B2DPolyPolygon& rCandidate); + BASEGFX_DLLPUBLIC B2DPolyPolygon correctOutmostPolygon(const B2DPolyPolygon& rCandidate); // Subdivide all contained curves. Use distanceBound value if given. - B2DPolyPolygon adaptiveSubdivideByDistance(const B2DPolyPolygon& rCandidate, double fDistanceBound = 0.0); + BASEGFX_DLLPUBLIC B2DPolyPolygon adaptiveSubdivideByDistance(const B2DPolyPolygon& rCandidate, double fDistanceBound = 0.0); // Subdivide all contained curves. Use distanceBound value if given. Else, a convenient one // is created. - B2DPolyPolygon adaptiveSubdivideByAngle(const B2DPolyPolygon& rCandidate, double fAngleBound = 0.0); + BASEGFX_DLLPUBLIC B2DPolyPolygon adaptiveSubdivideByAngle(const B2DPolyPolygon& rCandidate, double fAngleBound = 0.0); // Subdivide all contained curves. Use nCount divisions if given. Else, a convenient one // is created. - B2DPolyPolygon adaptiveSubdivideByCount(const B2DPolyPolygon& rCandidate, sal_uInt32 nCount = 0L); + BASEGFX_DLLPUBLIC B2DPolyPolygon adaptiveSubdivideByCount(const B2DPolyPolygon& rCandidate, sal_uInt32 nCount = 0L); // isInside test for B2dPoint. On border is not inside as long as not true is given // in bWithBorder flag. It is assumed that the orientations of the given polygon are correct. - bool isInside(const B2DPolyPolygon& rCandidate, const B2DPoint& rPoint, bool bWithBorder = false); + BASEGFX_DLLPUBLIC bool isInside(const B2DPolyPolygon& rCandidate, const B2DPoint& rPoint, bool bWithBorder = false); /** get range of PolyPolygon. Control points are included. @@ -84,7 +85,7 @@ namespace basegfx @return The outer range including control points */ - B2DRange getRangeWithControlPoints(const B2DPolyPolygon& rCandidate); + BASEGFX_DLLPUBLIC B2DRange getRangeWithControlPoints(const B2DPolyPolygon& rCandidate); /** Get the range of a polyPolygon @@ -97,19 +98,19 @@ namespace basegfx @return The outer range of the polygon */ - B2DRange getRange(const B2DPolyPolygon& rCandidate); + BASEGFX_DLLPUBLIC B2DRange getRange(const B2DPolyPolygon& rCandidate); // get signed area of polygon - double getSignedArea(const B2DPolyPolygon& rCandidate); + BASEGFX_DLLPUBLIC double getSignedArea(const B2DPolyPolygon& rCandidate); // get area of polygon - double getArea(const B2DPolyPolygon& rCandidate); + BASEGFX_DLLPUBLIC double getArea(const B2DPolyPolygon& rCandidate); /** Apply given LineDashing to given polyPolygon For a description see applyLineDashing in b2dpolygontoos.hxx */ - void applyLineDashing( + BASEGFX_DLLPUBLIC void applyLineDashing( const B2DPolyPolygon& rCandidate, const ::std::vector<double>& rDotDashArray, B2DPolyPolygon* pLineTarget, @@ -119,12 +120,12 @@ namespace basegfx // test if point is inside epsilon-range around the given PolyPolygon. Can be used // for HitTesting. The epsilon-range is defined to be the tube around the PolyPolygon // with distance fDistance and rounded edges (start and end point). - bool isInEpsilonRange(const B2DPolyPolygon& rCandidate, const B2DPoint& rTestPosition, double fDistance); + BASEGFX_DLLPUBLIC bool isInEpsilonRange(const B2DPolyPolygon& rCandidate, const B2DPoint& rTestPosition, double fDistance); /** Helper class to transport PointIndices to a PolyPolygon, with an operator< for convenient sorting in a std::set usage */ - class PointIndex + class BASEGFX_DLLPUBLIC PointIndex { private: sal_uInt32 mnPolygonIndex; @@ -178,7 +179,7 @@ namespace basegfx @return true, if the string was successfully parsed */ - bool importFromSvgD( + BASEGFX_DLLPUBLIC bool importFromSvgD( B2DPolyPolygon& o_rPolyPoly, const ::rtl::OUString& rSvgDAttribute, bool bHandleRelativeNextPointCompatible, @@ -186,47 +187,47 @@ namespace basegfx // grow for polyPolygon. Move all geometry in each point in the direction of the normal in that point // with the given amount. Value may be negative. - B2DPolyPolygon growInNormalDirection(const B2DPolyPolygon& rCandidate, double fValue); + BASEGFX_DLLPUBLIC B2DPolyPolygon growInNormalDirection(const B2DPolyPolygon& rCandidate, double fValue); // This method will correct a pair of polyPolygons where the goal is to keep same point count // to allow direct point association and also to remove self-intersections produced by shrinks. // This method will eventually change both polyPolygons to reach that goal because there are cases // where it is necessary to add new cut points to the original - void correctGrowShrinkPolygonPair(B2DPolyPolygon& rOriginal, B2DPolyPolygon& rGrown); + BASEGFX_DLLPUBLIC void correctGrowShrinkPolygonPair(B2DPolyPolygon& rOriginal, B2DPolyPolygon& rGrown); // force all sub-polygons to a point count of nSegments - B2DPolyPolygon reSegmentPolyPolygon(const B2DPolyPolygon& rCandidate, sal_uInt32 nSegments); + BASEGFX_DLLPUBLIC B2DPolyPolygon reSegmentPolyPolygon(const B2DPolyPolygon& rCandidate, sal_uInt32 nSegments); // create polygon state at t from 0.0 to 1.0 between the two polygons. Both polygons must have the same // organisation, e.g. same amount of polygons - B2DPolyPolygon interpolate(const B2DPolyPolygon& rOld1, const B2DPolyPolygon& rOld2, double t); + BASEGFX_DLLPUBLIC B2DPolyPolygon interpolate(const B2DPolyPolygon& rOld1, const B2DPolyPolygon& rOld2, double t); // create 3d PolyPolygon from given 2d PolyPolygon. The given fZCoordinate is used to expand the // third coordinate. - B3DPolyPolygon createB3DPolyPolygonFromB2DPolyPolygon(const B2DPolyPolygon& rCandidate, double fZCoordinate = 0.0); + BASEGFX_DLLPUBLIC B3DPolyPolygon createB3DPolyPolygonFromB2DPolyPolygon(const B2DPolyPolygon& rCandidate, double fZCoordinate = 0.0); // create 2d PolyPolygon from given 3d PolyPolygon. All coordinates are transformed using the given // matrix and the resulting x,y is used to form the new polygon. - B2DPolyPolygon createB2DPolyPolygonFromB3DPolyPolygon(const B3DPolyPolygon& rCandidate, const B3DHomMatrix& rMat); + BASEGFX_DLLPUBLIC B2DPolyPolygon createB2DPolyPolygonFromB3DPolyPolygon(const B3DPolyPolygon& rCandidate, const B3DHomMatrix& rMat); // for each contained edge in each contained polygon calculate the smallest distance. Return the index to the smallest // edge in rEdgeIndex and the index to the polygon in rPolygonIndex. The relative position on the edge is returned in rCut. // If nothing was found (e.g. empty input plygon), DBL_MAX is returned. - double getSmallestDistancePointToPolyPolygon(const B2DPolyPolygon& rCandidate, const B2DPoint& rTestPoint, sal_uInt32& rPolygonIndex, sal_uInt32& rEdgeIndex, double& rCut); + BASEGFX_DLLPUBLIC double getSmallestDistancePointToPolyPolygon(const B2DPolyPolygon& rCandidate, const B2DPoint& rTestPoint, sal_uInt32& rPolygonIndex, sal_uInt32& rEdgeIndex, double& rCut); // distort PolyPolygon. rOriginal describes the original range, where the given points describe the distorted // corresponding points. - B2DPolyPolygon distort(const B2DPolyPolygon& rCandidate, const B2DRange& rOriginal, const B2DPoint& rTopLeft, const B2DPoint& rTopRight, const B2DPoint& rBottomLeft, const B2DPoint& rBottomRight); + BASEGFX_DLLPUBLIC B2DPolyPolygon distort(const B2DPolyPolygon& rCandidate, const B2DRange& rOriginal, const B2DPoint& rTopLeft, const B2DPoint& rTopRight, const B2DPoint& rBottomLeft, const B2DPoint& rBottomRight); // rotate PolyPolygon around given point with given angle. - B2DPolyPolygon rotateAroundPoint(const B2DPolyPolygon& rCandidate, const B2DPoint& rCenter, double fAngle); + BASEGFX_DLLPUBLIC B2DPolyPolygon rotateAroundPoint(const B2DPolyPolygon& rCandidate, const B2DPoint& rCenter, double fAngle); // expand all segments (which are not yet) to curve segments. This is done with setting the control // vectors on the 1/3 resp. 2/3 distances on each segment. - B2DPolyPolygon expandToCurve(const B2DPolyPolygon& rCandidate); + BASEGFX_DLLPUBLIC B2DPolyPolygon expandToCurve(const B2DPolyPolygon& rCandidate); // set continuity for the whole curve. If not a curve, nothing will change. Non-curve points are not changed, too. - B2DPolyPolygon setContinuity(const B2DPolyPolygon& rCandidate, B2VectorContinuity eContinuity); + BASEGFX_DLLPUBLIC B2DPolyPolygon setContinuity(const B2DPolyPolygon& rCandidate, B2VectorContinuity eContinuity); /** Predicate whether a given poly-polygon is a rectangle. @@ -239,7 +240,7 @@ namespace basegfx vertices). Note that intermediate points and duplicate points are ignored. */ - bool isRectangle( const B2DPolyPolygon& rPoly ); + BASEGFX_DLLPUBLIC bool isRectangle( const B2DPolyPolygon& rPoly ); /** Export poly-polygon to SVG. @@ -270,14 +271,14 @@ namespace basegfx @return the generated SVG-D statement (the XML d attribute value alone, without any "<path ...>" or "d="...") */ - ::rtl::OUString exportToSvgD( + BASEGFX_DLLPUBLIC ::rtl::OUString exportToSvgD( const B2DPolyPolygon& rPolyPoly, bool bUseRelativeCoordinates, bool bDetectQuadraticBeziers, bool bHandleRelativeNextPointCompatible); // #i76891# Try to remove existing curve segments if they are simply edges - B2DPolyPolygon simplifyCurveSegments(const B2DPolyPolygon& rCandidate); + BASEGFX_DLLPUBLIC B2DPolyPolygon simplifyCurveSegments(const B2DPolyPolygon& rCandidate); /** split each edge of a polyPolygon in exactly nSubEdges equidistant edges @@ -291,12 +292,12 @@ namespace basegfx @param bHandleStraightEdges Please take a look at reSegmentPolygonEdges description, these are the same. */ - B2DPolyPolygon reSegmentPolyPolygonEdges(const B2DPolyPolygon& rCandidate, sal_uInt32 nSubEdges, bool bHandleCurvedEdges, bool bHandleStraightEdges); + BASEGFX_DLLPUBLIC B2DPolyPolygon reSegmentPolyPolygonEdges(const B2DPolyPolygon& rCandidate, sal_uInt32 nSubEdges, bool bHandleCurvedEdges, bool bHandleStraightEdges); ////////////////////////////////////////////////////////////////////// // comparators with tolerance for 2D PolyPolygons - bool equal(const B2DPolyPolygon& rCandidateA, const B2DPolyPolygon& rCandidateB, const double& rfSmallValue); - bool equal(const B2DPolyPolygon& rCandidateA, const B2DPolyPolygon& rCandidateB); + BASEGFX_DLLPUBLIC bool equal(const B2DPolyPolygon& rCandidateA, const B2DPolyPolygon& rCandidateB, const double& rfSmallValue); + BASEGFX_DLLPUBLIC bool equal(const B2DPolyPolygon& rCandidateA, const B2DPolyPolygon& rCandidateB); /** snap some polygon coordinates to discrete coordinates @@ -310,26 +311,26 @@ namespace basegfx @return The modified version of the source polygon */ - B2DPolyPolygon snapPointsOfHorizontalOrVerticalEdges(const B2DPolyPolygon& rCandidate); + BASEGFX_DLLPUBLIC B2DPolyPolygon snapPointsOfHorizontalOrVerticalEdges(const B2DPolyPolygon& rCandidate); /** returns true if the Polygon only contains horizontal or vertical edges so that it could be represented by RegionBands */ - bool containsOnlyHorizontalAndVerticalEdges(const B2DPolyPolygon& rCandidate); + BASEGFX_DLLPUBLIC bool containsOnlyHorizontalAndVerticalEdges(const B2DPolyPolygon& rCandidate); /// converters for com::sun::star::drawing::PointSequence - B2DPolyPolygon UnoPointSequenceSequenceToB2DPolyPolygon( + BASEGFX_DLLPUBLIC B2DPolyPolygon UnoPointSequenceSequenceToB2DPolyPolygon( const com::sun::star::drawing::PointSequenceSequence& rPointSequenceSequenceSource, bool bCheckClosed = true); - void B2DPolyPolygonToUnoPointSequenceSequence( + BASEGFX_DLLPUBLIC void B2DPolyPolygonToUnoPointSequenceSequence( const B2DPolyPolygon& rPolyPolygon, com::sun::star::drawing::PointSequenceSequence& rPointSequenceSequenceRetval); /// converters for com::sun::star::drawing::PolyPolygonBezierCoords (curved polygons) - B2DPolyPolygon UnoPolyPolygonBezierCoordsToB2DPolyPolygon( + BASEGFX_DLLPUBLIC B2DPolyPolygon UnoPolyPolygonBezierCoordsToB2DPolyPolygon( const com::sun::star::drawing::PolyPolygonBezierCoords& rPolyPolygonBezierCoordsSource, bool bCheckClosed = true); - void B2DPolyPolygonToUnoPolyPolygonBezierCoords( + BASEGFX_DLLPUBLIC void B2DPolyPolygonToUnoPolyPolygonBezierCoords( const B2DPolyPolygon& rPolyPolygon, com::sun::star::drawing::PolyPolygonBezierCoords& rPolyPolygonBezierCoordsRetval); Modified: openoffice/trunk/main/basegfx/inc/basegfx/polygon/b2dtrapezoid.hxx URL: http://svn.apache.org/viewvc/openoffice/trunk/main/basegfx/inc/basegfx/polygon/b2dtrapezoid.hxx?rev=1755455&r1=1755454&r2=1755455&view=diff ============================================================================== --- openoffice/trunk/main/basegfx/inc/basegfx/polygon/b2dtrapezoid.hxx (original) +++ openoffice/trunk/main/basegfx/inc/basegfx/polygon/b2dtrapezoid.hxx Sun Aug 7 19:24:03 2016 @@ -27,13 +27,14 @@ #include <basegfx/polygon/b2dpolygon.hxx> #include <basegfx/polygon/b2dpolypolygon.hxx> #include <vector> +#include <basegfx/basegfxdllapi.h> ////////////////////////////////////////////////////////////////////////////// namespace basegfx { // class to hold a single trapezoid - class B2DTrapezoid + class BASEGFX_DLLPUBLIC B2DTrapezoid { private: // Geometry data. YValues are down-oriented, this means bottom should @@ -89,13 +90,13 @@ namespace basegfx // lines have to be parallel to the X-Axis, thus this subdivision is NOT simply usable // for primitive decompositions. To use it, the shear and rotate parts of the // involved transformations HAVE to be taken into account. - void trapezoidSubdivide( + BASEGFX_DLLPUBLIC void trapezoidSubdivide( B2DTrapezoidVector& ro_Result, const B2DPolyPolygon& rSourcePolyPolygon); // directly create trapezoids from given edge. Depending on the given geometry, // none up to three trapezoids will be created - void createLineTrapezoidFromEdge( + BASEGFX_DLLPUBLIC void createLineTrapezoidFromEdge( B2DTrapezoidVector& ro_Result, const B2DPoint& rPointA, const B2DPoint& rPointB, @@ -104,7 +105,7 @@ namespace basegfx // create trapezoids for all edges of the given polygon. The closed state of // the polygon is taken into account. If curves are contaned, the default // AdaptiveSubdivision will be used. - void createLineTrapezoidFromB2DPolygon( + BASEGFX_DLLPUBLIC void createLineTrapezoidFromB2DPolygon( B2DTrapezoidVector& ro_Result, const B2DPolygon& rPolygon, double fLineWidth = 1.0); @@ -112,7 +113,7 @@ namespace basegfx // create trapezoids for all edges of the given polyPolygon. The closed state of // the PolyPolygon is taken into account. If curves are contaned, the default // AdaptiveSubdivision will be used. - void createLineTrapezoidFromB2DPolyPolygon( + BASEGFX_DLLPUBLIC void createLineTrapezoidFromB2DPolyPolygon( B2DTrapezoidVector& ro_Result, const B2DPolyPolygon& rPolyPolygon, double fLineWidth = 1.0); Modified: openoffice/trunk/main/basegfx/inc/basegfx/polygon/b3dpolygon.hxx URL: http://svn.apache.org/viewvc/openoffice/trunk/main/basegfx/inc/basegfx/polygon/b3dpolygon.hxx?rev=1755455&r1=1755454&r2=1755455&view=diff ============================================================================== --- openoffice/trunk/main/basegfx/inc/basegfx/polygon/b3dpolygon.hxx (original) +++ openoffice/trunk/main/basegfx/inc/basegfx/polygon/b3dpolygon.hxx Sun Aug 7 19:24:03 2016 @@ -26,6 +26,7 @@ #include <sal/types.h> #include <o3tl/cow_wrapper.hxx> +#include <basegfx/basegfxdllapi.h> ////////////////////////////////////////////////////////////////////////////// // predeclarations @@ -46,7 +47,7 @@ namespace basegfx namespace basegfx { - class B3DPolygon + class BASEGFX_DLLPUBLIC B3DPolygon { public: typedef o3tl::cow_wrapper< ImplB3DPolygon > ImplType; Modified: openoffice/trunk/main/basegfx/inc/basegfx/polygon/b3dpolygonclipper.hxx URL: http://svn.apache.org/viewvc/openoffice/trunk/main/basegfx/inc/basegfx/polygon/b3dpolygonclipper.hxx?rev=1755455&r1=1755454&r2=1755455&view=diff ============================================================================== --- openoffice/trunk/main/basegfx/inc/basegfx/polygon/b3dpolygonclipper.hxx (original) +++ openoffice/trunk/main/basegfx/inc/basegfx/polygon/b3dpolygonclipper.hxx Sun Aug 7 19:24:03 2016 @@ -26,6 +26,7 @@ #include <basegfx/polygon/b3dpolypolygon.hxx> #include <basegfx/polygon/b3dpolygon.hxx> +#include <basegfx/basegfxdllapi.h> ////////////////////////////////////////////////////////////////////////////// @@ -51,30 +52,30 @@ namespace basegfx // of the plane from the center (0.0). // The value bClipPositive defines on which side the return value will be (true -> on positive side of plane). // The switch bStroke decides if the polygon is interpreted as area (false) or strokes (true). - B3DPolyPolygon clipPolyPolygonOnOrthogonalPlane(const B3DPolyPolygon& rCandidate, B3DOrientation ePlaneOrthogonal, bool bClipPositive, double fPlaneOffset, bool bStroke); + BASEGFX_DLLPUBLIC B3DPolyPolygon clipPolyPolygonOnOrthogonalPlane(const B3DPolyPolygon& rCandidate, B3DOrientation ePlaneOrthogonal, bool bClipPositive, double fPlaneOffset, bool bStroke); // version for Polygons - B3DPolyPolygon clipPolygonOnOrthogonalPlane(const B3DPolygon& rCandidate, B3DOrientation ePlaneOrthogonal, bool bClipPositive, double fPlaneOffset, bool bStroke); + BASEGFX_DLLPUBLIC B3DPolyPolygon clipPolygonOnOrthogonalPlane(const B3DPolygon& rCandidate, B3DOrientation ePlaneOrthogonal, bool bClipPositive, double fPlaneOffset, bool bStroke); // Clip the given PolyPolygon against the given range. bInside defines if the result will contain the // parts which are contained in the range or vice versa. // The switch bStroke decides if the polygon is interpreted as area (false) or strokes (true). - B3DPolyPolygon clipPolyPolygonOnRange(const B3DPolyPolygon& rCandidate, const B3DRange& rRange, bool bInside, bool bStroke); + BASEGFX_DLLPUBLIC B3DPolyPolygon clipPolyPolygonOnRange(const B3DPolyPolygon& rCandidate, const B3DRange& rRange, bool bInside, bool bStroke); // version for Polygons - B3DPolyPolygon clipPolygonOnRange(const B3DPolygon& rCandidate, const B3DRange& rRange, bool bInside, bool bStroke); + BASEGFX_DLLPUBLIC B3DPolyPolygon clipPolygonOnRange(const B3DPolygon& rCandidate, const B3DRange& rRange, bool bInside, bool bStroke); // versions for B2DRange, clips only against X,Y - B3DPolyPolygon clipPolyPolygonOnRange(const B3DPolyPolygon& rCandidate, const B2DRange& rRange, bool bInside, bool bStroke); - B3DPolyPolygon clipPolygonOnRange(const B3DPolygon& rCandidate, const B2DRange& rRange, bool bInside, bool bStroke); + BASEGFX_DLLPUBLIC B3DPolyPolygon clipPolyPolygonOnRange(const B3DPolyPolygon& rCandidate, const B2DRange& rRange, bool bInside, bool bStroke); + BASEGFX_DLLPUBLIC B3DPolyPolygon clipPolygonOnRange(const B3DPolygon& rCandidate, const B2DRange& rRange, bool bInside, bool bStroke); // Clip the given PolyPolygon against given plane in 3D. The plane is defined by a plane normal and a point on the plane. // The value bClipPositive defines on which side the return value will be (true -> on positive side of plane). // The switch bStroke decides if the polygon is interpreted as area (false) or strokes (true). - B3DPolyPolygon clipPolyPolygonOnPlane(const B3DPolyPolygon& rCandidate, const B3DPoint& rPointOnPlane, const B3DVector& rPlaneNormal, bool bClipPositive, bool bStroke); + BASEGFX_DLLPUBLIC B3DPolyPolygon clipPolyPolygonOnPlane(const B3DPolyPolygon& rCandidate, const B3DPoint& rPointOnPlane, const B3DVector& rPlaneNormal, bool bClipPositive, bool bStroke); // version for Polygons - B3DPolyPolygon clipPolygonOnPlane(const B3DPolygon& rCandidate, const B3DPoint& rPointOnPlane, const B3DVector& rPlaneNormal, bool bClipPositive, bool bStroke); + BASEGFX_DLLPUBLIC B3DPolyPolygon clipPolygonOnPlane(const B3DPolygon& rCandidate, const B3DPoint& rPointOnPlane, const B3DVector& rPlaneNormal, bool bClipPositive, bool bStroke); } // end of namespace tools } // end of namespace basegfx Modified: openoffice/trunk/main/basegfx/inc/basegfx/polygon/b3dpolygontools.hxx URL: http://svn.apache.org/viewvc/openoffice/trunk/main/basegfx/inc/basegfx/polygon/b3dpolygontools.hxx?rev=1755455&r1=1755454&r2=1755455&view=diff ============================================================================== --- openoffice/trunk/main/basegfx/inc/basegfx/polygon/b3dpolygontools.hxx (original) +++ openoffice/trunk/main/basegfx/inc/basegfx/polygon/b3dpolygontools.hxx Sun Aug 7 19:24:03 2016 @@ -29,6 +29,7 @@ #include <basegfx/polygon/b3dpolypolygon.hxx> #include <basegfx/vector/b2enums.hxx> #include <vector> +#include <basegfx/basegfxdllapi.h> ////////////////////////////////////////////////////////////////////////////// @@ -49,58 +50,58 @@ namespace basegfx method corrects this (removes double start/end points) and sets the Closed()-state of the polygon correctly. */ - void checkClosed(B3DPolygon& rCandidate); + BASEGFX_DLLPUBLIC void checkClosed(B3DPolygon& rCandidate); // Get successor and predecessor indices. Returning the same index means there // is none. Same for successor. - sal_uInt32 getIndexOfPredecessor(sal_uInt32 nIndex, const B3DPolygon& rCandidate); - sal_uInt32 getIndexOfSuccessor(sal_uInt32 nIndex, const B3DPolygon& rCandidate); + BASEGFX_DLLPUBLIC sal_uInt32 getIndexOfPredecessor(sal_uInt32 nIndex, const B3DPolygon& rCandidate); + BASEGFX_DLLPUBLIC sal_uInt32 getIndexOfSuccessor(sal_uInt32 nIndex, const B3DPolygon& rCandidate); // Get orientation of Polygon - B2VectorOrientation getOrientation(const B3DPolygon& rCandidate); + BASEGFX_DLLPUBLIC B2VectorOrientation getOrientation(const B3DPolygon& rCandidate); // get size of polygon. Control vectors are included in that ranges. - B3DRange getRange(const B3DPolygon& rCandidate); + BASEGFX_DLLPUBLIC B3DRange getRange(const B3DPolygon& rCandidate); // get normal vector of polygon - B3DVector getNormal(const B3DPolygon& rCandidate); + BASEGFX_DLLPUBLIC B3DVector getNormal(const B3DPolygon& rCandidate); // get normal vector of positive oriented polygon - B3DVector getPositiveOrientedNormal(const B3DPolygon& rCandidate); + BASEGFX_DLLPUBLIC B3DVector getPositiveOrientedNormal(const B3DPolygon& rCandidate); // get signed area of polygon - double getSignedArea(const B3DPolygon& rCandidate); + BASEGFX_DLLPUBLIC double getSignedArea(const B3DPolygon& rCandidate); // get area of polygon - double getArea(const B3DPolygon& rCandidate); + BASEGFX_DLLPUBLIC double getArea(const B3DPolygon& rCandidate); // get signed area of polygon - double getSignedArea(const B3DPolygon& rCandidate); + BASEGFX_DLLPUBLIC double getSignedArea(const B3DPolygon& rCandidate); // get area of polygon - double getArea(const ::basegfx::B3DPolygon& rCandidate); + BASEGFX_DLLPUBLIC double getArea(const ::basegfx::B3DPolygon& rCandidate); // get length of polygon edge from point nIndex to nIndex + 1 - double getEdgeLength(const B3DPolygon& rCandidate, sal_uInt32 nIndex); + BASEGFX_DLLPUBLIC double getEdgeLength(const B3DPolygon& rCandidate, sal_uInt32 nIndex); // get length of polygon - double getLength(const B3DPolygon& rCandidate); + BASEGFX_DLLPUBLIC double getLength(const B3DPolygon& rCandidate); // get position on polygon for absolute given distance. If // length is given, it is assumed the correct polygon length, if 0.0 it is calculated // using getLength(...) - B3DPoint getPositionAbsolute(const B3DPolygon& rCandidate, double fDistance, double fLength = 0.0); + BASEGFX_DLLPUBLIC B3DPoint getPositionAbsolute(const B3DPolygon& rCandidate, double fDistance, double fLength = 0.0); // get position on polygon for relative given distance in range [0.0 .. 1.0]. If // length is given, it is assumed the correct polygon length, if 0.0 it is calculated // using getLength(...) - B3DPoint getPositionRelative(const B3DPolygon& rCandidate, double fDistance, double fLength = 0.0); + BASEGFX_DLLPUBLIC B3DPoint getPositionRelative(const B3DPolygon& rCandidate, double fDistance, double fLength = 0.0); /** Apply given LineDashing to given polygon For a description see applyLineDashing in b2dpolygontoos.hxx */ - void applyLineDashing( + BASEGFX_DLLPUBLIC void applyLineDashing( const B3DPolygon& rCandidate, const ::std::vector<double>& rDotDashArray, B3DPolyPolygon* pLineTarget, @@ -111,61 +112,61 @@ namespace basegfx rCandidate: the 3d geometry to change rCenter: the center of the 3d geometry */ - B3DPolygon applyDefaultNormalsSphere( const B3DPolygon& rCandidate, const B3DPoint& rCenter); + BASEGFX_DLLPUBLIC B3DPolygon applyDefaultNormalsSphere( const B3DPolygon& rCandidate, const B3DPoint& rCenter); /** invert normals for given 3d geometry. */ - B3DPolygon invertNormals( const B3DPolygon& rCandidate); + BASEGFX_DLLPUBLIC B3DPolygon invertNormals( const B3DPolygon& rCandidate); /** Create/replace texture coordinates for given 3d geometry with parallel projected one rRange: the full range of the 3d geometry If bChangeX, x texture coordinate will be recalculated. If bChangeY, y texture coordinate will be recalculated. */ - B3DPolygon applyDefaultTextureCoordinatesParallel( const B3DPolygon& rCandidate, const B3DRange& rRange, bool bChangeX = true, bool bChangeY = true); + BASEGFX_DLLPUBLIC B3DPolygon applyDefaultTextureCoordinatesParallel( const B3DPolygon& rCandidate, const B3DRange& rRange, bool bChangeX = true, bool bChangeY = true); /** Create/replace texture coordinates for given 3d geometry with spherical one rCenter: the centre of the used 3d geometry If bChangeX, x texture coordinate will be recalculated. If bChangeY, y texture coordinate will be recalculated. */ - B3DPolygon applyDefaultTextureCoordinatesSphere( const B3DPolygon& rCandidate, const B3DPoint& rCenter, bool bChangeX = true, bool bChangeY = true); + BASEGFX_DLLPUBLIC B3DPolygon applyDefaultTextureCoordinatesSphere( const B3DPolygon& rCandidate, const B3DPoint& rCenter, bool bChangeX = true, bool bChangeY = true); // test if point is inside epsilon-range around an edge defined // by the two given points. Can be used for HitTesting. The epsilon-range // is defined to be the cylinder centered to the given edge, using radius // fDistance, and the sphere around both points with radius fDistance. - bool isInEpsilonRange(const B3DPoint& rEdgeStart, const B3DPoint& rEdgeEnd, const B3DPoint& rTestPosition, double fDistance); + BASEGFX_DLLPUBLIC bool isInEpsilonRange(const B3DPoint& rEdgeStart, const B3DPoint& rEdgeEnd, const B3DPoint& rTestPosition, double fDistance); // test if point is inside epsilon-range around the given Polygon. Can be used // for HitTesting. The epsilon-range is defined to be the cylinder centered to // the given edge, using radius fDistance, and the sphere around both points with radius fDistance. - bool isInEpsilonRange(const B3DPolygon& rCandidate, const B3DPoint& rTestPosition, double fDistance); + BASEGFX_DLLPUBLIC bool isInEpsilonRange(const B3DPolygon& rCandidate, const B3DPoint& rTestPosition, double fDistance); // isInside tests for B3DPoint and other B3DPolygon. On border is not inside as long as // not true is given in bWithBorder flag. - bool isInside(const B3DPolygon& rCandidate, const B3DPoint& rPoint, bool bWithBorder = false); - bool isInside(const B3DPolygon& rCandidate, const B3DPolygon& rPolygon, bool bWithBorder = false); + BASEGFX_DLLPUBLIC bool isInside(const B3DPolygon& rCandidate, const B3DPoint& rPoint, bool bWithBorder = false); + BASEGFX_DLLPUBLIC bool isInside(const B3DPolygon& rCandidate, const B3DPolygon& rPolygon, bool bWithBorder = false); // calculates if given point is on given line, taking care of the numerical epsilon - bool isPointOnLine(const B3DPoint& rStart, const B3DPoint& rEnd, const B3DPoint& rCandidate, bool bWithPoints = false); + BASEGFX_DLLPUBLIC bool isPointOnLine(const B3DPoint& rStart, const B3DPoint& rEnd, const B3DPoint& rCandidate, bool bWithPoints = false); // calculates if given point is on given polygon, taking care of the numerical epsilon. Uses // isPointOnLine internally - bool isPointOnPolygon(const B3DPolygon& rCandidate, const B3DPoint& rPoint, bool bWithPoints = true); + BASEGFX_DLLPUBLIC bool isPointOnPolygon(const B3DPolygon& rCandidate, const B3DPoint& rPoint, bool bWithPoints = true); // helper to get a fCut position between a plane (given with normal and a point) // and a line given by start and end point - bool getCutBetweenLineAndPlane(const B3DVector& rPlaneNormal, const B3DPoint& rPlanePoint, const B3DPoint& rEdgeStart, const B3DPoint& rEdgeEnd, double& fCut); + BASEGFX_DLLPUBLIC bool getCutBetweenLineAndPlane(const B3DVector& rPlaneNormal, const B3DPoint& rPlanePoint, const B3DPoint& rEdgeStart, const B3DPoint& rEdgeEnd, double& fCut); // helper to get a fCut position between a 3d Polygon // and a line given by start and end point - bool getCutBetweenLineAndPolygon(const B3DPolygon& rCandidate, const B3DPoint& rEdgeStart, const B3DPoint& rEdgeEnd, double& fCut); + BASEGFX_DLLPUBLIC bool getCutBetweenLineAndPolygon(const B3DPolygon& rCandidate, const B3DPoint& rEdgeStart, const B3DPoint& rEdgeEnd, double& fCut); ////////////////////////////////////////////////////////////////////// // comparators with tolerance for 3D Polygons - bool equal(const B3DPolygon& rCandidateA, const B3DPolygon& rCandidateB, const double& rfSmallValue); - bool equal(const B3DPolygon& rCandidateA, const B3DPolygon& rCandidateB); + BASEGFX_DLLPUBLIC bool equal(const B3DPolygon& rCandidateA, const B3DPolygon& rCandidateB, const double& rfSmallValue); + BASEGFX_DLLPUBLIC bool equal(const B3DPolygon& rCandidateA, const B3DPolygon& rCandidateB); /** snap some polygon coordinates to discrete coordinates @@ -179,7 +180,7 @@ namespace basegfx @return The modified version of the source polygon */ - B3DPolygon snapPointsOfHorizontalOrVerticalEdges(const B3DPolygon& rCandidate); + BASEGFX_DLLPUBLIC B3DPolygon snapPointsOfHorizontalOrVerticalEdges(const B3DPolygon& rCandidate); } // end of namespace tools } // end of namespace basegfx Modified: openoffice/trunk/main/basegfx/inc/basegfx/polygon/b3dpolypolygon.hxx URL: http://svn.apache.org/viewvc/openoffice/trunk/main/basegfx/inc/basegfx/polygon/b3dpolypolygon.hxx?rev=1755455&r1=1755454&r2=1755455&view=diff ============================================================================== --- openoffice/trunk/main/basegfx/inc/basegfx/polygon/b3dpolypolygon.hxx (original) +++ openoffice/trunk/main/basegfx/inc/basegfx/polygon/b3dpolypolygon.hxx Sun Aug 7 19:24:03 2016 @@ -26,6 +26,7 @@ #include <sal/types.h> #include <o3tl/cow_wrapper.hxx> +#include <basegfx/basegfxdllapi.h> // predeclarations class ImplB3DPolyPolygon; @@ -41,7 +42,7 @@ namespace basegfx namespace basegfx { - class B3DPolyPolygon + class BASEGFX_DLLPUBLIC B3DPolyPolygon { public: typedef o3tl::cow_wrapper< ImplB3DPolyPolygon > ImplType; Modified: openoffice/trunk/main/basegfx/inc/basegfx/polygon/b3dpolypolygontools.hxx URL: http://svn.apache.org/viewvc/openoffice/trunk/main/basegfx/inc/basegfx/polygon/b3dpolypolygontools.hxx?rev=1755455&r1=1755454&r2=1755455&view=diff ============================================================================== --- openoffice/trunk/main/basegfx/inc/basegfx/polygon/b3dpolypolygontools.hxx (original) +++ openoffice/trunk/main/basegfx/inc/basegfx/polygon/b3dpolypolygontools.hxx Sun Aug 7 19:24:03 2016 @@ -30,6 +30,7 @@ #include <basegfx/point/b3dpoint.hxx> #include <com/sun/star/drawing/PolyPolygonShape3D.hpp> #include <vector> +#include <basegfx/basegfxdllapi.h> ////////////////////////////////////////////////////////////////////////////// @@ -44,13 +45,13 @@ namespace basegfx // B3DPolyPolygon tools // get size of PolyPolygon. Control vectors are included in that ranges. - B3DRange getRange(const B3DPolyPolygon& rCandidate); + BASEGFX_DLLPUBLIC B3DRange getRange(const B3DPolyPolygon& rCandidate); /** Apply given LineDashing to given polyPolygon For a description see applyLineDashing in b2dpolygontoos.hxx */ - void applyLineDashing( + BASEGFX_DLLPUBLIC void applyLineDashing( const B3DPolyPolygon& rCandidate, const ::std::vector<double>& rDotDashArray, B3DPolyPolygon* pLineTarget, @@ -59,26 +60,26 @@ namespace basegfx /** Create a unit 3D line polyPolygon which defines a cube. */ - B3DPolyPolygon createUnitCubePolyPolygon(); + BASEGFX_DLLPUBLIC B3DPolyPolygon createUnitCubePolyPolygon(); /** Create a unit 3D fill polyPolygon which defines a cube. */ - B3DPolyPolygon createUnitCubeFillPolyPolygon(); + BASEGFX_DLLPUBLIC B3DPolyPolygon createUnitCubeFillPolyPolygon(); /** Create a 3D line polyPolygon from a B3DRange which defines a cube. */ - B3DPolyPolygon createCubePolyPolygonFromB3DRange( const B3DRange& rRange); + BASEGFX_DLLPUBLIC B3DPolyPolygon createCubePolyPolygonFromB3DRange( const B3DRange& rRange); /** Create a 3D fill polyPolygon from a B3DRange which defines a cube. */ - B3DPolyPolygon createCubeFillPolyPolygonFromB3DRange( const B3DRange& rRange); + BASEGFX_DLLPUBLIC B3DPolyPolygon createCubeFillPolyPolygonFromB3DRange( const B3DRange& rRange); /** Create a unit 3D line polyPolygon which defines a sphere with the given count of hor and ver segments. Result will be centered at (0.0, 0.0, 0.0) and sized [-1.0 .. 1.0] in all dimensions. If nHorSeg == 0 and/or nVerSeg == 0, a default will be calculated to have a step at least each 15 degrees. With VerStart, VerStop and hor range in cartesian may be specified to create a partial sphere only. */ - B3DPolyPolygon createUnitSpherePolyPolygon( + BASEGFX_DLLPUBLIC B3DPolyPolygon createUnitSpherePolyPolygon( sal_uInt32 nHorSeg = 0L, sal_uInt32 nVerSeg = 0L, double fVerStart = F_PI2, double fVerStop = -F_PI2, double fHorStart = 0.0, double fHorStop = F_2PI); @@ -87,7 +88,7 @@ namespace basegfx If nHorSeg == 0 and/or nVerSeg == 0, a default will be calculated to have a step at least each 15 degrees. With VerStart, VerStop and hor range in cartesian may be specified to create a partial sphere only. */ - B3DPolyPolygon createSpherePolyPolygonFromB3DRange( + BASEGFX_DLLPUBLIC B3DPolyPolygon createSpherePolyPolygonFromB3DRange( const B3DRange& rRange, sal_uInt32 nHorSeg = 0L, sal_uInt32 nVerSeg = 0L, double fVerStart = F_PI2, double fVerStop = -F_PI2, @@ -96,7 +97,7 @@ namespace basegfx /** same as createUnitSpherePolyPolygon, but creates filled polygons (closed and oriented) There is one extra, the bool bNormals defines if normals will be set, default is false */ - B3DPolyPolygon createUnitSphereFillPolyPolygon( + BASEGFX_DLLPUBLIC B3DPolyPolygon createUnitSphereFillPolyPolygon( sal_uInt32 nHorSeg = 0L, sal_uInt32 nVerSeg = 0L, bool bNormals = false, double fVerStart = F_PI2, double fVerStop = -F_PI2, @@ -105,7 +106,7 @@ namespace basegfx /** same as createSpherePolyPolygonFromB3DRange, but creates filled polygons (closed and oriented) There is one extra, the bool bNormals defines if normals will be set, default is false */ - B3DPolyPolygon createSphereFillPolyPolygonFromB3DRange( + BASEGFX_DLLPUBLIC B3DPolyPolygon createSphereFillPolyPolygonFromB3DRange( const B3DRange& rRange, sal_uInt32 nHorSeg = 0L, sal_uInt32 nVerSeg = 0L, bool bNormals = false, @@ -116,40 +117,40 @@ namespace basegfx rCandidate: the 3d geometry to change rCenter: the center of the 3d geometry */ - B3DPolyPolygon applyDefaultNormalsSphere( const B3DPolyPolygon& rCandidate, const B3DPoint& rCenter); + BASEGFX_DLLPUBLIC B3DPolyPolygon applyDefaultNormalsSphere( const B3DPolyPolygon& rCandidate, const B3DPoint& rCenter); /** invert normals for given 3d geometry. */ - B3DPolyPolygon invertNormals( const B3DPolyPolygon& rCandidate); + BASEGFX_DLLPUBLIC B3DPolyPolygon invertNormals( const B3DPolyPolygon& rCandidate); /** Create/replace texture coordinates for given 3d geometry with parallel projected one rRange: the full range of the 3d geometry If bChangeX, x texture coordinate will be recalculated. If bChangeY, y texture coordinate will be recalculated. */ - B3DPolyPolygon applyDefaultTextureCoordinatesParallel( const B3DPolyPolygon& rCandidate, const B3DRange& rRange, bool bChangeX = true, bool bChangeY = true); + BASEGFX_DLLPUBLIC B3DPolyPolygon applyDefaultTextureCoordinatesParallel( const B3DPolyPolygon& rCandidate, const B3DRange& rRange, bool bChangeX = true, bool bChangeY = true); /** Create/replace texture coordinates for given 3d geometry with spherical one rCenter: the centre of the used 3d geometry If bChangeX, x texture coordinate will be recalculated. If bChangeY, y texture coordinate will be recalculated. */ - B3DPolyPolygon applyDefaultTextureCoordinatesSphere( const B3DPolyPolygon& rCandidate, const B3DPoint& rCenter, bool bChangeX = true, bool bChangeY = true); + BASEGFX_DLLPUBLIC B3DPolyPolygon applyDefaultTextureCoordinatesSphere( const B3DPolyPolygon& rCandidate, const B3DPoint& rCenter, bool bChangeX = true, bool bChangeY = true); // isInside test for B3DPoint. On border is not inside as long as not true is given // in bWithBorder flag. It is assumed that the orientations of the given polygon are correct. - bool isInside(const B3DPolyPolygon& rCandidate, const B3DPoint& rPoint, bool bWithBorder = false); + BASEGFX_DLLPUBLIC bool isInside(const B3DPolyPolygon& rCandidate, const B3DPoint& rPoint, bool bWithBorder = false); ////////////////////////////////////////////////////////////////////// // comparators with tolerance for 3D PolyPolygons - bool equal(const B3DPolyPolygon& rCandidateA, const B3DPolyPolygon& rCandidateB, const double& rfSmallValue); - bool equal(const B3DPolyPolygon& rCandidateA, const B3DPolyPolygon& rCandidateB); + BASEGFX_DLLPUBLIC bool equal(const B3DPolyPolygon& rCandidateA, const B3DPolyPolygon& rCandidateB, const double& rfSmallValue); + BASEGFX_DLLPUBLIC bool equal(const B3DPolyPolygon& rCandidateA, const B3DPolyPolygon& rCandidateB); /// converters for com::sun::star::drawing::PolyPolygonShape3D - B3DPolyPolygon UnoPolyPolygonShape3DToB3DPolyPolygon( + BASEGFX_DLLPUBLIC B3DPolyPolygon UnoPolyPolygonShape3DToB3DPolyPolygon( const com::sun::star::drawing::PolyPolygonShape3D& rPolyPolygonShape3DSource, bool bCheckClosed = true); - void B3DPolyPolygonToUnoPolyPolygonShape3D( + BASEGFX_DLLPUBLIC void B3DPolyPolygonToUnoPolyPolygonShape3D( const B3DPolyPolygon& rPolyPolygonSource, com::sun::star::drawing::PolyPolygonShape3D& rPolyPolygonShape3DRetval); Modified: openoffice/trunk/main/basegfx/inc/basegfx/range/b1drange.hxx URL: http://svn.apache.org/viewvc/openoffice/trunk/main/basegfx/inc/basegfx/range/b1drange.hxx?rev=1755455&r1=1755454&r2=1755455&view=diff ============================================================================== --- openoffice/trunk/main/basegfx/inc/basegfx/range/b1drange.hxx (original) +++ openoffice/trunk/main/basegfx/inc/basegfx/range/b1drange.hxx Sun Aug 7 19:24:03 2016 @@ -25,13 +25,14 @@ #define _BGFX_RANGE_B1DRANGE_HXX #include <basegfx/range/basicrange.hxx> +#include <basegfx/basegfxdllapi.h> namespace basegfx { class B1IRange; - class B1DRange + class BASEGFX_DLLPUBLIC B1DRange { ::basegfx::BasicRange< double, DoubleTraits > maRange; Modified: openoffice/trunk/main/basegfx/inc/basegfx/range/b1ibox.hxx URL: http://svn.apache.org/viewvc/openoffice/trunk/main/basegfx/inc/basegfx/range/b1ibox.hxx?rev=1755455&r1=1755454&r2=1755455&view=diff ============================================================================== --- openoffice/trunk/main/basegfx/inc/basegfx/range/b1ibox.hxx (original) +++ openoffice/trunk/main/basegfx/inc/basegfx/range/b1ibox.hxx Sun Aug 7 19:24:03 2016 @@ -25,11 +25,12 @@ #define _BGFX_RANGE_B1IBOX_HXX #include <basegfx/range/basicbox.hxx> +#include <basegfx/basegfxdllapi.h> namespace basegfx { - class B1IBox + class BASEGFX_DLLPUBLIC B1IBox { ::basegfx::BasicBox maRange; Modified: openoffice/trunk/main/basegfx/inc/basegfx/range/b1irange.hxx URL: http://svn.apache.org/viewvc/openoffice/trunk/main/basegfx/inc/basegfx/range/b1irange.hxx?rev=1755455&r1=1755454&r2=1755455&view=diff ============================================================================== --- openoffice/trunk/main/basegfx/inc/basegfx/range/b1irange.hxx (original) +++ openoffice/trunk/main/basegfx/inc/basegfx/range/b1irange.hxx Sun Aug 7 19:24:03 2016 @@ -25,11 +25,12 @@ #define _BGFX_RANGE_B1IRANGE_HXX #include <basegfx/range/basicrange.hxx> +#include <basegfx/basegfxdllapi.h> namespace basegfx { - class B1IRange + class BASEGFX_DLLPUBLIC B1IRange { ::basegfx::BasicRange< sal_Int32, Int32Traits > maRange; Modified: openoffice/trunk/main/basegfx/inc/basegfx/range/b2dpolyrange.hxx URL: http://svn.apache.org/viewvc/openoffice/trunk/main/basegfx/inc/basegfx/range/b2dpolyrange.hxx?rev=1755455&r1=1755454&r2=1755455&view=diff ============================================================================== --- openoffice/trunk/main/basegfx/inc/basegfx/range/b2dpolyrange.hxx (original) +++ openoffice/trunk/main/basegfx/inc/basegfx/range/b2dpolyrange.hxx Sun Aug 7 19:24:03 2016 @@ -27,6 +27,7 @@ #include <o3tl/cow_wrapper.hxx> #include <boost/tuple/tuple.hpp> #include <basegfx/vector/b2enums.hxx> +#include <basegfx/basegfxdllapi.h> namespace basegfx { @@ -51,7 +52,7 @@ namespace basegfx contain 'holes' - this is encoded via polygon orientation at the poly-polygon, and via explicit flags for the poly-range. */ - class B2DPolyRange + class BASEGFX_DLLPUBLIC B2DPolyRange { public: typedef boost::tuple<B2DRange,B2VectorOrientation> ElementType ; Modified: openoffice/trunk/main/basegfx/inc/basegfx/range/b2drange.hxx URL: http://svn.apache.org/viewvc/openoffice/trunk/main/basegfx/inc/basegfx/range/b2drange.hxx?rev=1755455&r1=1755454&r2=1755455&view=diff ============================================================================== --- openoffice/trunk/main/basegfx/inc/basegfx/range/b2drange.hxx (original) +++ openoffice/trunk/main/basegfx/inc/basegfx/range/b2drange.hxx Sun Aug 7 19:24:03 2016 @@ -29,6 +29,7 @@ #include <basegfx/tuple/b2dtuple.hxx> #include <basegfx/range/basicrange.hxx> #include <vector> +#include <basegfx/basegfxdllapi.h> namespace basegfx @@ -78,7 +79,7 @@ namespace basegfx { } - explicit B2DRange(const B2IRange& rRange); + BASEGFX_DLLPUBLIC explicit B2DRange(const B2IRange& rRange); bool isEmpty() const { @@ -247,7 +248,7 @@ namespace basegfx maRangeY.grow(fValue); } - void transform(const B2DHomMatrix& rMatrix); + BASEGFX_DLLPUBLIC void transform(const B2DHomMatrix& rMatrix); private: typedef ::basegfx::BasicRange< ValueType, TraitsType > MyBasicRange; @@ -260,7 +261,7 @@ namespace basegfx @return the nearest integer for this range */ - B2IRange fround(const B2DRange& rRange); + BASEGFX_DLLPUBLIC B2IRange fround(const B2DRange& rRange); /** Compute the set difference of the two given ranges @@ -281,7 +282,7 @@ namespace basegfx @return the input vector */ - ::std::vector< B2DRange >& computeSetDifference( ::std::vector< B2DRange >& o_rResult, + BASEGFX_DLLPUBLIC ::std::vector< B2DRange >& computeSetDifference( ::std::vector< B2DRange >& o_rResult, const B2DRange& rFirst, const B2DRange& rSecond ); Modified: openoffice/trunk/main/basegfx/inc/basegfx/range/b2drangeclipper.hxx URL: http://svn.apache.org/viewvc/openoffice/trunk/main/basegfx/inc/basegfx/range/b2drangeclipper.hxx?rev=1755455&r1=1755454&r2=1755455&view=diff ============================================================================== --- openoffice/trunk/main/basegfx/inc/basegfx/range/b2drangeclipper.hxx (original) +++ openoffice/trunk/main/basegfx/inc/basegfx/range/b2drangeclipper.hxx Sun Aug 7 19:24:03 2016 @@ -26,6 +26,7 @@ #include <basegfx/range/b2dpolyrange.hxx> #include <vector> +#include <basegfx/basegfxdllapi.h> namespace basegfx { @@ -38,7 +39,7 @@ namespace basegfx poly-polygon with the same topology, and encoding inside/outsidedness via polygon orientation and layering. */ - B2DPolyPolygon solveCrossovers(const std::vector<B2DRange>& rRanges, + BASEGFX_DLLPUBLIC B2DPolyPolygon solveCrossovers(const std::vector<B2DRange>& rRanges, const std::vector<B2VectorOrientation>& rOrientations); } } Modified: openoffice/trunk/main/basegfx/inc/basegfx/range/b2ibox.hxx URL: http://svn.apache.org/viewvc/openoffice/trunk/main/basegfx/inc/basegfx/range/b2ibox.hxx?rev=1755455&r1=1755454&r2=1755455&view=diff ============================================================================== --- openoffice/trunk/main/basegfx/inc/basegfx/range/b2ibox.hxx (original) +++ openoffice/trunk/main/basegfx/inc/basegfx/range/b2ibox.hxx Sun Aug 7 19:24:03 2016 @@ -30,11 +30,12 @@ #include <basegfx/tuple/b2i64tuple.hxx> #include <basegfx/range/basicbox.hxx> #include <vector> +#include <basegfx/basegfxdllapi.h> namespace basegfx { - class B2IBox + class BASEGFX_DLLPUBLIC B2IBox { public: typedef sal_Int32 ValueType; Modified: openoffice/trunk/main/basegfx/inc/basegfx/range/b2irange.hxx URL: http://svn.apache.org/viewvc/openoffice/trunk/main/basegfx/inc/basegfx/range/b2irange.hxx?rev=1755455&r1=1755454&r2=1755455&view=diff ============================================================================== --- openoffice/trunk/main/basegfx/inc/basegfx/range/b2irange.hxx (original) +++ openoffice/trunk/main/basegfx/inc/basegfx/range/b2irange.hxx Sun Aug 7 19:24:03 2016 @@ -30,11 +30,12 @@ #include <basegfx/tuple/b2i64tuple.hxx> #include <basegfx/range/basicrange.hxx> #include <vector> +#include <basegfx/basegfxdllapi.h> namespace basegfx { - class B2IRange + class BASEGFX_DLLPUBLIC B2IRange { public: typedef sal_Int32 ValueType; @@ -241,7 +242,7 @@ namespace basegfx @return the input vector */ - ::std::vector< B2IRange >& computeSetDifference( ::std::vector< B2IRange >& o_rResult, + BASEGFX_DLLPUBLIC ::std::vector< B2IRange >& computeSetDifference( ::std::vector< B2IRange >& o_rResult, const B2IRange& rFirst, const B2IRange& rSecond ); Modified: openoffice/trunk/main/basegfx/inc/basegfx/range/b3drange.hxx URL: http://svn.apache.org/viewvc/openoffice/trunk/main/basegfx/inc/basegfx/range/b3drange.hxx?rev=1755455&r1=1755454&r2=1755455&view=diff ============================================================================== --- openoffice/trunk/main/basegfx/inc/basegfx/range/b3drange.hxx (original) +++ openoffice/trunk/main/basegfx/inc/basegfx/range/b3drange.hxx Sun Aug 7 19:24:03 2016 @@ -28,6 +28,7 @@ #include <basegfx/point/b3dpoint.hxx> #include <basegfx/tuple/b3dtuple.hxx> #include <basegfx/range/basicrange.hxx> +#include <basegfx/basegfxdllapi.h> namespace basegfx { @@ -35,7 +36,7 @@ namespace basegfx class B3IRange; class B3DHomMatrix; - class B3DRange + class BASEGFX_DLLPUBLIC B3DRange { typedef ::basegfx::BasicRange< double, DoubleTraits > MyBasicRange; @@ -291,7 +292,7 @@ namespace basegfx @return the nearest integer for this range */ - B3IRange fround(const B3DRange& rRange); + BASEGFX_DLLPUBLIC B3IRange fround(const B3DRange& rRange); } // end of namespace basegfx Modified: openoffice/trunk/main/basegfx/inc/basegfx/range/b3ibox.hxx URL: http://svn.apache.org/viewvc/openoffice/trunk/main/basegfx/inc/basegfx/range/b3ibox.hxx?rev=1755455&r1=1755454&r2=1755455&view=diff ============================================================================== --- openoffice/trunk/main/basegfx/inc/basegfx/range/b3ibox.hxx (original) +++ openoffice/trunk/main/basegfx/inc/basegfx/range/b3ibox.hxx Sun Aug 7 19:24:03 2016 @@ -29,10 +29,11 @@ #include <basegfx/tuple/b3ituple.hxx> #include <basegfx/tuple/b3i64tuple.hxx> #include <basegfx/range/basicbox.hxx> +#include <basegfx/basegfxdllapi.h> namespace basegfx { - class B3IBox + class BASEGFX_DLLPUBLIC B3IBox { BasicBox maRangeX; BasicBox maRangeY;