void Canvas::DrawPolyline(const RasterPoint *p, unsigned cPoints) { SDLRasterCanvas canvas(buffer); ::DrawPolyline(canvas, ActivePixelTraits(), pen, p, cPoints, false); }
void Canvas::DrawPolygon(const RasterPoint *lppt, unsigned cPoints) { if (brush.IsHollow() && !pen.IsDefined()) return; SDLRasterCanvas canvas(buffer); static_assert(sizeof(RasterPoint) == sizeof(SDLRasterCanvas::Point), "Incompatible point types"); const SDLRasterCanvas::Point *points = reinterpret_cast<const SDLRasterCanvas::Point *>(lppt); if (!brush.IsHollow()) { const auto color = canvas.Import(brush.GetColor()); if (brush.GetColor().IsOpaque()) canvas.FillPolygon(points, cPoints, color); else canvas.FillPolygon(points, cPoints, color, AlphaPixelOperations<ActivePixelTraits>(brush.GetColor().Alpha())); } if (IsPenOverBrush()) ::DrawPolyline(canvas, ActivePixelTraits(), pen, lppt, cPoints, true); }
void Canvas::DrawPolygon(const BulkPixelPoint *lppt, unsigned cPoints) { if (brush.IsHollow() && !pen.IsDefined()) return; SDLRasterCanvas canvas(buffer); if (!brush.IsHollow()) { const auto color = canvas.Import(brush.GetColor()); if (brush.GetColor().IsOpaque()) canvas.FillPolygon(lppt, cPoints, color); else canvas.FillPolygon(lppt, cPoints, color, AlphaPixelOperations<ActivePixelTraits>(brush.GetColor().Alpha())); } if (IsPenOverBrush()) ::DrawPolyline(canvas, ActivePixelTraits(), pen, lppt, cPoints, true); }