112 if ( rLineInfo.IsDefault() )
138 const bool bLineWidthUsed(aInfo.GetWidth() > 1);
143 if(bDashUsed || bLineWidthUsed)
208 css::drawing::LineCap_BUTT,
231 const bool bLineWidthUsed(rInfo.GetWidth() > 1);
233 if(bDashUsed && aLinePolyPolygon.
count())
235 ::std::vector< double > fDotDashArray = rInfo.GetDotDashArray();
236 const double fAccumulated(::std::accumulate(fDotDashArray.begin(), fDotDashArray.end(), 0.0));
238 if(fAccumulated > 0.0)
242 for(
auto const& rPolygon : std::as_const(aLinePolyPolygon))
249 aResult.
append(aLineTarget);
252 aLinePolyPolygon = aResult;
256 if(bLineWidthUsed && aLinePolyPolygon.
count())
258 const double fHalfLineWidth((rInfo.GetWidth() * 0.5) + 0.5);
270 for(
auto const& rPolygon : std::as_const(aLinePolyPolygon))
276 rInfo.GetLineCap()));
279 aLinePolyPolygon.
clear();
285 if(aLinePolyPolygon.
count())
287 for(
auto const& rB2DPolygon : std::as_const(aLinePolyPolygon))
301 css::drawing::LineCap_BUTT,
318 if(aFillPolyPolygon.count())
341 for(
auto const& rB2DPolygon : std::as_const(aFillPolyPolygon))
void append(const basegfx::B2DPoint &rPoint, sal_uInt32 nCount)
SAL_DLLPRIVATE bool ImplIsRecordLayout() const
void DrawLine(tools::Long nX1, tools::Long nY1, tools::Long nX2, tools::Long nY2, const OutputDevice &rOutDev)
bool IsTransparent() const
constexpr double deg2rad(double v)
virtual bool supportsOperation(OutDevSupportType) const =0
constexpr::Color COL_TRANSPARENT(ColorTransparency, 0xFF, 0xFF, 0xFF, 0xFF)
void DrawPolyPolygon(sal_uInt32 nPoly, const sal_uInt32 *pPoints, const Point **pPtAry, const OutputDevice &rOutDev)
SAL_DLLPRIVATE bool is_double_buffered_window() const
B2DPolyPolygon createAreaGeometry(const B2DPolygon &rCandidate, double fHalfLineWidth, B2DLineJoin eJoin, css::drawing::LineCap eCap, double fMaxAllowedAngle=basegfx::deg2rad(12.5), double fMaxPartOfEdge=0.4, double fMiterMinimumAngle=basegfx::deg2rad(15.0), basegfx::triangulator::B2DTriangleVector *pTriangles=nullptr)
SAL_DLLPRIVATE void InitLineColor()
virtual void SetROPLineColor(SalROPColor nROPColor)=0
AntialiasingFlags mnAntialiasing
void DrawLine(const Point &rStartPt, const Point &rEndPt)
SalGraphics * mpGraphics
Graphics context to draw on.
SAL_DLLPRIVATE basegfx::B2DHomMatrix ImplGetDeviceTransformation() const
Get device transformation.
void applyLineDashing(const B2DPolygon &rCandidate, const std::vector< double > &rDotDashArray, B2DPolyPolygon *pLineTarget, B2DPolyPolygon *pGapTarget, double fDotDashLength)
SAL_DLLPRIVATE void InitFillColor()
void DrawPolygon(sal_uInt32 nPoints, const Point *pPtAry, const OutputDevice &rOutDev)
virtual void SetLineColor()=0
virtual bool AcquireGraphics() const =0
Acquire a graphics device that the output device uses to draw on.
void DrawPolyLine(sal_uInt32 nPoints, Point const *pPtAry, const OutputDevice &rOutDev)
const AllSettings & GetSettings() const
DrawModeFlags GetDrawMode() const
SAL_DLLPRIVATE void drawLine(basegfx::B2DPolyPolygon aLinePolyPolygon, const LineInfo &rInfo)
Helper for line geometry paint with support for graphic expansion (pattern and fat_to_area) ...
void transform(const basegfx::B2DHomMatrix &rMatrix)
void append(const B2DPolygon &rPolygon, sal_uInt32 nCount=1)
VclPtr< VirtualDevice > mpAlphaVDev
Color GetLineColor(Color const &rColor, DrawModeFlags nDrawMode, StyleSettings const &rStyleSettings)
B2DPolygon adaptiveSubdivideByDistance(const B2DPolygon &rCandidate, double fDistanceBound)
virtual void InitClipRegion()
const ::std::vector< Color > ImpSvNumberformatScan::StandardColor COL_BLACK
RasterOp GetRasterOp() const
SAL_DLLPRIVATE tools::Rectangle ImplLogicToDevicePixel(const tools::Rectangle &rLogicRect) const
Convert a logical rectangle to a rectangle in physical device pixel units.
#define DBG_TESTSOLARMUTEX()
bool areControlPointsUsed() const
bool IsDeviceOutputNecessary() const