Flutter Engine
The Flutter Engine
SkClusterator.h
Go to the documentation of this file.
1/*
2 * Copyright 2018 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 SkClusterator_DEFINED
8#define SkClusterator_DEFINED
9
10#include <cstdint>
11
12namespace sktext {
13class GlyphRun;
14}
15
16/** Given the m-to-n glyph-to-character mapping data (as returned by
17 harfbuzz), iterate over the clusters. */
19public:
21 uint32_t glyphCount() const { return fGlyphCount; }
22 bool reversedChars() const { return fReversedChars; }
23 struct Cluster {
24 const char* fUtf8Text;
26 uint32_t fGlyphIndex;
27 uint32_t fGlyphCount;
28 explicit operator bool() const { return fGlyphCount != 0; }
30 return fUtf8Text == o.fUtf8Text
34 }
35 };
36 Cluster next();
37
38private:
39 uint32_t const * const fClusters;
40 char const * const fUtf8Text;
41 uint32_t const fGlyphCount;
42 uint32_t const fTextByteLength;
43 bool const fReversedChars;
44 uint32_t fCurrentGlyphIndex = 0;
45};
46#endif // SkClusterator_DEFINED
SkClusterator(const sktext::GlyphRun &run)
uint32_t glyphCount() const
Definition: SkClusterator.h:21
Cluster next()
bool reversedChars() const
Definition: SkClusterator.h:22
Definition: run.py:1
const char * fUtf8Text
Definition: SkClusterator.h:24
bool operator==(const SkClusterator::Cluster &o)
Definition: SkClusterator.h:29