Reduce internal explicit SaveFlags usage.

Most of these are either redundant/defaults or (hopefully)
unnecessarily specific.

R=reed@google.com, robertphillips@google.com

Author: fmalita@chromium.org

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

git-svn-id: http://skia.googlecode.com/svn/trunk@14253 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/bench/DeferredCanvasBench.cpp b/bench/DeferredCanvasBench.cpp
index b063a9c..6ffd2d2 100644
--- a/bench/DeferredCanvasBench.cpp
+++ b/bench/DeferredCanvasBench.cpp
@@ -83,7 +83,7 @@
         rect.setXYWH(0, 0, 10, 10);
         SkPaint paint;
         for (int i = 0; i < loops; i++) {
-            canvas->save(SkCanvas::kMatrixClip_SaveFlag);
+            canvas->save();
             canvas->translate(SkIntToScalar(i * 27 % CANVAS_WIDTH), SkIntToScalar(i * 13 % CANVAS_HEIGHT));
             canvas->drawRect(rect, paint);
             canvas->restore();
diff --git a/gm/xfermodes.cpp b/gm/xfermodes.cpp
index b5ce8b8..24c48ee 100644
--- a/gm/xfermodes.cpp
+++ b/gm/xfermodes.cpp
@@ -112,7 +112,7 @@
                 break;
             }
             case kRectangleWithMask_SrcType: {
-                canvas->save(SkCanvas::kClip_SaveFlag);
+                canvas->save();
                 restoreNeeded = true;
                 SkScalar w = SkIntToScalar(W);
                 SkScalar h = SkIntToScalar(H);
@@ -247,7 +247,7 @@
                 p.setShader(s);
                 canvas->drawRect(r, p);
 
-                canvas->saveLayer(&r, NULL, SkCanvas::kARGB_ClipLayer_SaveFlag);
+                canvas->saveLayer(&r, NULL);
                 draw_mode(canvas, mode, static_cast<SrcType>(sourceType),
                           r.fLeft, r.fTop);
                 canvas->restore();
diff --git a/gm/xfermodes2.cpp b/gm/xfermodes2.cpp
index 6202af9..1af59d2 100644
--- a/gm/xfermodes2.cpp
+++ b/gm/xfermodes2.cpp
@@ -54,7 +54,7 @@
             SkRect r = SkRect::MakeWH(w, h);
             canvas->drawRect(r, p);
 
-            canvas->saveLayer(&r, NULL, SkCanvas::kARGB_ClipLayer_SaveFlag);
+            canvas->saveLayer(&r, NULL);
 
             p.setShader(fDst);
             canvas->drawRect(r, p);
diff --git a/gm/xfermodes3.cpp b/gm/xfermodes3.cpp
index 76c4b88..1863a3e 100644
--- a/gm/xfermodes3.cpp
+++ b/gm/xfermodes3.cpp
@@ -152,7 +152,7 @@
 
         SkCanvas* modeCanvas;
         if (NULL == layerCanvas) {
-            canvas->saveLayer(&r, NULL, SkCanvas::kARGB_ClipLayer_SaveFlag);
+            canvas->saveLayer(&r, NULL);
             modeCanvas = canvas;
         } else {
             modeCanvas = layerCanvas;
diff --git a/samplecode/SampleLayerMask.cpp b/samplecode/SampleLayerMask.cpp
index b3bbac6..86a092c 100644
--- a/samplecode/SampleLayerMask.cpp
+++ b/samplecode/SampleLayerMask.cpp
@@ -57,7 +57,7 @@
     virtual void onDrawContent(SkCanvas* canvas) {
         SkRect  r;
         r.set(SkIntToScalar(20), SkIntToScalar(20), SkIntToScalar(120), SkIntToScalar(120));
-        canvas->saveLayer(&r, NULL, SkCanvas::kARGB_ClipLayer_SaveFlag);
+        canvas->saveLayer(&r, NULL);
         canvas->drawColor(SK_ColorRED);
         drawMask(canvas, r);
         canvas->restore();
diff --git a/samplecode/SampleLayers.cpp b/samplecode/SampleLayers.cpp
index 430c832..3ae5439 100644
--- a/samplecode/SampleLayers.cpp
+++ b/samplecode/SampleLayers.cpp
@@ -69,11 +69,11 @@
     canvas->clipRect(r);
 
     r.fBottom = SkIntToScalar(20);
-    canvas->saveLayer(&r, NULL, (SkCanvas::SaveFlags)(SkCanvas::kHasAlphaLayer_SaveFlag | SkCanvas::kFullColorLayer_SaveFlag));
+    canvas->saveLayer(&r, NULL);
 
     r.fTop = SkIntToScalar(80);
     r.fBottom = SkIntToScalar(100);
-    canvas->saveLayer(&r, NULL, (SkCanvas::SaveFlags)(SkCanvas::kHasAlphaLayer_SaveFlag | SkCanvas::kFullColorLayer_SaveFlag));
+    canvas->saveLayer(&r, NULL);
 
     // now draw the "content"
 
@@ -203,7 +203,7 @@
             r.set(SkIntToScalar(0), SkIntToScalar(0),
                   SkIntToScalar(220), SkIntToScalar(60));
 
-            canvas->saveLayer(&r, &p, (SkCanvas::SaveFlags)(SkCanvas::kHasAlphaLayer_SaveFlag | SkCanvas::kFullColorLayer_SaveFlag));
+            canvas->saveLayer(&r, &p);
 
             r.set(SkIntToScalar(0), SkIntToScalar(0),
                   SkIntToScalar(220), SkIntToScalar(120));
diff --git a/samplecode/SampleXfermodesBlur.cpp b/samplecode/SampleXfermodesBlur.cpp
index cae415d..ea9561d 100644
--- a/samplecode/SampleXfermodesBlur.cpp
+++ b/samplecode/SampleXfermodesBlur.cpp
@@ -180,7 +180,7 @@
                 p.setShader(s);
                 canvas->drawRect(r, p);
 
-                canvas->saveLayer(&r, NULL, SkCanvas::kARGB_ClipLayer_SaveFlag);
+                canvas->saveLayer(&r, NULL);
                 draw_mode(canvas, mode, twice ? 0x88 : 0xFF, r.fLeft, r.fTop);
                 canvas->restore();
 
diff --git a/src/animator/SkDrawSaveLayer.cpp b/src/animator/SkDrawSaveLayer.cpp
index 4e97a04..9623c90 100644
--- a/src/animator/SkDrawSaveLayer.cpp
+++ b/src/animator/SkDrawSaveLayer.cpp
@@ -41,10 +41,10 @@
     {
         SkPaint realPaint;
         paint->setupPaint(&realPaint);
-        maker.fCanvas->saveLayer(&bounds->fRect, &realPaint, SkCanvas::kHasAlphaLayer_SaveFlag);
+        maker.fCanvas->saveLayer(&bounds->fRect, &realPaint);
     }
     else
-        maker.fCanvas->saveLayer(&bounds->fRect, save, SkCanvas::kHasAlphaLayer_SaveFlag);
+        maker.fCanvas->saveLayer(&bounds->fRect, save);
     SkPaint local = SkPaint(*maker.fPaint);
     maker.fPaint = &local;
     bool result = INHERITED::draw(maker);
diff --git a/src/core/SkCanvas.cpp b/src/core/SkCanvas.cpp
index 569e9e5..c57ae9a 100644
--- a/src/core/SkCanvas.cpp
+++ b/src/core/SkCanvas.cpp
@@ -1631,12 +1631,13 @@
                     SkIRect deviceIBounds;
                     this->getDevice()->getGlobalBounds(&deviceIBounds);
                     deviceBounds = SkRect::Make(deviceIBounds);
-                    this->SkCanvas::save(SkCanvas::kMatrix_SaveFlag);
+
                     // set the clip in device space
+                    SkMatrix savedMatrix = this->getTotalMatrix();
                     this->SkCanvas::setMatrix(SkMatrix::I());
                     this->SkCanvas::onClipRect(deviceBounds, SkRegion::kReplace_Op,
                                                kHard_ClipEdgeStyle);
-                    this->SkCanvas::restore(); //pop the matrix, but keep the clip
+                    this->setMatrix(savedMatrix);
                     break;
             }
             default:
diff --git a/src/core/SkPictureRecord.cpp b/src/core/SkPictureRecord.cpp
index 0a55e73..bea3442 100644
--- a/src/core/SkPictureRecord.cpp
+++ b/src/core/SkPictureRecord.cpp
@@ -770,7 +770,7 @@
     // we have to call this *after* our constructor, to ensure that it gets
     // recorded. This is balanced by restoreToCount() call from endRecording,
     // which in-turn calls our overridden restore(), so those get recorded too.
-    fInitialSaveCount = this->save(kMatrixClip_SaveFlag);
+    fInitialSaveCount = this->save();
 }
 
 void SkPictureRecord::endRecording() {
diff --git a/src/core/SkPictureStateTree.cpp b/src/core/SkPictureStateTree.cpp
index ca3032d..891d04c 100644
--- a/src/core/SkPictureStateTree.cpp
+++ b/src/core/SkPictureStateTree.cpp
@@ -124,7 +124,7 @@
     Node* targetNode = draw->fNode;
 
     if (fSave) {
-        fCanvas->save(SkCanvas::kClip_SaveFlag);
+        fCanvas->save();
         fSave = false;
     }
 
@@ -162,6 +162,9 @@
                     fCanvas->restore();
                 }
                 if (targetNode != ancestor) {
+                    // FIXME: the save below depends on soon-to-be-deprecated
+                    // SaveFlags behavior: it relies on matrix changes persisting
+                    // after restore.
                     fCanvas->save(SkCanvas::kClip_SaveFlag);
                 }
             }
