1b3eba478d5bed5fb2b5f0f224738c8c292cebf36george/* 2b3eba478d5bed5fb2b5f0f224738c8c292cebf36george * Copyright 2011 Google Inc. 3b3eba478d5bed5fb2b5f0f224738c8c292cebf36george * 4b3eba478d5bed5fb2b5f0f224738c8c292cebf36george * Use of this source code is governed by a BSD-style license that can be 5b3eba478d5bed5fb2b5f0f224738c8c292cebf36george * found in the LICENSE file. 6b3eba478d5bed5fb2b5f0f224738c8c292cebf36george */ 7b3eba478d5bed5fb2b5f0f224738c8c292cebf36george 8b3eba478d5bed5fb2b5f0f224738c8c292cebf36george#include "gm.h" 9b3eba478d5bed5fb2b5f0f224738c8c292cebf36george#include "SkCanvas.h" 10b3eba478d5bed5fb2b5f0f224738c8c292cebf36george#include "SkPath.h" 11b3eba478d5bed5fb2b5f0f224738c8c292cebf36george 12b3eba478d5bed5fb2b5f0f224738c8c292cebf36georgeclass ClipStrokeRectGM : public skiagm::GM { 13b3eba478d5bed5fb2b5f0f224738c8c292cebf36georgepublic: 14b3eba478d5bed5fb2b5f0f224738c8c292cebf36george ClipStrokeRectGM() { 15b3eba478d5bed5fb2b5f0f224738c8c292cebf36george 16b3eba478d5bed5fb2b5f0f224738c8c292cebf36george } 17b3eba478d5bed5fb2b5f0f224738c8c292cebf36george 18b3eba478d5bed5fb2b5f0f224738c8c292cebf36georgeprotected: 1936352bf5e38f45a70ee4f4fc132a38048d38206dmtklein SkString onShortName() override { 20b3eba478d5bed5fb2b5f0f224738c8c292cebf36george return SkString("clip_strokerect"); 21b3eba478d5bed5fb2b5f0f224738c8c292cebf36george } 22b3eba478d5bed5fb2b5f0f224738c8c292cebf36george 2336352bf5e38f45a70ee4f4fc132a38048d38206dmtklein SkISize onISize() override { 24b3eba478d5bed5fb2b5f0f224738c8c292cebf36george return SkISize::Make(200, 400); 25b3eba478d5bed5fb2b5f0f224738c8c292cebf36george } 26b3eba478d5bed5fb2b5f0f224738c8c292cebf36george 2736352bf5e38f45a70ee4f4fc132a38048d38206dmtklein void onDraw(SkCanvas* canvas) override { 28b3eba478d5bed5fb2b5f0f224738c8c292cebf36george SkPaint p; 29b3eba478d5bed5fb2b5f0f224738c8c292cebf36george p.setColor(SK_ColorRED); 30b3eba478d5bed5fb2b5f0f224738c8c292cebf36george p.setAntiAlias(true); 31b3eba478d5bed5fb2b5f0f224738c8c292cebf36george p.setStyle(SkPaint::kStroke_Style); 32b3eba478d5bed5fb2b5f0f224738c8c292cebf36george p.setStrokeWidth(22); 33b3eba478d5bed5fb2b5f0f224738c8c292cebf36george 34b3eba478d5bed5fb2b5f0f224738c8c292cebf36george SkRect r = SkRect::MakeXYWH(20, 20, 100, 100); 35b3eba478d5bed5fb2b5f0f224738c8c292cebf36george // setting the height of this to 19 causes failure 36b3eba478d5bed5fb2b5f0f224738c8c292cebf36george SkRect rect = SkRect::MakeXYWH(20, 0, 100, 20); 37b3eba478d5bed5fb2b5f0f224738c8c292cebf36george 38b3eba478d5bed5fb2b5f0f224738c8c292cebf36george canvas->save(); 39b3eba478d5bed5fb2b5f0f224738c8c292cebf36george canvas->clipRect(rect, SkRegion::kReplace_Op, true); 40b3eba478d5bed5fb2b5f0f224738c8c292cebf36george canvas->drawRect(r, p); 41b3eba478d5bed5fb2b5f0f224738c8c292cebf36george canvas->restore(); 42b3eba478d5bed5fb2b5f0f224738c8c292cebf36george 43b3eba478d5bed5fb2b5f0f224738c8c292cebf36george p.setColor(SK_ColorBLUE); 44b3eba478d5bed5fb2b5f0f224738c8c292cebf36george p.setStrokeWidth(2); 45b3eba478d5bed5fb2b5f0f224738c8c292cebf36george canvas->drawRect(rect, p); 46b3eba478d5bed5fb2b5f0f224738c8c292cebf36george 47b3eba478d5bed5fb2b5f0f224738c8c292cebf36george p.setColor(SK_ColorRED); 48b3eba478d5bed5fb2b5f0f224738c8c292cebf36george p.setAntiAlias(true); 49b3eba478d5bed5fb2b5f0f224738c8c292cebf36george p.setStyle(SkPaint::kStroke_Style); 50b3eba478d5bed5fb2b5f0f224738c8c292cebf36george p.setStrokeWidth(22); 51b3eba478d5bed5fb2b5f0f224738c8c292cebf36george 52b3eba478d5bed5fb2b5f0f224738c8c292cebf36george SkRect r2 = SkRect::MakeXYWH(20, 140, 100, 100); 53b3eba478d5bed5fb2b5f0f224738c8c292cebf36george // setting the height of this to 19 causes failure 54b3eba478d5bed5fb2b5f0f224738c8c292cebf36george SkRect rect2 = SkRect::MakeXYWH(20, 120, 100, 19); 55b3eba478d5bed5fb2b5f0f224738c8c292cebf36george 56b3eba478d5bed5fb2b5f0f224738c8c292cebf36george canvas->save(); 57b3eba478d5bed5fb2b5f0f224738c8c292cebf36george canvas->clipRect(rect2, SkRegion::kReplace_Op, true); 58b3eba478d5bed5fb2b5f0f224738c8c292cebf36george canvas->drawRect(r2, p); 59b3eba478d5bed5fb2b5f0f224738c8c292cebf36george canvas->restore(); 60b3eba478d5bed5fb2b5f0f224738c8c292cebf36george 61b3eba478d5bed5fb2b5f0f224738c8c292cebf36george p.setColor(SK_ColorBLUE); 62b3eba478d5bed5fb2b5f0f224738c8c292cebf36george p.setStrokeWidth(2); 63b3eba478d5bed5fb2b5f0f224738c8c292cebf36george canvas->drawRect(rect2, p); 64b3eba478d5bed5fb2b5f0f224738c8c292cebf36george } 65b3eba478d5bed5fb2b5f0f224738c8c292cebf36george 66b3eba478d5bed5fb2b5f0f224738c8c292cebf36georgeprivate: 67b3eba478d5bed5fb2b5f0f224738c8c292cebf36george typedef skiagm::GM INHERITED; 68b3eba478d5bed5fb2b5f0f224738c8c292cebf36george}; 69b3eba478d5bed5fb2b5f0f224738c8c292cebf36george 702880df2609eba09b555ca37be04b6ad89290c765Tom HudsonDEF_GM(return new ClipStrokeRectGM;) 71