SkShader::asNewEffect Refactoring
The new signature is:
bool asNewEffect(GrContext* context, const SkPaint& paint, GrColor* grColor, GrEffectRef** grEffect, const SkMatrix* localMatrixOrNull) const;
It will fix the hack for skcolorshader by modifying the GrColor parameter in SkGr::SkPaint2GrPaintShader.
BUG=skia:2646
R=jvanverth@google.com, bsalomon@google.com
Author: dandov@google.com
Review URL: https://codereview.chromium.org/318923005
diff --git a/include/gpu/SkGr.h b/include/gpu/SkGr.h
index 7016b1e..835d353 100644
--- a/include/gpu/SkGr.h
+++ b/include/gpu/SkGr.h
@@ -67,6 +67,11 @@
return GrColorPackRGBA(r, g, b, a);
}
+static inline GrColor SkColor2GrColorJustAlpha(SkColor c) {
+ U8CPU a = SkColorGetA(c);
+ return GrColorPackRGBA(a, a, a, a);
+}
+
////////////////////////////////////////////////////////////////////////////////
bool GrIsBitmapInCache(const GrContext*, const SkBitmap&, const GrTextureParams*);
@@ -78,12 +83,12 @@
////////////////////////////////////////////////////////////////////////////////
// Converts a SkPaint to a GrPaint, ignoring the SkPaint's shader.
-// justAlpha indicates that the SkPaint's alpha should be used rather than the color.
+// Sets the color of GrPaint to the value of the parameter grColor
// Callers may subsequently modify the GrPaint. Setting constantColor indicates
// that the final paint will draw the same color at every pixel. This allows
// an optimization where the the color filter can be applied to the SkPaint's
// color once while converting to GrPaint and then ignored.
-void SkPaint2GrPaintNoShader(GrContext* context, const SkPaint& skPaint, bool justAlpha,
+void SkPaint2GrPaintNoShader(GrContext* context, const SkPaint& skPaint, GrColor grColor,
bool constantColor, GrPaint* grPaint);
// This function is similar to skPaint2GrPaintNoShader but also converts