Add geometry-based rotated AA rect drawing path

https://codereview.chromium.org/14854005/



git-svn-id: http://skia.googlecode.com/svn/trunk@8961 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/src/gpu/GrContext.cpp b/src/gpu/GrContext.cpp
index d23dd54..320f8f6 100644
--- a/src/gpu/GrContext.cpp
+++ b/src/gpu/GrContext.cpp
@@ -723,7 +723,7 @@
         return false;
     }
 
-#ifdef SHADER_AA_FILL_RECT
+#if defined(SHADER_AA_FILL_RECT) || !defined(IGNORE_ROT_AA_RECT_OPT)
     if (strokeWidth >= 0) {
 #endif
         if (!drawState.getViewMatrix().preservesAxisAlignment()) {
@@ -733,7 +733,7 @@
         if (NULL != matrix && !matrix->preservesAxisAlignment()) {
             return false;
         }
-#ifdef SHADER_AA_FILL_RECT
+#if defined(SHADER_AA_FILL_RECT) || !defined(IGNORE_ROT_AA_RECT_OPT)
     } else {
         if (!drawState.getViewMatrix().preservesAxisAlignment() &&
             !drawState.getViewMatrix().preservesRightAngles()) {
@@ -751,11 +751,11 @@
         combinedMatrix->preConcat(*matrix);
 
 #if GR_DEBUG
-#ifdef SHADER_AA_FILL_RECT
+#if defined(SHADER_AA_FILL_RECT) || !defined(IGNORE_ROT_AA_RECT_OPT)
         if (strokeWidth >= 0) {
 #endif
             GrAssert(combinedMatrix->preservesAxisAlignment());
-#ifdef SHADER_AA_FILL_RECT
+#if defined(SHADER_AA_FILL_RECT) || !defined(IGNORE_ROT_AA_RECT_OPT)
         } else {
             GrAssert(combinedMatrix->preservesRightAngles());
         }
@@ -765,7 +765,11 @@
 
     combinedMatrix->mapRect(devRect, rect);
 
-    if (strokeWidth < 0) {
+    if (strokeWidth < 0 
+#if defined(SHADER_AA_FILL_RECT) || !defined(IGNORE_ROT_AA_RECT_OPT)
+        && drawState.getViewMatrix().preservesAxisAlignment()
+#endif
+        ) {
         return !isIRect(*devRect);
     } else {
         return true;