Commit Graph

9916 Commits

Author SHA1 Message Date
Aaron Hill bbb5619bc9 tests: Add TextField Event.CHANGE test and update test input format 2023-07-05 18:00:59 -04:00
Aaron Hill 4695d1fa63 avm2: Implement 'change' event for TextField 2023-07-05 18:00:59 -04:00
Adrian Wielgosik 87ede6a052 avm2: Set correct `this` values in function calls 2023-07-05 22:36:20 +02:00
Aaron Hill 852367b09b wgpu: Use a vec4f for pixelbender ZEROED_OUT_OF_RANGE_MODE_INDEX
This could really be a single f32 (or even a boolean), but wgpu
on web requires a minimum size of 16 bytes for uniforms.
2023-07-05 21:23:22 +02:00
Aaron Hill 2d1da4d18e avm2: Throw TypeError when trying to parse malformed XML
Scratch detects if a string is valid XML by trying to construct
an XML object, and catching the thrown error.
2023-07-05 19:41:23 +02:00
Nathan Adams a99b30927f avm1: Panic if we see a shader filter 2023-07-05 19:18:00 +02:00
Nathan Adams 4fc170e5bd avm1: Implement gradient filters conversions 2023-07-05 19:18:00 +02:00
Nathan Adams bfedfbaa98 avm1: Implement displacement map filter conversions 2023-07-05 19:18:00 +02:00
Nathan Adams 8a767492e6 avm1: Implement drop shadow filter conversions 2023-07-05 19:18:00 +02:00
Nathan Adams 40b4f9bafa avm1: Implement glow filter conversions 2023-07-05 19:18:00 +02:00
Nathan Adams 30027bc03e avm1: Implement convolution filter conversions 2023-07-05 19:18:00 +02:00
Nathan Adams df6064b2e9 avm1: Implement color matrix filter conversions 2023-07-05 19:18:00 +02:00
Nathan Adams b3629669bd avm1: Implement blur filter conversions 2023-07-05 19:18:00 +02:00
Nathan Adams 73bc637ad7 avm1: Implement bevel filter conversions 2023-07-05 19:18:00 +02:00
Nathan Adams 2b48f579e6 avm1: Implement MovieClip.filters 2023-07-05 19:18:00 +02:00
Nathan Adams 681ff3dd24 avm1: Add helper method to get/set strength in filter objects 2023-07-05 19:18:00 +02:00
Crowdin Bot 36a950cf1e chore: Update translations from Crowdin 2023-07-05 18:57:39 +02:00
Aaron Hill e716b3fd7f avm2: Implement XML.descendants for attributes
We were previously only ever checking children,
and not attributes.

In order to avoid matching both attributes and elements
with a given name in 'descendants', `E4xNode::matches_name`
now checks `is_attribute` on the provided `Multiname`. This
requries changing several other parts of the codebase to
properly set this flag on `Multinames` provided by ActionScript.
2023-07-04 19:38:30 -04:00
Aaron Hill f7cbe3b7cd avm2: Implement Graphics.copyFrom 2023-07-04 16:12:29 -04:00
Aaron Hill 3401971729 web: Use Rc, Cell, and RefCell for non-thread-safe types 2023-07-04 20:50:46 +02:00
Aaron Hill 3006356410 render: Suppress clippy::arc_with_non_send_sync for now 2023-07-04 20:50:46 +02:00
Aaron Hill 2499db4874 desktop: Use Rc and RefCell for non-thread-safe types 2023-07-04 20:50:46 +02:00
Aaron Hill f22bef99b4 core: Fix some Clippy lints on the latest nightly 2023-07-04 20:50:46 +02:00
Lord-McSweeney 275c42b39c core: Correctly apply blend modes and filters from button records 2023-07-04 20:24:12 +02:00
Lord-McSweeney c943866745 core+avm1: Implement FLV onCuePoint for AVM1 2023-07-04 00:36:25 +02:00
Crowdin Bot ad7e73f77b chore: Update translations from Crowdin 2023-07-03 20:38:26 +02:00
Nathan Adams 146d565c02 render: Add Filter::scale() and use it to scale filter values (currently just blur_) 2023-07-03 20:13:40 +02:00
Nathan Adams 4ac13de2f3 wgpu: Switch PASS_SCALES to be accumulative scales, for better calculation of size upfront 2023-07-03 20:13:40 +02:00
renovate[bot] 13b1078142 chore(deps): lock file maintenance rust dependencies 2023-07-03 08:28:13 +03:00
Aaron Hill 768eaa1a01 avm2: Store at most a single type parameter in names/clasess
The only generic class is `Vector`, which only has a single parameter.
However, we currently store a list of type parameters in several places,
which requires redundant checks that the list only has one entry.

