Remove texture/mask setters on GrPaint

Review URL: http://codereview.appspot.com/6446052/



git-svn-id: http://skia.googlecode.com/svn/trunk@4790 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/src/gpu/SkGpuDevice.cpp b/src/gpu/SkGpuDevice.cpp
index cb33d76..1256285 100644
--- a/src/gpu/SkGpuDevice.cpp
+++ b/src/gpu/SkGpuDevice.cpp
@@ -482,13 +482,8 @@
 
 bool SkGpuDevice::bindDeviceAsTexture(GrPaint* paint) {
     if (NULL != fTexture) {
-        // FIXME: cannot use GrSingleTextureEffect here: fails
-        // assert in line 1617: null != devTex; generalizing GrPaint::getTexture()
-        // to grab textures off of GrCustomStages breaks gms in various ways -
-        // particularly since table color filter requires multiple textures
-        paint->setTexture(kBitmapTextureIdx, fTexture);
-        //paint->textureSampler(kBitmapTextureIdx)->setCustomStage(
-            //SkNEW_ARGS(GrSingleTextureEffect, (fTexture)))->unref();
+        paint->textureSampler(kBitmapTextureIdx)->setCustomStage(
+            SkNEW_ARGS(GrSingleTextureEffect, (fTexture)))->unref();
         return true;
     }
     return false;
@@ -549,7 +544,7 @@
         GrAssert(!constantColor);
     } else {
         grPaint->fColor = SkColor2GrColor(skPaint.getColor());
-        GrAssert(NULL == grPaint->getTexture(kShaderTextureIdx));
+        GrAssert(!grPaint->isTextureStageEnabled(kShaderTextureIdx));
     }
     SkColorFilter* colorFilter = skPaint.getColorFilter();
     SkColor color;
@@ -971,9 +966,9 @@
     static const int MASK_IDX = GrPaint::kMaxMasks - 1;
     // we assume the last mask index is available for use
     GrAssert(!grp->isMaskStageEnabled(MASK_IDX));
-    grp->setMask(MASK_IDX, blurTexture);
     grp->maskSampler(MASK_IDX)->reset();
-
+    grp->maskSampler(MASK_IDX)->setCustomStage(
+        SkNEW_ARGS(GrSingleTextureEffect, (blurTexture)))->unref();
     grp->maskSampler(MASK_IDX)->matrix()->setTranslate(-finalRect.fLeft,
                                                        -finalRect.fTop);
     grp->maskSampler(MASK_IDX)->matrix()->postIDiv(blurTexture->width(),
@@ -1034,9 +1029,9 @@
     static const int MASK_IDX = GrPaint::kMaxMasks - 1;
     // we assume the last mask index is available for use
     GrAssert(!grp->isMaskStageEnabled(MASK_IDX));
-    grp->setMask(MASK_IDX, texture);
     grp->maskSampler(MASK_IDX)->reset();
-
+    grp->maskSampler(MASK_IDX)->setCustomStage(
+        SkNEW_ARGS(GrSingleTextureEffect, (texture)))->unref();
     GrRect d;
     d.setLTRB(GrIntToScalar(dstM.fBounds.fLeft),
               GrIntToScalar(dstM.fBounds.fTop),
@@ -1628,25 +1623,23 @@
 
     GrPaint grPaint;
     SkAutoCachedTexture colorLutTexture;
+    grPaint.textureSampler(kBitmapTextureIdx)->reset();
     if (!dev->bindDeviceAsTexture(&grPaint) ||
         !skPaint2GrPaintNoShader(this, paint, true, false, &colorLutTexture, &grPaint)) {
         return;
     }
 
-    GrTexture* devTex = grPaint.getTexture(0);
+    GrTexture* devTex = grPaint.getTextureSampler(kBitmapTextureIdx).getCustomStage()->texture(0);
     SkASSERT(NULL != devTex);
 
     SkImageFilter* filter = paint.getImageFilter();
-    grPaint.textureSampler(kBitmapTextureIdx)->reset();
     if (NULL != filter) {
-        GrRect rect = GrRect::MakeWH(SkIntToScalar(devTex->width()), 
+        GrRect rect = GrRect::MakeWH(SkIntToScalar(devTex->width()),
                                      SkIntToScalar(devTex->height()));
-        GrTexture* filteredTexture = filter_texture(fContext, devTex, filter,
-                                                    rect);
+        GrTexture* filteredTexture = filter_texture(fContext, devTex, filter, rect);
         if (filteredTexture) {
             grPaint.textureSampler(kBitmapTextureIdx)->setCustomStage(SkNEW_ARGS
                 (GrSingleTextureEffect, (filteredTexture)))->unref();
-            grPaint.setTexture(kBitmapTextureIdx, NULL);
             devTex = filteredTexture;
             filteredTexture->unref();
         }