Convert CanvasStateTest to the new saveLayer API
authorfmalita <fmalita@chromium.org>
Wed, 20 Jan 2016 19:17:39 +0000 (11:17 -0800)
committerCommit bot <commit-bot@chromium.org>
Wed, 20 Jan 2016 19:17:40 +0000 (11:17 -0800)
The test needs to still work when SK_SUPPORT_LEGACY_CLIPTOLAYERFLAG is
defined but SK_SUPPORT_LEGACY_SAVEFLAGS is not.

R=reed@google.com,robertphillips@google.com
GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1610193002

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

tests/CanvasStateTest.cpp

index 4f5fb46..bd7c325 100644 (file)
@@ -14,6 +14,7 @@
 #include "SkPaint.h"
 #include "SkRRect.h"
 #include "SkRect.h"
+#include "SkTLazy.h"
 #include "Test.h"
 
 // dlopen and the library flag are only used for tests which require this flag.
@@ -71,9 +72,10 @@ DEF_TEST(CanvasState_test_complex_layers, reporter) {
     };
 
     const int layerAlpha[] = { 255, 255, 0 };
-    const SkCanvas::SaveFlags flags[] = { SkCanvas::kARGB_NoClipLayer_SaveFlag,
-                                          SkCanvas::kARGB_ClipLayer_SaveFlag,
-                                          SkCanvas::kARGB_NoClipLayer_SaveFlag
+    const SkCanvas::SaveLayerFlags flags[] = {
+        static_cast<SkCanvas::SaveLayerFlags>(SkCanvas::kDontClipToLayer_Legacy_SaveLayerFlag),
+        0,
+        static_cast<SkCanvas::SaveLayerFlags>(SkCanvas::kDontClipToLayer_Legacy_SaveLayerFlag),
     };
     REPORTER_ASSERT(reporter, sizeof(layerAlpha) == sizeof(flags));
 
@@ -105,8 +107,13 @@ DEF_TEST(CanvasState_test_complex_layers, reporter) {
             canvas.drawColor(SK_ColorRED);
 
             for (size_t k = 0; k < SK_ARRAY_COUNT(layerAlpha); ++k) {
+                SkTLazy<SkPaint> paint;
+                if (layerAlpha[k] != 0xFF) {
+                    paint.init()->setAlpha(layerAlpha[k]);
+                }
+
                 // draw a rect within the layer's bounds and again outside the layer's bounds
-                canvas.saveLayerAlpha(&rect, layerAlpha[k], flags[k]);
+                canvas.saveLayer(SkCanvas::SaveLayerRec(&rect, paint.getMaybeNull(), flags[k]));
 
                 if (j) {
                     // Capture from the first Skia.
@@ -172,9 +179,10 @@ DEF_TEST(CanvasState_test_complex_clips, reporter) {
                                      SkRegion::kIntersect_Op,
                                      SkRegion::kReplace_Op,
     };
-    const SkCanvas::SaveFlags flags[] = { SkCanvas::kARGB_NoClipLayer_SaveFlag,
-                                          SkCanvas::kARGB_ClipLayer_SaveFlag,
-                                          SkCanvas::kARGB_NoClipLayer_SaveFlag,
+    const SkCanvas::SaveLayerFlags flags[] = {
+        static_cast<SkCanvas::SaveLayerFlags>(SkCanvas::kDontClipToLayer_Legacy_SaveLayerFlag),
+        0,
+        static_cast<SkCanvas::SaveLayerFlags>(SkCanvas::kDontClipToLayer_Legacy_SaveLayerFlag),
     };
     REPORTER_ASSERT(reporter, sizeof(clipOps) == sizeof(flags));
 
@@ -205,9 +213,11 @@ DEF_TEST(CanvasState_test_complex_clips, reporter) {
 
         SkRegion localRegion = clipRegion;
 
+        SkPaint paint;
+        paint.setAlpha(128);
         for (size_t j = 0; j < SK_ARRAY_COUNT(flags); ++j) {
             SkRect layerBounds = SkRect::Make(layerRect);
-            canvas.saveLayerAlpha(&layerBounds, 128, flags[j]);
+            canvas.saveLayer(SkCanvas::SaveLayerRec(&layerBounds, &paint, flags[j]));
 
             if (i) {
                 SkCanvasState* state = SkCanvasStateUtils::CaptureCanvasState(&canvas);
@@ -318,7 +328,9 @@ DEF_TEST(CanvasState_test_saveLayer_clip, reporter) {
 
     // Check that saveLayer without the kClipToLayer_SaveFlag leaves the
     // clip stack unchanged.
-    canvas.saveLayer(&bounds, nullptr, SkCanvas::kARGB_NoClipLayer_SaveFlag);
+    canvas.saveLayer(SkCanvas::SaveLayerRec(&bounds,
+                                            nullptr,
+                                            SkCanvas::kDontClipToLayer_Legacy_SaveLayerFlag));
     SkRect clipStackBounds;
     SkClipStack::BoundsType boundsType;
     canvas.getClipStack()->getBounds(&clipStackBounds, &boundsType);
@@ -334,7 +346,7 @@ DEF_TEST(CanvasState_test_saveLayer_clip, reporter) {
 
     // Check that saveLayer with the kClipToLayer_SaveFlag sets the clip
     // stack to the layer bounds.
-    canvas.saveLayer(&bounds, nullptr, SkCanvas::kARGB_ClipLayer_SaveFlag);
+    canvas.saveLayer(&bounds, nullptr);
     canvas.getClipStack()->getBounds(&clipStackBounds, &boundsType);
     REPORTER_ASSERT(reporter, clipStackBounds.width() == LAYER_WIDTH);
     REPORTER_ASSERT(reporter, clipStackBounds.height() == LAYER_HEIGHT);