Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Minimal integration with the Skia text shaper module #9556

Merged
merged 1 commit into from Jul 10, 2019

Conversation

@jason-simmons
Copy link
Contributor

commented Jun 27, 2019

This converts the libtxt Paragraph and ParagraphBuilder classes into
interfaces with Minikin and SkShaper/SkParagraph based implementations.

Use the --enable-skshaper GN flag to select the Skia shaper implementation
at build time.

@googlebot googlebot added the cla: yes label Jun 27, 2019
@jason-simmons jason-simmons requested a review from GaryQian Jun 27, 2019
@jason-simmons jason-simmons force-pushed the jason-simmons:exp_skparagraph branch from a2b82bf to 05474be Jun 27, 2019
lib/ui/text/paragraph_builder.cc Show resolved Hide resolved
SkFontStyle MakeSkFontStyle(txt::FontWeight font_weight,
txt::FontStyle font_style) {
return SkFontStyle(static_cast<SkFontStyle::Weight>(
static_cast<int>(font_weight) * 100 + 100),

This comment has been minimized.

Copy link
@gaaclarke

gaaclarke Jun 27, 2019

Contributor

I'd pull out the magic numbers into named variables to better document them.

This comment has been minimized.

Copy link
@jason-simmons

jason-simmons Jun 28, 2019

Author Contributor

Added a comment about this

text_style.setLocale(SkString(txt.locale.c_str()));
skia.setTextStyle(text_style);

// TODO: strut

This comment has been minimized.

Copy link
@gaaclarke

gaaclarke Jun 27, 2019

Contributor

Shouldn't the TODO comment be a full sentence?

This comment has been minimized.

Copy link
@jason-simmons

jason-simmons Jun 28, 2019

Author Contributor

removed this


// TODO: break strategy?...

// This is something flutter expect us to do

This comment has been minimized.

Copy link
@gaaclarke

gaaclarke Jun 27, 2019

Contributor

grammar

This comment has been minimized.

Copy link
@jason-simmons

jason-simmons Jun 28, 2019

Author Contributor

Removed this (these lines originated from a work in progress branch developed by the Skia team)

}

void ParagraphBuilderSkia::AddPlaceholder(PlaceholderRun& span) {
// TODO: implement

This comment has been minimized.

Copy link
@gaaclarke

gaaclarke Jun 27, 2019

Contributor

Should we have an assert(false) or log statement in the meantime?

This comment has been minimized.

Copy link
@jason-simmons

jason-simmons Jun 28, 2019

Author Contributor

done


namespace txt {

class ParagraphBuilderSkia : public ParagraphBuilder {

This comment has been minimized.

Copy link
@gaaclarke

gaaclarke Jun 27, 2019

Contributor

Add docstring please.

This comment has been minimized.

Copy link
@jason-simmons

jason-simmons Jun 28, 2019

Author Contributor

done

This comment has been minimized.

Copy link
@gaaclarke

gaaclarke Jun 28, 2019

Contributor

Looks good. Are we using Doxygen for this code? If you should use /// http://www.doxygen.nl/manual/docblocks.html

}

void ParagraphBuilderTxt::Pop() {
if (style_stack_.empty())

This comment has been minimized.

Copy link
@gaaclarke

gaaclarke Jun 27, 2019

Contributor

Google style requires curly braces. From the looks of our code that isn't the rules for chromium?

This comment has been minimized.

Copy link
@jason-simmons

jason-simmons Jun 28, 2019

Author Contributor

done

third_party/txt/tests/txt_test_utils.cc Show resolved Hide resolved
@jason-simmons jason-simmons force-pushed the jason-simmons:exp_skparagraph branch 2 times, most recently from ce2c9d0 to 7cbc036 Jun 28, 2019
@gaaclarke

This comment has been minimized.

Copy link
Contributor

commented Jun 28, 2019

LGTM from my read through. I'm not really familiar with the code, you might want someone else's opinion.


void SetFontCollection(std::shared_ptr<FontCollection> font_collection);
virtual double GetMaxWidth() = 0;

This comment has been minimized.

Copy link
@GaryQian

GaryQian Jun 28, 2019

Contributor

I would prefer if the documentation/comments regarding what each of these methods do exist in the interface definition. Without an implementation to directly back it up, these methods can quickly get ambiguous to people trying to learn this code.

Also, pointing out the existing implementations of this interface can be very helpful.

This comment has been minimized.

Copy link
@jason-simmons

jason-simmons Jun 28, 2019

Author Contributor

done

@@ -17,52 +17,14 @@
#ifndef LIB_TXT_SRC_PARAGRAPH_H_

This comment has been minimized.

Copy link
@GaryQian

GaryQian Jun 28, 2019

Contributor

Should the interface definitions still live in the src/txt directory? I can see arguments for both leaving it or moving it one layer up.

This comment has been minimized.

Copy link
@jason-simmons

jason-simmons Jun 28, 2019

Author Contributor

For now I'd like to keep this in src/txt. Most of the contents of src/txt (TextStyle, FontCollection, etc.) will be used in both the Minikin and SkShaper based code paths.

If the code layout becomes too confusing, then in a later change we can move the Minikin-specific classes (ParagraphTxt and ParagraphBuilderTxt, plus a few support classes like PaintRecord) out of src/txt

@jason-simmons jason-simmons force-pushed the jason-simmons:exp_skparagraph branch 2 times, most recently from e9b8ea7 to 372500b Jun 28, 2019
Copy link
Contributor

left a comment

LGTM!

@GaryQian

This comment has been minimized.

Copy link
Contributor

commented Jul 2, 2019

cc @Rusino

This converts the libtxt Paragraph and ParagraphBuilder classes into
interfaces with Minikin and SkShaper/SkParagraph based implementations.

Use the --enable-skshaper GN flag to select the Skia shaper implementation
at build time.
@jason-simmons jason-simmons force-pushed the jason-simmons:exp_skparagraph branch from 372500b to aa727ca Jul 10, 2019
@jason-simmons jason-simmons merged commit 2cd650d into flutter:master Jul 10, 2019
17 checks passed
17 checks passed
WIP Ready for review
Details
build_and_test_host Task Summary
Details
build_and_test_host
Details
build_and_test_host_profile Task Summary
Details
build_and_test_host_profile
Details
build_and_test_host_release Task Summary
Details
build_and_test_host_release
Details
build_android Task Summary
Details
build_android
Details
build_windows_debug Task Summary
Details
build_windows_debug
Details
build_windows_debug_unopt Task Summary
Details
build_windows_debug_unopt
Details
cla/google All necessary CLAs are signed
format_and_dart_test Task Summary
Details
format_and_dart_test
Details
luci-engine
Details
engine-flutter-autoroll added a commit to engine-flutter-autoroll/flutter that referenced this pull request Jul 11, 2019
engine-flutter-autoroll added a commit to engine-flutter-autoroll/flutter that referenced this pull request Jul 11, 2019
engine-flutter-autoroll added a commit to engine-flutter-autoroll/flutter that referenced this pull request Jul 11, 2019
engine-flutter-autoroll added a commit to engine-flutter-autoroll/flutter that referenced this pull request Jul 11, 2019
engine-flutter-autoroll added a commit to flutter/flutter that referenced this pull request Jul 11, 2019
flutter/engine@75387db...49445ce

git log 75387dbc147d1cee8164f5d61582eab8ba1e5058..49445ce4949bf0d28506a6b22e28b4264f624e5f --no-merges --oneline
49445ce49 FLEViewController/Engine API changes (flutter/engine#9750)
2a79462fd Add Fuchsia build CI presubmit steps (flutter/engine#9736)
67cebdb92 Roll fuchsia/sdk/core/linux-amd64 from KGmm_RIJoXS19zTm2crjM3RYpmp5Y03-fLUeVdylbTYC to ehWVT9QJbC-vFMM6SkkQM9HJ9oITFCws7FC9JnrFq2gC (flutter/engine#9765)
089c74084 Roll fuchsia/sdk/core/mac-amd64 from lCQWEeR_Ert7t_qAbMRycwrRyZC-dIprYPyPJzwPmg4C to EYnRdXFT9l-d8Qkz4zeTRXnqfV3KQzpQhoPs1r0-740C (flutter/engine#9759)
b22410ef6 Include SkParagraph headers only when the enable-skshaper flag is on (flutter/engine#9758)
2cd650d26 Minimal integration with the Skia text shaper module (flutter/engine#9556)
f775f5e4d Re-enable the Wuffs GIF decoder (flutter/engine#9466)
aca048236 Make all shell unit tests use the OpenGL rasterizer. (flutter/engine#9746)
bc57291ff Make FLEViewController&#39;s view an internal detail (flutter/engine#9741)
9776043ea Synchronize main thread and gpu thread for first render frame (flutter/engine#9506)
f600ae830 Use libc&#43;&#43; variant of string view and remove the FML variant. (flutter/engine#9737)
564f53f0a Revert &#34;Improve caching limits for Skia (#9503)&#34; (flutter/engine#9740)
b453d3c3d libtxt: fix reference counting of SkFontStyleSets held by font asset providers (flutter/engine#9561)
fa7627d17 Fix backspace crash on Chinese devices (flutter/engine#9734)
56885f79b Let pushColorFilter accept all types of ColorFilters (flutter/engine#9641)
6dccb21e6 Roll src/third_party/skia 96fdfe0fe88e..af4e7b6cf616 (1 commits) (flutter/engine#9735)
8511d9b47 Roll fuchsia/sdk/core/mac-amd64 from byM-kyxL4bemlTYNqhKUfJfZoIUrCSzS6XzsFr4n9-MC to lCQWEeR_Ert7t_qAbMRycwrRyZC-dIprYPyPJzwPmg4C (flutter/engine#9742)
b3bf0a182 Roll fuchsia/sdk/core/linux-amd64 from I2Qe1zxgckzIzMBTztvzeWYsDgcb9Fw-idSI16oIlx8C to KGmm_RIJoXS19zTm2crjM3RYpmp5Y03-fLUeVdylbTYC (flutter/engine#9743)
7e568232a Fix windows test by not attempting to open a directory as a file. (flutter/engine#9745)
6cf0d1350 Roll src/third_party/skia a3ffaabcc4f2..96fdfe0fe88e (5 commits) (flutter/engine#9731)
49a00aed8 Fix Fuchsia build. (flutter/engine#9730)
b3bb39b0b Roll src/third_party/dart 06c3d7ad3a...09fc76bc51 (flutter/engine#9728)
2284210f4 Make the license script compatible with recently changed Dart I/O stream APIs (flutter/engine#9725)
ad582b508 Rework image &amp; texture management to use concurrent message queues. (flutter/engine#9486)
1dcd5f52b Roll src/third_party/skia 6b82cf638682..a3ffaabcc4f2 (24 commits) (flutter/engine#9726)
129979cab Revert &#34;Roll src/third_party/dart 06c3d7ad3a..7acecda2cc (12 commits)&#34; (flutter/engine#9724)
8020d7e43 Roll src/third_party/skia 56065d9b875f..6b82cf638682 (3 commits) (flutter/engine#9718)
e24bd7846 Roll src/third_party/dart 06c3d7ad3a..7acecda2cc (12 commits)
3d2668c35 Reland isolate group changes
802bd1518 iOS platform view opacity (flutter/engine#9667)
3b6265b74 Roll src/third_party/dart b5aeaa6796..06c3d7ad3a (44 commits)
887e05233 Refactor ColorFilter to have a native wrapper (flutter/engine#9668)

The AutoRoll server is located here: https://autoroll.skia.org/r/flutter-engine-flutter-autoroll

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+/master/autoroll/README.md

If the roll is causing failures, please contact the current sheriff (garyq@google.com), and stop
the roller if necessary.
johnsonmh added a commit to johnsonmh/flutter that referenced this pull request Jul 30, 2019
flutter/engine@75387db...49445ce

git log 75387dbc147d1cee8164f5d61582eab8ba1e5058..49445ce4949bf0d28506a6b22e28b4264f624e5f --no-merges --oneline
49445ce49 FLEViewController/Engine API changes (flutter/engine#9750)
2a79462fd Add Fuchsia build CI presubmit steps (flutter/engine#9736)
67cebdb92 Roll fuchsia/sdk/core/linux-amd64 from KGmm_RIJoXS19zTm2crjM3RYpmp5Y03-fLUeVdylbTYC to ehWVT9QJbC-vFMM6SkkQM9HJ9oITFCws7FC9JnrFq2gC (flutter/engine#9765)
089c74084 Roll fuchsia/sdk/core/mac-amd64 from lCQWEeR_Ert7t_qAbMRycwrRyZC-dIprYPyPJzwPmg4C to EYnRdXFT9l-d8Qkz4zeTRXnqfV3KQzpQhoPs1r0-740C (flutter/engine#9759)
b22410ef6 Include SkParagraph headers only when the enable-skshaper flag is on (flutter/engine#9758)
2cd650d26 Minimal integration with the Skia text shaper module (flutter/engine#9556)
f775f5e4d Re-enable the Wuffs GIF decoder (flutter/engine#9466)
aca048236 Make all shell unit tests use the OpenGL rasterizer. (flutter/engine#9746)
bc57291ff Make FLEViewController&flutter#39;s view an internal detail (flutter/engine#9741)
9776043ea Synchronize main thread and gpu thread for first render frame (flutter/engine#9506)
f600ae830 Use libc&flutter#43;&flutter#43; variant of string view and remove the FML variant. (flutter/engine#9737)
564f53f0a Revert &flutter#34;Improve caching limits for Skia (flutter#9503)&flutter#34; (flutter/engine#9740)
b453d3c3d libtxt: fix reference counting of SkFontStyleSets held by font asset providers (flutter/engine#9561)
fa7627d17 Fix backspace crash on Chinese devices (flutter/engine#9734)
56885f79b Let pushColorFilter accept all types of ColorFilters (flutter/engine#9641)
6dccb21e6 Roll src/third_party/skia 96fdfe0fe88e..af4e7b6cf616 (1 commits) (flutter/engine#9735)
8511d9b47 Roll fuchsia/sdk/core/mac-amd64 from byM-kyxL4bemlTYNqhKUfJfZoIUrCSzS6XzsFr4n9-MC to lCQWEeR_Ert7t_qAbMRycwrRyZC-dIprYPyPJzwPmg4C (flutter/engine#9742)
b3bf0a182 Roll fuchsia/sdk/core/linux-amd64 from I2Qe1zxgckzIzMBTztvzeWYsDgcb9Fw-idSI16oIlx8C to KGmm_RIJoXS19zTm2crjM3RYpmp5Y03-fLUeVdylbTYC (flutter/engine#9743)
7e568232a Fix windows test by not attempting to open a directory as a file. (flutter/engine#9745)
6cf0d1350 Roll src/third_party/skia a3ffaabcc4f2..96fdfe0fe88e (5 commits) (flutter/engine#9731)
49a00aed8 Fix Fuchsia build. (flutter/engine#9730)
b3bb39b0b Roll src/third_party/dart 06c3d7ad3a...09fc76bc51 (flutter/engine#9728)
2284210f4 Make the license script compatible with recently changed Dart I/O stream APIs (flutter/engine#9725)
ad582b508 Rework image &amp; texture management to use concurrent message queues. (flutter/engine#9486)
1dcd5f52b Roll src/third_party/skia 6b82cf638682..a3ffaabcc4f2 (24 commits) (flutter/engine#9726)
129979cab Revert &flutter#34;Roll src/third_party/dart 06c3d7ad3a..7acecda2cc (12 commits)&flutter#34; (flutter/engine#9724)
8020d7e43 Roll src/third_party/skia 56065d9b875f..6b82cf638682 (3 commits) (flutter/engine#9718)
e24bd7846 Roll src/third_party/dart 06c3d7ad3a..7acecda2cc (12 commits)
3d2668c35 Reland isolate group changes
802bd1518 iOS platform view opacity (flutter/engine#9667)
3b6265b74 Roll src/third_party/dart b5aeaa6796..06c3d7ad3a (44 commits)
887e05233 Refactor ColorFilter to have a native wrapper (flutter/engine#9668)

The AutoRoll server is located here: https://autoroll.skia.org/r/flutter-engine-flutter-autoroll

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+/master/autoroll/README.md

If the roll is causing failures, please contact the current sheriff (garyq@google.com), and stop
the roller if necessary.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
4 participants
You can’t perform that action at this time.