export SkDraw::ComputeRectType() and share that with SkGpuDevice



git-svn-id: http://skia.googlecode.com/svn/trunk@1055 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/src/gpu/SkGpuDevice.cpp b/src/gpu/SkGpuDevice.cpp
index d102f3f..ce48be6 100644
--- a/src/gpu/SkGpuDevice.cpp
+++ b/src/gpu/SkGpuDevice.cpp
@@ -647,33 +647,27 @@
                           const SkPaint& paint) {
     CHECK_SHOULD_DRAW(draw);
 
-    bool doStroke = paint.getStyle() == SkPaint::kStroke_Style;
-    SkScalar width = paint.getStrokeWidth();
+    const SkMatrix& matrix = *draw.fMatrix;
+    SkPoint strokeSize;
+    SkDraw::RectType type = SkDraw::ComputeRectType(paint, matrix, &strokeSize);    
 
-    /*
-        We have special code for hairline strokes, miter-strokes, and fills.
-        Anything else we just call our path code.
-     */
-    bool usePath = doStroke && width > 0 &&
-                    paint.getStrokeJoin() != SkPaint::kMiter_Join;
-    // another reason we might need to call drawPath...
-    if (paint.getMaskFilter()) {
-        usePath = true;
-    }
-
-    if (usePath) {
+    if (SkDraw::kPath_RectType == type) {
         SkPath path;
         path.addRect(rect);
         this->drawPath(draw, path, paint, NULL, true);
-        return;
-    }
+    } else {
+        GrPaint grPaint;
+        SkAutoCachedTexture act;
+        if (!this->skPaint2GrPaintShader(paint, &act, matrix, &grPaint)) {
+            return;
+        }
 
-    GrPaint grPaint;
-    SkAutoCachedTexture act;
-    if (!this->skPaint2GrPaintShader(paint, &act, *draw.fMatrix,  &grPaint)) {
-        return;
+        SkScalar width = paint.getStrokeWidth();
+        if (SkDraw::kFill_RectType == type) {
+            width = -1;
+        }
+        fContext->drawRect(grPaint, Sk2Gr(rect), width);
     }
-    fContext->drawRect(grPaint, Sk2Gr(rect), doStroke ? width : -1);
 }
 
 #include "SkMaskFilter.h"