Home | History | Annotate | Download | only in core
      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