这是indexloc提供的服务,不要输入任何密码
Skip to content

[dart:ui] Add Path.addRSuperellipse #166045

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

Merged
merged 15 commits into from
Apr 2, 2025
Merged

Conversation

dkwingsmt
Copy link
Contributor

@dkwingsmt dkwingsmt commented Mar 27, 2025

This PR adds Path.addRSuperellipse to dart:ui. This is needed to implement a parity class to RoundedRectangleBorder as discussed here.

Obsolete description, no longer applicable I want to reuse the existing algorithm created for impeller stroking. The existing algorithm is moved from `path_builder.cc` to `round_superellipse_param.cc`, and a delegated is added so that the same algorithm can output for different path classes.

I'm not 100% sure this is the best way to implement this, but I've tried some methods in vain.

  • DlPathReceiver added in [DisplayList] DlPath supports generic path dispatching #164753 sounds like a similar concept as the delegate created in this PR. I tried to use that but not only are the methods private, they're neither in an accessible directory.
  • I also thought of converting an impeller Path to a skia path, but it seems that the impeller path isn't designed to be traversed.
  • Another possibility is that we refactor impeller stroking to be based on the triangles instead of path, a direction we agreed to eventually move toward, which allows avoiding code share at all. I've briefly read the code in StrokePathGeometry and have some ideas but also something uncertain, so I didn't choose this path for now.

Pre-launch Checklist

If you need help, consider asking for advice on the #hackers-new channel on Discord.

@flutter-dashboard
Copy link

It looks like this pull request may not have tests. Please make sure to add tests or get an explicit test exemption before merging.

If you are not sure if you need tests, consider this rule of thumb: the purpose of a test is to make sure someone doesn't accidentally revert the fix. Ask yourself, is there anything in your PR that you feel it is important we not accidentally revert back to how it was before your fix?

Reviewers: Read the Tree Hygiene page and make sure this patch meets those guidelines before LGTMing.If you believe this PR qualifies for a test exemption, contact "@test-exemption-reviewer" in the #hackers channel in Discord (don't just cc them here, they won't see it!). The test exemption team is a small volunteer group, so all reviewers should feel empowered to ask for tests, without delegating that responsibility entirely to the test exemption group.

@github-actions github-actions bot added engine flutter/engine repository. See also e: labels. e: impeller Impeller rendering backend issues and features requests labels Mar 27, 2025
@dkwingsmt dkwingsmt marked this pull request as draft March 27, 2025 06:33
@flutter-dashboard
Copy link

This pull request has been changed to a draft. The currently pending flutter-gold status will not be able to resolve until a new commit is pushed or the change is marked ready for review again.

For more guidance, visit Writing a golden file test for package:flutter.

Reviewers: Read the Tree Hygiene page and make sure this patch meets those guidelines before LGTMing.

@dkwingsmt dkwingsmt marked this pull request as ready for review March 27, 2025 06:48
@dkwingsmt dkwingsmt requested a review from jonahwilliams March 27, 2025 06:48
@jonahwilliams jonahwilliams requested a review from flar March 27, 2025 20:17
Copy link
Contributor

@jonahwilliams jonahwilliams left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Rather than having two different recievers, I would do an RSE -> Path conversion during dispatching (always to a skia path).

You could also move the stroke conversion check there.

@dkwingsmt
Copy link
Contributor Author

@jonahwilliams I've made the change and it looks much cleaner. PTAL, thanks!

Copy link
Contributor

@flar flar left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just a cursory inspection, but I didn't see anything wrong here. Sending review as just a comment review.

Is web UI dealt with? I'm guessing it was modified in the original RSE change?

@dkwingsmt
Copy link
Contributor Author

dkwingsmt commented Mar 28, 2025

Yeah I need to handle web_ui (which will probably be notified by the Linux analyze check anyway), but in general the Web is not supporting RSuperellipse for now and falls back to RRect.

Edit: Web added.

@github-actions github-actions bot added the platform-web Web applications specifically label Mar 28, 2025
@dkwingsmt
Copy link
Contributor Author

I've met an obstacle for this approach: the DisplayListsWithVaryingOpComparisons test checks the operation size by summing up all operations, which implicitly assumes that the sizes of operations are independent of each other. However with this approach the size of drawRSuperellipse depends on the drawing style.

@jonahwilliams
Copy link
Contributor

I don't think we should abandon this approach because of that test.

@flar can you help adjust the test case?

@flar
Copy link
Contributor

flar commented Mar 28, 2025

Oh, interesting. Is there a reason we encode the path into the DisplayList buffer rather than do that on dispatch? At some point in the future we may not need to generate the path and that state will depend on the backend so doing it in the DisplayList recording process would be premature.

@dkwingsmt
Copy link
Contributor Author

Actually we no longer need to diverge at the display list level, since I'm now able to convert an impeller path to a skia path at the dart:ui level. I've created an alternative PR #166167 that uses this apporach.

