diff options
Diffstat (limited to 'WebCore/platform/graphics/cg/GraphicsContextCG.cpp')
-rw-r--r-- | WebCore/platform/graphics/cg/GraphicsContextCG.cpp | 28 |
1 files changed, 22 insertions, 6 deletions
diff --git a/WebCore/platform/graphics/cg/GraphicsContextCG.cpp b/WebCore/platform/graphics/cg/GraphicsContextCG.cpp index 5a903dc..a65874c 100644 --- a/WebCore/platform/graphics/cg/GraphicsContextCG.cpp +++ b/WebCore/platform/graphics/cg/GraphicsContextCG.cpp @@ -440,6 +440,15 @@ void GraphicsContext::strokeArc(const IntRect& rect, int startAngle, int angleSp CGContextRestoreGState(context); } +static void addConvexPolygonToContext(CGContextRef context, size_t numPoints, const FloatPoint* points) +{ + CGContextBeginPath(context); + CGContextMoveToPoint(context, points[0].x(), points[0].y()); + for (size_t i = 1; i < numPoints; i++) + CGContextAddLineToPoint(context, points[i].x(), points[i].y()); + CGContextClosePath(context); +} + void GraphicsContext::drawConvexPolygon(size_t npoints, const FloatPoint* points, bool antialiased) { if (paintingDisabled()) @@ -453,18 +462,25 @@ void GraphicsContext::drawConvexPolygon(size_t npoints, const FloatPoint* points if (antialiased != shouldAntialias()) CGContextSetShouldAntialias(context, antialiased); - CGContextBeginPath(context); - CGContextMoveToPoint(context, points[0].x(), points[0].y()); - for (size_t i = 1; i < npoints; i++) - CGContextAddLineToPoint(context, points[i].x(), points[i].y()); - CGContextClosePath(context); - + addConvexPolygonToContext(context, npoints, points); drawPath(); if (antialiased != shouldAntialias()) CGContextSetShouldAntialias(context, shouldAntialias()); } +void GraphicsContext::clipConvexPolygon(size_t numPoints, const FloatPoint* points) +{ + if (paintingDisabled()) + return; + + if (numPoints <= 1) + return; + + addConvexPolygonToContext(platformContext(), numPoints, points); + clipPath(RULE_NONZERO); +} + void GraphicsContext::applyStrokePattern() { CGContextRef cgContext = platformContext(); |