#include "src/text/GlyphRun.h"
#include "include/core/SkFont.h"
#include "include/core/SkMatrix.h"
#include "include/core/SkRSXform.h"
#include "include/core/SkScalar.h"
#include "include/private/base/SkTLogic.h"
#include "src/core/SkFontPriv.h"
#include "src/core/SkGlyph.h"
#include "src/core/SkStrikeSpec.h"
#include "src/core/SkTextBlobPriv.h"
#include <cstring>
#include <initializer_list>
class SkPaint;
namespace sktext {
GlyphRun::GlyphRun(const SkFont& font,
SkSpan<const SkPoint> positions,
SkSpan<const SkGlyphID> glyphIDs,
SkSpan<const char> text,
SkSpan<const uint32_t> clusters,
SkSpan<const SkVector> scaledRotations)
: … { … }
GlyphRun::GlyphRun(const GlyphRun& that, const SkFont& font)
: … { … }
GlyphRunList::GlyphRunList(const SkTextBlob* blob,
SkRect bounds,
SkPoint origin,
SkSpan<const GlyphRun> glyphRunList,
GlyphRunBuilder* builder)
: … { … }
GlyphRunList::GlyphRunList(const GlyphRun& glyphRun,
const SkRect& bounds,
SkPoint origin,
GlyphRunBuilder* builder)
: … { … }
uint64_t GlyphRunList::uniqueID() const { … }
bool GlyphRunList::anyRunsLCD() const { … }
void GlyphRunList::temporaryShuntBlobNotifyAddedToCache(uint32_t cacheID,
SkTextBlob::PurgeDelegate pd) const { … }
sk_sp<SkTextBlob> GlyphRunList::makeBlob() const { … }
static SkRect glyphrun_source_bounds(
const SkFont& font,
const SkPaint& paint,
SkZip<const SkGlyphID, const SkPoint> source,
SkSpan<const SkVector> scaledRotations) { … }
GlyphRunList GlyphRunBuilder::makeGlyphRunList(
const GlyphRun& run, const SkPaint& paint, SkPoint origin) { … }
static SkSpan<const SkPoint> draw_text_positions(
const SkFont& font, SkSpan<const SkGlyphID> glyphIDs, SkPoint origin, SkPoint* buffer) { … }
const GlyphRunList& GlyphRunBuilder::textToGlyphRunList(
const SkFont& font, const SkPaint& paint,
const void* bytes, size_t byteLength, SkPoint origin,
SkTextEncoding encoding) { … }
const GlyphRunList& sktext::GlyphRunBuilder::blobToGlyphRunList(
const SkTextBlob& blob, SkPoint origin) { … }
std::tuple<SkSpan<const SkPoint>, SkSpan<const SkVector>>
GlyphRunBuilder::convertRSXForm(SkSpan<const SkRSXform> xforms) { … }
void GlyphRunBuilder::initialize(const SkTextBlob& blob) { … }
void GlyphRunBuilder::prepareBuffers(int positionCount, int RSXFormCount) { … }
SkSpan<const SkGlyphID> GlyphRunBuilder::textToGlyphIDs(
const SkFont& font, const void* bytes, size_t byteLength, SkTextEncoding encoding) { … }
void GlyphRunBuilder::makeGlyphRun(
const SkFont& font,
SkSpan<const SkGlyphID> glyphIDs,
SkSpan<const SkPoint> positions,
SkSpan<const char> text,
SkSpan<const uint32_t> clusters,
SkSpan<const SkVector> scaledRotations) { … }
const GlyphRunList& sktext::GlyphRunBuilder::setGlyphRunList(
const SkTextBlob* blob, const SkRect& bounds, SkPoint origin) { … }
}