1 /* 2 * Copyright 2015 Google Inc. 3 * 4 * Use of this source code is governed by a BSD-style license that can be 5 * found in the LICENSE file. 6 */ 7 #ifndef SkTextBlobRunIterator_DEFINED 8 #define SkTextBlobRunIterator_DEFINED 9 10 #include "SkTextBlob.h" 11 12 /** 13 * Iterate through all of the text runs of the text blob. For example: 14 * for (SkTextBlobRunIterator it(blob); !it.done(); it.next()) { 15 * ..... 16 * } 17 */ 18 class SkTextBlobRunIterator { 19 public: 20 SkTextBlobRunIterator(const SkTextBlob* blob); 21 22 bool done() const; 23 void next(); 24 25 uint32_t glyphCount() const; 26 const uint16_t* glyphs() const; 27 const SkScalar* pos() const; 28 const SkPoint& offset() const; 29 void applyFontToPaint(SkPaint*) const; 30 SkTextBlob::GlyphPositioning positioning() const; 31 bool isLCD() const; 32 33 private: 34 const SkTextBlob::RunRecord* fCurrentRun; 35 int fRemainingRuns; 36 37 SkDEBUGCODE(uint8_t* fStorageTop;) 38 }; 39 40 #endif // SkTextBlobRunIterator_DEFINED 41