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