fix TriColorShader to respect the paint's alpha

results can be seen in new gm: vertices_80

BUG=skia:
R=scroggo@google.com

Author: reed@google.com

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

git-svn-id: http://skia.googlecode.com/svn/trunk/src@14581 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/core/SkDraw.cpp b/core/SkDraw.cpp
index a74e3c0..9347efe 100644
--- a/core/SkDraw.cpp
+++ b/core/SkDraw.cpp
@@ -2432,6 +2432,8 @@
     return sizeof(TriColorShaderContext);
 }
 void SkTriColorShader::TriColorShaderContext::shadeSpan(int x, int y, SkPMColor dstC[], int count) {
+    const int alphaScale = Sk255To256(this->getPaintAlpha());
+
     SkPoint src;
 
     for (int i = 0; i < count; i++) {
@@ -2450,9 +2452,15 @@
             scale0 = 0;
         }
 
+        if (256 != alphaScale) {
+            scale0 = SkAlphaMul(scale0, alphaScale);
+            scale1 = SkAlphaMul(scale1, alphaScale);
+            scale2 = SkAlphaMul(scale2, alphaScale);
+        }
+
         dstC[i] = SkAlphaMulQ(fColors[0], scale0) +
-        SkAlphaMulQ(fColors[1], scale1) +
-        SkAlphaMulQ(fColors[2], scale2);
+                  SkAlphaMulQ(fColors[1], scale1) +
+                  SkAlphaMulQ(fColors[2], scale2);
     }
 }