| /* | 
 |  * Copyright 2012 Google Inc. | 
 |  * | 
 |  * Use of this source code is governed by a BSD-style license that can be | 
 |  * found in the LICENSE file. | 
 |  */ | 
 |  | 
 | #include "gm.h" | 
 | #include "SkCanvas.h" | 
 | #include "SkPath.h" | 
 | #include "SkParsePath.h" | 
 | #include "SkDashPathEffect.h" | 
 |  | 
 | /* | 
 |  *  Inspired by http://code.google.com/p/chromium/issues/detail?id=112145 | 
 |  */ | 
 |  | 
 | class DashCubicsGM : public skiagm::GM { | 
 | public: | 
 |     DashCubicsGM() {} | 
 |  | 
 | protected: | 
 |     virtual SkString onShortName() { | 
 |         return SkString("dashcubics"); | 
 |     } | 
 |  | 
 |     virtual SkISize onISize() { | 
 |         return SkISize::Make(640, 480); | 
 |     } | 
 |  | 
 |     virtual void onDraw(SkCanvas* canvas) { | 
 |         SkPath path; | 
 |         const char* d = "M 337,98 C 250,141 250,212 250,212 C 250,212 250,212 250,212" | 
 |         "C 250,212 250,212 250,212 C 250,212 250,141 163,98 C 156,195 217,231 217,231" | 
 |         "C 217,231 217,231 217,231 C 217,231 217,231 217,231 C 217,231 156,195 75,250" | 
 |         "C 156,305 217,269 217,269 C 217,269 217,269 217,269 C 217,269 217,269 217,269" | 
 |         "C 217,269 156,305 163,402 C 250,359 250,288 250,288 C 250,288 250,288 250,288" | 
 |         "C 250,288 250,288 250,288 C 250,288 250,359 338,402 C 345,305 283,269 283,269" | 
 |         "C 283,269 283,269 283,269 C 283,269 283,269 283,269 C 283,269 345,305 425,250" | 
 |         "C 344,195 283,231 283,231 C 283,231 283,231 283,231 C 283,231 283,231 283,231" | 
 |         "C 283,231 344,195 338,98"; | 
 |  | 
 |         SkParsePath::FromSVGString(d, &path); | 
 |  | 
 |         SkScalar intervals[] = { 5, 10 }; | 
 |         SkPathEffect* pe = new SkDashPathEffect(intervals, 2, 0); | 
 |  | 
 |         SkPaint paint; | 
 |         paint.setAntiAlias(true); | 
 |         paint.setStyle(SkPaint::kStroke_Style); | 
 |  | 
 |         paint.setStrokeWidth(42); | 
 |         canvas->drawPath(path, paint); | 
 |  | 
 |         paint.setColor(SK_ColorRED); | 
 |         paint.setStrokeWidth(21); | 
 |         paint.setPathEffect(pe)->unref(); | 
 |         canvas->drawPath(path, paint); | 
 |  | 
 |         paint.setColor(SK_ColorGREEN); | 
 |         paint.setPathEffect(NULL); | 
 |         paint.setStrokeWidth(0); | 
 |         canvas->drawPath(path, paint); | 
 |     } | 
 |  | 
 | private: | 
 |     typedef GM INHERITED; | 
 | }; | 
 |  | 
 | ////////////////////////////////////////////////////////////////////////////// | 
 |  | 
 | static skiagm::GM* MyFactory(void*) { return new DashCubicsGM; } | 
 | static skiagm::GMRegistry reg(MyFactory); |