Commit Graph

8985 Commits

Author SHA1 Message Date
AllinolCP f0a8e50be1 avm2: implement decodeURI 2023-04-02 14:49:07 -07:00
Tom Schuster 5a18a409f7 avm2: Only reject a single explicit namespace in XML 2023-04-02 16:09:03 -05:00
Toad06 35528913bf core: Make `ExternalInterface` support undefined values 2023-04-02 13:48:14 -07:00
Toad06 5e14aabed6 core: Make `ExternalInterface` support undefined values in browsers 2023-04-02 13:48:14 -07:00
Lord-McSweeney 4777c13528 avm2: ByteArray should have toJSON defined on...
...its prototype.
2023-04-01 17:17:48 -07:00
Lord-McSweeney 58cbc38983 avm2: Use RegExp.valueOf in RegExp.toString
This fixes flag ordering issues
2023-04-01 13:49:41 -07:00
Lord-McSweeney 17ebb8c5bc avm2: Add RegExp.prototype.toString 2023-04-01 13:49:41 -07:00
Lord-McSweeney ab6d5006b4 avm2: Make sure RegExp prototype is not enumerable 2023-04-01 13:49:41 -07:00
Lord-McSweeney 18bff18d0b avm2: Fix QName's prototype 2023-04-01 13:49:41 -07:00
Tom Schuster 86395f194f avm2: Strip BOM in ByteArray::toString 2023-04-01 12:48:22 -07:00
Aaron Hill 7809000170 wgpu: Fix filter texture copy size calculation
I incorrectly changed this in #10373

Fixes #10380
2023-04-01 11:04:55 -05:00
relrelb d9feadce00 web: Run `npm run format`
In order to fix Stylelint's new `media-feature-range-notation` rule:
https://stylelint.io/user-guide/rules/media-feature-range-notation/
2023-04-01 13:11:23 +03:00
relrelb 479926cdba web: Migrate to TypeScript 5.0.0
Work around the newly introduced `--verbatimModuleSyntax` flag:
https://devblogs.microsoft.com/typescript/announcing-typescript-5-0/#verbatimmodulesyntax
2023-04-01 13:11:23 +03:00
renovate[bot] 0e887411cc chore(deps): update node.js dependencies 2023-04-01 13:11:23 +03:00
Daniel Jacobs 4c50e2c271 demo: Add option to reload the current SWF 2023-04-01 01:46:03 -07:00
Aaron Hill 6ce6fd1681 avm2: Use custom_unescape wherever we unescape XML
When we were using a fork of quick-xml, we modified the actual
unescape method. Now that we're using the crates.io release again,
we need to go through our `custom_unescape` function.
2023-04-01 02:25:24 -05:00
renovate[bot] 4fbbf994fe chore(deps): update github actions dependencies 2023-03-31 23:03:07 -07:00
Aaron Hill 18f5ba18e9 core: Don't overwrite font descriptor with a duplicate
If a SWF contains multiple DefineFont tags with the same
font name (but different font IDs), the first tag will win
when a font is looked up by *name*. This affects the behavior
of EditText objects, which can have embedded HTML like
`<font face="MyFontName">` which performs a font lookup by name.

This fixes Fancy Pants World 4 Part 3, which contains two
DefineFont3 tags with the name FancyFont. The second font is
missing many glyphs, so using it causes us to be unable to
render the squiggle and life count text.
2023-03-31 22:47:00 -07:00
Mike Welsh 4c13da8fcb avm2: Unstub `BitmapData.lock` and `BitmapData.unlock`
These functions are intentionally no-ops in Ruffle because it has
no concept of a player dirty region, so unmark them as stubs.

The only observable difference is that Flash Player will sometimes
not re-render a `Bitmap` instance on the stage immediately if it's
`BitmapData` is locked and changed, but this is only temporary and
depends on the redraw behavior of the Flash Player.
2023-03-31 22:13:28 -07:00
Nathan Adams 1c6aaba57a core: Use actual clone() method when cloning bitmap 2023-03-31 21:56:41 -07:00
Nathan Adams 62d30251f2 core: Move clone to bitmapdata operations 2023-03-31 21:56:41 -07:00
Nathan Adams b07bf84da5 core: Skip a gpu->cpu sync in set_pixels_from_byte_array if we're filling the whole bmd 2023-03-31 21:32:15 -07:00
Nathan Adams fcaf462423 core: Fix set_pixels_from_byte_array respecting the bytearray position + tests 2023-03-31 21:32:15 -07:00
Nathan Adams 445912e760 core: Move set_pixels_from_byte_array out from avm2 to bmd operations 2023-03-31 21:32:15 -07:00
Aaron Hill 7f6cb99b08 avm2: Convert QName to ActionScript 2023-03-31 22:05:18 -05:00
Aaron Hill 27092ecb76 avm2: Convert RegExp to ActionScript 2023-03-31 17:08:21 -07:00
Mike Welsh 6fda813f0c tests: Add test for localToGlobal with zero scale object 2023-03-31 16:26:11 -07:00
Mike Welsh b62040884c core: Make `DisplayObject::global_to_local` fallible
* `global_to_local` returns `None` if the object has zero scale.
 * Adjust AVM `globalToLocal` methods to return the untransformed
   point on failure.
 * Add `DisplayObject::mouse_to_local` to handle AVM `mouseX`
   and `mouseY` coordinates. For zero scale objects, these end up
   returning values based on the twips-to-pixels scale,
   divided by 20.
