1ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com 2ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com/* 3ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * Copyright 2011 Google Inc. 4ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * 5ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * Use of this source code is governed by a BSD-style license that can be 6ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * found in the LICENSE file. 7ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com */ 8048522dd2aa45d1b4bf52944527f877b30ea45fdreed@android.com#include "gm.h" 9048522dd2aa45d1b4bf52944527f877b30ea45fdreed@android.com 10048522dd2aa45d1b4bf52944527f877b30ea45fdreed@android.comnamespace skiagm { 11048522dd2aa45d1b4bf52944527f877b30ea45fdreed@android.com 12048522dd2aa45d1b4bf52944527f877b30ea45fdreed@android.comclass FillTypeGM : public GM { 13048522dd2aa45d1b4bf52944527f877b30ea45fdreed@android.com SkPath fPath; 14048522dd2aa45d1b4bf52944527f877b30ea45fdreed@android.compublic: 15d6176b0dcacb124539e0cfd051e6d93a9782f020rmistry@google.com FillTypeGM() { 1648dd1a26ec07c5baa04856202e4e7e2a53e4d7e5bsalomon@google.com this->setBGColor(0xFFDDDDDD); 17d42e3f60cd571afb6c0f1837f9e0996bfe149001reed@google.com } 18d6176b0dcacb124539e0cfd051e6d93a9782f020rmistry@google.com 19d42e3f60cd571afb6c0f1837f9e0996bfe149001reed@google.com void makePath() { 20d42e3f60cd571afb6c0f1837f9e0996bfe149001reed@google.com if (fPath.isEmpty()) { 21d42e3f60cd571afb6c0f1837f9e0996bfe149001reed@google.com const SkScalar radius = SkIntToScalar(45); 22d42e3f60cd571afb6c0f1837f9e0996bfe149001reed@google.com fPath.addCircle(SkIntToScalar(50), SkIntToScalar(50), radius); 23d42e3f60cd571afb6c0f1837f9e0996bfe149001reed@google.com fPath.addCircle(SkIntToScalar(100), SkIntToScalar(100), radius); 24d42e3f60cd571afb6c0f1837f9e0996bfe149001reed@google.com } 25048522dd2aa45d1b4bf52944527f877b30ea45fdreed@android.com } 26d6176b0dcacb124539e0cfd051e6d93a9782f020rmistry@google.com 27048522dd2aa45d1b4bf52944527f877b30ea45fdreed@android.comprotected: 28a90c6803865766d28e92091f56f718f5e41fe80fcommit-bot@chromium.org virtual uint32_t onGetFlags() const SK_OVERRIDE { 29a90c6803865766d28e92091f56f718f5e41fe80fcommit-bot@chromium.org return kSkipTiled_Flag; 30a90c6803865766d28e92091f56f718f5e41fe80fcommit-bot@chromium.org } 31a90c6803865766d28e92091f56f718f5e41fe80fcommit-bot@chromium.org 32048522dd2aa45d1b4bf52944527f877b30ea45fdreed@android.com virtual SkString onShortName() { 33048522dd2aa45d1b4bf52944527f877b30ea45fdreed@android.com return SkString("filltypes"); 34048522dd2aa45d1b4bf52944527f877b30ea45fdreed@android.com } 35048522dd2aa45d1b4bf52944527f877b30ea45fdreed@android.com 36d6176b0dcacb124539e0cfd051e6d93a9782f020rmistry@google.com virtual SkISize onISize() { 37f539318f0d3dba743ec1886d5d9df0fb1be628a1tfarina return SkISize::Make(835, 840); 38048522dd2aa45d1b4bf52944527f877b30ea45fdreed@android.com } 39048522dd2aa45d1b4bf52944527f877b30ea45fdreed@android.com 40048522dd2aa45d1b4bf52944527f877b30ea45fdreed@android.com void showPath(SkCanvas* canvas, int x, int y, SkPath::FillType ft, 41048522dd2aa45d1b4bf52944527f877b30ea45fdreed@android.com SkScalar scale, const SkPaint& paint) { 42048522dd2aa45d1b4bf52944527f877b30ea45fdreed@android.com 43048522dd2aa45d1b4bf52944527f877b30ea45fdreed@android.com const SkRect r = { 0, 0, SkIntToScalar(150), SkIntToScalar(150) }; 44048522dd2aa45d1b4bf52944527f877b30ea45fdreed@android.com 45048522dd2aa45d1b4bf52944527f877b30ea45fdreed@android.com canvas->save(); 46048522dd2aa45d1b4bf52944527f877b30ea45fdreed@android.com canvas->translate(SkIntToScalar(x), SkIntToScalar(y)); 47048522dd2aa45d1b4bf52944527f877b30ea45fdreed@android.com canvas->clipRect(r); 48048522dd2aa45d1b4bf52944527f877b30ea45fdreed@android.com canvas->drawColor(SK_ColorWHITE); 49048522dd2aa45d1b4bf52944527f877b30ea45fdreed@android.com fPath.setFillType(ft); 50048522dd2aa45d1b4bf52944527f877b30ea45fdreed@android.com canvas->translate(r.centerX(), r.centerY()); 51048522dd2aa45d1b4bf52944527f877b30ea45fdreed@android.com canvas->scale(scale, scale); 52048522dd2aa45d1b4bf52944527f877b30ea45fdreed@android.com canvas->translate(-r.centerX(), -r.centerY()); 53048522dd2aa45d1b4bf52944527f877b30ea45fdreed@android.com canvas->drawPath(fPath, paint); 54048522dd2aa45d1b4bf52944527f877b30ea45fdreed@android.com canvas->restore(); 55048522dd2aa45d1b4bf52944527f877b30ea45fdreed@android.com } 56048522dd2aa45d1b4bf52944527f877b30ea45fdreed@android.com 57048522dd2aa45d1b4bf52944527f877b30ea45fdreed@android.com void showFour(SkCanvas* canvas, SkScalar scale, const SkPaint& paint) { 58048522dd2aa45d1b4bf52944527f877b30ea45fdreed@android.com showPath(canvas, 0, 0, SkPath::kWinding_FillType, 59048522dd2aa45d1b4bf52944527f877b30ea45fdreed@android.com scale, paint); 60048522dd2aa45d1b4bf52944527f877b30ea45fdreed@android.com showPath(canvas, 200, 0, SkPath::kEvenOdd_FillType, 61048522dd2aa45d1b4bf52944527f877b30ea45fdreed@android.com scale, paint); 62048522dd2aa45d1b4bf52944527f877b30ea45fdreed@android.com showPath(canvas, 00, 200, SkPath::kInverseWinding_FillType, 63048522dd2aa45d1b4bf52944527f877b30ea45fdreed@android.com scale, paint); 64048522dd2aa45d1b4bf52944527f877b30ea45fdreed@android.com showPath(canvas, 200, 200, SkPath::kInverseEvenOdd_FillType, 65048522dd2aa45d1b4bf52944527f877b30ea45fdreed@android.com scale, paint); 66048522dd2aa45d1b4bf52944527f877b30ea45fdreed@android.com } 67048522dd2aa45d1b4bf52944527f877b30ea45fdreed@android.com 68048522dd2aa45d1b4bf52944527f877b30ea45fdreed@android.com virtual void onDraw(SkCanvas* canvas) { 69d42e3f60cd571afb6c0f1837f9e0996bfe149001reed@google.com this->makePath(); 70d42e3f60cd571afb6c0f1837f9e0996bfe149001reed@google.com 71048522dd2aa45d1b4bf52944527f877b30ea45fdreed@android.com canvas->translate(SkIntToScalar(20), SkIntToScalar(20)); 72d6176b0dcacb124539e0cfd051e6d93a9782f020rmistry@google.com 73048522dd2aa45d1b4bf52944527f877b30ea45fdreed@android.com SkPaint paint; 74048522dd2aa45d1b4bf52944527f877b30ea45fdreed@android.com const SkScalar scale = SkIntToScalar(5)/4; 75048522dd2aa45d1b4bf52944527f877b30ea45fdreed@android.com 76048522dd2aa45d1b4bf52944527f877b30ea45fdreed@android.com paint.setAntiAlias(false); 77048522dd2aa45d1b4bf52944527f877b30ea45fdreed@android.com 78048522dd2aa45d1b4bf52944527f877b30ea45fdreed@android.com showFour(canvas, SK_Scalar1, paint); 79048522dd2aa45d1b4bf52944527f877b30ea45fdreed@android.com canvas->translate(SkIntToScalar(450), 0); 80048522dd2aa45d1b4bf52944527f877b30ea45fdreed@android.com showFour(canvas, scale, paint); 81048522dd2aa45d1b4bf52944527f877b30ea45fdreed@android.com 82048522dd2aa45d1b4bf52944527f877b30ea45fdreed@android.com paint.setAntiAlias(true); 83048522dd2aa45d1b4bf52944527f877b30ea45fdreed@android.com 84048522dd2aa45d1b4bf52944527f877b30ea45fdreed@android.com canvas->translate(SkIntToScalar(-450), SkIntToScalar(450)); 85048522dd2aa45d1b4bf52944527f877b30ea45fdreed@android.com showFour(canvas, SK_Scalar1, paint); 86048522dd2aa45d1b4bf52944527f877b30ea45fdreed@android.com canvas->translate(SkIntToScalar(450), 0); 87048522dd2aa45d1b4bf52944527f877b30ea45fdreed@android.com showFour(canvas, scale, paint); 88048522dd2aa45d1b4bf52944527f877b30ea45fdreed@android.com } 89d6176b0dcacb124539e0cfd051e6d93a9782f020rmistry@google.com 90048522dd2aa45d1b4bf52944527f877b30ea45fdreed@android.comprivate: 91048522dd2aa45d1b4bf52944527f877b30ea45fdreed@android.com typedef GM INHERITED; 92048522dd2aa45d1b4bf52944527f877b30ea45fdreed@android.com}; 93048522dd2aa45d1b4bf52944527f877b30ea45fdreed@android.com 94048522dd2aa45d1b4bf52944527f877b30ea45fdreed@android.com////////////////////////////////////////////////////////////////////////////// 95048522dd2aa45d1b4bf52944527f877b30ea45fdreed@android.com 96048522dd2aa45d1b4bf52944527f877b30ea45fdreed@android.comstatic GM* MyFactory(void*) { return new FillTypeGM; } 97048522dd2aa45d1b4bf52944527f877b30ea45fdreed@android.comstatic GMRegistry reg(MyFactory); 98048522dd2aa45d1b4bf52944527f877b30ea45fdreed@android.com 99048522dd2aa45d1b4bf52944527f877b30ea45fdreed@android.com} 100