diff --git a/src/effects/SkLayerDrawLooper.cpp b/src/effects/SkLayerDrawLooper.cpp
index 5fbb550..fa590d2 100644
--- a/src/effects/SkLayerDrawLooper.cpp
+++ b/src/effects/SkLayerDrawLooper.cpp
@@ -37,7 +37,7 @@
 }
 
 SkLayerDrawLooper::Context* SkLayerDrawLooper::createContext(SkCanvas* canvas, void* storage) const {
-    canvas->save(SkCanvas::kMatrix_SaveFlag);
+    canvas->save();
     return SkNEW_PLACEMENT_ARGS(storage, LayerDrawLooperContext, (this));
 }
 
@@ -140,7 +140,7 @@
 
     ApplyInfo(paint, fCurrRec->fPaint, fCurrRec->fInfo);
 
-    canvas->save(SkCanvas::kMatrix_SaveFlag);
+    canvas->save();
     if (fCurrRec->fInfo.fPostTranslate) {
         postTranslate(canvas, fCurrRec->fInfo.fOffset.fX,
                       fCurrRec->fInfo.fOffset.fY);
diff --git a/tests/DeferredCanvasTest.cpp b/tests/DeferredCanvasTest.cpp
index 13758a7..ffcbc23 100644
--- a/tests/DeferredCanvasTest.cpp
+++ b/tests/DeferredCanvasTest.cpp
@@ -290,20 +290,20 @@
     REPORTER_ASSERT(reporter, canvas->isFreshFrame());
 
     // Verify that clear with saved state triggers a fresh frame
-    canvas->save(SkCanvas::kMatrixClip_SaveFlag);
+    canvas->save();
     canvas->clear(0x00000000);
     canvas->restore();
     REPORTER_ASSERT(reporter, canvas->isFreshFrame());
 
     // Verify that clear within a layer does NOT trigger a fresh frame
-    canvas->saveLayer(NULL, NULL, SkCanvas::kARGB_ClipLayer_SaveFlag);
+    canvas->saveLayer(NULL, NULL);
     canvas->clear(0x00000000);
     canvas->restore();
     REPORTER_ASSERT(reporter, !canvas->isFreshFrame());
 
     // Verify that a clear with clipping triggers a fresh frame
     // (clear is not affected by clipping)
-    canvas->save(SkCanvas::kMatrixClip_SaveFlag);
+    canvas->save();
     canvas->clipRect(partialRect, SkRegion::kIntersect_Op, false);
     canvas->clear(0x00000000);
     canvas->restore();
@@ -389,7 +389,7 @@
     // Verify that incomplete coverage due to clipping does not trigger a fresh
     // frame
     {
-        canvas->save(SkCanvas::kMatrixClip_SaveFlag);
+        canvas->save();
         canvas->clipRect(partialRect, SkRegion::kIntersect_Op, false);
         SkPaint paint;
         paint.setStyle(SkPaint::kFill_Style);
@@ -399,7 +399,7 @@
         REPORTER_ASSERT(reporter, !canvas->isFreshFrame());
     }
     {
-        canvas->save(SkCanvas::kMatrixClip_SaveFlag);
+        canvas->save();
         SkPaint paint;
         paint.setStyle(SkPaint::kFill_Style);
         paint.setAlpha(255);
diff --git a/tests/ImageFilterTest.cpp b/tests/ImageFilterTest.cpp
index 9748ecf..a58c3af 100644
--- a/tests/ImageFilterTest.cpp
+++ b/tests/ImageFilterTest.cpp
@@ -285,9 +285,7 @@
     SkAutoTUnref<MatrixTestImageFilter> imageFilter(
         new MatrixTestImageFilter(reporter, expectedMatrix));
     paint.setImageFilter(imageFilter.get());
-    SkCanvas::SaveFlags saveFlags = static_cast<SkCanvas::SaveFlags>(
-        SkCanvas::kHasAlphaLayer_SaveFlag | SkCanvas::kFullColorLayer_SaveFlag);
-    recordingCanvas->saveLayer(NULL, &paint, saveFlags);
+    recordingCanvas->saveLayer(NULL, &paint);
     SkPaint solidPaint;
     solidPaint.setColor(0xFFFFFFFF);
     recordingCanvas->save();