-
Notifications
You must be signed in to change notification settings - Fork 6k
Minimal integration with the Skia text shaper module #9556
Conversation
a2b82bf to
05474be
Compare
| SkFontStyle MakeSkFontStyle(txt::FontWeight font_weight, | ||
| txt::FontStyle font_style) { | ||
| return SkFontStyle(static_cast<SkFontStyle::Weight>( | ||
| static_cast<int>(font_weight) * 100 + 100), |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'd pull out the magic numbers into named variables to better document them.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Added a comment about this
| text_style.setLocale(SkString(txt.locale.c_str())); | ||
| skia.setTextStyle(text_style); | ||
|
|
||
| // TODO: strut |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Shouldn't the TODO comment be a full sentence?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
removed this
|
|
||
| // TODO: break strategy?... | ||
|
|
||
| // This is something flutter expect us to do |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
grammar
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Removed this (these lines originated from a work in progress branch developed by the Skia team)
| } | ||
|
|
||
| void ParagraphBuilderSkia::AddPlaceholder(PlaceholderRun& span) { | ||
| // TODO: implement |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Should we have an assert(false) or log statement in the meantime?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
done
|
|
||
| namespace txt { | ||
|
|
||
| class ParagraphBuilderSkia : public ParagraphBuilder { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Add docstring please.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
done
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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()) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Google style requires curly braces. From the looks of our code that isn't the rules for chromium?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
done
ce2c9d0 to
7cbc036
Compare
|
LGTM from my read through. I'm not really familiar with the code, you might want someone else's opinion. |
| virtual ~Paragraph() = default; | ||
|
|
||
| void SetFontCollection(std::shared_ptr<FontCollection> font_collection); | ||
| virtual double GetMaxWidth() = 0; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
done
| * limitations under the License. | ||
| */ | ||
|
|
||
| #ifndef LIB_TXT_SRC_PARAGRAPH_H_ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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
e9b8ea7 to
372500b
Compare
GaryQian
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM!
|
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.
372500b to
aa727ca
Compare
flutter/engine@75387db...49445ce git log 75387db..49445ce --no-merges --oneline 49445ce FLEViewController/Engine API changes (flutter/engine#9750) 2a79462 Add Fuchsia build CI presubmit steps (flutter/engine#9736) 67cebdb Roll fuchsia/sdk/core/linux-amd64 from KGmm_RIJoXS19zTm2crjM3RYpmp5Y03-fLUeVdylbTYC to ehWVT9QJbC-vFMM6SkkQM9HJ9oITFCws7FC9JnrFq2gC (flutter/engine#9765) 089c740 Roll fuchsia/sdk/core/mac-amd64 from lCQWEeR_Ert7t_qAbMRycwrRyZC-dIprYPyPJzwPmg4C to EYnRdXFT9l-d8Qkz4zeTRXnqfV3KQzpQhoPs1r0-740C (flutter/engine#9759) b22410e Include SkParagraph headers only when the enable-skshaper flag is on (flutter/engine#9758) 2cd650d Minimal integration with the Skia text shaper module (flutter/engine#9556) f775f5e Re-enable the Wuffs GIF decoder (flutter/engine#9466) aca0482 Make all shell unit tests use the OpenGL rasterizer. (flutter/engine#9746) bc57291 Make FLEViewController's view an internal detail (flutter/engine#9741) 9776043 Synchronize main thread and gpu thread for first render frame (flutter/engine#9506) f600ae8 Use libc++ variant of string view and remove the FML variant. (flutter/engine#9737) 564f53f Revert "Improve caching limits for Skia (#9503)" (flutter/engine#9740) b453d3c libtxt: fix reference counting of SkFontStyleSets held by font asset providers (flutter/engine#9561) fa7627d Fix backspace crash on Chinese devices (flutter/engine#9734) 56885f7 Let pushColorFilter accept all types of ColorFilters (flutter/engine#9641) 6dccb21 Roll src/third_party/skia 96fdfe0fe88e..af4e7b6cf616 (1 commits) (flutter/engine#9735) 8511d9b Roll fuchsia/sdk/core/mac-amd64 from byM-kyxL4bemlTYNqhKUfJfZoIUrCSzS6XzsFr4n9-MC to lCQWEeR_Ert7t_qAbMRycwrRyZC-dIprYPyPJzwPmg4C (flutter/engine#9742) b3bf0a1 Roll fuchsia/sdk/core/linux-amd64 from I2Qe1zxgckzIzMBTztvzeWYsDgcb9Fw-idSI16oIlx8C to KGmm_RIJoXS19zTm2crjM3RYpmp5Y03-fLUeVdylbTYC (flutter/engine#9743) 7e56823 Fix windows test by not attempting to open a directory as a file. (flutter/engine#9745) 6cf0d13 Roll src/third_party/skia a3ffaabcc4f2..96fdfe0fe88e (5 commits) (flutter/engine#9731) 49a00ae Fix Fuchsia build. (flutter/engine#9730) b3bb39b Roll src/third_party/dart 06c3d7ad3a...09fc76bc51 (flutter/engine#9728) 2284210 Make the license script compatible with recently changed Dart I/O stream APIs (flutter/engine#9725) ad582b5 Rework image & texture management to use concurrent message queues. (flutter/engine#9486) 1dcd5f5 Roll src/third_party/skia 6b82cf638682..a3ffaabcc4f2 (24 commits) (flutter/engine#9726) 129979c Revert "Roll src/third_party/dart 06c3d7ad3a..7acecda2cc (12 commits)" (flutter/engine#9724) 8020d7e Roll src/third_party/skia 56065d9b875f..6b82cf638682 (3 commits) (flutter/engine#9718) e24bd78 Roll src/third_party/dart 06c3d7ad3a..7acecda2cc (12 commits) 3d2668c Reland isolate group changes 802bd15 iOS platform view opacity (flutter/engine#9667) 3b6265b Roll src/third_party/dart b5aeaa6796..06c3d7ad3a (44 commits) 887e052 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 ([email protected]), and stop the roller if necessary.
flutter/engine@75387db...49445ce git log 75387db..49445ce --no-merges --oneline 49445ce FLEViewController/Engine API changes (flutter/engine#9750) 2a79462 Add Fuchsia build CI presubmit steps (flutter/engine#9736) 67cebdb Roll fuchsia/sdk/core/linux-amd64 from KGmm_RIJoXS19zTm2crjM3RYpmp5Y03-fLUeVdylbTYC to ehWVT9QJbC-vFMM6SkkQM9HJ9oITFCws7FC9JnrFq2gC (flutter/engine#9765) 089c740 Roll fuchsia/sdk/core/mac-amd64 from lCQWEeR_Ert7t_qAbMRycwrRyZC-dIprYPyPJzwPmg4C to EYnRdXFT9l-d8Qkz4zeTRXnqfV3KQzpQhoPs1r0-740C (flutter/engine#9759) b22410e Include SkParagraph headers only when the enable-skshaper flag is on (flutter/engine#9758) 2cd650d Minimal integration with the Skia text shaper module (flutter/engine#9556) f775f5e Re-enable the Wuffs GIF decoder (flutter/engine#9466) aca0482 Make all shell unit tests use the OpenGL rasterizer. (flutter/engine#9746) bc57291 Make FLEViewController&flutter#39;s view an internal detail (flutter/engine#9741) 9776043 Synchronize main thread and gpu thread for first render frame (flutter/engine#9506) f600ae8 Use libc&flutter#43;&flutter#43; variant of string view and remove the FML variant. (flutter/engine#9737) 564f53f Revert &flutter#34;Improve caching limits for Skia (flutter#9503)&flutter#34; (flutter/engine#9740) b453d3c libtxt: fix reference counting of SkFontStyleSets held by font asset providers (flutter/engine#9561) fa7627d Fix backspace crash on Chinese devices (flutter/engine#9734) 56885f7 Let pushColorFilter accept all types of ColorFilters (flutter/engine#9641) 6dccb21 Roll src/third_party/skia 96fdfe0fe88e..af4e7b6cf616 (1 commits) (flutter/engine#9735) 8511d9b Roll fuchsia/sdk/core/mac-amd64 from byM-kyxL4bemlTYNqhKUfJfZoIUrCSzS6XzsFr4n9-MC to lCQWEeR_Ert7t_qAbMRycwrRyZC-dIprYPyPJzwPmg4C (flutter/engine#9742) b3bf0a1 Roll fuchsia/sdk/core/linux-amd64 from I2Qe1zxgckzIzMBTztvzeWYsDgcb9Fw-idSI16oIlx8C to KGmm_RIJoXS19zTm2crjM3RYpmp5Y03-fLUeVdylbTYC (flutter/engine#9743) 7e56823 Fix windows test by not attempting to open a directory as a file. (flutter/engine#9745) 6cf0d13 Roll src/third_party/skia a3ffaabcc4f2..96fdfe0fe88e (5 commits) (flutter/engine#9731) 49a00ae Fix Fuchsia build. (flutter/engine#9730) b3bb39b Roll src/third_party/dart 06c3d7ad3a...09fc76bc51 (flutter/engine#9728) 2284210 Make the license script compatible with recently changed Dart I/O stream APIs (flutter/engine#9725) ad582b5 Rework image & texture management to use concurrent message queues. (flutter/engine#9486) 1dcd5f5 Roll src/third_party/skia 6b82cf638682..a3ffaabcc4f2 (24 commits) (flutter/engine#9726) 129979c Revert &flutter#34;Roll src/third_party/dart 06c3d7ad3a..7acecda2cc (12 commits)&flutter#34; (flutter/engine#9724) 8020d7e Roll src/third_party/skia 56065d9b875f..6b82cf638682 (3 commits) (flutter/engine#9718) e24bd78 Roll src/third_party/dart 06c3d7ad3a..7acecda2cc (12 commits) 3d2668c Reland isolate group changes 802bd15 iOS platform view opacity (flutter/engine#9667) 3b6265b Roll src/third_party/dart b5aeaa6796..06c3d7ad3a (44 commits) 887e052 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 ([email protected]), and stop the roller if necessary.
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.