Index: src/effects/gradients/SkGradientShader.cpp |
diff --git a/src/effects/gradients/SkGradientShader.cpp b/src/effects/gradients/SkGradientShader.cpp |
index eccc21ac6e4cbdb68452e70d19cfe47c4f4f2d5e..14e67842b337b3addb15f45e51630fae65541c52 100644 |
--- a/src/effects/gradients/SkGradientShader.cpp |
+++ b/src/effects/gradients/SkGradientShader.cpp |
@@ -1332,10 +1332,8 @@ void GrGradientEffect::GLSLProcessor::emitColor(GrGLSLFPFragmentBuilder* fragBui |
///////////////////////////////////////////////////////////////////// |
-GrGradientEffect::GrGradientEffect(GrContext* ctx, |
- const SkGradientShaderBase& shader, |
- const SkMatrix& matrix, |
- SkShader::TileMode tileMode) { |
+GrGradientEffect::GrGradientEffect(const CreateArgs& args) { |
+ const SkGradientShaderBase& shader(*args.fShader); |
fIsOpaque = shader.isOpaque(); |
@@ -1354,7 +1352,7 @@ GrGradientEffect::GrGradientEffect(GrContext* ctx, |
} |
#if GR_GL_USE_ACCURATE_HARD_STOP_GRADIENTS |
- fTileMode = tileMode; |
+ fTileMode = args.fTileMode; |
#endif |
switch (fColorType) { |
@@ -1374,7 +1372,7 @@ GrGradientEffect::GrGradientEffect(GrContext* ctx, |
fPremulType = kAfterInterp_PremulType; |
} |
- fCoordTransform.reset(kCoordSet, matrix); |
+ fCoordTransform.reset(kCoordSet, *args.fMatrix); |
break; |
case kTexture_ColorType: |
@@ -1389,8 +1387,8 @@ GrGradientEffect::GrGradientEffect(GrContext* ctx, |
desc.fWidth = bitmap.width(); |
desc.fHeight = 32; |
desc.fRowHeight = bitmap.height(); |
- desc.fContext = ctx; |
- desc.fConfig = SkImageInfo2GrPixelConfig(bitmap.info(), *ctx->caps()); |
+ desc.fContext = args.fContext; |
+ desc.fConfig = SkImageInfo2GrPixelConfig(bitmap.info(), *args.fContext->caps()); |
fAtlas = GrTextureStripAtlas::GetAtlas(desc); |
SkASSERT(fAtlas); |
@@ -1398,21 +1396,22 @@ GrGradientEffect::GrGradientEffect(GrContext* ctx, |
// y-clamp. |
GrTextureParams params; |
params.setFilterMode(GrTextureParams::kBilerp_FilterMode); |
- params.setTileModeX(tileMode); |
+ params.setTileModeX(args.fTileMode); |
fRow = fAtlas->lockRow(bitmap); |
if (-1 != fRow) { |
fYCoord = fAtlas->getYOffset(fRow)+SK_ScalarHalf*fAtlas->getNormalizedTexelHeight(); |
- fCoordTransform.reset(kCoordSet, matrix, fAtlas->getTexture(), params.filterMode()); |
+ fCoordTransform.reset(kCoordSet, *args.fMatrix, fAtlas->getTexture(), |
+ params.filterMode()); |
fTextureAccess.reset(fAtlas->getTexture(), params); |
} else { |
SkAutoTUnref<GrTexture> texture( |
- GrRefCachedBitmapTexture(ctx, bitmap, params, |
+ GrRefCachedBitmapTexture(args.fContext, bitmap, params, |
SkSourceGammaTreatment::kRespect)); |
if (!texture) { |
return; |
} |
- fCoordTransform.reset(kCoordSet, matrix, texture, params.filterMode()); |
+ fCoordTransform.reset(kCoordSet, *args.fMatrix, texture, params.filterMode()); |
fTextureAccess.reset(texture, params); |
fYCoord = SK_ScalarHalf; |
} |