diff options
author | Mike Reed <reed@google.com> | 2017-01-14 13:45:02 -0500 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2017-01-14 19:19:01 +0000 |
commit | 113fd3461eb9b8b96ee2692944839077a20e4ca0 (patch) | |
tree | 2bbb1b0e8d05bd0ee60835ffe5848ffa7c4e3c27 /gm | |
parent | 197bde9c606dbd22eafa02509bf4ea3ce7a0c69b (diff) |
savelayer gm
BUG=skia:
Change-Id: Ie24ed6e450b77447a75b5b9bdd0a4516cca5e85c
Reviewed-on: https://skia-review.googlesource.com/7093
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Mike Reed <reed@google.com>
Diffstat (limited to 'gm')
-rw-r--r-- | gm/savelayer.cpp | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/gm/savelayer.cpp b/gm/savelayer.cpp new file mode 100644 index 0000000000..9b4db3530b --- /dev/null +++ b/gm/savelayer.cpp @@ -0,0 +1,42 @@ +/* + * Copyright 2017 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#include "gm.h" + +static void saveLayer(SkCanvas* canvas, SkScalar l, SkScalar t, SkScalar r, SkScalar b) { + uint32_t flag = 1U << 31; + SkRect rect = SkRect::MakeLTRB(l, t, r, b); + canvas->saveLayer({ &rect, nullptr, nullptr, flag }); +} + +static void do_draw(SkCanvas* canvas) { + SkPaint paint; + SkRandom rand; + + SkAutoCanvasRestore acr(canvas, true); + for (int i = 0; i < 20; ++i) { + paint.setColor(rand.nextU() | (0xFF << 24)); + canvas->drawRect({ 15, 15, 290, 40 }, paint); + canvas->translate(0, 30); + } +} + +DEF_SIMPLE_GM(savelayer_unclipped, canvas, 320, 640) { + const SkScalar L = 10; + const SkScalar T = 10; + const SkScalar R = 310; + const SkScalar B = 630; + + canvas->clipRect({ L, T, R, B }); + + for (int i = 0; i < 100; ++i) { + SkAutoCanvasRestore acr(canvas, true); + saveLayer(canvas, L, T, R, T + 20); + saveLayer(canvas, L, B - 20, R, B); + do_draw(canvas); + } +} |