@jonahwilliams
Copy link
Contributor

The reason we should do this during recording and not dispatch is to avoid doing repeated work. Any work done during dispatch is repeated on each frame, whereas work done during recording is reused as long as the picture is stable.

This optimization is the motivation for changes I'd like the make to DL for #155115

Another example is places where Impeller decides we need to convert a piece of geometry (like a RRect) to a Path.

@dkwingsmt
Copy link
Contributor Author

@jonahwilliams If we want to do such optimization, shouldn't we implement it to all shapes including all tessellation?

@jonahwilliams
Copy link
Contributor

No, because tessellation itself depends on the exact CTM which isn't known during recording.

@flar
Copy link
Contributor

flar commented Mar 28, 2025

As a workaround for now, the drawRSE could contain a DlPath which will be an empty path for fills and a completed path for strokes at the cost of basically a shared_ptr (the only contents and the size of a DlPath object).

@dkwingsmt dkwingsmt added the autosubmit Merge PR when tree becomes green via auto submit App label Apr 2, 2025
@auto-submit auto-submit bot added this pull request to the merge queue Apr 2, 2025
Merged via the queue into flutter:master with commit f2e0a2a Apr 2, 2025
174 checks passed
@flutter-dashboard flutter-dashboard bot removed the autosubmit Merge PR when tree becomes green via auto submit App label Apr 2, 2025
@dkwingsmt dkwingsmt deleted the rse-path branch April 2, 2025 22:53
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Apr 3, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Apr 3, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Apr 3, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Apr 3, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Apr 3, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Apr 3, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Apr 3, 2025
auto-submit bot pushed a commit to flutter/packages that referenced this pull request Apr 3, 2025
Roll Flutter from a0b1b32 to 02f13c3 (37 revisions)

flutter/flutter@a0b1b32...02f13c3

