Kaydet (Commit) 9bccd260 authored tarafından Noel Grandin's avatar Noel Grandin

convert CUTFLAG_ constants to enum class

Change-Id: I98dc5488954a4d46f7e0158790a4c3dabebfc1b3
üst a1d10eb8
...@@ -359,21 +359,21 @@ namespace basegfx ...@@ -359,21 +359,21 @@ namespace basegfx
const B2DVector aPerpendStartA(aNormalizedPerpendicularA * -fHalfLineWidth); const B2DVector aPerpendStartA(aNormalizedPerpendicularA * -fHalfLineWidth);
const B2DVector aPerpendEndA(aNormalizedPerpendicularB * -fHalfLineWidth); const B2DVector aPerpendEndA(aNormalizedPerpendicularB * -fHalfLineWidth);
double fCutA(0.0); double fCutA(0.0);
const tools::CutFlagValue aCutA(tools::findCut( const CutFlagValue aCutA(tools::findCut(
rEdge.getStartPoint(), aPerpendStartA, rEdge.getStartPoint(), aPerpendStartA,
rEdge.getEndPoint(), aPerpendEndA, rEdge.getEndPoint(), aPerpendEndA,
CUTFLAG_ALL, &fCutA)); CutFlagValue::ALL, &fCutA));
const bool bCutA(CUTFLAG_NONE != aCutA); const bool bCutA(CutFlagValue::NONE != aCutA);
// create lower displacement vectors and check if they cut // create lower displacement vectors and check if they cut
const B2DVector aPerpendStartB(aNormalizedPerpendicularA * fHalfLineWidth); const B2DVector aPerpendStartB(aNormalizedPerpendicularA * fHalfLineWidth);
const B2DVector aPerpendEndB(aNormalizedPerpendicularB * fHalfLineWidth); const B2DVector aPerpendEndB(aNormalizedPerpendicularB * fHalfLineWidth);
double fCutB(0.0); double fCutB(0.0);
const tools::CutFlagValue aCutB(tools::findCut( const CutFlagValue aCutB(tools::findCut(
rEdge.getEndPoint(), aPerpendEndB, rEdge.getEndPoint(), aPerpendEndB,
rEdge.getStartPoint(), aPerpendStartB, rEdge.getStartPoint(), aPerpendStartB,
CUTFLAG_ALL, &fCutB)); CutFlagValue::ALL, &fCutB));
const bool bCutB(CUTFLAG_NONE != aCutB); const bool bCutB(CutFlagValue::NONE != aCutB);
// check if cut happens // check if cut happens
const bool bCut(bCutA || bCutB); const bool bCut(bCutA || bCutB);
...@@ -713,7 +713,7 @@ namespace basegfx ...@@ -713,7 +713,7 @@ namespace basegfx
// is not needed since the same fCut will be found on the first edge. // is not needed since the same fCut will be found on the first edge.
// If it exists, insert it to complete the mitered fill polygon. // If it exists, insert it to complete the mitered fill polygon.
double fCutPos(0.0); double fCutPos(0.0);
tools::findCut(aStartPoint, rTangentPrev, aEndPoint, rTangentEdge, CUTFLAG_ALL, &fCutPos); tools::findCut(aStartPoint, rTangentPrev, aEndPoint, rTangentEdge, CutFlagValue::ALL, &fCutPos);
if(0.0 != fCutPos) if(0.0 != fCutPos)
{ {
......
...@@ -947,28 +947,28 @@ namespace basegfx ...@@ -947,28 +947,28 @@ namespace basegfx
CutFlagValue aCutFlags, CutFlagValue aCutFlags,
double* pCut1, double* pCut2) double* pCut1, double* pCut2)
{ {
CutFlagValue aRetval(CUTFLAG_NONE); CutFlagValue aRetval(CutFlagValue::NONE);
double fCut1(0.0); double fCut1(0.0);
double fCut2(0.0); double fCut2(0.0);
bool bFinished(!((bool)(aCutFlags & CUTFLAG_ALL))); bool bFinished(!((bool)(aCutFlags & CutFlagValue::ALL)));
// test for same points? // test for same points?
if(!bFinished if(!bFinished
&& (aCutFlags & (CUTFLAG_START1|CUTFLAG_END1)) && (aCutFlags & (CutFlagValue::START1|CutFlagValue::END1))
&& (aCutFlags & (CUTFLAG_START2|CUTFLAG_END2))) && (aCutFlags & (CutFlagValue::START2|CutFlagValue::END2)))
{ {
// same startpoint? // same startpoint?
if(!bFinished && (aCutFlags & (CUTFLAG_START1|CUTFLAG_START2)) == (CUTFLAG_START1|CUTFLAG_START2)) if(!bFinished && (aCutFlags & (CutFlagValue::START1|CutFlagValue::START2)) == (CutFlagValue::START1|CutFlagValue::START2))
{ {
if(rEdge1Start.equal(rEdge2Start)) if(rEdge1Start.equal(rEdge2Start))
{ {
bFinished = true; bFinished = true;
aRetval = (CUTFLAG_START1|CUTFLAG_START2); aRetval = (CutFlagValue::START1|CutFlagValue::START2);
} }
} }
// same endpoint? // same endpoint?
if(!bFinished && (aCutFlags & (CUTFLAG_END1|CUTFLAG_END2)) == (CUTFLAG_END1|CUTFLAG_END2)) if(!bFinished && (aCutFlags & (CutFlagValue::END1|CutFlagValue::END2)) == (CutFlagValue::END1|CutFlagValue::END2))
{ {
const B2DPoint aEnd1(rEdge1Start + rEdge1Delta); const B2DPoint aEnd1(rEdge1Start + rEdge1Delta);
const B2DPoint aEnd2(rEdge2Start + rEdge2Delta); const B2DPoint aEnd2(rEdge2Start + rEdge2Delta);
...@@ -976,63 +976,63 @@ namespace basegfx ...@@ -976,63 +976,63 @@ namespace basegfx
if(aEnd1.equal(aEnd2)) if(aEnd1.equal(aEnd2))
{ {
bFinished = true; bFinished = true;
aRetval = (CUTFLAG_END1|CUTFLAG_END2); aRetval = (CutFlagValue::END1|CutFlagValue::END2);
fCut1 = fCut2 = 1.0; fCut1 = fCut2 = 1.0;
} }
} }
// startpoint1 == endpoint2? // startpoint1 == endpoint2?
if(!bFinished && (aCutFlags & (CUTFLAG_START1|CUTFLAG_END2)) == (CUTFLAG_START1|CUTFLAG_END2)) if(!bFinished && (aCutFlags & (CutFlagValue::START1|CutFlagValue::END2)) == (CutFlagValue::START1|CutFlagValue::END2))
{ {
const B2DPoint aEnd2(rEdge2Start + rEdge2Delta); const B2DPoint aEnd2(rEdge2Start + rEdge2Delta);
if(rEdge1Start.equal(aEnd2)) if(rEdge1Start.equal(aEnd2))
{ {
bFinished = true; bFinished = true;
aRetval = (CUTFLAG_START1|CUTFLAG_END2); aRetval = (CutFlagValue::START1|CutFlagValue::END2);
fCut1 = 0.0; fCut1 = 0.0;
fCut2 = 1.0; fCut2 = 1.0;
} }
} }
// startpoint2 == endpoint1? // startpoint2 == endpoint1?
if(!bFinished&& (aCutFlags & (CUTFLAG_START2|CUTFLAG_END1)) == (CUTFLAG_START2|CUTFLAG_END1)) if(!bFinished&& (aCutFlags & (CutFlagValue::START2|CutFlagValue::END1)) == (CutFlagValue::START2|CutFlagValue::END1))
{ {
const B2DPoint aEnd1(rEdge1Start + rEdge1Delta); const B2DPoint aEnd1(rEdge1Start + rEdge1Delta);
if(rEdge2Start.equal(aEnd1)) if(rEdge2Start.equal(aEnd1))
{ {
bFinished = true; bFinished = true;
aRetval = (CUTFLAG_START2|CUTFLAG_END1); aRetval = (CutFlagValue::START2|CutFlagValue::END1);
fCut1 = 1.0; fCut1 = 1.0;
fCut2 = 0.0; fCut2 = 0.0;
} }
} }
} }
if(!bFinished && (aCutFlags & CUTFLAG_LINE)) if(!bFinished && (aCutFlags & CutFlagValue::LINE))
{ {
if(!bFinished && (aCutFlags & CUTFLAG_START1)) if(!bFinished && (aCutFlags & CutFlagValue::START1))
{ {
// start1 on line 2 ? // start1 on line 2 ?
if(isPointOnEdge(rEdge1Start, rEdge2Start, rEdge2Delta, &fCut2)) if(isPointOnEdge(rEdge1Start, rEdge2Start, rEdge2Delta, &fCut2))
{ {
bFinished = true; bFinished = true;
aRetval = (CUTFLAG_LINE|CUTFLAG_START1); aRetval = (CutFlagValue::LINE|CutFlagValue::START1);
} }
} }
if(!bFinished && (aCutFlags & CUTFLAG_START2)) if(!bFinished && (aCutFlags & CutFlagValue::START2))
{ {
// start2 on line 1 ? // start2 on line 1 ?
if(isPointOnEdge(rEdge2Start, rEdge1Start, rEdge1Delta, &fCut1)) if(isPointOnEdge(rEdge2Start, rEdge1Start, rEdge1Delta, &fCut1))
{ {
bFinished = true; bFinished = true;
aRetval = (CUTFLAG_LINE|CUTFLAG_START2); aRetval = (CutFlagValue::LINE|CutFlagValue::START2);
} }
} }
if(!bFinished && (aCutFlags & CUTFLAG_END1)) if(!bFinished && (aCutFlags & CutFlagValue::END1))
{ {
// end1 on line 2 ? // end1 on line 2 ?
const B2DPoint aEnd1(rEdge1Start + rEdge1Delta); const B2DPoint aEnd1(rEdge1Start + rEdge1Delta);
...@@ -1040,11 +1040,11 @@ namespace basegfx ...@@ -1040,11 +1040,11 @@ namespace basegfx
if(isPointOnEdge(aEnd1, rEdge2Start, rEdge2Delta, &fCut2)) if(isPointOnEdge(aEnd1, rEdge2Start, rEdge2Delta, &fCut2))
{ {
bFinished = true; bFinished = true;
aRetval = (CUTFLAG_LINE|CUTFLAG_END1); aRetval = (CutFlagValue::LINE|CutFlagValue::END1);
} }
} }
if(!bFinished && (aCutFlags & CUTFLAG_END2)) if(!bFinished && (aCutFlags & CutFlagValue::END2))
{ {
// end2 on line 1 ? // end2 on line 1 ?
const B2DPoint aEnd2(rEdge2Start + rEdge2Delta); const B2DPoint aEnd2(rEdge2Start + rEdge2Delta);
...@@ -1052,7 +1052,7 @@ namespace basegfx ...@@ -1052,7 +1052,7 @@ namespace basegfx
if(isPointOnEdge(aEnd2, rEdge1Start, rEdge1Delta, &fCut1)) if(isPointOnEdge(aEnd2, rEdge1Start, rEdge1Delta, &fCut1))
{ {
bFinished = true; bFinished = true;
aRetval = (CUTFLAG_LINE|CUTFLAG_END2); aRetval = (CutFlagValue::LINE|CutFlagValue::END2);
} }
} }
...@@ -1088,7 +1088,7 @@ namespace basegfx ...@@ -1088,7 +1088,7 @@ namespace basegfx
// inside parameter range edge2, too // inside parameter range edge2, too
if(fTools::more(fCut2, fZero) && fTools::less(fCut2, fOne)) if(fTools::more(fCut2, fZero) && fTools::less(fCut2, fOne))
{ {
aRetval = CUTFLAG_LINE; aRetval = CutFlagValue::LINE;
} }
} }
} }
......
...@@ -390,9 +390,9 @@ namespace basegfx ...@@ -390,9 +390,9 @@ namespace basegfx
if(tools::findCut( if(tools::findCut(
aEdgeA.getStart(), aDeltaA, aEdgeA.getStart(), aDeltaA,
aEdgeB.getStart(), aDeltaB, aEdgeB.getStart(), aDeltaB,
CUTFLAG_LINE, CutFlagValue::LINE,
&fCutA, &fCutA,
&fCutB)) &fCutB) != CutFlagValue::NONE)
{ {
// use a simple metric (length criteria) for choosing the numerically // use a simple metric (length criteria) for choosing the numerically
// better cut // better cut
......
...@@ -332,7 +332,7 @@ namespace ...@@ -332,7 +332,7 @@ namespace
if(basegfx::tools::findCut( if(basegfx::tools::findCut(
rStart, aVector, rStart, aVector,
aCurrent, aEdgeVector)) aCurrent, aEdgeVector) != CutFlagValue::NONE)
{ {
return true; return true;
} }
......
...@@ -29,9 +29,27 @@ ...@@ -29,9 +29,27 @@
#include <com/sun/star/drawing/FlagSequence.hpp> #include <com/sun/star/drawing/FlagSequence.hpp>
#include <vector> #include <vector>
#include <basegfx/basegfxdllapi.h> #include <basegfx/basegfxdllapi.h>
#include <o3tl/typed_flags_set.hxx>
// Definitions for the cut flags used from the findCut methods
enum class CutFlagValue
{
NONE = 0x0000,
LINE = 0x0001,
START1 = 0x0002,
START2 = 0x0004,
END1 = 0x0008,
END2 = 0x0010,
ALL = LINE|START1|START2|END1|END2,
DEFAULT = LINE|START2|END2,
};
namespace o3tl
{
template<> struct typed_flags<CutFlagValue> : is_typed_flags<CutFlagValue, 0x1f> {};
}
namespace basegfx namespace basegfx
{ {
// predefinitions // predefinitions
...@@ -123,24 +141,12 @@ namespace basegfx ...@@ -123,24 +141,12 @@ namespace basegfx
// #i37443# Subdivide all contained curves. // #i37443# Subdivide all contained curves.
BASEGFX_DLLPUBLIC 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;
#define CUTFLAG_NONE (0x0000)
#define CUTFLAG_LINE (0x0001)
#define CUTFLAG_START1 (0x0002)
#define CUTFLAG_START2 (0x0004)
#define CUTFLAG_END1 (0x0008)
#define CUTFLAG_END2 (0x0010)
#define CUTFLAG_ALL (CUTFLAG_LINE|CUTFLAG_START1|CUTFLAG_START2|CUTFLAG_END1|CUTFLAG_END2)
#define CUTFLAG_DEFAULT (CUTFLAG_LINE|CUTFLAG_START2|CUTFLAG_END2)
// This version works with two points and vectors to define the // This version works with two points and vectors to define the
// edges for the cut test. // edges for the cut test.
BASEGFX_DLLPUBLIC CutFlagValue findCut( BASEGFX_DLLPUBLIC CutFlagValue findCut(
const B2DPoint& rEdge1Start, const B2DVector& rEdge1Delta, const B2DPoint& rEdge1Start, const B2DVector& rEdge1Delta,
const B2DPoint& rEdge2Start, const B2DVector& rEdge2Delta, const B2DPoint& rEdge2Start, const B2DVector& rEdge2Delta,
CutFlagValue aCutFlags = CUTFLAG_DEFAULT, CutFlagValue aCutFlags = CutFlagValue::DEFAULT,
double* pCut1 = 0L, double* pCut2 = 0L); double* pCut1 = 0L, double* pCut2 = 0L);
// test if point is on the given edge in range ]0.0..1.0[ without // test if point is on the given edge in range ]0.0..1.0[ without
......
...@@ -1395,7 +1395,7 @@ double lcl_GetExtent( const Style& rBorder, const Style& rSide, const Style& rOp ...@@ -1395,7 +1395,7 @@ double lcl_GetExtent( const Style& rBorder, const Style& rSide, const Style& rOp
double nCut = 0.0; double nCut = 0.0;
basegfx::tools::findCut( basegfx::tools::findCut(
aBasePoint, aBaseVector, aOtherPoint, aOtherVector, aBasePoint, aBaseVector, aOtherPoint, aOtherVector,
CUTFLAG_ALL, &nCut ); CutFlagValue::ALL, &nCut );
return nCut; return nCut;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment