38 sal_uInt16 nPoints = rPoly.
GetSize();
76 css::drawing::LineCap_BUTT,
111 if ( rLineInfo.IsDefault() )
119 auto eLineStyle = rLineInfo.GetStyle();
130 rLineInfo.GetWidth(),
131 rLineInfo.GetLineJoin(),
132 rLineInfo.GetLineCap(),
136 SAL_WARN(
"vcl.gdi",
"Unknown LineStyle: " <<
static_cast<int>(eLineStyle));
150 css::drawing::LineCap eLineCap,
151 double fMiterMinimumAngle)
158 if( fLineWidth != 0.0 )
159 aLineInfo.SetWidth( fLineWidth );
161 aLineInfo.SetLineJoin(eLineJoin);
162 aLineInfo.SetLineCap(eLineCap);
204 if(fLineWidth >= 2.5 &&
205 rB2DPolygon.
count() &&
206 rB2DPolygon.
count() <= 1000)
208 const double fHalfLineWidth((fLineWidth * 0.5) + 0.5);
214 fMiterMinimumAngle));
224 for(
auto const& rPolygon : aAreaPolyPolygon)
237 for(
auto const& rPolygon : aAreaPolyPolygon)
249 if( fLineWidth != 0.0 )
250 aLineInfo.SetWidth( fLineWidth );
258 sal_uInt16 nPoints(rPoly.
GetSize());
279 const bool bLineWidthUsed(aInfo.GetWidth() > 1);
281 if (bDashUsed || bLineWidthUsed)
310 double fTransparency,
311 const std::vector< double >* pStroke,
313 css::drawing::LineCap eLineCap,
314 double fMiterMinimumAngle)
317 pStroke, eLineJoin, eLineCap, fMiterMinimumAngle))
325 if( fLineWidth != 0.0 )
326 aLineInfo.SetWidth( fLineWidth );
328 aLineInfo.SetLineJoin(eLineJoin);
329 aLineInfo.SetLineCap(eLineCap);
343 double fTransparency,
344 const std::vector< double >* pStroke,
346 css::drawing::LineCap eLineCap,
347 double fMiterMinimumAngle)
352 if(!rB2DPolygon.
count())
379 const double fAdjustedTransparency =
mpAlphaVDev ? 0 : fTransparency;
384 fAdjustedTransparency,
397 fTransparency, pStroke, eLineJoin, eLineCap,
virtual void InitClipRegion()
SAL_DLLPRIVATE bool is_double_buffered_window() const
void DrawPolyLine(const tools::Polygon &rPoly)
Render the given polygon as a line stroke.
SAL_DLLPRIVATE void InitLineColor()
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.
virtual bool AcquireGraphics() const =0
Acquire a graphics device that the output device uses to draw on.
SAL_DLLPRIVATE bool ImplIsRecordLayout() const
SAL_DLLPRIVATE void InitFillColor()
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)
SalGraphics * mpGraphics
Graphics context to draw on.
SAL_DLLPRIVATE void drawPolyLine(const tools::Polygon &rPoly, const LineInfo &rLineInfo)
SAL_DLLPRIVATE void ImplDrawPolyPolygonWithB2DPolyPolygon(const basegfx::B2DPolyPolygon &rB2DPolyPoly)
bool DrawPolyLineDirect(const basegfx::B2DHomMatrix &rObjectTransform, const basegfx::B2DPolygon &rB2DPolygon, double fLineWidth=0.0, double fTransparency=0.0, const std::vector< double > *=nullptr, basegfx::B2DLineJoin eLineJoin=basegfx::B2DLineJoin::NONE, css::drawing::LineCap eLineCap=css::drawing::LineCap_BUTT, double fMiterMinimumAngle=basegfx::deg2rad(15.0))
AntialiasingFlags mnAntialiasing
bool IsDeviceOutputNecessary() const
bool DrawPolyLineDirectInternal(const basegfx::B2DHomMatrix &rObjectTransform, const basegfx::B2DPolygon &rB2DPolygon, double fLineWidth=0.0, double fTransparency=0.0, const std::vector< double > *=nullptr, basegfx::B2DLineJoin eLineJoin=basegfx::B2DLineJoin::NONE, css::drawing::LineCap eLineCap=css::drawing::LineCap_BUTT, double fMiterMinimumAngle=basegfx::deg2rad(15.0))
VclPtr< VirtualDevice > mpAlphaVDev
SAL_DLLPRIVATE basegfx::B2DHomMatrix ImplGetDeviceTransformation() const
Get device transformation.
virtual bool supportsOperation(OutDevSupportType) const =0
void DrawPolyLine(sal_uInt32 nPoints, Point const *pPtAry, const OutputDevice &rOutDev)
bool DrawPolyLineBezier(sal_uInt32 nPoints, const Point *pPtAry, const PolyFlags *pFlgAry, const OutputDevice &rOutDev)
#define SAL_WARN(area, stream)
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))
constexpr double deg2rad(double v)