Instead, we now store an `Option` everwhere except for
`swf::Multiname::TypeName` (since the actual SWF format supports
multiple type parameters). We still perform the same check when loading
bytecode (the swf Multiname should only have at most one type
parameter), but the rest of the codebase can deal with an `Option`
instead.
2023-07-02 16:02:53 -04:00
Aaron Hill 2bcfabef53 desktop: Use `SubscriberInitExt::init` to capture `log` output
This method redirects output from the `log` crate to `tracing`,
which lets us get naga/wgpu logs.
2023-07-02 15:38:35 -04:00
Aaron Hill 26101ae979 render: Add 'renderdoc' feature/module for manual frame capture
This feature is disabled by default. When enabled, you can use
`ruffle_render::renderdoc::begin_frame_capture` and
`ruffle_render::renderdoc::end_frame_capture` to manually trigger
a RenderDoc frame capture (if Ruffle wasn't launched by RenderDoc,
this logs an error).

This is very useful when debugging Stage3D/PixelBender bugs, as you
can produce a capture containing only the relevant graphics calls.
2023-07-02 13:59:19 -04:00
Aaron Hill b77c1fc78f core: Fix Nightly clippy lint 2023-07-02 14:32:45 +02:00
Aaron Hill f7c50865a0 core: Update formatting with latest nightly 'cargo fmt' 2023-07-02 14:32:45 +02:00
TÖRÖK Attila 0fe8469d24 chore: Run `npm update --save` in `web`
Also `npm install` to make sure `package-lock.json` is clean.
2023-07-02 13:55:24 +02:00
Crowdin Bot 80588d614d chore: Update translations from Crowdin 2023-07-02 11:41:18 +02:00
Adrian Wielgosik bd043c09c7 cargo fmt 2023-07-01 23:38:09 +02:00
David Wendt 679f179a60 docs: Document the aliasing situation with `VideoSource::Swf` 2023-07-01 23:38:09 +02:00
David Wendt d382b29fb1 core: Allocate a new `VideoSource` when attaching netstreams rather than attaching the stream to every instance of the video 2023-07-01 23:38:09 +02:00
David Wendt b2544618ab core: `VideoStream` should not hold the last decoded frame as this data structure is shared across multiple instances of the same character 2023-07-01 23:38:09 +02:00
Adrian Wielgosik 7eb7f2ee2c avm2: Correctly set and use Video class from Rust 2023-07-01 22:45:20 +02:00
Lord-McSweeney 7ad864ca02 avm2+tests: Implement Matrix3D.copyColumnFrom; add a test 2023-07-01 15:23:29 -04:00
Aaron Hill 6e1f00edf2
render: Implement more PixelBender features (#11800) 2023-07-01 13:50:43 -04:00
Aaron Hill 710be15f78 core: Bail out of operations::color_transform if [xy]_min==[xy]_max
In the special case where y_min==y_max==(height-1),
we would create a bad 'encompassing' region - subtracing
one from the max would make it smaller than the min,
causing `PixelRegion::encompassing_pixels` to treat it
as the minimum, and add one to `height - 1`

There's no work to do when x_min==x_max or y_min==y_max,
so we can also skip the sync and GC write in this case.
2023-07-01 09:55:59 -04:00
Nathan Adams 5e608764ec core: Add debug feature to find display objects by mouse 2023-07-01 12:58:32 +02:00
renovate[bot] 898b2c8948 chore(deps): lock file maintenance node.js dependencies 2023-07-01 12:20:10 +03:00
Aaron Hill c2fcdf6fd6 avm2: Implement Stage3D.requestContext3DMatchingProfiles
For now, we just ignore the parameters and call requestContext3D
2023-06-30 23:22:56 -04:00
Crowdin Bot 29a5c6a4cd chore: Update translations from Crowdin 2023-07-01 00:47:31 +02:00
David Wendt 32524d3abd core: AVM2 display object allocators always ensure both halves of the display object are connected correctly 2023-06-30 16:14:28 -06:00
TÖRÖK Attila c7bbed958c tests: Add test of ScreenVideo FLVs (contributed by torokati44) 2023-06-30 16:14:28 -06:00