2023-03-31 16:26:11 -07:00
Mike Welsh c7387eace4 tests: Add tests for hitTesting zero scale graphics 2023-03-31 16:26:11 -07:00
Mike Welsh 664b168d3d core: Make `DisplayObject::global_to_local_matrix` fallible
This will return `None` if the object is zero scale, and callers
can handle this appropriately.
2023-03-31 16:26:11 -07:00
Mike Welsh 54b7094c16 render: Make `Matrix::inverse` fallible
* Add `Matrix::determinant`.
 * Rename `Matrix::invert` to `inverse`.
 * `Matrix::inverse` return an `Option`, with `None` returned
    for non-invertible matrices.
 * AMV `Matrix::invert` duplicates the code as the behavior is
   different (works in f64 and not twips, etc.)
2023-03-31 16:26:11 -07:00
Nathan Adams 6f7493f16a avm2: Don't sync BitmapData when getting .rect 2023-03-31 21:07:38 +02:00
Nathan Adams adadb8a26d wgpu: Use swap_remove instead of remove for buffer pool 2023-03-31 16:57:52 +02:00
Nathan Adams c51ba098f6 render: Rename PixelRegion's (min|max)_(x|y) to (x|y)_(min|max) 2023-03-31 16:57:52 +02:00
Nathan Adams cfb18718a1 core: Remove debug output 2023-03-31 16:57:52 +02:00
Nathan Adams fd702dabcc core: Remove disposed checks from operations, it's responsibility of avm1 and avm2 to handle it their own way 2023-03-31 16:57:52 +02:00
Nathan Adams 66e2eb77e5 core: Rename bitmap_data_operations to just operations 2023-03-31 16:57:52 +02:00
Nathan Adams 94e5aa8f34 core: Fix calculating dirty area of BitmapData.draw() with rotation 2023-03-31 16:57:52 +02:00
Nathan Adams f0ebefd624 tests: Add bitmapdata recursive draw test 2023-03-31 16:57:52 +02:00
Nathan Adams c85910b46d wgpu: Fixed panic when rendering texture to itself, by always rendering to an intermediary 2023-03-31 16:57:52 +02:00
Nathan Adams 68343369a3 core: Don't sync cpu->gpu in overwrite_cpu_pixels_from_gpu 2023-03-31 16:57:52 +02:00
Nathan Adams cae8f89c9b core: Remove clone from copy_pixels_with_alpha_source and don't sync if copying outside dirty region 2023-03-31 16:57:52 +02:00
Nathan Adams d7b0a6f611 core: Remove clone from copy_pixels and don't sync if copying outside dirty region 2023-03-31 16:57:52 +02:00
Nathan Adams f5501b57da core: Remove clone from merge and don't sync if copying outside dirty region 2023-03-31 16:57:52 +02:00
Nathan Adams 44c35a5b50 core: Made palette_map not sync if copying outside of dirty region 2023-03-31 16:57:52 +02:00
Nathan Adams b1b3eef283 core: Remove clone from threshold and don't sync if copying outside dirty region 2023-03-31 16:57:52 +02:00
Nathan Adams 2b84e926ec core: Remove clone from copy_channel and don't sync if copying outside dirty region 2023-03-31 16:57:52 +02:00
Nathan Adams 966f5bc816 core: Skip bitmapdata.draw which will affect 0 pixels 2023-03-31 16:57:52 +02:00
Nathan Adams e6d36ade7f core: Make get_pixels_as_byte_array not sync if the pixel is outside a dirty region 2023-03-31 16:57:52 +02:00
Nathan Adams fd0ba4a753 core: Make get_vector not sync if the pixel is outside a dirty region 2023-03-31 16:57:52 +02:00