2025-04-03 engine-flutter-autoroll@skia.org Roll Packages from 07496eb to 4a36dc6 (3 revisions) (flutter/flutter#166542)
2025-04-03 engine-flutter-autoroll@skia.org Roll Skia from b67e53719e78 to 5f65df75febd (2 revisions) (flutter/flutter#166538)
2025-04-03 magder@google.com Update docs to debug the Android embedder (flutter/flutter#166170)
2025-04-03 engine-flutter-autoroll@skia.org Roll Dart SDK from 72562ca93bb5 to d174ec16c3ea (1 revision) (flutter/flutter#166525)
2025-04-03 matej.knopp@gmail.com [macOS] Implement merged UI and platform thread (flutter/flutter#162883)
2025-04-03 engine-flutter-autoroll@skia.org Roll Skia from f91412f5d89d to b67e53719e78 (1 revision) (flutter/flutter#166527)
2025-04-03 engine-flutter-autoroll@skia.org Roll Packages from 125c117 to 07496eb (31 revisions) (flutter/flutter#166457)
2025-04-03 engine-flutter-autoroll@skia.org Roll Skia from 2be12bc2668b to f91412f5d89d (2 revisions) (flutter/flutter#166517)
2025-04-03 engine-flutter-autoroll@skia.org Roll Dart SDK from 2a1a13cc3a91 to 72562ca93bb5 (2 revisions) (flutter/flutter#166514)
2025-04-03 dacoharkes@google.com [native_assets] Roll dependencies (flutter/flutter#166282)
2025-04-03 bruno.leroux@gmail.com Fix read only TextField focus traversal on macOS (flutter/flutter#166056)
2025-04-03 engine-flutter-autoroll@skia.org Roll Skia from c106d7831592 to 2be12bc2668b (1 revision) (flutter/flutter#166509)
2025-04-03 engine-flutter-autoroll@skia.org Roll Fuchsia Linux SDK from v7PGvypiiWLO8PbsZ... to vYisSsIgqw0mqFRVJ... (flutter/flutter#166508)
2025-04-03 engine-flutter-autoroll@skia.org Roll Dart SDK from b8b4076b1237 to 2a1a13cc3a91 (1 revision) (flutter/flutter#166504)
2025-04-03 engine-flutter-autoroll@skia.org Roll Skia from 75a0ec473181 to c106d7831592 (1 revision) (flutter/flutter#166499)
2025-04-03 34465683+rkishan516@users.noreply.github.com Migrate to Theme.brightnessOf method (flutter/flutter#163950)
2025-04-03 34465683+rkishan516@users.noreply.github.com Fix: Range slider show overlay for both thumbs on hovering one (flutter/flutter#165393)
2025-04-03 victorsanniay@gmail.com Deprecate ExpansionTileController (flutter/flutter#166368)
2025-04-03 kalathiyadimil@gmail.com Add styling parameters in `PopupMenuDivider` (flutter/flutter#164790)
2025-04-03 matanlurey@users.noreply.github.com Fix ISSUE_TEMPLATE Ordering: `10 < 9`, but `10 > 09` (flutter/flutter#166455)
2025-04-03 katelovett@google.com Skip flaking scheduler test (flutter/flutter#166471)
2025-04-02 137456488+flutter-pub-roller-bot@users.noreply.github.com Roll pub packages (flutter/flutter#166043)
2025-04-02 yjbanov@google.com [a11y] add SemanticsValidationResult (flutter/flutter#165935)
2025-04-02 58529443+srujzs@users.noreply.github.com Remove unnecessary cache busting mechanism in hot restart (flutter/flutter#166295)
2025-04-02 engine-flutter-autoroll@skia.org Roll Skia from 52cbb917fffd to 75a0ec473181 (21 revisions) (flutter/flutter#166484)
2025-04-02 30870216+gaaclarke@users.noreply.github.com Started pixel aligning hairlines (flutter/flutter#166351)
2025-04-02 47866232+chunhtai@users.noreply.github.com Adds semantics role and adjust semantics for navigation bar (flutter/flutter#162467)
2025-04-02 jacksongardner@google.com Reland "[skwasm] Dynamic Threading" (flutter/flutter#166454)
2025-04-02 dkwingsmt@users.noreply.github.com [dart:ui] Add `Path.addRSuperellipse` (flutter/flutter#166045)
2025-04-02 34465683+rkishan516@users.noreply.github.com Fix: Hero animation for page transition (flutter/flutter#164469)
2025-04-02 34465683+rkishan516@users.noreply.github.com Fix: DelegateTransition for cupertino sheet route (flutter/flutter#164675)
2025-04-02 engine-flutter-autoroll@skia.org Roll Fuchsia Test Scripts from AEdsljKmUiPk92Wvv... to FZdRtNwH7jmADecj6... (flutter/flutter#166383)
2025-04-02 jonahwilliams@google.com [Impeller] cache for text shadows. (flutter/flutter#166228)
2025-04-02 34871572+gmackall@users.noreply.github.com Convert `AppPluginLoaderPlugin` to Kotlin, and add `NativePluginLoaderReflectionBridge` to expose it in Kotlin (flutter/flutter#166027)
2025-04-02 engine-flutter-autoroll@skia.org Roll Dart SDK from 4e1f02bc704f to b8b4076b1237 (7 revisions) (flutter/flutter#166474)
2025-04-02 mit@google.com Update Roadmap (flutter/flutter#166332)
2025-04-02 matanlurey@users.noreply.github.com Update `CODEOWNERS` (flutter/flutter#166444)

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/flutter-packages
Please CC bmparr@google.com,stuartmorgan@google.com on the revert to ensure that a human
is aware of the problem.

To file a bug in Packages: https://github.com/flutter/flutter/issues/new/choose

...
CodixNinja pushed a commit to CodixNinja/packages that referenced this pull request May 15, 2025
Roll Flutter from a0b1b3253416 to 02f13c37841f (37 revisions)

flutter/flutter@a0b1b32...02f13c3

2025-04-03 engine-flutter-autoroll@skia.org Roll Packages from d10d5af to 95f8e65 (3 revisions) (flutter/flutter#166542)
2025-04-03 engine-flutter-autoroll@skia.org Roll Skia from b67e53719e78 to 5f65df75febd (2 revisions) (flutter/flutter#166538)
2025-04-03 magder@google.com Update docs to debug the Android embedder (flutter/flutter#166170)
2025-04-03 engine-flutter-autoroll@skia.org Roll Dart SDK from 72562ca93bb5 to d174ec16c3ea (1 revision) (flutter/flutter#166525)
2025-04-03 matej.knopp@gmail.com [macOS] Implement merged UI and platform thread (flutter/flutter#162883)
2025-04-03 engine-flutter-autoroll@skia.org Roll Skia from f91412f5d89d to b67e53719e78 (1 revision) (flutter/flutter#166527)
2025-04-03 engine-flutter-autoroll@skia.org Roll Packages from 0d5d57b to d10d5af (31 revisions) (flutter/flutter#166457)
2025-04-03 engine-flutter-autoroll@skia.org Roll Skia from 2be12bc2668b to f91412f5d89d (2 revisions) (flutter/flutter#166517)
2025-04-03 engine-flutter-autoroll@skia.org Roll Dart SDK from 2a1a13cc3a91 to 72562ca93bb5 (2 revisions) (flutter/flutter#166514)
2025-04-03 dacoharkes@google.com [native_assets] Roll dependencies (flutter/flutter#166282)
2025-04-03 bruno.leroux@gmail.com Fix read only TextField focus traversal on macOS (flutter/flutter#166056)
2025-04-03 engine-flutter-autoroll@skia.org Roll Skia from c106d7831592 to 2be12bc2668b (1 revision) (flutter/flutter#166509)
2025-04-03 engine-flutter-autoroll@skia.org Roll Fuchsia Linux SDK from v7PGvypiiWLO8PbsZ... to vYisSsIgqw0mqFRVJ... (flutter/flutter#166508)
2025-04-03 engine-flutter-autoroll@skia.org Roll Dart SDK from b8b4076b1237 to 2a1a13cc3a91 (1 revision) (flutter/flutter#166504)
2025-04-03 engine-flutter-autoroll@skia.org Roll Skia from 75a0ec473181 to c106d7831592 (1 revision) (flutter/flutter#166499)
2025-04-03 34465683+rkishan516@users.noreply.github.com Migrate to Theme.brightnessOf method (flutter/flutter#163950)
2025-04-03 34465683+rkishan516@users.noreply.github.com Fix: Range slider show overlay for both thumbs on hovering one (flutter/flutter#165393)
2025-04-03 victorsanniay@gmail.com Deprecate ExpansionTileController (flutter/flutter#166368)
2025-04-03 kalathiyadimil@gmail.com Add styling parameters in `PopupMenuDivider` (flutter/flutter#164790)
2025-04-03 matanlurey@users.noreply.github.com Fix ISSUE_TEMPLATE Ordering: `10 < 9`, but `10 > 09` (flutter/flutter#166455)
2025-04-03 katelovett@google.com Skip flaking scheduler test (flutter/flutter#166471)
2025-04-02 137456488+flutter-pub-roller-bot@users.noreply.github.com Roll pub packages (flutter/flutter#166043)
2025-04-02 yjbanov@google.com [a11y] add SemanticsValidationResult (flutter/flutter#165935)
2025-04-02 58529443+srujzs@users.noreply.github.com Remove unnecessary cache busting mechanism in hot restart (flutter/flutter#166295)
2025-04-02 engine-flutter-autoroll@skia.org Roll Skia from 52cbb917fffd to 75a0ec473181 (21 revisions) (flutter/flutter#166484)
2025-04-02 30870216+gaaclarke@users.noreply.github.com Started pixel aligning hairlines (flutter/flutter#166351)
2025-04-02 47866232+chunhtai@users.noreply.github.com Adds semantics role and adjust semantics for navigation bar (flutter/flutter#162467)
2025-04-02 jacksongardner@google.com Reland "[skwasm] Dynamic Threading" (flutter/flutter#166454)
2025-04-02 dkwingsmt@users.noreply.github.com [dart:ui] Add `Path.addRSuperellipse` (flutter/flutter#166045)
2025-04-02 34465683+rkishan516@users.noreply.github.com Fix: Hero animation for page transition (flutter/flutter#164469)
2025-04-02 34465683+rkishan516@users.noreply.github.com Fix: DelegateTransition for cupertino sheet route (flutter/flutter#164675)
2025-04-02 engine-flutter-autoroll@skia.org Roll Fuchsia Test Scripts from AEdsljKmUiPk92Wvv... to FZdRtNwH7jmADecj6... (flutter/flutter#166383)
2025-04-02 jonahwilliams@google.com [Impeller] cache for text shadows. (flutter/flutter#166228)
2025-04-02 34871572+gmackall@users.noreply.github.com Convert `AppPluginLoaderPlugin` to Kotlin, and add `NativePluginLoaderReflectionBridge` to expose it in Kotlin (flutter/flutter#166027)
2025-04-02 engine-flutter-autoroll@skia.org Roll Dart SDK from 4e1f02bc704f to b8b4076b1237 (7 revisions) (flutter/flutter#166474)
2025-04-02 mit@google.com Update Roadmap (flutter/flutter#166332)
2025-04-02 matanlurey@users.noreply.github.com Update `CODEOWNERS` (flutter/flutter#166444)

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/flutter-packages
Please CC bmparr@google.com,stuartmorgan@google.com on the revert to ensure that a human
is aware of the problem.

To file a bug in Packages: https://github.com/flutter/flutter/issues/new/choose

...
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request May 20, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request May 20, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request May 21, 2025
androidseb pushed a commit to androidseb/packages that referenced this pull request Jun 8, 2025
Roll Flutter from a0b1b32 to 02f13c3 (37 revisions)

flutter/flutter@a0b1b32...02f13c3

2025-04-03 engine-flutter-autoroll@skia.org Roll Packages from 07496eb to 4a36dc6 (3 revisions) (flutter/flutter#166542)
2025-04-03 engine-flutter-autoroll@skia.org Roll Skia from b67e53719e78 to 5f65df75febd (2 revisions) (flutter/flutter#166538)
2025-04-03 magder@google.com Update docs to debug the Android embedder (flutter/flutter#166170)
2025-04-03 engine-flutter-autoroll@skia.org Roll Dart SDK from 72562ca93bb5 to d174ec16c3ea (1 revision) (flutter/flutter#166525)
2025-04-03 matej.knopp@gmail.com [macOS] Implement merged UI and platform thread (flutter/flutter#162883)
2025-04-03 engine-flutter-autoroll@skia.org Roll Skia from f91412f5d89d to b67e53719e78 (1 revision) (flutter/flutter#166527)
2025-04-03 engine-flutter-autoroll@skia.org Roll Packages from 125c117 to 07496eb (31 revisions) (flutter/flutter#166457)
2025-04-03 engine-flutter-autoroll@skia.org Roll Skia from 2be12bc2668b to f91412f5d89d (2 revisions) (flutter/flutter#166517)
2025-04-03 engine-flutter-autoroll@skia.org Roll Dart SDK from 2a1a13cc3a91 to 72562ca93bb5 (2 revisions) (flutter/flutter#166514)
2025-04-03 dacoharkes@google.com [native_assets] Roll dependencies (flutter/flutter#166282)
2025-04-03 bruno.leroux@gmail.com Fix read only TextField focus traversal on macOS (flutter/flutter#166056)
2025-04-03 engine-flutter-autoroll@skia.org Roll Skia from c106d7831592 to 2be12bc2668b (1 revision) (flutter/flutter#166509)
2025-04-03 engine-flutter-autoroll@skia.org Roll Fuchsia Linux SDK from v7PGvypiiWLO8PbsZ... to vYisSsIgqw0mqFRVJ... (flutter/flutter#166508)
2025-04-03 engine-flutter-autoroll@skia.org Roll Dart SDK from b8b4076b1237 to 2a1a13cc3a91 (1 revision) (flutter/flutter#166504)
2025-04-03 engine-flutter-autoroll@skia.org Roll Skia from 75a0ec473181 to c106d7831592 (1 revision) (flutter/flutter#166499)
2025-04-03 34465683+rkishan516@users.noreply.github.com Migrate to Theme.brightnessOf method (flutter/flutter#163950)
2025-04-03 34465683+rkishan516@users.noreply.github.com Fix: Range slider show overlay for both thumbs on hovering one (flutter/flutter#165393)
2025-04-03 victorsanniay@gmail.com Deprecate ExpansionTileController (flutter/flutter#166368)
2025-04-03 kalathiyadimil@gmail.com Add styling parameters in `PopupMenuDivider` (flutter/flutter#164790)
2025-04-03 matanlurey@users.noreply.github.com Fix ISSUE_TEMPLATE Ordering: `10 < 9`, but `10 > 09` (flutter/flutter#166455)
2025-04-03 katelovett@google.com Skip flaking scheduler test (flutter/flutter#166471)
2025-04-02 137456488+flutter-pub-roller-bot@users.noreply.github.com Roll pub packages (flutter/flutter#166043)
2025-04-02 yjbanov@google.com [a11y] add SemanticsValidationResult (flutter/flutter#165935)
2025-04-02 58529443+srujzs@users.noreply.github.com Remove unnecessary cache busting mechanism in hot restart (flutter/flutter#166295)
2025-04-02 engine-flutter-autoroll@skia.org Roll Skia from 52cbb917fffd to 75a0ec473181 (21 revisions) (flutter/flutter#166484)
2025-04-02 30870216+gaaclarke@users.noreply.github.com Started pixel aligning hairlines (flutter/flutter#166351)
2025-04-02 47866232+chunhtai@users.noreply.github.com Adds semantics role and adjust semantics for navigation bar (flutter/flutter#162467)
2025-04-02 jacksongardner@google.com Reland "[skwasm] Dynamic Threading" (flutter/flutter#166454)
2025-04-02 dkwingsmt@users.noreply.github.com [dart:ui] Add `Path.addRSuperellipse` (flutter/flutter#166045)
2025-04-02 34465683+rkishan516@users.noreply.github.com Fix: Hero animation for page transition (flutter/flutter#164469)
2025-04-02 34465683+rkishan516@users.noreply.github.com Fix: DelegateTransition for cupertino sheet route (flutter/flutter#164675)
2025-04-02 engine-flutter-autoroll@skia.org Roll Fuchsia Test Scripts from AEdsljKmUiPk92Wvv... to FZdRtNwH7jmADecj6... (flutter/flutter#166383)
2025-04-02 jonahwilliams@google.com [Impeller] cache for text shadows. (flutter/flutter#166228)
2025-04-02 34871572+gmackall@users.noreply.github.com Convert `AppPluginLoaderPlugin` to Kotlin, and add `NativePluginLoaderReflectionBridge` to expose it in Kotlin (flutter/flutter#166027)
2025-04-02 engine-flutter-autoroll@skia.org Roll Dart SDK from 4e1f02bc704f to b8b4076b1237 (7 revisions) (flutter/flutter#166474)
2025-04-02 mit@google.com Update Roadmap (flutter/flutter#166332)
2025-04-02 matanlurey@users.noreply.github.com Update `CODEOWNERS` (flutter/flutter#166444)

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/flutter-packages
Please CC bmparr@google.com,stuartmorgan@google.com on the revert to ensure that a human
is aware of the problem.

To file a bug in Packages: https://github.com/flutter/flutter/issues/new/choose

...
zhangyuang pushed a commit to zhangyuang/flutter-fork that referenced this pull request Jun 9, 2025
This PR adds `Path.addRSuperellipse` to `dart:ui`. This is needed to
implement a parity class to `RoundedRectangleBorder` as discussed
[here](flutter#164857 (comment)).

<details>
<summary>
Obsolete description, no longer applicable
</summary>
I want to reuse the existing algorithm created for impeller stroking.
The existing algorithm is moved from `path_builder.cc` to
`round_superellipse_param.cc`, and a delegated is added so that the same
algorithm can output for different path classes.

I'm not 100% sure this is _the_ best way to implement this, but I've
tried some methods in vain.
* `DlPathReceiver` added in
flutter#164753 sounds like a similar
concept as the delegate created in this PR. I tried to use that but not
only are the methods private, they're neither in an accessible
directory.
* I also thought of converting an impeller `Path` to a skia path, but it
seems that the impeller path isn't designed to be traversed.
* Another possibility is that we refactor impeller stroking to be based
on the triangles instead of path, a direction we agreed to eventually
move toward, which allows avoiding code share at all. I've briefly read
the code in `StrokePathGeometry` and have some ideas but also something
uncertain, so I didn't choose this path for now.
</details>

## Pre-launch Checklist

- [ ] I read the [Contributor Guide] and followed the process outlined
there for submitting PRs.
- [ ] I read the [Tree Hygiene] wiki page, which explains my
responsibilities.
- [ ] I read and followed the [Flutter Style Guide], including [Features
we expect every widget to implement].
- [ ] I signed the [CLA].
- [ ] I listed at least one issue that this PR fixes in the description
above.
- [ ] I updated/added relevant documentation (doc comments with `///`).
- [ ] I added new tests to check the change I am making, or this PR is
[test-exempt].
- [ ] I followed the [breaking change policy] and added [Data Driven
Fixes] where supported.
- [ ] All existing and new tests are passing.

If you need help, consider asking for advice on the #hackers-new channel
on [Discord].

<!-- Links -->
[Contributor Guide]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview
[Tree Hygiene]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md
[test-exempt]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#tests
[Flutter Style Guide]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md
[Features we expect every widget to implement]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#features-we-expect-every-widget-to-implement
[CLA]: https://cla.developers.google.com/
[flutter/tests]: https://github.com/flutter/tests
[breaking change policy]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes
[Discord]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Chat.md
[Data Driven Fixes]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Data-driven-Fixes.md
FMorschel pushed a commit to FMorschel/packages that referenced this pull request Jun 9, 2025
Roll Flutter from a0b1b32 to 02f13c3 (37 revisions)

flutter/flutter@a0b1b32...02f13c3

2025-04-03 engine-flutter-autoroll@skia.org Roll Packages from 07496eb to 4a36dc6 (3 revisions) (flutter/flutter#166542)
2025-04-03 engine-flutter-autoroll@skia.org Roll Skia from b67e53719e78 to 5f65df75febd (2 revisions) (flutter/flutter#166538)
2025-04-03 magder@google.com Update docs to debug the Android embedder (flutter/flutter#166170)
2025-04-03 engine-flutter-autoroll@skia.org Roll Dart SDK from 72562ca93bb5 to d174ec16c3ea (1 revision) (flutter/flutter#166525)
2025-04-03 matej.knopp@gmail.com [macOS] Implement merged UI and platform thread (flutter/flutter#162883)
2025-04-03 engine-flutter-autoroll@skia.org Roll Skia from f91412f5d89d to b67e53719e78 (1 revision) (flutter/flutter#166527)
2025-04-03 engine-flutter-autoroll@skia.org Roll Packages from 125c117 to 07496eb (31 revisions) (flutter/flutter#166457)
2025-04-03 engine-flutter-autoroll@skia.org Roll Skia from 2be12bc2668b to f91412f5d89d (2 revisions) (flutter/flutter#166517)
2025-04-03 engine-flutter-autoroll@skia.org Roll Dart SDK from 2a1a13cc3a91 to 72562ca93bb5 (2 revisions) (flutter/flutter#166514)
2025-04-03 dacoharkes@google.com [native_assets] Roll dependencies (flutter/flutter#166282)
2025-04-03 bruno.leroux@gmail.com Fix read only TextField focus traversal on macOS (flutter/flutter#166056)
2025-04-03 engine-flutter-autoroll@skia.org Roll Skia from c106d7831592 to 2be12bc2668b (1 revision) (flutter/flutter#166509)
2025-04-03 engine-flutter-autoroll@skia.org Roll Fuchsia Linux SDK from v7PGvypiiWLO8PbsZ... to vYisSsIgqw0mqFRVJ... (flutter/flutter#166508)
2025-04-03 engine-flutter-autoroll@skia.org Roll Dart SDK from b8b4076b1237 to 2a1a13cc3a91 (1 revision) (flutter/flutter#166504)
2025-04-03 engine-flutter-autoroll@skia.org Roll Skia from 75a0ec473181 to c106d7831592 (1 revision) (flutter/flutter#166499)
2025-04-03 34465683+rkishan516@users.noreply.github.com Migrate to Theme.brightnessOf method (flutter/flutter#163950)
2025-04-03 34465683+rkishan516@users.noreply.github.com Fix: Range slider show overlay for both thumbs on hovering one (flutter/flutter#165393)
2025-04-03 victorsanniay@gmail.com Deprecate ExpansionTileController (flutter/flutter#166368)
2025-04-03 kalathiyadimil@gmail.com Add styling parameters in `PopupMenuDivider` (flutter/flutter#164790)
2025-04-03 matanlurey@users.noreply.github.com Fix ISSUE_TEMPLATE Ordering: `10 < 9`, but `10 > 09` (flutter/flutter#166455)
2025-04-03 katelovett@google.com Skip flaking scheduler test (flutter/flutter#166471)
2025-04-02 137456488+flutter-pub-roller-bot@users.noreply.github.com Roll pub packages (flutter/flutter#166043)
2025-04-02 yjbanov@google.com [a11y] add SemanticsValidationResult (flutter/flutter#165935)
2025-04-02 58529443+srujzs@users.noreply.github.com Remove unnecessary cache busting mechanism in hot restart (flutter/flutter#166295)
2025-04-02 engine-flutter-autoroll@skia.org Roll Skia from 52cbb917fffd to 75a0ec473181 (21 revisions) (flutter/flutter#166484)
2025-04-02 30870216+gaaclarke@users.noreply.github.com Started pixel aligning hairlines (flutter/flutter#166351)
2025-04-02 47866232+chunhtai@users.noreply.github.com Adds semantics role and adjust semantics for navigation bar (flutter/flutter#162467)
2025-04-02 jacksongardner@google.com Reland "[skwasm] Dynamic Threading" (flutter/flutter#166454)
2025-04-02 dkwingsmt@users.noreply.github.com [dart:ui] Add `Path.addRSuperellipse` (flutter/flutter#166045)
2025-04-02 34465683+rkishan516@users.noreply.github.com Fix: Hero animation for page transition (flutter/flutter#164469)
2025-04-02 34465683+rkishan516@users.noreply.github.com Fix: DelegateTransition for cupertino sheet route (flutter/flutter#164675)
2025-04-02 engine-flutter-autoroll@skia.org Roll Fuchsia Test Scripts from AEdsljKmUiPk92Wvv... to FZdRtNwH7jmADecj6... (flutter/flutter#166383)
2025-04-02 jonahwilliams@google.com [Impeller] cache for text shadows. (flutter/flutter#166228)
2025-04-02 34871572+gmackall@users.noreply.github.com Convert `AppPluginLoaderPlugin` to Kotlin, and add `NativePluginLoaderReflectionBridge` to expose it in Kotlin (flutter/flutter#166027)
2025-04-02 engine-flutter-autoroll@skia.org Roll Dart SDK from 4e1f02bc704f to b8b4076b1237 (7 revisions) (flutter/flutter#166474)
2025-04-02 mit@google.com Update Roadmap (flutter/flutter#166332)
2025-04-02 matanlurey@users.noreply.github.com Update `CODEOWNERS` (flutter/flutter#166444)

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/flutter-packages
Please CC bmparr@google.com,stuartmorgan@google.com on the revert to ensure that a human
is aware of the problem.

To file a bug in Packages: https://github.com/flutter/flutter/issues/new/choose

...
Ortes pushed a commit to Ortes/packages that referenced this pull request Jun 25, 2025
Roll Flutter from a0b1b32 to 02f13c3 (37 revisions)

flutter/flutter@a0b1b32...02f13c3

2025-04-03 engine-flutter-autoroll@skia.org Roll Packages from 07496eb to 4a36dc6 (3 revisions) (flutter/flutter#166542)
2025-04-03 engine-flutter-autoroll@skia.org Roll Skia from b67e53719e78 to 5f65df75febd (2 revisions) (flutter/flutter#166538)
2025-04-03 magder@google.com Update docs to debug the Android embedder (flutter/flutter#166170)
2025-04-03 engine-flutter-autoroll@skia.org Roll Dart SDK from 72562ca93bb5 to d174ec16c3ea (1 revision) (flutter/flutter#166525)
2025-04-03 matej.knopp@gmail.com [macOS] Implement merged UI and platform thread (flutter/flutter#162883)
2025-04-03 engine-flutter-autoroll@skia.org Roll Skia from f91412f5d89d to b67e53719e78 (1 revision) (flutter/flutter#166527)
2025-04-03 engine-flutter-autoroll@skia.org Roll Packages from 125c117 to 07496eb (31 revisions) (flutter/flutter#166457)
2025-04-03 engine-flutter-autoroll@skia.org Roll Skia from 2be12bc2668b to f91412f5d89d (2 revisions) (flutter/flutter#166517)
2025-04-03 engine-flutter-autoroll@skia.org Roll Dart SDK from 2a1a13cc3a91 to 72562ca93bb5 (2 revisions) (flutter/flutter#166514)
2025-04-03 dacoharkes@google.com [native_assets] Roll dependencies (flutter/flutter#166282)
2025-04-03 bruno.leroux@gmail.com Fix read only TextField focus traversal on macOS (flutter/flutter#166056)
2025-04-03 engine-flutter-autoroll@skia.org Roll Skia from c106d7831592 to 2be12bc2668b (1 revision) (flutter/flutter#166509)
2025-04-03 engine-flutter-autoroll@skia.org Roll Fuchsia Linux SDK from v7PGvypiiWLO8PbsZ... to vYisSsIgqw0mqFRVJ... (flutter/flutter#166508)
2025-04-03 engine-flutter-autoroll@skia.org Roll Dart SDK from b8b4076b1237 to 2a1a13cc3a91 (1 revision) (flutter/flutter#166504)
2025-04-03 engine-flutter-autoroll@skia.org Roll Skia from 75a0ec473181 to c106d7831592 (1 revision) (flutter/flutter#166499)
2025-04-03 34465683+rkishan516@users.noreply.github.com Migrate to Theme.brightnessOf method (flutter/flutter#163950)
2025-04-03 34465683+rkishan516@users.noreply.github.com Fix: Range slider show overlay for both thumbs on hovering one (flutter/flutter#165393)
2025-04-03 victorsanniay@gmail.com Deprecate ExpansionTileController (flutter/flutter#166368)
2025-04-03 kalathiyadimil@gmail.com Add styling parameters in `PopupMenuDivider` (flutter/flutter#164790)
2025-04-03 matanlurey@users.noreply.github.com Fix ISSUE_TEMPLATE Ordering: `10 < 9`, but `10 > 09` (flutter/flutter#166455)
2025-04-03 katelovett@google.com Skip flaking scheduler test (flutter/flutter#166471)
2025-04-02 137456488+flutter-pub-roller-bot@users.noreply.github.com Roll pub packages (flutter/flutter#166043)
2025-04-02 yjbanov@google.com [a11y] add SemanticsValidationResult (flutter/flutter#165935)
2025-04-02 58529443+srujzs@users.noreply.github.com Remove unnecessary cache busting mechanism in hot restart (flutter/flutter#166295)
2025-04-02 engine-flutter-autoroll@skia.org Roll Skia from 52cbb917fffd to 75a0ec473181 (21 revisions) (flutter/flutter#166484)
2025-04-02 30870216+gaaclarke@users.noreply.github.com Started pixel aligning hairlines (flutter/flutter#166351)
2025-04-02 47866232+chunhtai@users.noreply.github.com Adds semantics role and adjust semantics for navigation bar (flutter/flutter#162467)
2025-04-02 jacksongardner@google.com Reland "[skwasm] Dynamic Threading" (flutter/flutter#166454)
2025-04-02 dkwingsmt@users.noreply.github.com [dart:ui] Add `Path.addRSuperellipse` (flutter/flutter#166045)
2025-04-02 34465683+rkishan516@users.noreply.github.com Fix: Hero animation for page transition (flutter/flutter#164469)
2025-04-02 34465683+rkishan516@users.noreply.github.com Fix: DelegateTransition for cupertino sheet route (flutter/flutter#164675)
2025-04-02 engine-flutter-autoroll@skia.org Roll Fuchsia Test Scripts from AEdsljKmUiPk92Wvv... to FZdRtNwH7jmADecj6... (flutter/flutter#166383)
2025-04-02 jonahwilliams@google.com [Impeller] cache for text shadows. (flutter/flutter#166228)
2025-04-02 34871572+gmackall@users.noreply.github.com Convert `AppPluginLoaderPlugin` to Kotlin, and add `NativePluginLoaderReflectionBridge` to expose it in Kotlin (flutter/flutter#166027)
2025-04-02 engine-flutter-autoroll@skia.org Roll Dart SDK from 4e1f02bc704f to b8b4076b1237 (7 revisions) (flutter/flutter#166474)
2025-04-02 mit@google.com Update Roadmap (flutter/flutter#166332)
2025-04-02 matanlurey@users.noreply.github.com Update `CODEOWNERS` (flutter/flutter#166444)

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/flutter-packages
Please CC bmparr@google.com,stuartmorgan@google.com on the revert to ensure that a human
is aware of the problem.

To file a bug in Packages: https://github.com/flutter/flutter/issues/new/choose

...
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
e: impeller Impeller rendering backend issues and features requests engine flutter/engine repository. See also e: labels. platform-web Web applications specifically
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants