xref: /aosp_15_r20/external/skia/gm/clip_strokerect.cpp (revision c8dee2aa9b3f27cf6c858bd81872bdeb2c07ed17)
1 /*
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 
8 #include "gm/gm.h"
9 #include "include/core/SkCanvas.h"
10 #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"
15 
16 class ClipStrokeRectGM : public skiagm::GM {
17 public:
ClipStrokeRectGM()18     ClipStrokeRectGM() {
19 
20     }
21 
22 protected:
getName() const23     SkString getName() const override { return SkString("clip_strokerect"); }
24 
getISize()25     SkISize getISize() override { return SkISize::Make(200, 400); }
26 
onDraw(SkCanvas * canvas)27     void onDraw(SkCanvas* canvas) override {
28         SkPaint p;
29         p.setColor(SK_ColorRED);
30         p.setAntiAlias(true);
31         p.setStyle(SkPaint::kStroke_Style);
32         p.setStrokeWidth(22);
33 
34         SkRect r = SkRect::MakeXYWH(20, 20, 100, 100);
35         // setting the height of this to 19 causes failure
36         SkRect rect = SkRect::MakeXYWH(20, 0, 100, 20);
37 
38         canvas->save();
39         canvas->clipRect(rect, true);
40         canvas->drawRect(r, p);
41         canvas->restore();
42 
43         p.setColor(SK_ColorBLUE);
44         p.setStrokeWidth(2);
45         canvas->drawRect(rect, p);
46 
47         p.setColor(SK_ColorRED);
48         p.setAntiAlias(true);
49         p.setStyle(SkPaint::kStroke_Style);
50         p.setStrokeWidth(22);
51 
52         SkRect r2 = SkRect::MakeXYWH(20, 140, 100, 100);
53         // setting the height of this to 19 causes failure
54         SkRect rect2 = SkRect::MakeXYWH(20, 120, 100, 19);
55 
56         canvas->save();
57         canvas->clipRect(rect2, true);
58         canvas->drawRect(r2, p);
59         canvas->restore();
60 
61         p.setColor(SK_ColorBLUE);
62         p.setStrokeWidth(2);
63         canvas->drawRect(rect2, p);
64     }
65 
66 private:
67     using INHERITED = skiagm::GM;
68 };
69 
70 DEF_GM(return new ClipStrokeRectGM;)
71