From 113fd3461eb9b8b96ee2692944839077a20e4ca0 Mon Sep 17 00:00:00 2001 From: Mike Reed Date: Sat, 14 Jan 2017 13:45:02 -0500 Subject: savelayer gm BUG=skia: Change-Id: Ie24ed6e450b77447a75b5b9bdd0a4516cca5e85c Reviewed-on: https://skia-review.googlesource.com/7093 Reviewed-by: Mike Reed Commit-Queue: Mike Reed --- gm/savelayer.cpp | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 gm/savelayer.cpp (limited to 'gm') 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); + } +} -- cgit v1.2.3