blob: 746ea2f304870875a79f1b779bdca75899241a64 [file] [log] [blame]
georgeb3eba472014-09-09 11:33:57 -07001/*
2 * Copyright 2011 Google Inc.
3 *
4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file.
6 */
7
Mike Kleinc0bd9f92019-04-23 12:05:21 -05008#include "gm/gm.h"
9#include "include/core/SkCanvas.h"
Ben Wagner7fde8e12019-05-01 17:28:53 -040010#include "include/core/SkColor.h"
11#include "include/core/SkPaint.h"
12#include "include/core/SkRect.h"
13#include "include/core/SkSize.h"
14#include "include/core/SkString.h"
georgeb3eba472014-09-09 11:33:57 -070015
16class ClipStrokeRectGM : public skiagm::GM {
17public:
18 ClipStrokeRectGM() {
19
20 }
21
22protected:
mtklein36352bf2015-03-25 18:17:31 -070023 SkString onShortName() override {
georgeb3eba472014-09-09 11:33:57 -070024 return SkString("clip_strokerect");
25 }
26
mtklein36352bf2015-03-25 18:17:31 -070027 SkISize onISize() override {
georgeb3eba472014-09-09 11:33:57 -070028 return SkISize::Make(200, 400);
29 }
30
mtklein36352bf2015-03-25 18:17:31 -070031 void onDraw(SkCanvas* canvas) override {
georgeb3eba472014-09-09 11:33:57 -070032 SkPaint p;
33 p.setColor(SK_ColorRED);
34 p.setAntiAlias(true);
35 p.setStyle(SkPaint::kStroke_Style);
36 p.setStrokeWidth(22);
37
38 SkRect r = SkRect::MakeXYWH(20, 20, 100, 100);
39 // setting the height of this to 19 causes failure
40 SkRect rect = SkRect::MakeXYWH(20, 0, 100, 20);
41
42 canvas->save();
reed66998382016-09-21 11:15:07 -070043 canvas->clipRect(rect, true);
georgeb3eba472014-09-09 11:33:57 -070044 canvas->drawRect(r, p);
45 canvas->restore();
46
47 p.setColor(SK_ColorBLUE);
48 p.setStrokeWidth(2);
49 canvas->drawRect(rect, p);
50
51 p.setColor(SK_ColorRED);
52 p.setAntiAlias(true);
53 p.setStyle(SkPaint::kStroke_Style);
54 p.setStrokeWidth(22);
55
56 SkRect r2 = SkRect::MakeXYWH(20, 140, 100, 100);
57 // setting the height of this to 19 causes failure
58 SkRect rect2 = SkRect::MakeXYWH(20, 120, 100, 19);
59
60 canvas->save();
reed66998382016-09-21 11:15:07 -070061 canvas->clipRect(rect2, true);
georgeb3eba472014-09-09 11:33:57 -070062 canvas->drawRect(r2, p);
63 canvas->restore();
64
65 p.setColor(SK_ColorBLUE);
66 p.setStrokeWidth(2);
67 canvas->drawRect(rect2, p);
68 }
69
georgeb3eba472014-09-09 11:33:57 -070070private:
71 typedef skiagm::GM INHERITED;
72};
73
halcanary385fe4d2015-08-26 13:07:48 -070074DEF_GM(return new ClipStrokeRectGM;)