160 {
162
164 std::unique_ptr<SkShaper::BiDiRunIterator> bidi =
167
168 std::unique_ptr<SkShaper::LanguageRunIterator> language =
171
172 std::unique_ptr<SkShaper::ScriptRunIterator>
script =
175
176 std::unique_ptr<SkShaper::FontRunIterator> fontRuns =
179
182 textBytes,
183 *fontRuns,
184 *bidi,
186 *language,
187 nullptr,
188 0,
190 &textBlobBuilder);
191 SkPoint endPoint = textBlobBuilder.endPoint();
193
194 if (!pageCanvas ||
197 ) {
198 if (pageCanvas) {
200 }
207 }
211
213 }
sk_sp< SkUnicode > get_unicode()
void drawPaint(const SkPaint &paint)
void drawTextBlob(const SkTextBlob *blob, SkScalar x, SkScalar y, const SkPaint &paint)
SkCanvas * beginPage(SkScalar width, SkScalar height, const SkRect *content=nullptr)
static sk_sp< SkFontMgr > RefEmpty()
static std::unique_ptr< FontRunIterator > MakeFontMgrRunIterator(const char *utf8, size_t utf8Bytes, const SkFont &font, sk_sp< SkFontMgr > fallback)
static std::unique_ptr< LanguageRunIterator > MakeStdLanguageRunIterator(const char *utf8, size_t utf8Bytes)
virtual void shape(const char *utf8, size_t utf8Bytes, const SkFont &srcFont, bool leftToRight, SkScalar width, RunHandler *) const =0
SKSHAPER_API std::unique_ptr< SkShaper::ScriptRunIterator > ScriptRunIterator(const char *utf8, size_t utf8Bytes)
SKSHAPER_API std::unique_ptr< SkShaper::BiDiRunIterator > BidiRunIterator(sk_sp< SkUnicode > unicode, const char *utf8, size_t utf8Bytes, uint8_t bidiLevel)
DoubleOption line_spacing_ratio
constexpr float y() const