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: onShortName()23 SkString onShortName() override { 24 return SkString("clip_strokerect"); 25 } 26 onISize()27 SkISize onISize() override { 28 return SkISize::Make(200, 400); 29 } 30 onDraw(SkCanvas * canvas)31 void onDraw(SkCanvas* canvas) override { 32 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(); 43 canvas->clipRect(rect, true); 44 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(); 61 canvas->clipRect(rect2, true); 62 canvas->drawRect(r2, p); 63 canvas->restore(); 64 65 p.setColor(SK_ColorBLUE); 66 p.setStrokeWidth(2); 67 canvas->drawRect(rect2, p); 68 } 69 70 private: 71 using INHERITED = skiagm::GM; 72 }; 73 74 DEF_GM(return new ClipStrokeRectGM;) 75