#include "include/core/SkFont.h"
#include "include/core/SkFontTypes.h"
#include "include/core/SkPoint.h"
#include "include/core/SkScalar.h"
#include "include/core/SkTypes.h"
#include "include/private/base/SkTo.h"
#include "modules/skshaper/include/SkShaper.h"
#include "src/base/SkUTF.h"
#if !defined(SK_DISABLE_LEGACY_SKSHAPER_FUNCTIONS)
#include "include/core/SkFontMgr.h"
#endif
#include <cstdint>
#include <cstring>
#include <memory>
class SkShaperPrimitive : public SkShaper { … };
static inline bool is_breaking_whitespace(SkUnichar c) { … }
static size_t linebreak(const char text[], const char stop[],
const SkFont& font, SkScalar width,
SkScalar* advance,
size_t* trailing)
{ … }
#if !defined(SK_DISABLE_LEGACY_SKSHAPER_FUNCTIONS)
void SkShaperPrimitive::shape(const char* utf8,
size_t utf8Bytes,
FontRunIterator& font,
BiDiRunIterator& bidi,
ScriptRunIterator& script,
LanguageRunIterator& lang,
SkScalar width,
RunHandler* handler) const { … }
void SkShaperPrimitive::shape(const char* utf8,
size_t utf8Bytes,
const SkFont& font,
bool leftToRight,
SkScalar width,
RunHandler* handler) const { … }
#endif
void SkShaperPrimitive::shape(const char* utf8,
size_t utf8Bytes,
FontRunIterator& fontRuns,
BiDiRunIterator&,
ScriptRunIterator&,
LanguageRunIterator&,
const Feature*,
size_t,
SkScalar width,
RunHandler* handler) const { … }
#if !defined(SK_DISABLE_LEGACY_SKSHAPER_FUNCTIONS)
std::unique_ptr<SkShaper> SkShaper::MakePrimitive() { … }
#endif
namespace SkShapers::Primitive {
std::unique_ptr<SkShaper> PrimitiveText() { … }
}