#include "include/core/SkFont.h"
#include "include/core/SkFontMetrics.h"
#include "include/core/SkFontMgr.h"
#include "include/core/SkFontStyle.h"
#include "include/core/SkTypeface.h"
#include "include/private/base/SkTFitsIn.h"
#include "modules/skshaper/include/SkShaper.h"
#include "src/base/SkUTF.h"
#include <limits.h>
#include <algorithm>
#include <cstring>
#include <locale>
#include <string>
#include <utility>
#if !defined(SK_DISABLE_LEGACY_SKSHAPER_FUNCTIONS)
#if defined(SK_SHAPER_HARFBUZZ_AVAILABLE)
#include "modules/skshaper/include/SkShaper_harfbuzz.h"
#endif
#if defined(SK_SHAPER_CORETEXT_AVAILABLE)
#include "modules/skshaper/include/SkShaper_coretext.h"
#endif
#endif
#if !defined(SK_DISABLE_LEGACY_SKSHAPER_FUNCTIONS)
std::unique_ptr<SkShaper> SkShaper::Make(sk_sp<SkFontMgr> fallback) { … }
void SkShaper::PurgeCaches() { … }
std::unique_ptr<SkShaper::BiDiRunIterator>
SkShaper::MakeBiDiRunIterator(const char* utf8, size_t utf8Bytes, uint8_t bidiLevel) { … }
std::unique_ptr<SkShaper::ScriptRunIterator>
SkShaper::MakeScriptRunIterator(const char* utf8, size_t utf8Bytes, SkFourByteTag scriptTag) { … }
#endif
SkShaper::SkShaper() { … }
SkShaper::~SkShaper() { … }
static inline SkUnichar utf8_next(const char** ptr, const char* end) { … }
class FontMgrRunIterator final : public SkShaper::FontRunIterator { … };
std::unique_ptr<SkShaper::FontRunIterator>
SkShaper::MakeFontMgrRunIterator(const char* utf8, size_t utf8Bytes,
const SkFont& font, sk_sp<SkFontMgr> fallback)
{ … }
std::unique_ptr<SkShaper::FontRunIterator>
SkShaper::MakeFontMgrRunIterator(const char* utf8, size_t utf8Bytes, const SkFont& font,
sk_sp<SkFontMgr> fallback,
const char* requestName, SkFontStyle requestStyle,
const SkShaper::LanguageRunIterator* language)
{ … }
std::unique_ptr<SkShaper::LanguageRunIterator>
SkShaper::MakeStdLanguageRunIterator(const char* utf8, size_t utf8Bytes) { … }
void SkTextBlobBuilderRunHandler::beginLine() { … }
void SkTextBlobBuilderRunHandler::runInfo(const RunInfo& info) { … }
void SkTextBlobBuilderRunHandler::commitRunInfo() { … }
SkShaper::RunHandler::Buffer SkTextBlobBuilderRunHandler::runBuffer(const RunInfo& info) { … }
void SkTextBlobBuilderRunHandler::commitRunBuffer(const RunInfo& info) { … }
void SkTextBlobBuilderRunHandler::commitLine() { … }
sk_sp<SkTextBlob> SkTextBlobBuilderRunHandler::makeBlob() { … }