| /* | |
| * Copyright 2012 Google Inc. | |
| * | |
| * Use of this source code is governed by a BSD-style license that can be | |
| * found in the LICENSE file. | |
| */ | |
| #ifndef SkTextToPathIter_DEFINED | |
| #define SkTextToPathIter_DEFINED | |
| #include "SkAutoKern.h" | |
| #include "SkPaint.h" | |
| class SkGlyphCache; | |
| class SkTextToPathIter { | |
| public: | |
| SkTextToPathIter(const char text[], size_t length, const SkPaint& paint, | |
| bool applyStrokeAndPathEffects); | |
| ~SkTextToPathIter(); | |
| const SkPaint& getPaint() const { return fPaint; } | |
| SkScalar getPathScale() const { return fScale; } | |
| struct Rec { | |
| const SkPath* fPath; // may be null for "whitespace" glyphs | |
| SkScalar fXPos; | |
| }; | |
| /** | |
| * Returns false when all of the text has been consumed | |
| */ | |
| bool next(const SkPath** path, SkScalar* xpos); | |
| private: | |
| SkGlyphCache* fCache; | |
| SkPaint fPaint; | |
| SkScalar fScale; | |
| SkFixed fPrevAdvance; | |
| const char* fText; | |
| const char* fStop; | |
| SkMeasureCacheProc fGlyphCacheProc; | |
| SkScalar fXPos; // accumulated xpos, returned in next | |
| SkAutoKern fAutoKern; | |
| int fXYIndex; // cache for horizontal -vs- vertical text | |
| }; | |
| #endif |