renovate[bot]
5d2477fe98
chore(deps): lock file maintenance rust dependencies
2023-05-22 19:12:08 +03:00
nosamu
bb15c90d82
avm2: Implement XML.hasSimpleContent and hasComplexContent
2023-05-22 06:17:37 -05:00
Aaron Hill
6ac4e5256d
avm2: Check parent domain in export_class
...
The `export_class` function mirrors `export_definition`, and needs
to avoid exporting something already defined in a parent domain.
2023-05-21 17:37:54 -05:00
relrelb
c230dcf0f8
avm1: Migrate `BitmapData` to `NativeObject`
2023-05-21 21:02:14 +03:00
nosamu
7dfc36c6fc
web: Support pasting from clipboard
2023-05-21 15:26:42 +02:00
nosamu
ee956927b7
core: Fix TextField.maxChars handling and address other reviews
2023-05-21 15:26:42 +02:00
nosamu
4e579b7e68
core: Move left/right arrow handling to `text_control_input`
2023-05-21 15:26:42 +02:00
nosamu
0dbb4c46e4
core: Move `Delete` and `Backspace` handling to `text_control_input()`
...
Co-authored-by: jmckiern <jmckiern@tcd.ie>
2023-05-21 15:26:42 +02:00
nosamu
fab72ac01c
core: Implement handling of text control input
...
Co-authored-by: jmckiern <jmckiern@tcd.ie>
2023-05-21 15:26:42 +02:00
jmckiern
67d74047a9
core: Add clipboard_content getter
2023-05-21 15:26:42 +02:00
Aaron Hill
95b0b29310
avm2: Initial implementation of URLStream
...
This is based on URLLoader, and doesn't actualy 'stream' data -
it all becomes available once the request finishes. However, this
is good enough to get Sniper Team working.
2023-05-21 15:00:08 +02:00
TÖRÖK Attila
65117499fd
chore: Bump regress and toml dependencies
2023-05-21 14:42:01 +02:00
Aaron Hill
54cf9065fb
core: Don't create a fake root clip when instantiating Stage
...
AVM2 can handle a missing root movie, and AVM1 doesn't seem
to rely on having a root movie during Stage initialization.
2023-05-21 08:11:11 +03:00
Lord-McSweeney
7c9b0378f6
nit: avm2: Fix stub message in Socket
2023-05-21 07:31:50 +03:00
iwannabethedev
7b12cb882f
core: Fix error message in 'pixelDissolve()'.
2023-05-21 01:47:06 +02:00
iwannabethedev
0f30b378b0
core: Re-arrange internal implementation of 'pixelDissolve()'.
2023-05-21 01:47:06 +02:00
iwannabethedev
deae231176
core: Clean up TODOs in 'pixelDissolve()'.
2023-05-21 01:47:06 +02:00
iwannabethedev
6f98d39c25
core: Implement 'pixelDissolve()' for AVM1.
2023-05-21 01:47:06 +02:00
iwannabethedev
40c40f278c
core: 'pixelDissolve()' bug fix and clean-up.
2023-05-21 01:47:06 +02:00
iwannabethedev
1bd9f82496
core: Implements `BitmapData.pixelDissolve()` for AVM2.
...
The changes have automated tests for them.
The implementation has not been implemented or tested for AVM1 yet.
2023-05-21 01:47:06 +02:00
Aaron Hill
ad77cb0209
core: Refactor Loader to properly load images
...
We now run all of the completion logic (including adding
the new DisplayObject as a child) in `Loader::movie_loader_complete`.
Previously, some of this logic was run from `Loader::preload_tick`,
which meant that loaded images did not have the logic run.
Also, `BitmapData` and `Bitmap` instances (with corresponding AVM2
objects) are now properly constructed for loaded images.
2023-05-20 18:35:10 -05:00
Toad06
b88e19ef6c
avm1: Filter buttons that use a `keyPress` event
2023-05-21 01:13:26 +02:00
Aaron Hill
5d62ef90f2
wgpu: Use intermediate buffer for Context3DCommand::CopyBitmapToTexture
...
In a previous PR, I introduced an optimization that used
`copy_texture_to_texture` to copy directly from a BitmapData GPU
texture to a Stage3D GPU texture.
Unfortunately, this optimization is incorrect. A BitmapData GPU
texture can be modified at any time by normal AVM2 code - in
particular, in might be modified before we submit the encoded
`copy_texture_to_texture` command. This shows up in Sniper Team,
which re-uses BitmapData objects for multiple distinct textures.
The previous 'optimization' resulted in the wrong BitmapData contents
getting uploaded to a texture (since it was changed before the copy
command was submitted).
2023-05-20 17:38:26 -05:00
Aaron Hill
0864853d44
avm2: Allow passing `null` to `Context3D.setProgram`
...
This clears the vertex and fragment shader programs
(bringing the Context3D back to its initial state).
2023-05-20 16:23:03 -05:00
EmperorBale
53acdee979
avm2: Remove NOPMD comments
2023-05-20 13:59:12 -07:00
EmperorBale
78c8aa2a0d
core: Remove linter code
2023-05-20 13:59:12 -07:00
Tom Schuster
2af58dc832
avm2: Support set on XMLList with a single child
...
XMLList with a single child should behave like an XML object.
2023-05-19 20:10:47 -05:00
Lord-McSweeney
0948bf7bbd
avm2: Implement Capabilities.playerType and Capabilities.version (and mark the other Capabilities getters as stubs)
2023-05-19 16:54:46 -05:00
Aaron Hill
6025878aab
avm2: Respect SKIP_INVISIBLE for DisplayObject
...
Previously, we allowed mouse picks of certain invisible
DisplayObjects, even when HitTestOptions::SKIP_INVISIBLE
was set.
2023-05-19 08:12:00 -05:00
Aaron Hill
5c68bceb7b
avm2: Set 'bubbles' to 'false' for rollOut and rollOver events
...
This matches the Flash Player documentation. Since we were
manually traversing the displayobject hierarching when firing
the event, we ended up firing duplicate events to parents
because bubbling was enabled.
2023-05-18 19:01:55 -05:00
Aaron Hill
7004e98b23
avm2: Don't validate Context3DVertexBufferFormat when buffer is null
...
This matches Flash Player's behavior - some SWFS try to pass in 'null'
for both the buffer and format.
2023-05-18 15:14:29 -05:00
renovate[bot]
f969bdce71
fix(deps): update wasm-bindgen
2023-05-17 06:44:50 +03:00
Aaron Hill
75569e1311
avm2: Throw error for invalid Stage3D back buffer size
2023-05-16 17:36:22 -05:00
Aaron Hill
12e815d383
core: Take 'self' instead of '&mut self' in `replace_with_movie`
2023-05-15 20:01:02 +03:00
renovate[bot]
5b26d1b2ee
fix(deps): update wasm-bindgen
2023-05-15 10:00:49 +03:00
Lord-McSweeney
b24fc7c07f
avm2: Improve Shader stub
2023-05-15 09:40:43 +03:00
iwannabethedev
d0f8061c85
core: documentation changes.
2023-05-15 00:51:54 +02:00
iwannabethedev
8c92cecb60
core: Add documentation to Color.
2023-05-15 00:51:54 +02:00
iwannabethedev
9de2abe8b8
core: Fix wrong color form used.
2023-05-15 00:51:54 +02:00
relrelb
4a26ceb14b
render: Use `swf::Point<Twips>` in more places
2023-05-14 22:48:41 +03:00
relrelb
220f8cd1cf
render: Use `swf::Point<Twips>` in `shape_hit_test()`
2023-05-14 22:48:41 +03:00
relrelb
598c8cde0e
render: Use `swf::Point<Twips>` in `DrawCommand::CurveTo`
2023-05-14 22:48:41 +03:00
relrelb
544e445d2f
render: Use `swf::Point<Twips>` in `DrawCommand::LineTo`
2023-05-14 22:48:41 +03:00
relrelb
e5c7d70f3f
render: Use `swf::Point<Twips>` in `DrawCommand::MoveTo`
2023-05-14 22:48:41 +03:00
Lord-McSweeney
3079ae30a5
avm2: Stub SharedObject.setProperty
2023-05-14 19:01:24 +03:00
Nathan Adams
a9ba46594f
chore: Updated translations from Crowdin
2023-05-14 13:31:32 +02:00
Lord-McSweeney
017a44084f
avm2: nit: Provide error number (2025) in error message for validate_remove_operation
2023-05-13 21:30:47 +03:00
Aaron Hill
729d5a2c65
avm2: Don't overwrite existing entry in `export_class`
...
This makes the behavior consistent with `export_definition`
2023-05-13 11:15:54 +03:00
Aaron Hill
3c6820c6e1
avm2: Check length and copy vector in Matrix3D constructor
2023-05-13 11:00:31 +03:00
iwannabethedev
476ff4aeef
core: Fix drawing on cpu with color transform.
...
Taken directly from this commit, credits to Dinnerbone:
9b76090e1f
2023-05-12 22:42:44 +02:00
Toad06
2e972b8f32
avm1: `button.useHandCursor` can hold any value
2023-05-12 01:13:28 +03:00
iwannabethedev
93450b28b0
avm2: Add 'static length' for most types.
2023-05-11 22:16:55 +02:00
relrelb
660acac427
swf: Use `PointDelta<Twips>` in `ShapeRecord`
2023-05-11 08:55:44 +03:00
relrelb
b93a32af0f
swf: Use `Point<Twips>` in `StyleChangeData::move_to`
...
No functionality change.
2023-05-11 08:55:44 +03:00
Aaron Hill
e488cc9f7a
wgpu: Allow unaligned writes to IndexBuffer3D
...
wgpu requires buffer copy sizes and offsets to be 4-byte aligned.
Unfortunately, ActionScript can perform 2-byte aligned uploads
into an IndexBuffer3D.
To support this, we now keep a copy of the IndexBuffer3D on the CPU.
When performing an upload to the buffer, we round the offset down
and the size up to the nearest 4-byte aligned value. The cpu buffer
is used to fill out the write with existing data, so that we don't
corrupt the contents of the GPU buffer.
To avoid introducing a new RefCell, I've changed IndexBuffer3D
to use a `Box` instead of an `Rc` to store the trait object.
This allows us to pass a mutable reference down to the backend.
2023-05-10 18:20:29 -05:00
Huw Pritchard
b79b192a58
avm2: Implement PrintJobOptions
2023-05-09 20:51:44 -05:00
Nathan Adams
fc96fdf1cc
chore: Update translations from Crowdin
2023-05-10 00:29:13 +02:00
Nathan Adams
fd5a7cdbc2
core: Rename text to core_text just to avoid confusion if used from another crate with its own text methods
2023-05-09 00:06:49 +02:00
Nathan Adams
e6ea074a3f
core: Made context menu items translatable
2023-05-09 00:06:49 +02:00
Nathan Adams
229c301e18
core: Add i18n module using Fluent
2023-05-09 00:06:49 +02:00
Aaron Hill
1908d85f65
avm2: Initialize `Object` instance vtable before other classes
...
Early class construction is tricky - `Object` defines properties
that need to get copied into subclass instance vtables, but `Class`
defines `prototype`, which needs to be copied into the *class* vtable
of `Object`.
To accomplish this, I've split out instance vtable initialization
into a separate `init_instance_vtable`. We call
`object_class.init_instance_vtable` before
`class_class.init_instance_vtable`, but do things in the opposite
order for `into_finished_class` (`class_class.into_finished_class` is
called before `object_class.into_finished_class`)
2023-05-07 07:46:30 -05:00
iwannabethedev
724df48186
avm2: Add AS 'length()' to XML.
2023-05-06 12:02:06 -05:00
Lord-McSweeney
4b9430c2cb
avm2: Stub flash.system.fscommand
2023-05-06 09:52:30 +03:00
Toad06
8377fe0233
web: Support copying to clipboard
2023-05-05 21:58:41 +02:00
nosamu
0633b4cdfe
core: Improve compatibility rule for Kongregate
2023-05-05 10:44:57 +03:00
friedkeenan
bfe84c3685
Rename 'name_array' to 'name_vector'.
...
The '_array' suffix was from a previous iteration as I tried to figure out how to return a vector.
2023-05-04 19:51:04 -05:00
friedkeenan
24e0e0102c
avm2: Implement ApplicationDomain::getQualifiedDefinitionNames
2023-05-04 19:51:04 -05:00
Tom Schuster
f6c0685992
avm2: Allow setting XML methods as properties
2023-05-04 19:34:14 -05:00
Lord-McSweeney
f78ce82f90
avm2: Socket should implement IDataOutput and IDataInput
2023-05-05 00:13:45 +03:00
friedkeenan
c484d44226
avm2: Stub rest of Socket's methods
2023-05-04 17:03:52 +00:00
relrelb
891d1dce7e
core: Don't duplicate `ButtonAction`s
...
Previously, a separate `ButtonAction` was stored for each
`ButtonActionCondition`. However, this can be eliminated using
`bitflags`.
2023-05-03 23:12:20 +03:00
Nathan Adams
dc44c1c797
core: Use MutationContext instead of UpdateContext for copy_on_cpu
2023-05-03 21:15:48 +02:00
Nathan Adams
243d82770d
core: Use copy_from_slice for whole-BMD-replacement
2023-05-03 21:15:48 +02:00
Nathan Adams
53c6927b6f
core: Clarify comment when we can skip alpha premultiplication
2023-05-03 21:15:48 +02:00
Nathan Adams
c5293bd981
core: Don't actually apply a filter if it's unsupported, just copy
2023-05-03 21:15:48 +02:00
Nathan Adams
5ff804f5c2
core: Add a method for BitmapData.draw() with color transform on cpu
2023-05-03 21:15:48 +02:00
Nathan Adams
7b20003c6a
core: Treat copy_pixels_with_alpha_source as copy_pixels if alpha source is same as source
2023-05-03 21:15:48 +02:00
Nathan Adams
fe3d8c10b1
core: Added an efficient copy method that does cpu or gpu copy depending on what's best situationally
2023-05-03 21:15:48 +02:00
Nathan Adams
adabb81804
core: Introduce PixelRegion::clamp_with_intersection and made most operations with two overlapping regions use it
2023-05-03 21:15:48 +02:00
Lord-McSweeney
d66d216917
avm2: Date related fixes
...
1. Date should have a call handler.
2. Date should have a static length property.
2023-05-03 20:04:59 +02:00
Aaron Kaluszka
472fe7068f
avm2: Implement BitmapData.compare
2023-05-03 11:32:20 +02:00
Kornelius Rohrschneider
fe56f8d212
core: Implement suggested changes in PR to documentation & code
...
- Documentation has been added, improved and clarified.
- The code of a string concatenation has been improved.
2023-05-02 17:13:42 +02:00
Kornelius Rohrschneider
27738a492e
web: Implement suggested changes in PR to navigate_to_url handling
...
The suggested changes to the navigate_to_url handling in the feedback to
the pull request have been implemented.
Therefore, this commit consists of multiple smaller changes:
1. The allow_javascript_calls variable has been removed (as a CLI
argument and in the navigator). Javascript calls are now always denied
on desktop. This is because setting the argument was useless; no
javascript was executed in any case, at most, just a browser tab opened.
Therefore, it makes no sense to include this option.
2. The NavigateWebsiteHandlingMode default value has been provisionally
changed from Confirm to Allow. In the future (after a GUI toolkit has
been added), the default confirmation windows should include a "Save
this preference" checkbox.
3. The NetworkingRestrictionMode enum has been renamed to
NetworkingAccessMode since the previous naming was counter-intuitive.
4. The NavigateWebsiteHandlingMode enum (and variables related to it)
have been renamed to OpenURLMode to simplify the name.
5. The documentation has been improved.
2023-05-02 17:13:42 +02:00
Kornelius Rohrschneider
809a9f6907
web: Add and partially implement networking API restrictions
...
The networking API restrictions imposed by the allowNetworking parameter
& attribute have been added and partially implemented.
A new NetworkingRestrictionMode enum has been added to Ruffle (in Rust
and Typescript). It contains the values "All", "Internal" and "None" and
models the possible values of the allowNetworking parameter / attribute.
All means that all networking APIs are permitted in the SWF file,
Internal means that the SWF file may not call browser navigation or
browser interaction APIs and None means the same and that the SWF file
cannot use any SWF-to-SWF communication APIs either.
A respective allowNetworking variable has been added to the JS config.
Its default value is All.
Ruffle now recognises the allowNetworking parameter and attribute in the
SWF HTML object and parses it and sets the config variable
correspondingly if it's recognised.
Only if the variable is set to All, the external interface (responsible
for javascript calls in AS3) is created. Additionally, the variable is
given to the WebNavigatorBackend and saved in it. The navigator denies
all navigate_to_url calls if the variable hasn't been set to All.
Therefore, the API restrictions imposed by setting allowNetworking to
internal or none have been partially implemented.
Formatting has been improved.
2023-05-02 17:13:42 +02:00
Kornelius Rohrschneider
44ef22f646
core: Add navigate_to_url call configuration options
...
New configuration options (changing the navigate_to_url call handling)
have been added. The default behaviour has been changed as well.
A NavigateWebsiteHandlingMode enum has been added to Ruffle (in Rust and
Typescript). It contains the values "Allow", "Confirm" and "Deny" and
describes how navigate_to_url website calls should be handled. Allow
means that all website calls are allowed, Confirm means that a
confirmation window opens with each website call and Deny means that all
website calls are denied.
A respective navigate_website_handling_mode variable has been added to
the desktop CLI and to the JS config. The default value is "Confirm" in
each. The variable is given to the navigator (ExternalNavigatorBackend
or WebNavigatorBackend, depending on the platform) and is saved in it.
On each navigate_to_url website call, the respective navigator is now
checking navigate_website_handling_mode and acts correspondingly (allows
it, opens a confirmation window or denies it).
This changes the default behaviour of Ruffle from allowing all website
calls to opening a confirmation window with each website call.
On Safari, the confirm window can cause the background music to stop,
but this seems to be an issue with Safari.
Closes #838 .
Additionally, an allow_javascript_calls variable (which defaults to
false) has been added to the desktop CLI. The variable is given to the
desktop navigator and is saved in it.
If a navigate_to_url javascript call is executed on desktop, the
navigator is now checking allow_javascript_calls and acts
correspondingly (allows it or denies it).
This changes the default behaviour of Ruffle on desktop to not allowing
javascript calls.
Closes #9316 .
2023-05-02 17:13:42 +02:00
Toad06
ee7403952a
avm1: Allow `button.enabled` to hold any value
2023-04-30 21:08:27 +03:00
Toad06
86c27078d3
avm1: `button.enabled = undefined` doesn't disable the button
2023-04-30 21:08:27 +03:00
Lord-McSweeney
822c845d83
avm2: Stub Socket.connected
2023-04-30 20:16:24 +03:00
Tom Schuster
791081051f
avm2: Alternative implementation of XML hasOwnProperty @attribute
2023-04-29 16:34:10 -05:00
Lord-McSweeney
d1e4cccabb
avm2: Stub flash.net.Socket
2023-04-29 22:18:06 +03:00
relrelb
5eb14572ac
core: Fix moving objects while being dragged
...
`startDrag()` used to capture the offset between the mouse cursor
and dragged object. This is buggy when the dragged object position
is changed *while* being dragged, as the original offset no longer
holds.
Change the dragging mechanism to be based purely on mouse deltas,
eliminating said offset completely.
Fixes #10775 .
2023-04-28 11:55:33 +03:00
relrelb
e5808b14a8
core: Use `Twips` in `DisplayObject::{,set_}{x,y}`
...
Instead of `f64`.
2023-04-28 11:55:33 +03:00
relrelb
60ffe07ae7
chore: Use `swf::Point` in many places
...
Convert nearly all instances of `(Twips, Twips)` (maybe besides in
`shape_utils.rs`) to `swf::Point<Twips>`.
2023-04-27 22:14:03 +03:00
Lord-McSweeney
ba5a456d11
avm2: Implement XMLDocument.createElement
2023-04-27 13:16:00 -05:00
Moulins
e5caf0fda8
core: use unified repr for non-static `AvmString`s, interned and not
...
This shrinks the size of `AvmString` back from 3 to 2 usizes.
2023-04-27 00:17:31 +02:00
Moulins
2868333c05
avm2: require AvmAtom in Namespaces
2023-04-27 00:17:31 +02:00
Moulins
68fc567f7f
core: add `AvmAtom` to represent interned strings
...
Makes `AvmString`s grow from 2 to 3 usizes, but this
will be reverted later.
2023-04-27 00:17:31 +02:00
Moulins
011cdd96ba
core: don't keep strong references to interned strings in the interner.
...
This is done by implementing a simple WeakSet which clears its stale
entries during tracing.
2023-04-27 00:17:31 +02:00
Moulins
889a9bd009
avm2: Intern strings in constant pools
...
Strings belonging to multinames are interned too, but
the multinames themselves aren't.
2023-04-27 00:17:31 +02:00
Moulins
09c729074c
avm1: Intern strings in constant pools
2023-04-27 00:17:31 +02:00
Moulins
27521e145c
avm1: Thread GcContext through all globals initialization
2023-04-27 00:17:31 +02:00
Moulins
c40fd2b17a
core: Add (very) simple AvmString interner
...
Pass it to AVM1/2 initilization functions *via* the new `GcContext` type.
2023-04-27 00:17:31 +02:00
Moulins
cfde53cde2
core: replace `string::decode_swf_str` by a `SwfStrExt` extention trait
2023-04-26 23:49:18 +02:00
Moulins
34f2c45441
core: add `string::decode_swf_str` for SwfStr -> WString conversions
2023-04-26 23:49:18 +02:00
Nathan Adams
b12db0ac3a
avm2: Support data, method and content-type in URLLoader by reusing code from Loader
2023-04-26 13:44:46 -05:00
relrelb
1c0c25b521
avm1: Make `AsBroadcaster` a function
...
Previously, `AsBroadcaster` was defined as a plain object. However,
it seems like in Flash it is defined as an empty function instead.
This means expressions like `new AsBroadcaster()` should return a
newly-created object. This is in opposition to the documentation
that says there is no constructor function for the `AsBroadcaster`
class.
Fixes #10673 .
2023-04-26 21:21:57 +03:00
Lord-McSweeney
4a50f9f31e
avm2: Add make_error_2008() function and use it
2023-04-26 18:49:35 +03:00
Nathan Adams
cc731a78ee
avm2: Respect data, method and contentType in Loader.load()
2023-04-26 12:46:23 +02:00
Lord-McSweeney
f412f62127
avm2/tests: use try_get_object in JSON/Add test for undefined receiver
2023-04-26 00:17:44 +02:00
Lord-McSweeney
319886587d
avm2: Use ParametersExt in JSON
2023-04-26 00:17:44 +02:00
Lord-McSweeney
58212ec280
avm2: Throw AVM errors for JSON operations (and add tests)
2023-04-26 00:17:44 +02:00
Aaron Hill
6eba8d07ee
avm2: Implement MorphShape class and use it for MorphShape displayobject
2023-04-25 18:43:43 +02:00
Toad06
45795c9d24
desktop/web: Add a mouse enter event
2023-04-25 18:01:49 +02:00
Toad06
1ca1435dc7
core: Detect when the mouse moves out of the stage
2023-04-25 18:01:49 +02:00
Toad06
ad4dc943fa
avm1: Fix some issues with buttons
2023-04-25 17:50:25 +02:00
Aaron Hill
4432c45eb3
avm2: Mark 'callee' property as non-enumerable on 'arguments' array
...
Some SWFs iterate over the 'arguments' array, and the 'callee' property
should not get enumerated.
2023-04-25 17:29:20 +02:00
relrelb
ff7c458739
core: Accept borrowed strings in `NavigatorBackend::navigate_to_url`
...
This avoids some unnecessary clones.
2023-04-24 22:06:47 +03:00
nosamu
3cde3482f4
core: Add frame rate config option
2023-04-24 14:01:37 +02:00
relrelb
808a0fd26e
core: Clamp various `BitmapData` thresholds to `u8`
2023-04-24 08:35:59 +03:00
Tom Schuster
886244478e
avm2: Complete the implementation of XML abstract equality
2023-04-23 22:07:54 -05:00
renovate[bot]
3b3c08a354
chore(deps): lock file maintenance rust dependencies
2023-04-24 01:22:07 +02:00
Aaron Hill
15af946cf1
avm2: Stop after first frame when movieclip doesn't extend MovieClip
...
It's possible to have a DefineSprite tag with multiple frames,
but with a corresponding SymbolClass that directly extends
`Sprite` (and therefore does *not* extend `MovieClip`). When this
happens, Flash Player stops after the first frame.
2023-04-23 16:48:38 -05:00
Aaron Hill
33e9713279
avm2: Fix get_super and set_super with normal methods
...
Doing `super.someNonGetter` gives you back a function object.
We were previously attempting to call normal methods as though
they were getters. Additionally, we were failing to properly
get the property from the superclass vtable.
2023-04-23 16:28:59 -05:00
Lord-McSweeney
292e068e48
avm2: Take a MutationContext instead of an...
...
...Activation in ClassObject.install_class_vtable_and_slots
2023-04-22 20:21:16 +03:00
Lord-McSweeney
3c2ce683fb
avm2: Take a MutationContext instead of an Activation in PropertyClass::name
2023-04-22 17:38:19 +02:00
relrelb
1e2139a3e4
core: Use `BitFlags::iter`
...
Instead of manually shifting bits.
2023-04-22 12:42:51 +02:00
Lord-McSweeney
8fd6224d90
avm2: Add flash.display.GraphicsShaderFill class
2023-04-22 08:16:08 +02:00
Lord-McSweeney
932aa8cd90
avm2: Make TObject.install_instance_slots take a MutationContext instead of an Activation
2023-04-22 08:04:52 +02:00
Lord-McSweeney
34156cc6d1
avm2: Throw AVM error for invalid frame labels
2023-04-22 08:52:19 +03:00
Lord-McSweeney
bc0bbeca92
avm2: Throw AVM error for validate_remove_operation...
...
...in DisplayObjectContainer.
2023-04-21 17:15:43 +02:00
Moulins
60f34f8056
avm1: put an assert to ensure that `avm::Value`'s size doesn't grow again
2023-04-21 16:59:55 +02:00
Moulins
bb08d356b1
avm1: shrink `Value` by boxing `MovieClipReference`s
...
This doesn't actually cost an extra allocation as we can replace an inner
`Gc<Vec<_>>` by a `Box<[_]>` directly.
2023-04-21 16:59:55 +02:00
Aaron Hill
22040552b8
avm2: Take UpdateContext instead of Activation in Object::is_of_type
2023-04-21 16:41:06 +02:00
Toad06
36e71882e7
core: Fix avm2 code interfering with avm1
2023-04-21 15:38:21 +02:00
Lord-McSweeney
5702b272db
avm2: Add flash.text.engine stubs
2023-04-21 15:16:02 +02:00
Moulins
be67761a22
chore: appease (beta) clippy
2023-04-21 14:44:15 +02:00
Adrian Wielgosik
4e9cdc338f
avm2: Support `newcatch` with finally-scopes
2023-04-18 22:15:57 +02:00
Lord-McSweeney
2bab9022b4
avm2: Show detailed error message...
...
...while loading ABC files.
2023-04-18 21:28:38 +02:00
Aaron Hill
78b386d775
avm2: Stub URLLoader.close
2023-04-17 15:58:46 -07:00
Lord-McSweeney
f25398898a
avm2: stageWidth/Height should be of int type ( #10712 )
2023-04-16 21:58:32 +02:00
AllinolCP
d367f38eb4
avm2: stub xml.normalize() ( #10709 )
...
* avm2: stub xml.normalize()
2023-04-16 12:41:52 -04:00
Lord-McSweeney
fef7eeed90
avm2: Stub TextField.useRichTextClipboard
2023-04-13 22:09:11 +02:00
nosamu
a6c659945e
core: Allow focusing selectable EditText fields
2023-04-13 21:48:40 +02:00
Tom Schuster
aca4329dbf
avm2: Implement XMLList.child
2023-04-11 14:49:32 -04:00
Nathan Adams
35f3a21110
core: Fix bitmapdata.floodFill() replacing X with X + test. Fixes #10642
2023-04-11 10:40:57 -04:00
Mike Welsh
7cfd4470b1
avm2: Use proper scale for `Graphics.beginBitmapFill` ( fix #10628 )
2023-04-11 11:36:49 +02:00
Toad06
aef3ed2fcb
avm1: Correct `MovieClip.focusEnabled`
2023-04-09 14:11:24 -07:00
Tom Schuster
baf9bda9e9
avm2: Partially implement XML/XMLList abstract equality
2023-04-09 12:02:20 -07:00
AllinolCP
0643426b84
avm2: stub URLRequest.requestHeaders
2023-04-08 18:31:02 -07:00
Mike Welsh
7d7fe1bfdd
core: Implement `Display` for `NavigationMethod`
2023-04-08 13:37:25 -07:00
Mike Welsh
711a012fea
avm1: Exclude shape children from `StageObject::get_keys`
...
Non-interactive children such as shapes are not returned when
iterating over the keys of a stage object in AVM1.
2023-04-08 13:37:25 -07:00
Mike Welsh
3716422b37
avm1: Grab correct variables for `MovieClip.loadVariables` and `loadMovie`
...
The request was being populated with parameters from the local
function scope, not the movieclip that is doing the loading.
2023-04-08 13:37:25 -07:00
relrelb
93a0fd43d6
avm1: Migrate `ColorMatrixFilter` to `NativeObject`
2023-04-08 13:40:32 +03:00
relrelb
3dcf246870
avm1: Migrate `DropShadowFilter` to `NativeObject`
2023-04-08 13:40:32 +03:00
relrelb
814cb00821
avm1: Migrate `GlowFilter` to `NativeObject`
2023-04-08 13:40:32 +03:00
relrelb
b74f515c34
avm1: Refactor `BevelFilter`
2023-04-08 13:40:32 +03:00
relrelb
cdffc00e94
avm1: Refactor `BlurFilter`
2023-04-08 13:40:32 +03:00
Tom Schuster
d9e69563d3
avm2: Implement XMLList.copy
2023-04-07 12:29:49 -05:00
Udeshya
54a8672390
avm2: Trim xml text nodes when being parsed ( #10341 )
2023-04-06 22:41:46 -05:00
Lord-McSweeney
60ae2edf92
avm2: Use AVM error for invalid bitmapdata error
2023-04-06 11:53:56 -05:00
Aaron Hill
6844d1bf19
avm2: Call 'AS3::concat' in ColorMatrixFilter
...
This ensures that we call the normal Array concat method
(or a method that overrides it). Some SWFs may define a *public*
concat method in an Array subclass, with a different signature.
Fixes #10552
2023-04-05 22:48:12 -07:00
Aaron Hill
962cf92223
avm2: Implement Context3D.setSamplerStateAt
...
This fixes pixelated backgrounds in Fancy Pants World 4 Part 3
2023-04-05 16:44:07 -07:00
Toad06
5e165a0682
avm1: Fix some issues with `Selection.getFocus()` and `setFocus()`
2023-04-05 15:53:18 -07:00
Mike Welsh
792cfd82c7
avm2: Implement `Context3D.setColorMask`
2023-04-05 12:22:13 -07:00
Toad06
76b9ed80ba
core: Support `maxlength` attribute in EditText
2023-04-05 11:59:17 -07:00
onkrot
19284cb1be
avm2: Add more flash.accessibility members
2023-04-05 11:10:46 -07:00
Mike Welsh
37bf6b39e6
core: Remove `RenderContext::allow_mask`
...
This is now handled by `CommandList::maskers_in_progress`, so core
code does not have to worry about whether or not it can draw a
mask.
2023-04-04 13:10:45 -07:00
Lord-McSweeney
8d527ceed2
avm2: Array-related fixes
...
1. toString and toLocaleString should only be defined on the prototype.
2. concat should only be defined as an as3 and proto property, not as an instace property.
3. Array doesn't have a valueOf defined directly on it.
2023-04-04 00:43:46 -07:00
TÖRÖK Attila
493971ab8a
render: Make RenderBackend::update_texture() take a Bitmap (like register_bitmap())
2023-04-04 00:15:07 -07:00
TÖRÖK Attila
5f94476b2a
render: Add BitmapFormat::Yuv420p and BitmapFormat::Yuva420p
2023-04-04 00:15:07 -07:00
nosamu
315a7c87e5
core: Focus EditText fields only if editable
2023-04-03 23:27:18 -07:00
Mike Welsh
bde9765864
avm2: Implement `Matrix3D.transformVector` and `deltaTransformVector`
2023-04-03 17:09:16 -07:00
Nathan Adams
3a297f8adc
core: Iterate y then x in bitmapdata operations
2023-04-03 18:25:20 +02:00
Nathan Adams
2a9288870a
core: Made operations take in MutationContext instead of &mut UpdateContext where possible
2023-04-03 18:25:20 +02:00
Nathan Adams
4477d65331
core: Made overwrite_cpu_pixels_from_gpu take in MutationContext instead of &mut UpdateContext
2023-04-03 18:25:20 +02:00
Nathan Adams
e62e2a94e8
core: Move dummy() from BitmapData to BitmapDataWrapper
2023-04-03 18:25:20 +02:00
Nathan Adams
f9a9c05863
avm2: Made fill_bitmap_data_from_symbol return a BitmapDataWrapper, instead of taking in a BitmapData
2023-04-03 18:25:20 +02:00
Nathan Adams
ab534bab87
core: Rename BitmapData (of the stage variety) to BitmapGraphicData to separate it from BitmapData of the editable data variety
2023-04-03 18:25:20 +02:00
Nathan Adams
e1e4a01f13
avm2: Make BitmapDataObject::from_bitmap_data take BitmapDataWrapper
2023-04-03 18:25:20 +02:00
Nathan Adams
103158101a
avm2: Make Object::init_bitmap_data take in BitmapDataWrapper
2023-04-03 18:25:20 +02:00
Nathan Adams
a80a1422b0
avm2: Renamed bitmap_data_wrapper into bitmap_data
2023-04-03 18:25:20 +02:00
Nathan Adams
0f81d60db2
avm1: Removed BitmapDataObject::bitmap_data() as it's no longer used (or recommended to use)
2023-04-03 18:25:20 +02:00
Nathan Adams
7ffdcccf8a
avm1: Don't sync in BitmapData.loadBitmap()
2023-04-03 18:25:20 +02:00
Nathan Adams
f8ef01d2ef
avm1: Don't sync a bitmapdata to read its width or height
2023-04-03 18:25:20 +02:00
Nathan Adams
c037e014c2
avm1: Don't sync in new Bitmap(x)
2023-04-03 18:25:20 +02:00
Nathan Adams
e593541309
avm1: Don't sync bitmapdata when disposing it
2023-04-03 18:25:20 +02:00
Nathan Adams
f7da335083
avm2: Renamed as_bitmap_data_wrapper into as_bitmap_data
2023-04-03 18:25:20 +02:00
Nathan Adams
1521c7b6ee
avm2: Removed Object::as_bitmap_data() as it's no longer used (or recommended to use)
2023-04-03 18:25:20 +02:00
Nathan Adams
b1f7fecacb
avm2: Don't sync in new Bitmap(x)
2023-04-03 18:25:20 +02:00
Nathan Adams
444e256708
avm2: Made Bitmap.bitmapData not recreate a new BitmapDataWrapper every time its called
2023-04-03 18:25:20 +02:00
Tom Schuster
b0576c2155
avm2: Improve the Sound::extract stub
2023-04-03 00:22:23 -07:00
onkrot
d047ecb130
avm2: Add X509 certificate classes
2023-04-02 23:59:37 -07:00
renovate[bot]
cd3ad90d61
chore(deps): lock file maintenance rust dependencies
2023-04-02 22:00:49 -07:00
Lord-McSweeney
d1b8ec7a7e
avm2: Stub Shader
2023-04-02 19:56:14 -07:00
Lord-McSweeney
c19031a6fc
avm2: Stub ShaderData
2023-04-02 19:56:14 -07:00
Aaron Hill
a2fa362091
wgpu: Implement double buffering for Context3D
...
This matches the Context3D docs. Calling 'present' swaps
the buffers.
I wasn't certain if we actually need a double-buffered depth
texture, but I included one just to be safe.
2023-04-02 19:24:23 -07:00
Aaron Hill
671ebdfa8f
wgpu: Execute Context3D commands immediately
...
Now that most of the complicated Context3D methods have been
implemented, we can simplify the overall design. Instead of queueing
up commands and having `present` execute them in a loop, we
can execute each command immediately. The key insight is that
a `RenderPass` is only needed for `DrawTriangles`, so we don't
have to store it in `Context3D` and deal with complicated lifetime
issues.
The old behavior gave us implicit double-buffering behavior,
since nothing would get rendered until a 'present' call.
Now that a 'drawTriangles' call will immediately submit
a draw command, we need to implement actual double buffering.
This is done in the next commit.
2023-04-02 19:24:23 -07:00
Moulins
9441182b7d
avm2: move event dispatch error handling in a single place
...
The `Avm2::{dispatch, broadcast}_event` methods now log and swallow any
AVM2 error occuring during the dispatch, instead of repeating the
handling code for each caller.
This also introduces some behavioral changes:
- Errors messages are more consistent;
- For consistency with `broadcast_event`, `dispatch_event` panics if
given a non-event object to dispatch.
2023-04-02 16:52:42 -07:00
Udeshya
34775965ea
avm2: Implement `Transform.pixelBounds`
2023-04-02 23:25:10 +00:00
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
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
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
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
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
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
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
Nathan Adams
864ee1c6df
core: Make hit test methods not sync if the pixel is outside a dirty region
2023-03-31 16:57:52 +02:00
Nathan Adams
8fc1b0d48e
core: Make get_pixel and get_pixel32 not sync if the pixel is outside a dirty region
2023-03-31 16:57:52 +02:00
Nathan Adams
e1f76bf135
core: Use map instead of and_then for MovieLibrarySource::bitmap_handle
2023-03-31 16:57:52 +02:00
Nathan Adams
b035c7f24e
core: noise and perlin_noise shouldn't perform a gpu->cpu sync
2023-03-31 16:57:52 +02:00
Nathan Adams
2b483a5953
core: Ensure MovieLibrarySource::bitmap_handle updates the bitmap handle
2023-03-31 16:57:52 +02:00
Nathan Adams
d44bdc16a8
avm2: Ensure Graphics.lineBitmapStyle updates the bitmap handle
2023-03-31 16:57:52 +02:00
Nathan Adams
7e2382d804
avm2: Ensure DisplacementMapFilter.mapBitmap updates the bitmap handle
2023-03-31 16:57:52 +02:00
Nathan Adams
29ad46daf5
avm1: Ensure MovieClip.beginBitmapFill updates the bitmap handle
2023-03-31 16:57:52 +02:00
Nathan Adams
c364deb545
avm2: Ensure Graphics.beginBitmapFill updates the bitmap handle
2023-03-31 16:57:52 +02:00
Nathan Adams
9e5c56fc4f
core: BitmapData.transparent (in both avm1 and 2) shouldn't sync the whole bmd
2023-03-31 16:57:52 +02:00
Nathan Adams
e62e05cd09
core: Move get_pixels from BitmapData to bitmap_data_operations
2023-03-31 16:57:52 +02:00
Nathan Adams
89c2fc841e
core: Move get_vector from BitmapData to bitmap_data_operations
2023-03-31 16:57:52 +02:00
Nathan Adams
e4caedcc12
core: Move draw from BitmapData to bitmap_data_operations
2023-03-31 16:57:52 +02:00
Nathan Adams
57648b6380
core: Move apply_filter from BitmapData to bitmap_data_operations
2023-03-31 16:57:52 +02:00
Nathan Adams
8bb02c38c0
core: Move copy_pixels from BitmapData to bitmap_data_operations
2023-03-31 16:57:52 +02:00
Nathan Adams
eb04738b73
core: Move set_pixel from BitmapData to bitmap_data_operations
2023-03-31 16:57:52 +02:00
Nathan Adams
a41a797b4a
core: Move merge from BitmapData to bitmap_data_operations
2023-03-31 16:57:52 +02:00
Nathan Adams
60a157224f
core: Move color_bounds_rect from BitmapData to bitmap_data_operations
2023-03-31 16:57:52 +02:00
Nathan Adams
62b90c6c8e
core: Move hit test methods from BitmapData to bitmap_data_operations
2023-03-31 16:57:52 +02:00
Nathan Adams
2c65f23eb8
core: Move compare from BitmapData to bitmap_data_operations
2023-03-31 16:57:52 +02:00
Nathan Adams
8a0cb4685e
core: Move palette_map from BitmapData to bitmap_data_operations
2023-03-31 16:57:52 +02:00
Nathan Adams
b1b0394101
core: Move scroll from BitmapData to bitmap_data_operations
2023-03-31 16:57:52 +02:00
Nathan Adams
4510eb305b
core: Move threshold from BitmapData to bitmap_data_operations
2023-03-31 16:57:52 +02:00
Nathan Adams
f476968693
core: Move color_transform from BitmapData to bitmap_data_operations
2023-03-31 16:57:52 +02:00
Nathan Adams
43716bbdc7
core: Move copy_channel from BitmapData to bitmap_data_operations
2023-03-31 16:57:52 +02:00
Nathan Adams
ea6fb1a3d4
core: Move perlin_noise from BitmapData to bitmap_data_operations
2023-03-31 16:57:52 +02:00
Nathan Adams
ffe6828e9c
core: Move noise from BitmapData to bitmap_data_operations
2023-03-31 16:57:52 +02:00
Nathan Adams
285122a1fa
core: Move flood_fill from BitmapData to bitmap_data_operations
2023-03-31 16:57:52 +02:00
Nathan Adams
c2af7b92c0
core: Move get_pixel from BitmapData to bitmap_data_operations
2023-03-31 16:57:52 +02:00
Nathan Adams
758d8f1492
core: Move get_pixel32 from BitmapData to bitmap_data_operations
2023-03-31 16:57:52 +02:00
Nathan Adams
31f46c6acf
core: Move set_pixel32 from BitmapData to bitmap_data_operations, fixed set_pixels to no longer use it
2023-03-31 16:57:52 +02:00
Nathan Adams
1024fc8be5
core: Optimise fill_rect when replacing entire region after a draw call
2023-03-31 16:57:52 +02:00
Nathan Adams
e614265c17
core: Move fill_rect from BitmapData to bitmap_data_operations, fixed a bug when using non-standard values, and added better tests for fill_rect showing the bug
2023-03-31 16:57:52 +02:00
Nathan Adams
033ab34c14
core: Extract bitmap_data_operations for common avm operations
2023-03-31 16:57:52 +02:00
Nathan Adams
311a165149
wgpu: Reintroduce texture promoting; only preassign buffer when the texture is frequently written/&read
2023-03-31 16:57:52 +02:00
Nathan Adams
579f046122
core: Don't mark anything dirty in an invalid drawRect call
2023-03-31 16:57:52 +02:00
Nathan Adams
68c87c7485
core: When drawing display objects to bitmapdatas, use their minimum bounds
2023-03-31 16:57:52 +02:00
Nathan Adams
6e859891af
render: Take in dirty region in update_texture, only upload those pixels
2023-03-31 16:57:52 +02:00
Nathan Adams
137593b6a6
render: Extract (u32, u32, u32, u32) to PixelRegion
2023-03-31 16:57:52 +02:00
Nathan Adams
e0bd911f2f
render: Only copy a possible dirty area for bitmapdata.draw & read
2023-03-31 16:57:52 +02:00
Gleb Piskunov
ed282f016b
avm1: Exclude __proto__ prop from object props enumeration
...
---------
Co-authored-by: Gleb Piskunov <emgfc@ya.ru>
2023-03-31 10:14:33 +00:00
Toad06
c81460beb0
avm1: Support strings in `MovieClip.setMask(str)`
2023-03-31 02:39:39 -07:00
Tom Schuster
8a8071e6d5
avm2: Stub XMLNode.nodeName setter and XMLNode.appendChild
2023-03-31 00:11:52 -07:00
Tom Schuster
ce4ddee792
avm2: Shim flash.xml.XMLNode using XML
2023-03-31 00:11:52 -07:00
Aaron Hill
3e97f0e223
core: Update to latest quick-xml
...
I've moved our special entity handling logic into
a `custom_unescape` function. This lets us move off
of our fork of `quick-xml` back onto the crates.io release
2023-03-30 22:25:24 -07:00
Gleb Piskunov
b18d3a2645
avm2: Add AS3 implementation of BitmapData.paletteMap ( #10344 )
...
Co-authored-by: Gleb Piskunov <emgfc@ya.ru>
2023-03-30 17:39:05 +00:00
relrelb
236a97bf31
render: Replace `ColorTransform` with `swf::ColorTransform`
2023-03-29 23:27:20 -07:00
onkrot
5632ade09c
avm2: Hookup `DisplayObject.opaqueBackground`
2023-03-29 23:11:01 -07:00
Aaron Hill
8fa00de8a8
avm2: Convert Font class to ActionScript
2023-03-29 22:46:27 -07:00
Tom Schuster
330bd37237
avm2: Stub flash.net.XMLSocket
2023-03-29 22:33:16 -07:00
EmperorBale
ac626493dd
avm2: Fix panic in regexp when a wide empty string is used
2023-03-29 18:00:07 -07:00
Aaron Hill
34e4cffeb0
avm2: Use global domain for timer Activation
2023-03-29 19:05:19 -05:00
relrelb
d71617209a
render: Remove `RenderBackend::register_glyph_shape`
...
Use just `RenderBackend::register_shape` instead.
2023-03-30 01:46:04 +03:00
Tom Schuster
b1f253775a
avm2: Implement XML.childIndex
2023-03-29 14:40:29 -05:00
Tom Schuster
c0400af1de
avm2: Implement XML.copy
2023-03-29 11:04:32 -05:00
Aaron Hill
cdba704b4b
avm2: Construct Activation with Domain when setting named child
2023-03-29 09:27:34 -05:00
Nathan Adams
3a49870689
avm2: Fix errors in LoaderInfo and stubbed remaining properties
2023-03-28 11:57:00 +02:00
TÖRÖK Attila
05e2b4c729
avm2: Stub Video.deblocking and Video.smoothing
2023-03-28 10:20:29 +03:00
TÖRÖK Attila
72802de20e
nit: Fix typo: "recieve" -> "receive"
2023-03-28 10:06:08 +03:00
renovate[bot]
5052e942b5
chore(deps): lock file maintenance rust dependencies
2023-03-28 09:31:15 +03:00
Toad06
9c37c9cd34
core: Correct `swapDepths`
2023-03-28 00:24:48 -05:00