commit | ab8b4ffd6d9aa280cffe1a3bfdcae97eaab70901 | [log] [tgz] |
---|---|---|
author | Bo Liu <boliu@chromium.org> | Tue Apr 25 22:09:07 2023 |
committer | Chromium LUCI CQ <chromium-scoped@luci-project-accounts.iam.gserviceaccount.com> | Tue Apr 25 22:09:07 2023 |
tree | 781e35805c1c0125f10354af2060128b8a6314c9 | |
parent | 0dec3131dcadb0055c6160ecddf6f8a0f827b29f [diff] |
slim: Implement rounded corner The implementation is not entirely based on cc as cc's implementation has bugs. The RRectF (in MaskFilterInfo) is on the SharedQuadState is in target space. Setting a non-empty rounded corner also clips the subtree to the layer; this is implemented exactly as if MaskToBounds is set. There are 2 cases where a new render pass is needed: * The layer is not axis aligned. For similar reason as clip, RRectF stores an axis aligned rect. There is no special handling added since MaskToBounds implementation already creates new pass for this case. * Parent layer already has a rounded corner. In this case, the child layer is draw to the new pass with its rounded corner, and the RenderPassDrawQuad draws with the parent rounded corner. Observed difference from cc: * Slim always sets fast rounded corner. * Slim supports rotating rounded corner. cc appears to just break rounded corner with rotation. * No need to create new pass if there is only one (axis-aligned) rounded corner layer on the path to root. Any number of children of the that layer can use the same RRectF (in MaskFilterInfo), since it is target space. There is no need for additional render pass. Bug: 1399283 Change-Id: I24a31c6424c1108b7da92edf2ec26a8f72d2315b Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4457397 Commit-Queue: Bo Liu <boliu@chromium.org> Reviewed-by: Kyle Charbonneau <kylechar@chromium.org> Code-Coverage: Findit <findit-for-me@appspot.gserviceaccount.com> Cr-Commit-Position: refs/heads/main@{#1135574}
Chromium is an open-source browser project that aims to build a safer, faster, and more stable way for all users to experience the web.
The project's web site is https://www.chromium.org.
To check out the source code locally, don't use git clone
! Instead, follow the instructions on how to get the code.
Documentation in the source is rooted in docs/README.md.
Learn how to Get Around the Chromium Source Code Directory Structure .
For historical reasons, there are some small top level directories. Now the guidance is that new top level directories are for product (e.g. Chrome, Android WebView, Ash). Even if these products have multiple executables, the code should be in subdirectories of the product.
If you found a bug, please file it at https://crbug.com/new.