Flutter Engine
The Flutter Engine
Loading...
Searching...
No Matches
paragraph_builder.cpp
Go to the documentation of this file.
1// Copyright 2013 The Flutter Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "../export.h"
6#include "../wrappers.h"
8
9using namespace skia::textlayout;
10using namespace Skwasm;
11
13 ParagraphStyle* style,
14 FlutterFontCollection* collection) {
15 return ParagraphBuilder::make(*style, collection->collection).release();
16}
17
19 delete builder;
20}
21
23 ParagraphBuilder* builder,
26 PlaceholderAlignment alignment,
27 SkScalar baselineOffset,
28 TextBaseline baseline) {
29 builder->addPlaceholder(
30 PlaceholderStyle(width, height, alignment, baseline, baselineOffset));
31}
32
34 std::u16string* text) {
35 builder->addText(*text);
36}
37
39 uint32_t* outLength) {
40 auto span = builder->getText();
41 *outLength = span.size();
42 return span.data();
43}
44
46 TextStyle* style) {
47 builder->pushStyle(*style);
48}
49
51 builder->pop();
52}
53
55 return builder->Build().release();
56}
57
58SKWASM_EXPORT std::vector<SkUnicode::Position>* unicodePositionBuffer_create(
59 size_t length) {
60 return new std::vector<SkUnicode::Position>(length);
61}
62
64 std::vector<SkUnicode::Position>* buffer) {
65 return buffer->data();
66}
67
69 std::vector<SkUnicode::Position>* buffer) {
70 delete buffer;
71}
72
73SKWASM_EXPORT std::vector<SkUnicode::LineBreakBefore>* lineBreakBuffer_create(
74 size_t length) {
75 return new std::vector<SkUnicode::LineBreakBefore>(
77}
78
80 std::vector<SkUnicode::LineBreakBefore>* buffer) {
81 return buffer->data();
82}
83
85 std::vector<SkUnicode::LineBreakBefore>* buffer) {
86 delete buffer;
87}
88
90 ParagraphBuilder* builder,
91 std::vector<SkUnicode::Position>* breaks) {
92 builder->setGraphemeBreaksUtf16(std::move(*breaks));
93}
94
96 ParagraphBuilder* builder,
97 std::vector<SkUnicode::Position>* breaks) {
98 builder->setWordsUtf16(std::move(*breaks));
99}
100
102 ParagraphBuilder* builder,
103 std::vector<SkUnicode::LineBreakBefore>* breaks) {
104 builder->setLineBreaksUtf16(std::move(*breaks));
105}
size_t Position
Definition SkUnicode.h:98
static std::unique_ptr< ParagraphBuilder > make(const ParagraphStyle &style, sk_sp< FontCollection > fontCollection, sk_sp< SkUnicode > unicode)
float SkScalar
Definition extension.cpp:12
static const uint8_t buffer[]
size_t length
std::u16string text
PlaceholderAlignment
Where to vertically align the placeholder relative to the surrounding text.
Definition TextStyle.h:87
SKWASM_EXPORT SkUnicode::Position * unicodePositionBuffer_getDataPointer(std::vector< SkUnicode::Position > *buffer)
SKWASM_EXPORT std::vector< SkUnicode::Position > * unicodePositionBuffer_create(size_t length)
SKWASM_EXPORT SkUnicode::LineBreakBefore * lineBreakBuffer_getDataPointer(std::vector< SkUnicode::LineBreakBefore > *buffer)
SKWASM_EXPORT ParagraphBuilder * paragraphBuilder_create(ParagraphStyle *style, FlutterFontCollection *collection)
SKWASM_EXPORT void lineBreakBuffer_free(std::vector< SkUnicode::LineBreakBefore > *buffer)
SKWASM_EXPORT void paragraphBuilder_setGraphemeBreaksUtf16(ParagraphBuilder *builder, std::vector< SkUnicode::Position > *breaks)
SKWASM_EXPORT void paragraphBuilder_pop(ParagraphBuilder *builder)
SKWASM_EXPORT void paragraphBuilder_setWordBreaksUtf16(ParagraphBuilder *builder, std::vector< SkUnicode::Position > *breaks)
SKWASM_EXPORT void paragraphBuilder_pushStyle(ParagraphBuilder *builder, TextStyle *style)
SKWASM_EXPORT char * paragraphBuilder_getUtf8Text(ParagraphBuilder *builder, uint32_t *outLength)
SKWASM_EXPORT void paragraphBuilder_dispose(ParagraphBuilder *builder)
SKWASM_EXPORT void unicodePositionBuffer_free(std::vector< SkUnicode::Position > *buffer)
SKWASM_EXPORT Paragraph * paragraphBuilder_build(ParagraphBuilder *builder)
SKWASM_EXPORT std::vector< SkUnicode::LineBreakBefore > * lineBreakBuffer_create(size_t length)
SKWASM_EXPORT void paragraphBuilder_addText(ParagraphBuilder *builder, std::u16string *text)
SKWASM_EXPORT void paragraphBuilder_addPlaceholder(ParagraphBuilder *builder, SkScalar width, SkScalar height, PlaceholderAlignment alignment, SkScalar baselineOffset, TextBaseline baseline)
SKWASM_EXPORT void paragraphBuilder_setLineBreaksUtf16(ParagraphBuilder *builder, std::vector< SkUnicode::LineBreakBefore > *breaks)
int32_t height
int32_t width
sk_sp< skia::textlayout::FontCollection > collection
Definition wrappers.h:33
#define SKWASM_EXPORT
Definition export.h:10