Add flag to gradients to interpolate colors in premul space. Experimental API to encapsulate the shared parameters for all gradients into a struct.

BUG=
R=bsalomon@google.com

Review URL: https://codereview.chromium.org/15893002

git-svn-id: http://skia.googlecode.com/svn/trunk@9273 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/src/effects/gradients/SkGradientShaderPriv.h b/src/effects/gradients/SkGradientShaderPriv.h
index d792c42..31cc9f2 100644
--- a/src/effects/gradients/SkGradientShaderPriv.h
+++ b/src/effects/gradients/SkGradientShaderPriv.h
@@ -93,6 +93,7 @@
         int                 fCount;
         SkShader::TileMode  fTileMode;
         SkUnitMapper*       fMapper;
+        uint32_t            fFlags;
     };
 
 public:
@@ -141,6 +142,7 @@
     int         fColorCount;
     uint8_t     fDstToIndexClass;
     uint8_t     fFlags;
+    uint8_t     fGradFlags;
 
     struct Rec {
         SkFixed     fPos;   // 0...1
@@ -172,7 +174,7 @@
 
     static void Build16bitCache(uint16_t[], SkColor c0, SkColor c1, int count);
     static void Build32bitCache(SkPMColor[], SkColor c0, SkColor c1, int count,
-                                U8CPU alpha);
+                                U8CPU alpha, uint32_t gradFlags);
     void setCacheAlpha(U8CPU alpha) const;
     void initCommon();