Flutter Engine Uber Docs
Docs for the entire Flutter Engine repo.
 
Loading...
Searching...
No Matches
paragraph_builder.cc
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
9#include "third_party/skia/modules/skparagraph/include/ParagraphBuilder.h"
10#include "third_party/skia/modules/skunicode/include/SkUnicode_client.h"
11
16
19 SkScalar width,
20 SkScalar height,
21 skia::textlayout::PlaceholderAlignment alignment,
22 SkScalar baseline_offset,
23 skia::textlayout::TextBaseline baseline) {
24 builder->skia_paragraph_builder->addPlaceholder(
25 skia::textlayout::PlaceholderStyle(width, height, alignment, baseline,
26 baseline_offset));
27}
28
30 std::u16string* text) {
31 builder->skia_paragraph_builder->addText(*text);
32}
33
36 uint32_t* out_length) {
37 auto span = builder->skia_paragraph_builder->getText();
38 *out_length = span.size();
39 return span.data();
40}
41
43 Skwasm::TextStyle* style) {
44 style->PopulatePaintIds(builder->paints);
45 builder->skia_paragraph_builder->pushStyle(style->skia_style);
46}
47
51
52SKWASM_EXPORT std::vector<SkUnicode::Position>* unicodePositionBuffer_create(
53 size_t length) {
55 return new std::vector<SkUnicode::Position>(length);
56}
57
59 std::vector<SkUnicode::Position>* buffer) {
60 return buffer->data();
61}
62
64 std::vector<SkUnicode::Position>* buffer) {
66 delete buffer;
67}
68
69SKWASM_EXPORT std::vector<SkUnicode::LineBreakBefore>* lineBreakBuffer_create(
70 size_t length) {
72 return new std::vector<SkUnicode::LineBreakBefore>(
73 length, {0, SkUnicode::LineBreakType::kSoftLineBreak});
74}
75
77 std::vector<SkUnicode::LineBreakBefore>* buffer) {
78 return buffer->data();
79}
80
82 std::vector<SkUnicode::LineBreakBefore>* buffer) {
84 delete buffer;
85}
size_t length
std::u16string text
uint32_t live_paragraph_builder_count
uint32_t live_unicode_position_buffer_count
uint32_t live_line_break_buffer_count
int32_t height
int32_t width
#define SKWASM_EXPORT
Definition export.h:10
SKWASM_EXPORT SkUnicode::Position * unicodePositionBuffer_getDataPointer(std::vector< SkUnicode::Position > *buffer)
SKWASM_EXPORT std::vector< SkUnicode::Position > * unicodePositionBuffer_create(size_t length)
SKWASM_EXPORT void paragraphBuilder_addText(Skwasm::ParagraphBuilder *builder, std::u16string *text)
SKWASM_EXPORT SkUnicode::LineBreakBefore * lineBreakBuffer_getDataPointer(std::vector< SkUnicode::LineBreakBefore > *buffer)
SKWASM_EXPORT void paragraphBuilder_addPlaceholder(Skwasm::ParagraphBuilder *builder, SkScalar width, SkScalar height, skia::textlayout::PlaceholderAlignment alignment, SkScalar baseline_offset, skia::textlayout::TextBaseline baseline)
SKWASM_EXPORT void lineBreakBuffer_free(std::vector< SkUnicode::LineBreakBefore > *buffer)
SKWASM_EXPORT char * paragraphBuilder_getUtf8Text(Skwasm::ParagraphBuilder *builder, uint32_t *out_length)
SKWASM_EXPORT void paragraphBuilder_pushStyle(Skwasm::ParagraphBuilder *builder, Skwasm::TextStyle *style)
SKWASM_EXPORT void unicodePositionBuffer_free(std::vector< SkUnicode::Position > *buffer)
SKWASM_EXPORT void paragraphBuilder_dispose(Skwasm::ParagraphBuilder *builder)
SKWASM_EXPORT std::vector< SkUnicode::LineBreakBefore > * lineBreakBuffer_create(size_t length)
SKWASM_EXPORT void paragraphBuilder_pop(Skwasm::ParagraphBuilder *builder)
std::vector< flutter::DlPaint > paints
Definition text_types.h:45
std::unique_ptr< skia::textlayout::ParagraphBuilder > skia_paragraph_builder
Definition text_types.h:44
void PopulatePaintIds(std::vector< flutter::DlPaint > &paints)
Definition text_types.h:21
skia::textlayout::TextStyle skia_style
Definition text_types.h:17