OLD | NEW |
1 /* | 1 /* |
2 * Copyright 2011 Google Inc. | 2 * Copyright 2011 Google Inc. |
3 * | 3 * |
4 * Use of this source code is governed by a BSD-style license that can be | 4 * Use of this source code is governed by a BSD-style license that can be |
5 * found in the LICENSE file. | 5 * found in the LICENSE file. |
6 */ | 6 */ |
7 | 7 |
8 #include "gm.h" | 8 #include "gm.h" |
9 #include "SkCanvas.h" | 9 #include "SkCanvas.h" |
10 #include "SkPath.h" | 10 #include "SkPath.h" |
(...skipping 188 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
199 // https://bug.skia.org/3716 | 199 // https://bug.skia.org/3716 |
200 class ClipCubicGM : public skiagm::GM { | 200 class ClipCubicGM : public skiagm::GM { |
201 const SkScalar W = 100; | 201 const SkScalar W = 100; |
202 const SkScalar H = 240; | 202 const SkScalar H = 240; |
203 | 203 |
204 SkPath fVPath, fHPath; | 204 SkPath fVPath, fHPath; |
205 public: | 205 public: |
206 ClipCubicGM() { | 206 ClipCubicGM() { |
207 fVPath.moveTo(W, 0); | 207 fVPath.moveTo(W, 0); |
208 fVPath.cubicTo(W, H-10, 0, 10, 0, H); | 208 fVPath.cubicTo(W, H-10, 0, 10, 0, H); |
209 | 209 |
210 SkMatrix pivot; | 210 SkMatrix pivot; |
211 pivot.setRotate(90, W/2, H/2); | 211 pivot.setRotate(90, W/2, H/2); |
212 fVPath.transform(pivot, &fHPath); | 212 fVPath.transform(pivot, &fHPath); |
213 } | 213 } |
214 | 214 |
215 protected: | 215 protected: |
216 SkString onShortName() override { | 216 SkString onShortName() override { |
217 return SkString("clipcubic"); | 217 return SkString("clipcubic"); |
218 } | 218 } |
219 | 219 |
220 SkISize onISize() override { | 220 SkISize onISize() override { |
221 return SkISize::Make(400, 410); | 221 return SkISize::Make(400, 410); |
222 } | 222 } |
223 | 223 |
224 void doDraw(SkCanvas* canvas, const SkPath& path) { | 224 void doDraw(SkCanvas* canvas, const SkPath& path) { |
225 SkPaint paint; | 225 SkPaint paint; |
226 paint.setAntiAlias(true); | 226 paint.setAntiAlias(true); |
227 | 227 |
228 paint.setColor(sk_tool_utils::color_to_565(0xFFCCCCCC)); | 228 paint.setColor(sk_tool_utils::color_to_565(0xFFCCCCCC)); |
229 canvas->drawPath(path, paint); | 229 canvas->drawPath(path, paint); |
230 | 230 |
231 paint.setColor(SK_ColorRED); | 231 paint.setColor(SK_ColorRED); |
232 paint.setStyle(SkPaint::kStroke_Style); | 232 paint.setStyle(SkPaint::kStroke_Style); |
233 canvas->drawPath(path, paint); | 233 canvas->drawPath(path, paint); |
234 } | 234 } |
235 | 235 |
236 void drawAndClip(SkCanvas* canvas, const SkPath& path, SkScalar dx, SkScalar
dy) { | 236 void drawAndClip(SkCanvas* canvas, const SkPath& path, SkScalar dx, SkScalar
dy) { |
237 SkAutoCanvasRestore acr(canvas, true); | 237 SkAutoCanvasRestore acr(canvas, true); |
238 | 238 |
239 SkRect r = SkRect::MakeXYWH(0, H/4, W, H/2); | 239 SkRect r = SkRect::MakeXYWH(0, H/4, W, H/2); |
240 SkPaint paint; | 240 SkPaint paint; |
241 paint.setColor(sk_tool_utils::color_to_565(0xFF8888FF)); | 241 paint.setColor(sk_tool_utils::color_to_565(0xFF8888FF)); |
242 | 242 |
243 canvas->drawRect(r, paint); | 243 canvas->drawRect(r, paint); |
244 this->doDraw(canvas, path); | 244 this->doDraw(canvas, path); |
245 | 245 |
246 canvas->translate(dx, dy); | 246 canvas->translate(dx, dy); |
247 | 247 |
248 canvas->drawRect(r, paint); | 248 canvas->drawRect(r, paint); |
249 canvas->clipRect(r); | 249 canvas->clipRect(r); |
250 this->doDraw(canvas, path); | 250 this->doDraw(canvas, path); |
251 } | 251 } |
252 | 252 |
253 void onDraw(SkCanvas* canvas) override { | 253 void onDraw(SkCanvas* canvas) override { |
254 canvas->translate(80, 10); | 254 canvas->translate(80, 10); |
255 this->drawAndClip(canvas, fVPath, 200, 0); | 255 this->drawAndClip(canvas, fVPath, 200, 0); |
256 canvas->translate(0, 200); | 256 canvas->translate(0, 200); |
257 this->drawAndClip(canvas, fHPath, 200, 0); | 257 this->drawAndClip(canvas, fHPath, 200, 0); |
258 } | 258 } |
259 | 259 |
260 private: | 260 private: |
261 typedef skiagm::GM INHERITED; | 261 typedef skiagm::GM INHERITED; |
262 }; | 262 }; |
263 DEF_GM(return new ClipCubicGM;) | 263 DEF_GM(return new ClipCubicGM;) |
OLD | NEW |