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)