Tong Mu f5325bf597 [Impeller] Add rounded superellipse (flutter/engine#56726)
Support rounded superellipse.

Part of https://github.com/flutter/flutter/issues/139321 and
https://github.com/flutter/flutter/issues/13914, also related to
https://github.com/flutter/flutter/issues/91523.

### Open questions

* Alternative names:
  * Round**ed**Superellipse
  * Squircle
  * ContinuousBorderRectangle (or something like this...)
* I chose rounded superellipse because this name, albeit its length,
precisely describe this shape. "Squircle" is not strictly defined but
generally refers any shape intermediate between a rectangle and a
circle.
* Alternative definition for `corner_radius`:
* Currently the `corner_radius` corresponds to SwiftUI parameters. To
make the shape definition more generalized, we can instead define the
`corner_radius` to be the radius of the corner circles, and make the
framework do a look up table.
* The down side is, not only the work to re-calculate the table, but
also that it doesn't completely eliminates the relationship with
SwiftUI, since currently the degree of the superellipse (`n`) is also
mapped from the SwiftUI `cornerRadius`, which is not necessary for the
shape per se.
* To some extent it boils down to the question of whether we'd like this
shape to support anything beyond SwiftUI.

### Demo


https://github.com/user-attachments/assets/806ac0e9-d62f-4b04-ab6a-83436a11f6f3

Low ratio: (900, 900, 445)

<img width="520" alt="image"
src="https://github.com/user-attachments/assets/54087467-85cd-4021-91cc-a948866ab5a8">

Mid ratio: (900, 650, 180)

<img width="508" alt="image"
src="https://github.com/user-attachments/assets/460a4927-0396-462b-948d-0846a781c92c">

High ratio: (900, 650, 17)

<img width="490" alt="image"
src="https://github.com/user-attachments/assets/8d7f625d-8a3b-4aba-b3f9-f292b874b606">


## 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] and the [C++,
Objective-C, Java style guides].
- [ ] I listed at least one issue that this PR fixes in the description
above.
- [ ] I added new tests to check the change I am making or feature I am
adding, or the PR is [test-exempt]. See [testing the engine] for
instructions on writing and running engine tests.
- [ ] I updated/added relevant documentation (doc comments with `///`).
- [ ] I signed the [CLA].
- [ ] 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/wiki/Tree-hygiene#overview
[Tree Hygiene]: https://github.com/flutter/flutter/wiki/Tree-hygiene
[test-exempt]:
https://github.com/flutter/flutter/wiki/Tree-hygiene#tests
[Flutter Style Guide]:
https://github.com/flutter/flutter/wiki/Style-guide-for-Flutter-repo
[C++, Objective-C, Java style guides]:
https://github.com/flutter/engine/blob/main/CONTRIBUTING.md#style
[testing the engine]:
https://github.com/flutter/flutter/wiki/Testing-the-engine
[CLA]: https://cla.developers.google.com/
[flutter/tests]: https://github.com/flutter/tests
[breaking change policy]:
https://github.com/flutter/flutter/wiki/Tree-hygiene#handling-breaking-changes
[Discord]: https://github.com/flutter/flutter/wiki/Chat
2024-12-05 11:27:20 -08:00
Description
A vendored version of the flutter engine for firka :3
323 MiB
Languages
Dart 75.4%
C++ 16.4%
Objective-C++ 2.7%
Java 2.7%
Objective-C 0.6%
Other 1.8%