-
-
Notifications
You must be signed in to change notification settings - Fork 1.1k
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
fix: scaling when mask is set #2299
Conversation
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.
Please test it on many different examples since it changes the mask drawing logic. I also left some comments, please answer them. Looks good overall 🚀
I can confirm that all examples from these sites as well as a few random images found on the web are working as expected |
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 some more comments, looks good overall. If you feel like its ready after answering the comments, you can merge it 🚀
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 hope it works correctly now 🚀
# Summary Fixed regression introduced in #2299. Now `<Mask>` is rendering properly on MacOS. ## Test Plan * `Test1451` in `TestsExample` * Masking section in `example` https://github.com/software-mansion/react-native-svg/assets/39670088/dccc937d-125d-4b60-864b-cc3b9a4179fb ## Compatibility | OS | Implemented | | ------- | :---------: | | macOS | ✅ |
[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [react-native-svg](https://github.com/react-native-community/react-native-svg) | [`^15.3.0` -> `^15.4.0`](https://renovatebot.com/diffs/npm/react-native-svg/15.3.0/15.4.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/react-native-svg/15.4.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/react-native-svg/15.4.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/react-native-svg/15.3.0/15.4.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/react-native-svg/15.3.0/15.4.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes <details> <summary>react-native-community/react-native-svg (react-native-svg)</summary> ### [`v15.4.0`](https://github.com/software-mansion/react-native-svg/releases/tag/v15.4.0) [Compare Source](https://github.com/react-native-community/react-native-svg/compare/v15.3.0...v15.4.0) Introducing the long-awaited filters in react-native-svg! 🎉 This minor release includes the first filter, FeColorMatrix, along with numerous fixes and other improvements. #### What's Changed - fix: error when building paper after fabric by [@​maciekstosio](https://github.com/maciekstosio) in [https://github.com/software-mansion/react-native-svg/pull/2281](https://github.com/software-mansion/react-native-svg/pull/2281) - Handle error when pass wrong uri to SvgFromUri component by [@​bohdanprog](https://github.com/bohdanprog) in [https://github.com/software-mansion/react-native-svg/pull/2289](https://github.com/software-mansion/react-native-svg/pull/2289) - chore: TestsExample app fix reanimated and metro.config issues by [@​bohdanprog](https://github.com/bohdanprog) in [https://github.com/software-mansion/react-native-svg/pull/2291](https://github.com/software-mansion/react-native-svg/pull/2291) - chore: remove macos-build-test.yml by [@​bohdanprog](https://github.com/bohdanprog) in [https://github.com/software-mansion/react-native-svg/pull/2292](https://github.com/software-mansion/react-native-svg/pull/2292) - chore: add hire us section to readme by [@​kacperkapusciak](https://github.com/kacperkapusciak) in [https://github.com/software-mansion/react-native-svg/pull/2295](https://github.com/software-mansion/react-native-svg/pull/2295) - feat: github action close-when-stale by [@​bohdanprog](https://github.com/bohdanprog) in [https://github.com/software-mansion/react-native-svg/pull/2296](https://github.com/software-mansion/react-native-svg/pull/2296) - fixed pars on Android platform prop strokeDasharray by [@​bohdanprog](https://github.com/bohdanprog) in [https://github.com/software-mansion/react-native-svg/pull/2294](https://github.com/software-mansion/react-native-svg/pull/2294) - feat: add new bug issue template, and github actions by [@​bohdanprog](https://github.com/bohdanprog) in [https://github.com/software-mansion/react-native-svg/pull/2300](https://github.com/software-mansion/react-native-svg/pull/2300) - fix: issue template by [@​bohdanprog](https://github.com/bohdanprog) in [https://github.com/software-mansion/react-native-svg/pull/2301](https://github.com/software-mansion/react-native-svg/pull/2301) - fix: example app package.json file and yarn.lock by [@​bohdanprog](https://github.com/bohdanprog) in [https://github.com/software-mansion/react-native-svg/pull/2303](https://github.com/software-mansion/react-native-svg/pull/2303) - fix: handle onPress prop on web app by [@​bohdanprog](https://github.com/bohdanprog) in [https://github.com/software-mansion/react-native-svg/pull/2302](https://github.com/software-mansion/react-native-svg/pull/2302) - fix: android PathParser crash app if pass some wrong d prop by [@​bohdanprog](https://github.com/bohdanprog) in [https://github.com/software-mansion/react-native-svg/pull/2308](https://github.com/software-mansion/react-native-svg/pull/2308) - fix: scaling when mask is set by [@​jakex7](https://github.com/jakex7) in [https://github.com/software-mansion/react-native-svg/pull/2299](https://github.com/software-mansion/react-native-svg/pull/2299) - add onLoad prop to Image component by [@​bohdanprog](https://github.com/bohdanprog) in [https://github.com/software-mansion/react-native-svg/pull/2293](https://github.com/software-mansion/react-native-svg/pull/2293) - feat: update needs-more-info git workflow by [@​bohdanprog](https://github.com/bohdanprog) in [https://github.com/software-mansion/react-native-svg/pull/2314](https://github.com/software-mansion/react-native-svg/pull/2314) - fix: new arch invalidate on mount/unmount by [@​jakex7](https://github.com/jakex7) in [https://github.com/software-mansion/react-native-svg/pull/2318](https://github.com/software-mansion/react-native-svg/pull/2318) - Fix: image onLoad props by [@​bohdanprog](https://github.com/bohdanprog) in [https://github.com/software-mansion/react-native-svg/pull/2317](https://github.com/software-mansion/react-native-svg/pull/2317) - feat(windows): add support for 74 and bump Example by [@​marlenecota](https://github.com/marlenecota) in [https://github.com/software-mansion/react-native-svg/pull/2315](https://github.com/software-mansion/react-native-svg/pull/2315) - feat: add Example Windows build workflow by [@​marlenecota](https://github.com/marlenecota) in [https://github.com/software-mansion/react-native-svg/pull/2322](https://github.com/software-mansion/react-native-svg/pull/2322) - fix: add check in RNSVGImage for macos platform by [@​bohdanprog](https://github.com/bohdanprog) in [https://github.com/software-mansion/react-native-svg/pull/2324](https://github.com/software-mansion/react-native-svg/pull/2324) - Add correct invalidate calls to SvgView on ios with test by [@​Kicu](https://github.com/Kicu) in [https://github.com/software-mansion/react-native-svg/pull/2327](https://github.com/software-mansion/react-native-svg/pull/2327) - fix: extract opacity use percentage values by [@​jakex7](https://github.com/jakex7) in [https://github.com/software-mansion/react-native-svg/pull/2325](https://github.com/software-mansion/react-native-svg/pull/2325) - feat: change folders structure by [@​bohdanprog](https://github.com/bohdanprog) in [https://github.com/software-mansion/react-native-svg/pull/2319](https://github.com/software-mansion/react-native-svg/pull/2319) - Implement mask-type property by [@​SergeyYurkevich](https://github.com/SergeyYurkevich) in [https://github.com/software-mansion/react-native-svg/pull/2152](https://github.com/software-mansion/react-native-svg/pull/2152) - feat: extract web example by [@​bohdanprog](https://github.com/bohdanprog) in [https://github.com/software-mansion/react-native-svg/pull/2333](https://github.com/software-mansion/react-native-svg/pull/2333) - fix: macos mask by [@​jakex7](https://github.com/jakex7) in [https://github.com/software-mansion/react-native-svg/pull/2337](https://github.com/software-mansion/react-native-svg/pull/2337) - fix: fix format-js task to reflect changes made to folder structure by [@​CDFN](https://github.com/CDFN) in [https://github.com/software-mansion/react-native-svg/pull/2342](https://github.com/software-mansion/react-native-svg/pull/2342) - Add missing `#include <folly/dynamic.h>` on RN 0.75 by [@​tomekzaw](https://github.com/tomekzaw) in [https://github.com/software-mansion/react-native-svg/pull/2344](https://github.com/software-mansion/react-native-svg/pull/2344) - feat: filters support FeColorMatrix and FilterImage by [@​jakex7](https://github.com/jakex7) in [https://github.com/software-mansion/react-native-svg/pull/2316](https://github.com/software-mansion/react-native-svg/pull/2316) - fix: mask and filters rendering issues by [@​jakex7](https://github.com/jakex7) in [https://github.com/software-mansion/react-native-svg/pull/2345](https://github.com/software-mansion/react-native-svg/pull/2345) #### New Contributors - [@​maciekstosio](https://github.com/maciekstosio) made their first contribution in [https://github.com/software-mansion/react-native-svg/pull/2281](https://github.com/software-mansion/react-native-svg/pull/2281) - [@​bohdanprog](https://github.com/bohdanprog) made their first contribution in [https://github.com/software-mansion/react-native-svg/pull/2289](https://github.com/software-mansion/react-native-svg/pull/2289) - [@​Kicu](https://github.com/Kicu) made their first contribution in [https://github.com/software-mansion/react-native-svg/pull/2327](https://github.com/software-mansion/react-native-svg/pull/2327) - [@​SergeyYurkevich](https://github.com/SergeyYurkevich) made their first contribution in [https://github.com/software-mansion/react-native-svg/pull/2152](https://github.com/software-mansion/react-native-svg/pull/2152) - [@​CDFN](https://github.com/CDFN) made their first contribution in [https://github.com/software-mansion/react-native-svg/pull/2342](https://github.com/software-mansion/react-native-svg/pull/2342) **Full Changelog**: software-mansion/react-native-svg@v15.3.0...v15.4.0 </details> --- ### Configuration 📅 **Schedule**: Branch creation - "after 5pm,every weekend" in timezone America/Los_Angeles, Automerge - "after 5pm,every weekend" in timezone America/Los_Angeles. 🚦 **Automerge**: Enabled. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View the [repository job log](https://developer.mend.io/github/valora-inc/wallet). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy40MzguMCIsInVwZGF0ZWRJblZlciI6IjM3LjQzOC4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJucG0iLCJyZW5vdmF0ZSJdfQ==--> --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: valora-bot <valorabot@valoraapp.com> Co-authored-by: Alex Bakoushin <alex@bakoush.in>
Summary
This PR resolves an issue raised in #1451.
Currently, when a mask is used, we render the element as a bitmap (or platform equivalent), but the bitmap's size does not update accordingly with transformations. With these changes, the problem is addressed as follows:
Additionally, there is a significant performance improvement on Android as we are not creating three new Bitmaps and three new Canvases.
Test Plan
There are many ways for testing these changes, but the required ones are:
TestsExample
app ->Test1451.tsx
Example
app -> Mask sectionFabricExample
app -> Mask sectionCompatibility
Preview