Fixup rendering of empty paths (including inverted fills)
Add GM and Sample that draw empty paths with various styles and fills
Review URL: http://codereview.appspot.com/5185047/
git-svn-id: http://skia.googlecode.com/svn/trunk@2414 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/src/core/SkCanvas.cpp b/src/core/SkCanvas.cpp
index 3ee13bc..70b53fe 100644
--- a/src/core/SkCanvas.cpp
+++ b/src/core/SkCanvas.cpp
@@ -1217,6 +1217,10 @@
}
void SkCanvas::drawPaint(const SkPaint& paint) {
+ this->internalDrawPaint(paint);
+}
+
+void SkCanvas::internalDrawPaint(const SkPaint& paint) {
CHECK_NOTHING_TO_DRAW(paint);
LOOPER_BEGIN(paint, SkDrawFilter::kPaint_Type)
@@ -1269,7 +1273,7 @@
void SkCanvas::drawPath(const SkPath& path, const SkPaint& paint) {
CHECK_NOTHING_TO_DRAW(paint);
- if (paint.canComputeFastBounds()) {
+ if (!path.isInverseFillType() && paint.canComputeFastBounds()) {
SkRect storage;
const SkRect& bounds = path.getBounds();
if (this->quickReject(paint.computeFastBounds(bounds, &storage),
@@ -1277,6 +1281,12 @@
return;
}
}
+ if (path.isEmpty()) {
+ if (path.isInverseFillType()) {
+ this->internalDrawPaint(paint);
+ }
+ return;
+ }
LOOPER_BEGIN(paint, SkDrawFilter::kPath_Type)