/* * 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