Flutter Engine Uber Docs
Docs for the entire Flutter Engine repo.
 
Loading...
Searching...
No Matches
text_style.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
5#include <vector>
6
12#include "third_party/skia/include/core/SkString.h"
13#include "third_party/skia/modules/skparagraph/include/Paragraph.h"
14
15const double kTextHeightNone = 0.0;
16
19 auto style = new Skwasm::TextStyle();
20
21 // Default color in flutter is black.
22 style->skia_style.setColor(SK_ColorBLACK);
23 return style;
24}
25
30
35
37 style->skia_style.setColor(color);
38}
39
41 Skwasm::TextStyle* style,
42 skia::textlayout::TextDecoration decoration) {
43 style->skia_style.setDecoration(decoration);
44}
45
47 SkColor color) {
48 style->skia_style.setDecorationColor(color);
49}
50
52 Skwasm::TextStyle* style,
53 skia::textlayout::TextDecorationStyle decoration_style) {
54 style->skia_style.setDecorationStyle(decoration_style);
55}
56
58 SkScalar thickness) {
59 style->skia_style.setDecorationThicknessMultiplier(thickness);
60}
61
63 int weight,
64 SkFontStyle::Slant slant) {
65 style->skia_style.setFontStyle(
66 SkFontStyle(weight, SkFontStyle::kNormal_Width, slant));
67}
68
70 Skwasm::TextStyle* style,
71 skia::textlayout::TextBaseline baseline) {
72 style->skia_style.setTextBaseline(baseline);
73}
74
76 style->skia_style.setFontFamilies({});
77}
78
80 SkString** font_families,
81 int count) {
82 const std::vector<SkString>& current_families =
83 style->skia_style.getFontFamilies();
84 std::vector<SkString> new_families;
85 new_families.reserve(current_families.size() + count);
86 for (int i = 0; i < count; i++) {
87 new_families.push_back(*font_families[i]);
88 }
89 for (const auto& family : current_families) {
90 new_families.push_back(family);
91 }
92 style->skia_style.setFontFamilies(std::move(new_families));
93}
94
96 SkScalar size) {
97 style->skia_style.setFontSize(size);
98}
99
101 SkScalar letter_spacing) {
102 style->skia_style.setLetterSpacing(letter_spacing);
103}
104
106 SkScalar word_spacing) {
107 style->skia_style.setWordSpacing(word_spacing);
108}
109
111 SkScalar height) {
112 style->skia_style.setHeight(height);
113 style->skia_style.setHeightOverride(height != kTextHeightNone);
114}
115
117 bool half_leading) {
118 style->skia_style.setHalfLeading(half_leading);
119}
120
122 SkString* locale) {
123 style->skia_style.setLocale(*locale);
124}
125
127 flutter::DlPaint* paint) {
128 style->background = *paint;
129}
130
132 flutter::DlPaint* paint) {
133 style->foreground = *paint;
134}
135
137 SkColor color,
138 SkScalar offset_x,
139 SkScalar offset_y,
140 SkScalar blur_sigma) {
141 style->skia_style.addShadow(
142 skia::textlayout::TextShadow(color, {offset_x, offset_y}, blur_sigma));
143}
144
146 SkString* feature_name,
147 int value) {
148 style->skia_style.addFontFeature(*feature_name, value);
149}
150
152 SkFourByteTag* axes,
153 float* values,
154 int count) {
155 std::vector<SkFontArguments::VariationPosition::Coordinate> coordinates;
156 for (int i = 0; i < count; i++) {
157 coordinates.push_back({axes[i], values[i]});
158 }
159 SkFontArguments::VariationPosition position = {
160 coordinates.data(), static_cast<int>(coordinates.size())};
161 style->skia_style.setFontArguments(
162 SkFontArguments().setVariationDesignPosition(position));
163}
int32_t value
uint32_t live_text_style_count
int32_t height
#define SKWASM_EXPORT
Definition export.h:10
SKWASM_EXPORT Skwasm::TextStyle * textStyle_create()
Definition text_style.cc:17
SKWASM_EXPORT void textStyle_setTextBaseline(Skwasm::TextStyle *style, skia::textlayout::TextBaseline baseline)
Definition text_style.cc:69
SKWASM_EXPORT void textStyle_addFontFeature(Skwasm::TextStyle *style, SkString *feature_name, int value)
SKWASM_EXPORT void textStyle_setDecorationColor(Skwasm::TextStyle *style, SkColor color)
Definition text_style.cc:46
SKWASM_EXPORT void textStyle_addShadow(Skwasm::TextStyle *style, SkColor color, SkScalar offset_x, SkScalar offset_y, SkScalar blur_sigma)
SKWASM_EXPORT void textStyle_setHeight(Skwasm::TextStyle *style, SkScalar height)
SKWASM_EXPORT void textStyle_setForeground(Skwasm::TextStyle *style, flutter::DlPaint *paint)
SKWASM_EXPORT void textStyle_setLetterSpacing(Skwasm::TextStyle *style, SkScalar letter_spacing)
SKWASM_EXPORT void textStyle_setFontSize(Skwasm::TextStyle *style, SkScalar size)
Definition text_style.cc:95
SKWASM_EXPORT void textStyle_setDecoration(Skwasm::TextStyle *style, skia::textlayout::TextDecoration decoration)
Definition text_style.cc:40
SKWASM_EXPORT void textStyle_addFontFamilies(Skwasm::TextStyle *style, SkString **font_families, int count)
Definition text_style.cc:79
SKWASM_EXPORT Skwasm::TextStyle * textStyle_copy(Skwasm::TextStyle *style)
Definition text_style.cc:26
SKWASM_EXPORT void textStyle_dispose(Skwasm::TextStyle *style)
Definition text_style.cc:31
SKWASM_EXPORT void textStyle_setLocale(Skwasm::TextStyle *style, SkString *locale)
SKWASM_EXPORT void textStyle_setFontVariations(Skwasm::TextStyle *style, SkFourByteTag *axes, float *values, int count)
SKWASM_EXPORT void textStyle_setDecorationStyle(Skwasm::TextStyle *style, skia::textlayout::TextDecorationStyle decoration_style)
Definition text_style.cc:51
SKWASM_EXPORT void textStyle_setDecorationThickness(Skwasm::TextStyle *style, SkScalar thickness)
Definition text_style.cc:57
SKWASM_EXPORT void textStyle_setWordSpacing(Skwasm::TextStyle *style, SkScalar word_spacing)
const double kTextHeightNone
Definition text_style.cc:15
SKWASM_EXPORT void textStyle_setFontStyle(Skwasm::TextStyle *style, int weight, SkFontStyle::Slant slant)
Definition text_style.cc:62
SKWASM_EXPORT void textStyle_setBackground(Skwasm::TextStyle *style, flutter::DlPaint *paint)
SKWASM_EXPORT void textStyle_clearFontFamilies(Skwasm::TextStyle *style)
Definition text_style.cc:75
SKWASM_EXPORT void textStyle_setColor(Skwasm::TextStyle *style, SkColor color)
Definition text_style.cc:36
SKWASM_EXPORT void textStyle_setHalfLeading(Skwasm::TextStyle *style, bool half_leading)
std::optional< flutter::DlPaint > background
Definition text_types.h:19
std::optional< flutter::DlPaint > foreground
Definition text_types.h:18
skia::textlayout::TextStyle skia_style
Definition text_types.h:17