summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--canvas/source/vcl/canvashelper.cxx14
-rw-r--r--canvas/source/vcl/canvashelper_texturefill.cxx18
-rw-r--r--canvas/source/vcl/impltools.cxx14
-rw-r--r--canvas/source/vcl/impltools.hxx4
-rw-r--r--canvas/source/vcl/spritehelper.cxx2
-rw-r--r--filter/source/graphicfilter/idxf/dxf2mtf.cxx11
-rw-r--r--filter/source/graphicfilter/ios2met/ios2met.cxx243
-rw-r--r--include/basegfx/polygon/b2dpolygon.hxx1
-rw-r--r--include/basegfx/polygon/b2dpolypolygon.hxx1
-rw-r--r--include/tools/gen.hxx16
-rw-r--r--include/vcl/outdev.hxx2
-rw-r--r--vcl/source/outdev/polyline.cxx30
12 files changed, 148 insertions, 208 deletions
diff --git a/canvas/source/vcl/canvashelper.cxx b/canvas/source/vcl/canvashelper.cxx
index a62057ce4a30..5cc5f3c42b73 100644
--- a/canvas/source/vcl/canvashelper.cxx
+++ b/canvas/source/vcl/canvashelper.cxx
@@ -266,7 +266,7 @@ namespace vclcanvas
const ::basegfx::B2DPolyPolygon& rPolyPoly(
::basegfx::unotools::b2DPolyPolygonFromXPolyPolygon2D(xPolyPolygon) );
- const ::basegfx::B2DPolyPolygon aPolyPoly( tools::mapPolyPolygon( rPolyPoly, viewState, renderState ) );
+ const ::tools::PolyPolygon aPolyPoly( tools::mapPolyPolygon( rPolyPoly, viewState, renderState ) );
if( rPolyPoly.isClosed() )
{
@@ -284,9 +284,9 @@ namespace vclcanvas
// DrawPolygon(), and open ones via DrawPolyLine():
// closed polygons will simply already contain the
// closing segment.
- sal_uInt32 nSize( aPolyPoly.count() );
+ sal_uInt16 nSize( aPolyPoly.Count() );
- for( sal_uInt32 i=0; i<nSize; ++i )
+ for( sal_uInt16 i=0; i<nSize; ++i )
{
mpOutDevProvider->getOutDev().DrawPolyLine( aPolyPoly[i] );
@@ -476,7 +476,7 @@ namespace vclcanvas
::basegfx::B2DPolyPolygon aB2DPolyPoly(
::basegfx::unotools::b2DPolyPolygonFromXPolyPolygon2D(xPolyPolygon));
aB2DPolyPoly.setClosed(true); // ensure closed poly, otherwise VCL does not fill
- const ::basegfx::B2DPolyPolygon aPolyPoly( tools::mapPolyPolygon(
+ const ::tools::PolyPolygon aPolyPoly( tools::mapPolyPolygon(
aB2DPolyPoly,
viewState, renderState ) );
const bool bSourceAlpha( renderState.CompositeOperation == rendering::CompositeOperation::SOURCE );
@@ -486,10 +486,8 @@ namespace vclcanvas
}
else
{
- const double dTransparency( (nTransparency + 128) / 255.0 );
- basegfx::B2DHomMatrix aIdentityMatrix;
- aIdentityMatrix.identity();
- mpOutDevProvider->getOutDev().DrawTransparent( aIdentityMatrix, aPolyPoly, dTransparency );
+ const int nTransPercent( (nTransparency * 100 + 128) / 255 ); // normal rounding, no truncation here
+ mpOutDevProvider->getOutDev().DrawTransparent( aPolyPoly, static_cast<sal_uInt16>(nTransPercent) );
}
if( mp2ndOutDevProvider )
diff --git a/canvas/source/vcl/canvashelper_texturefill.cxx b/canvas/source/vcl/canvashelper_texturefill.cxx
index b0b0ef3770d5..9cb8dd8abd99 100644
--- a/canvas/source/vcl/canvashelper_texturefill.cxx
+++ b/canvas/source/vcl/canvashelper_texturefill.cxx
@@ -437,7 +437,7 @@ namespace vclcanvas
OutputDevice* p2ndOutDev,
const ::canvas::ParametricPolyPolygon::Values& rValues,
const std::vector< ::Color >& rColors,
- const ::basegfx::B2DPolyPolygon& rPoly,
+ const ::tools::PolyPolygon& rPoly,
const rendering::ViewState& viewState,
const rendering::RenderState& renderState,
const rendering::Texture& texture,
@@ -466,8 +466,8 @@ namespace vclcanvas
// determine maximal bound rect of texture-filled
// polygon
- const ::basegfx::B2DRectangle aPolygonDeviceRectOrig(
- rPoly.getB2DRange() );
+ const ::tools::Rectangle aPolygonDeviceRectOrig(
+ rPoly.GetBoundRect() );
if( tools::isRectangle( rPoly ) )
{
@@ -482,7 +482,7 @@ namespace vclcanvas
// twice for XOR
rOutDev.Push( PushFlags::CLIPREGION );
- rOutDev.IntersectClipRegion( ::tools::Rectangle(aPolygonDeviceRectOrig) );
+ rOutDev.IntersectClipRegion( aPolygonDeviceRectOrig );
doGradientFill( rOutDev,
rValues,
rColors,
@@ -570,7 +570,7 @@ namespace vclcanvas
tools::OutDevStateKeeper aStateKeeper( mpProtectedOutDevProvider );
const int nTransparency( setupOutDevState( viewState, renderState, IGNORE_COLOR ) );
- ::basegfx::B2DPolyPolygon aPolyPoly( tools::mapPolyPolygon(
+ ::tools::PolyPolygon aPolyPoly( tools::mapPolyPolygon(
::basegfx::unotools::b2DPolyPolygonFromXPolyPolygon2D(xPolyPolygon),
viewState, renderState ) );
@@ -636,7 +636,7 @@ namespace vclcanvas
// determine maximal bound rect of texture-filled
// polygon
const ::tools::Rectangle aPolygonDeviceRect(
- aPolyPoly.getB2DRange() );
+ aPolyPoly.GetBoundRect() );
// first of all, determine whether we have a
@@ -945,10 +945,8 @@ namespace vclcanvas
// shift output to origin of VDev
const ::Point aOutPos( aPt - aPolygonDeviceRect.TopLeft() );
- basegfx::B2DHomMatrix aTranslateMatrix;
- aTranslateMatrix.translate( -aPolygonDeviceRect.Left(),
- -aPolygonDeviceRect.Top() );
- aPolyPoly.transform( aTranslateMatrix );
+ aPolyPoly.Translate( ::Point( -aPolygonDeviceRect.Left(),
+ -aPolygonDeviceRect.Top() ) );
const vcl::Region aPolyClipRegion( aPolyPoly );
diff --git a/canvas/source/vcl/impltools.cxx b/canvas/source/vcl/impltools.cxx
index b8341b401a05..754a34ce0806 100644
--- a/canvas/source/vcl/impltools.cxx
+++ b/canvas/source/vcl/impltools.cxx
@@ -134,20 +134,20 @@ namespace vclcanvas::tools
return true;
}
- bool isRectangle( const ::basegfx::B2DPolyPolygon& rPolyPoly )
+ bool isRectangle( const ::tools::PolyPolygon& rPolyPoly )
{
// exclude some cheap cases first
- if( rPolyPoly.count() != 1 )
+ if( rPolyPoly.Count() != 1 )
return false;
- const ::basegfx::B2DPolygon& rPoly( rPolyPoly[0] );
+ const ::tools::Polygon& rPoly( rPolyPoly[0] );
- sal_uInt16 nCount( rPoly.count() );
+ sal_uInt16 nCount( rPoly.GetSize() );
if( nCount < 4 )
return false;
// delegate to basegfx
- return ::basegfx::utils::isRectangle( rPoly );
+ return ::basegfx::utils::isRectangle( rPoly.getB2DPolygon() );
}
@@ -168,7 +168,7 @@ namespace vclcanvas::tools
return vcl::unotools::pointFromB2DPoint( aPoint );
}
- ::basegfx::B2DPolyPolygon mapPolyPolygon( const ::basegfx::B2DPolyPolygon& rPoly,
+ ::tools::PolyPolygon mapPolyPolygon( const ::basegfx::B2DPolyPolygon& rPoly,
const rendering::ViewState& rViewState,
const rendering::RenderState& rRenderState )
{
@@ -181,7 +181,7 @@ namespace vclcanvas::tools
aTemp.transform( aMatrix );
- return aTemp;
+ return ::tools::PolyPolygon( aTemp );
}
::BitmapEx transformBitmap( const BitmapEx& rBitmap,
diff --git a/canvas/source/vcl/impltools.hxx b/canvas/source/vcl/impltools.hxx
index a97211e3e7cb..028ea1174f3c 100644
--- a/canvas/source/vcl/impltools.hxx
+++ b/canvas/source/vcl/impltools.hxx
@@ -92,7 +92,7 @@ namespace vclcanvas
@return true, if the polygon is a rectangle.
*/
- bool isRectangle( const ::basegfx::B2DPolyPolygon& rPolyPoly );
+ bool isRectangle( const ::tools::PolyPolygon& rPolyPoly );
// Little helper to encapsulate locking into policy class
@@ -164,7 +164,7 @@ namespace vclcanvas
const css::rendering::ViewState& rViewState,
const css::rendering::RenderState& rRenderState );
- ::basegfx::B2DPolyPolygon mapPolyPolygon( const ::basegfx::B2DPolyPolygon& rPoly,
+ ::tools::PolyPolygon mapPolyPolygon( const ::basegfx::B2DPolyPolygon& rPoly,
const css::rendering::ViewState& rViewState,
const css::rendering::RenderState& rRenderState );
diff --git a/canvas/source/vcl/spritehelper.cxx b/canvas/source/vcl/spritehelper.cxx
index d25d06a49168..e52bb211020c 100644
--- a/canvas/source/vcl/spritehelper.cxx
+++ b/canvas/source/vcl/spritehelper.cxx
@@ -266,7 +266,7 @@ namespace vclcanvas
rTargetSurface.SetLineColor( Color( 0,255,0 ) );
rTargetSurface.SetFillColor();
- rTargetSurface.DrawPolyPolygon(aClipPoly); // #i76339#
+ rTargetSurface.DrawPolyPolygon(::tools::PolyPolygon(aClipPoly)); // #i76339#
}
vcl::Region aClipRegion( aClipPoly );
diff --git a/filter/source/graphicfilter/idxf/dxf2mtf.cxx b/filter/source/graphicfilter/idxf/dxf2mtf.cxx
index 827b37915fd7..898dc6159ecb 100644
--- a/filter/source/graphicfilter/idxf/dxf2mtf.cxx
+++ b/filter/source/graphicfilter/idxf/dxf2mtf.cxx
@@ -579,7 +579,7 @@ void DXF2GDIMetaFile::DrawHatchEntity(const DXFHatchEntity & rE, const DXFTransf
SetAreaAttribute( rE );
sal_Int32 j = 0;
- basegfx::B2DPolyPolygon aPolyPoly;
+ tools::PolyPolygon aPolyPoly;
for ( j = 0; j < rE.nBoundaryPathCount; j++ )
{
std::vector< Point > aPtAry;
@@ -619,14 +619,13 @@ void DXF2GDIMetaFile::DrawHatchEntity(const DXFHatchEntity & rE, const DXFTransf
sal_uInt16 i, nSize = static_cast<sal_uInt16>(aPtAry.size());
if ( nSize )
{
- basegfx::B2DPolygon aPoly;
- aPoly.reserve( nSize );
+ tools::Polygon aPoly( nSize );
for ( i = 0; i < nSize; i++ )
- aPoly.append(aPtAry[ i ]);
- aPolyPoly.append( aPoly );
+ aPoly[ i ] = aPtAry[ i ];
+ aPolyPoly.Insert( aPoly );
}
}
- if ( aPolyPoly.count() )
+ if ( aPolyPoly.Count() )
pVirDev->DrawPolyPolygon( aPolyPoly );
}
diff --git a/filter/source/graphicfilter/ios2met/ios2met.cxx b/filter/source/graphicfilter/ios2met/ios2met.cxx
index 6e38ad8716cc..54f56f932f53 100644
--- a/filter/source/graphicfilter/ios2met/ios2met.cxx
+++ b/filter/source/graphicfilter/ios2met/ios2met.cxx
@@ -28,10 +28,6 @@
#include <vcl/virdev.hxx>
#include <vcl/lineinfo.hxx>
#include <vcl/gdimtf.hxx>
-#include <basegfx/polygon/b2dpolypolygon.hxx>
-#include <basegfx/polygon/b2dpolygon.hxx>
-#include <basegfx/polygon/b2dpolygontools.hxx>
-#include <basegfx/curve/b2dcubicbezier.hxx>
#include <math.h>
#include <memory>
@@ -227,7 +223,7 @@ struct OSPalette {
struct OSArea {
OSArea * pSucc;
sal_uInt8 nFlags;
- basegfx::B2DPolyPolygon aPPoly;
+ tools::PolyPolygon aPPoly;
bool bClosed;
Color aCol;
Color aBgCol;
@@ -240,7 +236,7 @@ struct OSPath
{
OSPath* pSucc;
sal_uInt32 nID;
- basegfx::B2DPolyPolygon aPPoly;
+ tools::PolyPolygon aPPoly;
bool bClosed;
bool bStroke;
};
@@ -369,8 +365,8 @@ private:
std::unique_ptr<SvStream> xOrdFile;
- void AddPointsToPath(const basegfx::B2DPolygon & rPoly);
- void AddPointsToArea(const basegfx::B2DPolygon & rPoly);
+ void AddPointsToPath(const tools::Polygon & rPoly);
+ void AddPointsToArea(const tools::Polygon & rPoly);
void CloseFigure();
void PushAttr(sal_uInt16 nPushOrder);
void PopAttr();
@@ -387,9 +383,9 @@ private:
bool IsLineInfo() const;
- void DrawPolyLine( const basegfx::B2DPolygon& rPolygon );
- void DrawPolygon( const basegfx::B2DPolygon& rPolygon );
- void DrawPolyPolygon( const basegfx::B2DPolyPolygon& rPolygon );
+ void DrawPolyLine( const tools::Polygon& rPolygon );
+ void DrawPolygon( const tools::Polygon& rPolygon );
+ void DrawPolyPolygon( const tools::PolyPolygon& rPolygon );
sal_uInt16 ReadBigEndianWord();
sal_uInt32 ReadBigEndian3BytesLong();
sal_uInt32 ReadLittleEndian3BytesLong();
@@ -505,7 +501,7 @@ bool OS2METReader::IsLineInfo() const
return ( ! ( aLineInfo.IsDefault() || ( aLineInfo.GetStyle() == LineStyle::NONE ) || ( pVirDev->GetLineColor() == COL_TRANSPARENT ) ) );
}
-void OS2METReader::DrawPolyLine( const basegfx::B2DPolygon& rPolygon )
+void OS2METReader::DrawPolyLine( const tools::Polygon& rPolygon )
{
if ( aLineInfo.GetStyle() == LineStyle::Dash || ( aLineInfo.GetWidth() > 1 ) )
pVirDev->DrawPolyLine( rPolygon, aLineInfo );
@@ -513,7 +509,7 @@ void OS2METReader::DrawPolyLine( const basegfx::B2DPolygon& rPolygon )
pVirDev->DrawPolyLine( rPolygon );
}
-void OS2METReader::DrawPolygon( const basegfx::B2DPolygon& rPolygon )
+void OS2METReader::DrawPolygon( const tools::Polygon& rPolygon )
{
if ( IsLineInfo() )
{
@@ -527,7 +523,7 @@ void OS2METReader::DrawPolygon( const basegfx::B2DPolygon& rPolygon )
pVirDev->DrawPolygon( rPolygon );
}
-void OS2METReader::DrawPolyPolygon( const basegfx::B2DPolyPolygon& rPolyPolygon )
+void OS2METReader::DrawPolyPolygon( const tools::PolyPolygon& rPolyPolygon )
{
if ( IsLineInfo() )
{
@@ -535,53 +531,53 @@ void OS2METReader::DrawPolyPolygon( const basegfx::B2DPolyPolygon& rPolyPolygon
pVirDev->SetLineColor( COL_TRANSPARENT );
pVirDev->DrawPolyPolygon( rPolyPolygon );
pVirDev->Pop();
- for ( sal_uInt32 i = 0; i < rPolyPolygon.count(); i++ )
- pVirDev->DrawPolyLine( rPolyPolygon.getB2DPolygon( i ), aLineInfo );
+ for ( sal_uInt16 i = 0; i < rPolyPolygon.Count(); i++ )
+ pVirDev->DrawPolyLine( rPolyPolygon.GetObject( i ), aLineInfo );
}
else
pVirDev->DrawPolyPolygon( rPolyPolygon );
}
-void OS2METReader::AddPointsToArea(const basegfx::B2DPolygon & rPoly)
+void OS2METReader::AddPointsToArea(const tools::Polygon & rPoly)
{
sal_uInt16 nOldSize, nNewSize,i;
- if (pAreaStack==nullptr || rPoly.count()==0) return;
- basegfx::B2DPolyPolygon * pPP=&(pAreaStack->aPPoly);
- if (pPP->count()==0 || pAreaStack->bClosed) pPP->append(rPoly);
+ if (pAreaStack==nullptr || rPoly.GetSize()==0) return;
+ tools::PolyPolygon * pPP=&(pAreaStack->aPPoly);
+ if (pPP->Count()==0 || pAreaStack->bClosed) pPP->Insert(rPoly);
else {
- basegfx::B2DPolygon aLastPoly(pPP->getB2DPolygon(pPP->count()-1));
- nOldSize=aLastPoly.count();
- if (nOldSize && aLastPoly.getB2DPoint(nOldSize-1)==rPoly.getB2DPoint(0)) nOldSize--;
- nNewSize=nOldSize+rPoly.count();
- aLastPoly.reserve(nNewSize);
+ tools::Polygon aLastPoly(pPP->GetObject(pPP->Count()-1));
+ nOldSize=aLastPoly.GetSize();
+ if (nOldSize && aLastPoly.GetPoint(nOldSize-1)==rPoly.GetPoint(0)) nOldSize--;
+ nNewSize=nOldSize+rPoly.GetSize();
+ aLastPoly.SetSize(nNewSize);
for (i=nOldSize; i<nNewSize; i++) {
- aLastPoly.append(rPoly.getB2DPoint(i-nOldSize),i);
+ aLastPoly.SetPoint(rPoly.GetPoint(i-nOldSize),i);
}
- pPP->setB2DPolygon(pPP->count()-1, aLastPoly);
+ pPP->Replace(aLastPoly,pPP->Count()-1);
}
pAreaStack->bClosed=false;
}
-void OS2METReader::AddPointsToPath(const basegfx::B2DPolygon & rPoly)
+void OS2METReader::AddPointsToPath(const tools::Polygon & rPoly)
{
sal_uInt16 nOldSize, nNewSize,i;
- if (pPathStack==nullptr || rPoly.count()==0) return;
- basegfx::B2DPolyPolygon * pPP=&(pPathStack->aPPoly);
- if (pPP->count()==0 /*|| pPathStack->bClosed==sal_True*/) pPP->append(rPoly);
+ if (pPathStack==nullptr || rPoly.GetSize()==0) return;
+ tools::PolyPolygon * pPP=&(pPathStack->aPPoly);
+ if (pPP->Count()==0 /*|| pPathStack->bClosed==sal_True*/) pPP->Insert(rPoly);
else {
- basegfx::B2DPolygon aLastPoly(pPP->getB2DPolygon(pPP->count()-1));
- nOldSize=aLastPoly.count();
- if (nOldSize && aLastPoly.getB2DPoint(nOldSize-1)!=rPoly.getB2DPoint(0)) pPP->append(rPoly);
+ tools::Polygon aLastPoly(pPP->GetObject(pPP->Count()-1));
+ nOldSize=aLastPoly.GetSize();
+ if (nOldSize && aLastPoly.GetPoint(nOldSize-1)!=rPoly.GetPoint(0)) pPP->Insert(rPoly);
else {
nOldSize--;
- nNewSize=nOldSize+rPoly.count();
- aLastPoly.reserve(nNewSize);
+ nNewSize=nOldSize+rPoly.GetSize();
+ aLastPoly.SetSize(nNewSize);
for (i=nOldSize; i<nNewSize; i++) {
- aLastPoly.append(rPoly.getB2DPoint(i-nOldSize),i);
+ aLastPoly.SetPoint(rPoly.GetPoint(i-nOldSize),i);
}
- pPP->setB2DPolygon(pPP->count()-1, aLastPoly);
+ pPP->Replace(aLastPoly,pPP->Count()-1);
}
}
pPathStack->bClosed=false;
@@ -873,15 +869,12 @@ void OS2METReader::ReadLine(bool bGivenPos, sal_uInt16 nOrderLen)
if (bCoord32) nPolySize=nOrderLen/8; else nPolySize=nOrderLen/4;
if (!bGivenPos) nPolySize++;
if (nPolySize==0) return;
- basegfx::B2DPolygon aPolygon;
- aPolygon.reserve(nPolySize);
+ tools::Polygon aPolygon(nPolySize);
for (i=0; i<nPolySize; i++) {
- if (i==0 && !bGivenPos)
- aPolygon.append(aAttr.aCurPos);
- else
- aPolygon.append(ReadPoint());
+ if (i==0 && !bGivenPos) aPolygon.SetPoint(aAttr.aCurPos,i);
+ else aPolygon.SetPoint(ReadPoint(),i);
}
- aAttr.aCurPos=Point(aPolygon.getB2DPoint(nPolySize-1));
+ aAttr.aCurPos=aPolygon.GetPoint(nPolySize-1);
if (pAreaStack!=nullptr) AddPointsToArea(aPolygon);
else if (pPathStack!=nullptr) AddPointsToPath(aPolygon);
else
@@ -906,16 +899,15 @@ void OS2METReader::ReadRelLine(bool bGivenPos, sal_uInt16 nOrderLen)
throw css::uno::Exception("attempt to read past end of input", nullptr);
nPolySize=nOrderLen/2;
if (nPolySize==0) return;
- basegfx::B2DPolygon aPolygon;
- aPolygon.reserve(nPolySize);
+ tools::Polygon aPolygon(nPolySize);
for (i=0; i<nPolySize; i++) {
sal_Int8 nsignedbyte;
pOS2MET->ReadSChar( nsignedbyte ); aP0.AdjustX(static_cast<sal_Int32>(nsignedbyte));
pOS2MET->ReadSChar( nsignedbyte ); aP0.AdjustY(-static_cast<sal_Int32>(nsignedbyte));
aCalcBndRect.Union(tools::Rectangle(aP0,Size(1,1)));
- aPolygon.append(aP0);
+ aPolygon.SetPoint(aP0,i);
}
- aAttr.aCurPos=aPolygon.getB2DPoint(nPolySize-1);
+ aAttr.aCurPos=aPolygon.GetPoint(nPolySize-1);
if (pAreaStack!=nullptr) AddPointsToArea(aPolygon);
else if (pPathStack!=nullptr) AddPointsToPath(aPolygon);
else
@@ -946,9 +938,9 @@ void OS2METReader::ReadBox(bool bGivenPos)
tools::Rectangle aBoxRect( P0, aAttr.aCurPos );
if ( pAreaStack )
- AddPointsToArea( basegfx::utils::createPolygonFromRect( aBoxRect ) );
+ AddPointsToArea( tools::Polygon( aBoxRect ) );
else if ( pPathStack )
- AddPointsToPath( basegfx::utils::createPolygonFromRect( aBoxRect ) );
+ AddPointsToPath( tools::Polygon( aBoxRect ) );
else
{
if ( nFlags & 0x20 )
@@ -969,7 +961,7 @@ void OS2METReader::ReadBox(bool bGivenPos)
if ( IsLineInfo() )
{
- basegfx::B2DPolygon aPolygon = basegfx::utils::createPolygonFromRect( aBoxRect, nHRound, nVRound );
+ tools::Polygon aPolygon( aBoxRect, nHRound, nVRound );
if ( nFlags & 0x40 )
{
pVirDev->Push( PushFlags::LINECOLOR );
@@ -1219,8 +1211,8 @@ void OS2METReader::ReadPartialArc(bool bGivenPos, sal_uInt16 nOrderSize)
void OS2METReader::ReadPolygons()
{
- basegfx::B2DPolyPolygon aPolyPoly;
- basegfx::B2DPolygon aPoly;
+ tools::PolyPolygon aPolyPoly;
+ tools::Polygon aPoly;
Point aPoint;
sal_uInt8 nFlags(0);
@@ -1247,15 +1239,15 @@ void OS2METReader::ReadPolygons()
return;
}
if (i==0) ++nNumPoints;
- aPoly.reserve(static_cast<short>(nNumPoints));
+ aPoly.SetSize(static_cast<short>(nNumPoints));
for (sal_uInt32 j=0; j<nNumPoints; ++j)
{
if (i==0 && j==0) aPoint=aAttr.aCurPos;
else aPoint=ReadPoint();
- aPoly.append(aPoint);
+ aPoly.SetPoint(aPoint,static_cast<short>(j));
if (i==nNumPolys-1 && j==nNumPoints-1) aAttr.aCurPos=aPoint;
}
- aPolyPoly.append(aPoly);
+ aPolyPoly.Insert(aPoly);
}
ChangeBrush(aAttr.aPatCol, aAttr.bFill);
@@ -1277,34 +1269,39 @@ void OS2METReader::ReadBezier(bool bGivenPos, sal_uInt16 nOrderLen)
if( !nNumPoints )
return;
- basegfx::B2DPolygon aPolygon;
- aPolygon.reserve( nNumPoints );
+ tools::Polygon aPolygon( nNumPoints );
for( i=0; i < nNumPoints; i++ )
{
if( i==0 && !bGivenPos)
- aPolygon.append( aAttr.aCurPos );
+ aPolygon.SetPoint( aAttr.aCurPos, i );
else
- aPolygon.append( ReadPoint() );
+ aPolygon.SetPoint( ReadPoint(), i );
}
if( !( nNumPoints % 4 ) )
{
// create bezier polygon
const sal_uInt16 nSegPoints = 25;
- const sal_uInt16 nSegments = aPolygon.count() >> 2;
- basegfx::B2DPolygon aBezPoly;
- aBezPoly.reserve( nSegments * nSegPoints );
+ const sal_uInt16 nSegments = aPolygon.GetSize() >> 2;
+ tools::Polygon aBezPoly( nSegments * nSegPoints );
sal_uInt16 nSeg, nBezPos, nStartPos;
for( nSeg = 0, nBezPos = 0, nStartPos = 0; nSeg < nSegments; nSeg++, nStartPos += 4 )
{
- const basegfx::B2DCubicBezier aSegPoly( aPolygon[ nStartPos ], aPolygon[ nStartPos + 1 ],
- aPolygon[ nStartPos + 3 ], aPolygon[ nStartPos + 2 ] );
- aSegPoly.adaptiveSubdivideByCount(aBezPoly, 25);
+ const tools::Polygon aSegPoly( aPolygon[ nStartPos ], aPolygon[ nStartPos + 1 ],
+ aPolygon[ nStartPos + 3 ], aPolygon[ nStartPos + 2 ],
+ nSegPoints );
+
+ for( sal_uInt16 nSegPos = 0; nSegPos < nSegPoints; )
+ aBezPoly[ nBezPos++ ] = aSegPoly[ nSegPos++ ];
}
nNumPoints = nBezPos;
+
+ if( nNumPoints != aBezPoly.GetSize() )
+ aBezPoly.SetSize( nNumPoints );
+
aPolygon = aBezPoly;
}
@@ -1329,13 +1326,12 @@ void OS2METReader::ReadFillet(bool bGivenPos, sal_uInt16 nOrderLen)
if (bCoord32) nNumPoints=nOrderLen/8; else nNumPoints=nOrderLen/4;
if (!bGivenPos) nNumPoints++;
if (nNumPoints==0) return;
- basegfx::B2DPolygon aPolygon;
- aPolygon.reserve(nNumPoints);
+ tools::Polygon aPolygon(nNumPoints);
for (i=0; i<nNumPoints; i++) {
- if (i==0 && !bGivenPos) aPolygon.append(aAttr.aCurPos);
- else aPolygon.append(ReadPoint());
+ if (i==0 && !bGivenPos) aPolygon.SetPoint(aAttr.aCurPos,i);
+ else aPolygon.SetPoint(ReadPoint(),i);
}
- aAttr.aCurPos=aPolygon[nNumPoints-1];
+ aAttr.aCurPos=aPolygon.GetPoint(nNumPoints-1);
if (pAreaStack!=nullptr) AddPointsToArea(aPolygon);
else if (pPathStack!=nullptr) AddPointsToPath(aPolygon);
else {
@@ -1355,11 +1351,10 @@ void OS2METReader::ReadFilletSharp(bool bGivenPos, sal_uInt16 nOrderLen)
}
if (bCoord32) nNumPoints=1+nOrderLen/10;
else nNumPoints=1+nOrderLen/6;
- basegfx::B2DPolygon aPolygon;
- aPolygon.reserve(nNumPoints);
- aPolygon.append(aAttr.aCurPos);
- for (i=1; i<nNumPoints; i++) aPolygon.append(ReadPoint());
- aAttr.aCurPos=aPolygon[nNumPoints-1];
+ tools::Polygon aPolygon(nNumPoints);
+ aPolygon.SetPoint(aAttr.aCurPos,0);
+ for (i=1; i<nNumPoints; i++) aPolygon.SetPoint(ReadPoint(),i);
+ aAttr.aCurPos=aPolygon.GetPoint(nNumPoints-1);
if (pAreaStack!=nullptr) AddPointsToArea(aPolygon);
else if (pPathStack!=nullptr) AddPointsToPath(aPolygon);
else
@@ -1398,59 +1393,59 @@ void OS2METReader::ReadMarker(bool bGivenPos, sal_uInt16 nOrderLen)
break;
case 3: // DIAMOND
case 7: { // SOLIDDIAMOND
- basegfx::B2DPolygon aPoly{
- Point(x,y+4),
- Point(x+4,y),
- Point(x,y-4),
- Point(x-4,y) };
+ tools::Polygon aPoly(4);
+ aPoly.SetPoint(Point(x,y+4),0);
+ aPoly.SetPoint(Point(x+4,y),1);
+ aPoly.SetPoint(Point(x,y-4),2);
+ aPoly.SetPoint(Point(x-4,y),3);
pVirDev->DrawPolygon(aPoly);
break;
}
case 4: // SQUARE
case 8: { // SOLIDSUARE
- basegfx::B2DPolygon aPoly {
- Point(x+4,y+4),
- Point(x+4,y-4),
- Point(x-4,y-4),
- Point(x-4,y+4) };
+ tools::Polygon aPoly(4);
+ aPoly.SetPoint(Point(x+4,y+4),0);
+ aPoly.SetPoint(Point(x+4,y-4),1);
+ aPoly.SetPoint(Point(x-4,y-4),2);
+ aPoly.SetPoint(Point(x-4,y+4),3);
pVirDev->DrawPolygon(aPoly);
break;
}
case 5: { // SIXPOINTSTAR
- basegfx::B2DPolygon aPoly {
- Point(x ,y-4),
- Point(x+2,y-2),
- Point(x+4,y-2),
- Point(x+2,y ),
- Point(x+4,y+2),
- Point(x+2,y+2),
- Point(x ,y+4),
- Point(x-2,y+2),
- Point(x-4,y+2),
- Point(x-2,y ),
- Point(x-4,y-2),
- Point(x-2,y-2) };
+ tools::Polygon aPoly(12);
+ aPoly.SetPoint(Point(x ,y-4),0);
+ aPoly.SetPoint(Point(x+2,y-2),1);
+ aPoly.SetPoint(Point(x+4,y-2),2);
+ aPoly.SetPoint(Point(x+2,y ),3);
+ aPoly.SetPoint(Point(x+4,y+2),4);
+ aPoly.SetPoint(Point(x+2,y+2),5);
+ aPoly.SetPoint(Point(x ,y+4),6);
+ aPoly.SetPoint(Point(x-2,y+2),7);
+ aPoly.SetPoint(Point(x-4,y+2),8);
+ aPoly.SetPoint(Point(x-2,y ),9);
+ aPoly.SetPoint(Point(x-4,y-2),10);
+ aPoly.SetPoint(Point(x-2,y-2),11);
pVirDev->DrawPolygon(aPoly);
break;
}
case 6: { // EIGHTPOINTSTAR
- basegfx::B2DPolygon aPoly {
- Point(x ,y-4),
- Point(x+1,y-2),
- Point(x+3,y-3),
- Point(x+2,y-1),
- Point(x+4,y ),
- Point(x+2,y+1),
- Point(x+3,y+3),
- Point(x+1,y+2),
- Point(x ,y+4),
- Point(x-1,y+2),
- Point(x-3,y+3),
- Point(x-2,y+1),
- Point(x-4,y ),
- Point(x-2,y-1),
- Point(x-3,y-3),
- Point(x-1,y-2) };
+ tools::Polygon aPoly(16);
+ aPoly.SetPoint(Point(x ,y-4),0);
+ aPoly.SetPoint(Point(x+1,y-2),1);
+ aPoly.SetPoint(Point(x+3,y-3),2);
+ aPoly.SetPoint(Point(x+2,y-1),3);
+ aPoly.SetPoint(Point(x+4,y ),4);
+ aPoly.SetPoint(Point(x+2,y+1),5);
+ aPoly.SetPoint(Point(x+3,y+3),6);
+ aPoly.SetPoint(Point(x+1,y+2),7);
+ aPoly.SetPoint(Point(x ,y+4),8);
+ aPoly.SetPoint(Point(x-1,y+2),9);
+ aPoly.SetPoint(Point(x-3,y+3),10);
+ aPoly.SetPoint(Point(x-2,y+1),11);
+ aPoly.SetPoint(Point(x-4,y ),12);
+ aPoly.SetPoint(Point(x-2,y-1),13);
+ aPoly.SetPoint(Point(x-3,y-3),14);
+ aPoly.SetPoint(Point(x-1,y-2),15);
pVirDev->DrawPolygon(aPoly);
break;
}
@@ -1540,9 +1535,9 @@ void OS2METReader::ReadOrder(sal_uInt16 nOrderID, sal_uInt16 nOrderLen)
pAreaStack = p->pSucc;
if ( pPathStack )
{
- for ( sal_uInt32 i=0; i<p->aPPoly.count(); i++ )
+ for ( sal_uInt16 i=0; i<p->aPPoly.Count(); i++ )
{
- AddPointsToPath( p->aPPoly[ i ] );
+ AddPointsToPath( p->aPPoly.GetObject( i ) );
CloseFigure();
}
}
@@ -1617,8 +1612,8 @@ void OS2METReader::ReadOrder(sal_uInt16 nOrderID, sal_uInt16 nOrderLen)
SetRasterOp( aAttr.ePatMix );
if ( IsLineInfo() )
{
- for ( sal_uInt32 i = 0; i < p->aPPoly.count(); i++ )
- pVirDev->DrawPolyLine( p->aPPoly[ i ], aLineInfo );
+ for ( sal_uInt16 i = 0; i < p->aPPoly.Count(); i++ )
+ pVirDev->DrawPolyLine( p->aPPoly.GetObject( i ), aLineInfo );
}
else
pVirDev->DrawPolyPolygon( p->aPPoly );
@@ -1662,13 +1657,13 @@ void OS2METReader::ReadOrder(sal_uInt16 nOrderID, sal_uInt16 nOrderLen)
SetPen( aAttr.aLinCol, aAttr.nStrLinWidth, aAttr.eLinStyle );
SetRasterOp(aAttr.eLinMix);
ChangeBrush(COL_TRANSPARENT, false);
- nC=p->aPPoly.count();
+ nC=p->aPPoly.Count();
for (i=0; i<nC; i++)
{
if (i+1<nC || p->bClosed)
- DrawPolygon( p->aPPoly[ i ] );
+ DrawPolygon( p->aPPoly.GetObject( i ) );
else
- DrawPolyLine( p->aPPoly[ i ] );
+ DrawPolyLine( p->aPPoly.GetObject( i ) );
}
}
break;
diff --git a/include/basegfx/polygon/b2dpolygon.hxx b/include/basegfx/polygon/b2dpolygon.hxx
index 346b4c587693..e74b458ec3af 100644
--- a/include/basegfx/polygon/b2dpolygon.hxx
+++ b/include/basegfx/polygon/b2dpolygon.hxx
@@ -78,7 +78,6 @@ namespace basegfx
/// Coordinate interface
basegfx::B2DPoint const & getB2DPoint(sal_uInt32 nIndex) const;
void setB2DPoint(sal_uInt32 nIndex, const basegfx::B2DPoint& rValue);
- basegfx::B2DPoint const & operator[](sal_uInt32 nIndex) const { return getB2DPoint(nIndex); }
/// Coordinate insert/append
void insert(sal_uInt32 nIndex, const basegfx::B2DPoint& rPoint, sal_uInt32 nCount = 1);
diff --git a/include/basegfx/polygon/b2dpolypolygon.hxx b/include/basegfx/polygon/b2dpolypolygon.hxx
index ee8372d0aeb5..010815c8784e 100644
--- a/include/basegfx/polygon/b2dpolypolygon.hxx
+++ b/include/basegfx/polygon/b2dpolypolygon.hxx
@@ -68,7 +68,6 @@ namespace basegfx
B2DPolygon const & getB2DPolygon(sal_uInt32 nIndex) const;
void setB2DPolygon(sal_uInt32 nIndex, const B2DPolygon& rPolygon);
- B2DPolygon const & operator[](sal_uInt32 nIndex) const { return getB2DPolygon(nIndex); }
// test for curve
bool areControlPointsUsed() const;
diff --git a/include/tools/gen.hxx b/include/tools/gen.hxx
index 0acef174718c..4f6927c62f0b 100644
--- a/include/tools/gen.hxx
+++ b/include/tools/gen.hxx
@@ -25,8 +25,6 @@
#include <algorithm>
#include <ostream>
#include <config_options.h>
-#include <basegfx/point/b2dpoint.hxx>
-#include <basegfx/range/b2drectangle.hxx>
class SvStream;
namespace rtl
@@ -75,7 +73,6 @@ class SAL_WARN_UNUSED UNLESS_MERGELIBS(SAL_DLLPUBLIC_EXPORT) Point final : prote
public:
Point() {}
Point( long nX, long nY ) : Pair( nX, nY ) {}
- Point(basegfx::B2DPoint const & rPoint) : Pair(rPoint.getX(), rPoint.getY()) {}
long X() const { return nA; }
long Y() const { return nB; }
@@ -106,8 +103,6 @@ public:
Pair const & toPair() const { return *this; }
Pair & toPair() { return *this; }
- operator basegfx::B2DPoint() const { return basegfx::B2DPoint(nA, nB); }
-
using Pair::toString;
};
@@ -390,7 +385,6 @@ public:
/// Constructs an empty Rectangle, with top/left at the specified params
Rectangle( long nLeft, long nTop );
Rectangle( const Point& rLT, const Size& rSize );
- Rectangle( basegfx::B2DRectangle const & );
static Rectangle Justify( const Point& rLT, const Point& rRB );
@@ -486,8 +480,6 @@ public:
void SaturatingSetX(long x);
void SaturatingSetY(long y);
- operator basegfx::B2DRectangle() const { return basegfx::B2DRectangle(nLeft, nTop, nRight, nBottom); }
-
private:
long nLeft;
long nTop;
@@ -534,14 +526,6 @@ inline tools::Rectangle::Rectangle( const Point& rLT, const Size& rSize )
nBottom = rSize.Height() ? nTop+(rSize.Height()-1) : RECT_EMPTY;
}
-inline tools::Rectangle::Rectangle( const basegfx::B2DRectangle& rRect )
-{
- nLeft = rRect.getMinX();
- nTop = rRect.getMinY();
- nRight = !rRect.isEmpty() ? rRect.getMaxX() : RECT_EMPTY;
- nBottom = !rRect.isEmpty() ? rRect.getMaxY() : RECT_EMPTY;
-}
-
inline bool tools::Rectangle::IsEmpty() const
{
return (nRight == RECT_EMPTY) || (nBottom == RECT_EMPTY);
diff --git a/include/vcl/outdev.hxx b/include/vcl/outdev.hxx
index fcf57bb74beb..14b03507dfe3 100644
--- a/include/vcl/outdev.hxx
+++ b/include/vcl/outdev.hxx
@@ -803,8 +803,6 @@ public:
*/
void DrawPolyLine( const tools::Polygon& rPoly,
const LineInfo& rLineInfo );
- void DrawPolyLine( const basegfx::B2DPolygon& rPoly,
- const LineInfo& rLineInfo );
// #i101491#
// Helper who tries to use SalGDI's DrawPolyLine direct and returns it's bool.
diff --git a/vcl/source/outdev/polyline.cxx b/vcl/source/outdev/polyline.cxx
index b69a4e324417..2a405e5eaf5a 100644
--- a/vcl/source/outdev/polyline.cxx
+++ b/vcl/source/outdev/polyline.cxx
@@ -135,36 +135,6 @@ void OutputDevice::DrawPolyLine( const tools::Polygon& rPoly, const LineInfo& rL
drawPolyLine(rPoly, rLineInfo);
}
-void OutputDevice::DrawPolyLine( const basegfx::B2DPolygon& rPoly, const LineInfo& rLineInfo )
-{
- assert(!is_double_buffered_window());
-
- if ( rLineInfo.IsDefault() )
- {
- DrawPolyLine( rPoly );
- return;
- }
-
- // #i101491#
- // Try direct Fallback to B2D-Version of DrawPolyLine
- if((mnAntialiasing & AntialiasingFlags::EnableB2dDraw) &&
- LineStyle::Solid == rLineInfo.GetStyle())
- {
- DrawPolyLine(
- rPoly,
- static_cast< double >(rLineInfo.GetWidth()),
- rLineInfo.GetLineJoin(),
- rLineInfo.GetLineCap(),
- basegfx::deg2rad(15.0) /* default fMiterMinimumAngle, value not available in LineInfo */);
- return;
- }
-
- if ( mpMetaFile )
- mpMetaFile->AddAction( new MetaPolyLineAction( tools::Polygon(rPoly), rLineInfo ) );
-
- drawPolyLine(tools::Polygon(rPoly), rLineInfo);
-}
-
void OutputDevice::DrawPolyLine( const basegfx::B2DPolygon& rB2DPolygon,
double fLineWidth,
basegfx::B2DLineJoin eLineJoin,