|  | // Copyright 2020 Google LLC. | 
|  | // Use of this source code is governed by a BSD-style license that can be found in the LICENSE file. | 
|  | #include "tools/fiddle/examples.h" | 
|  | REG_FIDDLE(count_verbs, 256, 256, false, 0) { | 
|  | #include "include/utils/SkTextUtils.h" | 
|  |  | 
|  | static SkPath make_path(const SkFont& font) { | 
|  | SkPath path; | 
|  | const char text[] = "SKIA"; | 
|  | SkTextUtils::GetPath(text, strlen(text), SkTextEncoding::kUTF8, 0, 0, font, &path); | 
|  | return path; | 
|  | } | 
|  |  | 
|  | static void count_verbs(const SkPath& path, int counts[6]) { | 
|  | SkPath::Iter it(path, false); | 
|  | for (int i = 0; i < 6; ++i) { | 
|  | counts[i] = 0; | 
|  | } | 
|  | while (true) { | 
|  | SkPoint pts[4]; | 
|  | SkPath::Verb verb = it.next(pts); | 
|  | if (verb == SkPath::kDone_Verb) { | 
|  | break; | 
|  | } | 
|  | if ((unsigned)verb < 6) { | 
|  | counts[(unsigned)verb]++; | 
|  | } | 
|  | } | 
|  | } | 
|  |  | 
|  | void draw(SkCanvas* canvas) { | 
|  | SkFont font(SkTypeface::MakeFromName("DejaVu Sans Mono", SkFontStyle()), 30); | 
|  | SkPath path = make_path(font); | 
|  | int counts[6]; | 
|  | count_verbs(path, counts); | 
|  |  | 
|  | // output results: | 
|  | const char* verbs[6] = {"Move", "Line", "Quad", "Conic", "Cubic", "Close"}; | 
|  | SkPoint pt = SkPoint::Make(10.0f, 5.0f + font.getSpacing()); | 
|  | SkPaint p; | 
|  | canvas->clear(SK_ColorWHITE); | 
|  | for (int i = 0; i < 6; ++i) { | 
|  | canvas->drawString(SkStringPrintf("%-5s %3d", verbs[i], counts[i]), pt.fX, pt.fY, font, | 
|  | p); | 
|  | pt.fY += font.getSpacing(); | 
|  | } | 
|  | } | 
|  | }  // END FIDDLE |