blob: 8918da3e58724e9e31b3b1a6e544af2f4216e0b9 [file] [log] [blame]
// Copyright 2013 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "flutter/skwasm/export.h"
#include "flutter/skwasm/text/text_types.h"
#include "flutter/skwasm/wrappers.h"
#include "third_party/skia/modules/skparagraph/include/Paragraph.h"
SKWASM_EXPORT Skwasm::ParagraphStyle* paragraphStyle_create() {
auto style = new Skwasm::ParagraphStyle();
// This is the default behavior in Flutter
style->skia_paragraph_style.setReplaceTabCharacters(true);
// Default text style has a black color
style->text_style.skia_style.setColor(SK_ColorBLACK);
return style;
}
SKWASM_EXPORT void paragraphStyle_dispose(Skwasm::ParagraphStyle* style) {
delete style;
}
SKWASM_EXPORT void paragraphStyle_setTextAlign(
Skwasm::ParagraphStyle* style,
skia::textlayout::TextAlign align) {
style->skia_paragraph_style.setTextAlign(align);
}
SKWASM_EXPORT void paragraphStyle_setTextDirection(
Skwasm::ParagraphStyle* style,
skia::textlayout::TextDirection direction) {
style->skia_paragraph_style.setTextDirection(direction);
}
SKWASM_EXPORT void paragraphStyle_setMaxLines(Skwasm::ParagraphStyle* style,
size_t max_lines) {
style->skia_paragraph_style.setMaxLines(max_lines);
}
SKWASM_EXPORT void paragraphStyle_setHeight(Skwasm::ParagraphStyle* style,
SkScalar height) {
style->skia_paragraph_style.setHeight(height);
}
SKWASM_EXPORT void paragraphStyle_setTextHeightBehavior(
Skwasm::ParagraphStyle* style,
bool apply_height_to_first_ascent,
bool apply_height_to_last_descent) {
skia::textlayout::TextHeightBehavior behavior;
if (!apply_height_to_first_ascent && !apply_height_to_last_descent) {
behavior = skia::textlayout::kDisableAll;
} else if (!apply_height_to_last_descent) {
behavior = skia::textlayout::kDisableLastDescent;
} else if (!apply_height_to_first_ascent) {
behavior = skia::textlayout::kDisableFirstAscent;
} else {
behavior = skia::textlayout::kAll;
}
style->skia_paragraph_style.setTextHeightBehavior(behavior);
}
SKWASM_EXPORT void paragraphStyle_setEllipsis(Skwasm::ParagraphStyle* style,
SkString* ellipsis) {
style->skia_paragraph_style.setEllipsis(*ellipsis);
}
SKWASM_EXPORT void paragraphStyle_setStrutStyle(
Skwasm::ParagraphStyle* style,
skia::textlayout::StrutStyle* strut_style) {
style->skia_paragraph_style.setStrutStyle(*strut_style);
}
SKWASM_EXPORT void paragraphStyle_setTextStyle(Skwasm::ParagraphStyle* style,
Skwasm::TextStyle* text_style) {
style->text_style = *text_style;
}
SKWASM_EXPORT void paragraphStyle_setApplyRoundingHack(
Skwasm::ParagraphStyle* style,
bool apply_rounding_hack) {
style->skia_paragraph_style.setApplyRoundingHack(apply_rounding_hack);
}