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.h" 9 #include "SkCanvas.h" 10 #include "SkPath.h" 11 12 class ClipStrokeRectGM : public skiagm::GM { 13 public: ClipStrokeRectGM()14 ClipStrokeRectGM() { 15 16 } 17 18 protected: onShortName()19 virtual SkString onShortName() SK_OVERRIDE { 20 return SkString("clip_strokerect"); 21 } 22 onISize()23 virtual SkISize onISize() SK_OVERRIDE { 24 return SkISize::Make(200, 400); 25 } 26 onDraw(SkCanvas * canvas)27 virtual void onDraw(SkCanvas* canvas) SK_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, SkRegion::kReplace_Op, 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, SkRegion::kReplace_Op, 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 onGetFlags() const66 virtual uint32_t onGetFlags() const { return kSkipPipe_Flag; } 67 68 private: 69 typedef skiagm::GM INHERITED; 70 }; 71 72 DEF_GM( return SkNEW(ClipStrokeRectGM); ) 73 74