Commit Graph

5036 Commits

Author SHA1 Message Date
Nathan Adams e5f44b0f05 avm2: Replaced stubs in actionscript with new stub system 2023-02-07 20:34:59 +01:00
Nathan Adams bdbf54ecd4 core: Added ability to mark stubs inside actionscript 2023-02-07 20:34:59 +01:00
Nathan Adams dff558170e avm2: Implement BitmapData.getPixels() 2023-02-07 19:10:25 +01:00
Nathan Adams 25cc6f3243 avm2: Change MovieClip::frame_scripts to Vec<Option<Avm2Object>>, where index is frame num 2023-02-07 18:26:27 +01:00
Nathan Adams 43d9c3deed avm2: Make sure SoundChannel.soundTransform always returns a value 2023-02-07 18:26:27 +01:00
Nathan Adams bc7773596b avm2: addFrameScript allows null to unset the script, and only allows one script per frame 2023-02-07 18:26:27 +01:00
CUB3D 48f4df51a5 avm1: Correct depth calculation for AVM1 clips pending removal and add tests 2023-02-06 10:53:45 -07:00
CUB3D 2d11a250da avm1: Retrieving the child of a container should prioritise lowest depth 2023-02-06 10:53:45 -07:00
CUB3D a356be15fe avm1: Only delay removals on AVM1, check for dynamic unload handlers 2023-02-06 10:53:45 -07:00
CUB3D 755425ebfa avm1: Delay clip removals when a child has an unload listener
When removing a clip, first check if it has an unload event listener somewhere
it's hierarchy.
If it does, enqueue the removal to happen on the next frame, by moving it to a negative depth.
2023-02-06 10:53:45 -07:00
Nathan Adams 50fd7aeff5 core: Add quality options to the context menu 2023-02-06 16:08:04 +01:00
Nathan Adams a220703618 core: Made PlayerBuilder take quality instead of setting it after the Player was made 2023-02-06 16:08:04 +01:00
Nathan Adams d8e924affc render: Add RenderBackend::set_quality method, and call it from core 2023-02-06 16:08:04 +01:00
Nathan Adams 12bd38b338 core: Changed Player::set_quality to take in a StageQuality directly 2023-02-06 16:08:04 +01:00
Nathan Adams b270d1bbd7 render: Move StageQuality from core to render 2023-02-06 16:08:04 +01:00
Nathan Adams 00c7e8f634 avm2: Fixed bytearray compress/decompress methods setting position of resulting bytearray 2023-02-05 19:22:01 +01:00
Nathan Adams e798d69299 avm2: Convert ByteArray EOF to avm error 2023-02-05 19:22:01 +01:00
Nathan Adams c14f022837 core: Use overwrite_cpu_pixels in apply_filter 2023-02-05 18:41:43 +01:00
Nathan Adams 7476b3b0e0 avm2: Added a bunch of missing filter classes 2023-02-05 18:41:43 +01:00
Nathan Adams 42f3ee923f avm2: Mark unsupported filters as stubs 2023-02-05 18:41:43 +01:00
Nathan Adams 3411a04cef render: Made render specific Filter enum & structs, as swf ones don't map 1:1 to potential filters 2023-02-05 18:41:43 +01:00
Nathan Adams b5a250e16f render: Changed render_offscreen to return an Option instead of an Result 2023-02-05 18:41:43 +01:00
Nathan Adams e73389aa71 wgpu: Implement blur filter 2023-02-05 18:41:43 +01:00
Nathan Adams 284a58c817 avm2: Implement BitmapData.apply_filter for ColorMatrixFilter 2023-02-05 18:41:43 +01:00
Lord-McSweeney a369e71af6 Appease clippy again 2023-02-03 23:32:22 +01:00
Lord-McSweeney 83087f9f23 Change stubs to use new macro method 2023-02-03 23:32:22 +01:00
Lord-McSweeney a6ea1ef4a7 Appease clippy 2023-02-03 23:32:22 +01:00
Lord-McSweeney add115e97f State "Stub" instead of "Implement"
...and fix a format issue.
2023-02-03 23:32:22 +01:00
Lord-McSweeney 963f3240f2 Stub DisplayObject.opaqueBackground 2023-02-03 23:32:22 +01:00
nosamu 12c67d5068 desktop: Improve --help messages 2023-02-03 21:17:56 +01:00
Nathan Adams 198e40fd2e avm2: Changed return values of a bunch of stubs per PR feedbck 2023-02-01 21:45:12 +01:00
Nathan Adams 8e917c473e avm2: Replaced stubs in Proxy with new format 2023-02-01 21:45:12 +01:00
Nathan Adams b28e921fb9 avm2: Replaced stubs in Keyboard with new format 2023-02-01 21:45:12 +01:00
Nathan Adams 99e723a1cb avm2: Replaced stubs in TextField with new format 2023-02-01 21:45:12 +01:00
Nathan Adams 2a36f9b871 avm2: Replaced stubs in StaticText with new format 2023-02-01 21:45:12 +01:00
Nathan Adams ff768a1e73 avm2: Replaced stubs in Font with new format 2023-02-01 21:45:12 +01:00
Nathan Adams af73a1a292 avm2: Replaced stubs in Security with new format 2023-02-01 21:45:12 +01:00
Nathan Adams e48926799c avm2: Replaced stubs in SharedObject with new format 2023-02-01 21:45:12 +01:00
Nathan Adams 408482cd21 avm2: Replaced stubs in ObjectEncoding with new format 2023-02-01 21:45:12 +01:00
Nathan Adams 69101af66b avm2: Replaced stubs in SoundMixer with new format 2023-02-01 21:45:12 +01:00
Nathan Adams 834ac93350 avm2: Replaced stubs in Sound with new format 2023-02-01 21:45:12 +01:00
Nathan Adams cb1fa72d6f avm2: Replaced stubs in Transform with new format 2023-02-01 21:45:12 +01:00
Nathan Adams a576903f0c avm2: Replaced stubs in IndexBuffer3D with new format 2023-02-01 21:45:12 +01:00
Nathan Adams 24169a3577 avm2: Replaced stubs in Stage with new format 2023-02-01 21:45:12 +01:00
Nathan Adams 6a6e81ad6a avm2: Replaced stubs in LoaderInfo with new format 2023-02-01 21:45:12 +01:00
Nathan Adams 33dbe82b4f avm2: Replaced stubs in InteractiveObject with new format 2023-02-01 21:45:12 +01:00
Nathan Adams 46ed595186 avm2: Replaced stubs in Graphics with new format 2023-02-01 21:45:12 +01:00
Nathan Adams 0abfb79c62 avm2: Replaced stubs in DisplayObjectContainer with new format 2023-02-01 21:45:12 +01:00
Nathan Adams 0e522fd58b avm2: Replaced stubs in displayobject with new format 2023-02-01 21:45:12 +01:00
Nathan Adams fb0578ee26 avm2: Replaced stubs in bitmapdata with new format 2023-02-01 21:45:12 +01:00
Nathan Adams 10ec9a1a74 avm2: Replaced stubs in namespace with new format (but still err as I don't know what to return otherwise) 2023-02-01 21:45:12 +01:00
Nathan Adams 8f53f5414c avm2: Replaced stubs in bitmap with new format 2023-02-01 21:45:12 +01:00
Nathan Adams 44981af409 avm1: Replaced all existing stub warnings with new stub system 2023-02-01 21:45:12 +01:00
Nathan Adams 366f8bef43 core: Add feature known_stubs to retrieve all known stubs 2023-02-01 21:45:12 +01:00
Nathan Adams 4a0529dedc core: Add Stub and StubCollection for tracking stubs used during a movie 2023-02-01 21:45:12 +01:00
renovate[bot] caaf6d5c87 fix(deps): update rust dependencies 2023-01-31 09:39:42 -06:00
nosamu 5ee3b821dd core: Fix DO render tree display 2023-01-29 11:58:59 -06:00
Moulins e36b03bce9 core::html: correctly encode text in FormatSpans::to_html
Fixes issue #9327
2023-01-29 11:19:16 -06:00
CUB3D f829157deb avm1: Defining a local that already exists on the target of a with scope, defines it on the target not the parent 2023-01-29 18:05:25 +01:00
Aaron Hill c6eb25194e core: Bump flash-lso to latest commit
This deduplicates some dependencies, and removes
a future-incompat warning from `nom`.
2023-01-29 17:31:10 +01:00
Nathan Adams 85dc100ee9 avm2: Implement Sprite.dropTarget - though it's wrong right now 2023-01-29 00:52:52 +01:00
Daniel Jacobs 6697848b92 avm1: Don't ignore mouse_pick on static text (fix #9274) 2023-01-29 00:39:06 +01:00
Daniel Jacobs b00628f45d avm2: Add warning to MouseEvent.updateAfterEvent 2023-01-28 14:31:52 -06:00
Daniel Jacobs 65a0aaeb7b avm2: Stub MouseEvent.updateAfterEvent
Basically a direct copy of https://github.com/ruffle-rs/ruffle/pull/7653
2023-01-28 14:31:52 -06:00
Aaron Hill 7ba960987c core: Display class name in ErrorObject debug impl
This lets us know something about the type of error
that was thrown, and doesn't require an Activation/UpdateContext.
2023-01-24 20:38:45 -06:00
TÖRÖK Attila e77b1e379c core/audio: mp3: Use MpaReader instead of the deprecated Mp3Reader from Symphonia 2023-01-24 20:10:40 -06:00
renovate[bot] 8b6eef1715 fix(deps): update rust dependencies 2023-01-24 20:10:40 -06:00
Daniel Jacobs 0a04b22a79 avm2: Stub simple flash.text.engine enums 2023-01-23 13:51:26 -06:00
MartySVK ad688b45da
avm2: added Stage.fullScreenSourceRect stub (#9265)
* avm2: added Stage.fullScreenSourceRect

* fixing checks I hope
2023-01-22 16:29:12 -05:00
Aaron Hill e2954821ea
core: Take two - delay reading image back from render backend using `SyncHandle` (#9184)
* Take two: Delay reading image back from render backend using `SyncHandle`

This allows us to avoid blocking immediately after a `BitmapData.draw` call.
Instead, we only attempt to use the `SyncHandle` when performing an operation
that requires the CPU-side pixels (e.g. BitmapData.getPixel or BitmapData.setPixel).

In the best case, the SWF will never explicitly access the pixels of
the target BitmapData, removing the need to ever copy back the render backend
image to our BitmapData. If the SWF doesn't require access to the pixels immediately,
we can delay copying the pixels until they're actually needed, hopefully allowing
the render backend to finish processing the BitmapData.draw operation in
the backenground before we need the result.

Now that the CPU and GPU pixels can be intentionally out of sync with
each other, we need to ensure that we don't accidentally expose 'stale'
CPU-side pixels to ActionScript (which needs to remain unaware of
our internal laziness). We now use a wrapper type `BitmapDataWrapper`
to enforce that the `SyncHandle` is consumed before accessing the
underlying `BitmapData.

* core: Skip GPU->CPU sync for source and target BitmapData during draw

* Introduce DirtyState enum
2023-01-21 21:08:04 +00:00
MartySVK 6d5f6385a5
avm2: added TextField.restrict stub (#9218)
* added TextField.restrict stub

Co-authored-by: Martin Mravec <marty.devil@gmail.com>
2023-01-19 22:23:33 -05:00
Adrian Wielgosik fb4d2d3f04 avm2: Implement TextField.maxChars 2023-01-19 01:24:47 +01:00
Nathan Adams 5f72ebaef9 core: Don't call avm2 callstack method if there's no callstack 2023-01-19 00:50:56 +01:00
Nathan Adams f5d69f5ad8 avm2: Corrected panic messages in date code 2023-01-16 21:48:00 +01:00
EmperorBale 3287173da3 avm2: Fix edge case when setting fullYear of date 2023-01-16 21:48:00 +01:00
EmperorBale 6bb079cc60 avm2: Remove some useless else statements in date 2023-01-16 21:48:00 +01:00
MrCheeze ebe5eed143 avm2: Fix corner case when goto same frame multiple times (close #9018)
This change makes it so that if there is a goto to a specific frame,
then a frame script is registered for that frame, and then a goto to the
same frame again, the frame script will not be skipped. At least one movie
appears to depend on this behaviour.
2023-01-16 18:37:19 +01:00
nosamu 952aa2d5f9 avm2: Correct name of rollover event 2023-01-14 20:04:33 +01:00
Aaron Hill 3a6c8d9796 core: Use BitmapData instead of separate `initial_data` field
Now that a `Bitmap` always stores a `BitmapData`, we can read the pixels
directly from the `BitmapData`, instead of duplicating them in an
`initial_data` field
2023-01-14 01:28:22 -05:00
Aaron Hill b5796f9016 core: Derive Default for FramePhase 2023-01-13 20:37:52 +01:00
Calvin304 6c71f5b2a6 avm2: Naive DefineButtonSound impl for Avm2Button 2023-01-11 17:45:39 -05:00
Nathan Adams 9cd850d30e render: Make render_offscreen return a sync handle which can be used to get the texture at a later time 2023-01-11 16:53:33 -05:00
Nathan Adams 133044b06b avm2: Fix start_drag with negative width or height 2023-01-11 00:09:01 +01:00
MrCheeze 0597ae56e6 core: Make AVM2 frame labels case sensitive 2023-01-10 11:28:56 -05:00
renovate[bot] 630558a936 fix(deps): update rust dependencies 2023-01-10 16:37:40 +01:00
Moulins 3b1c981d25 Clears the AVM1 stack after executing bytecode
AVM1 bytecode may leave the operand stack unbalanced, and this will
cause a slow memory leak if the stack is never cleared.
2023-01-10 14:14:17 +01:00
CUB3D c6bd431864 avm1: Deduplicate threshold operations 2023-01-10 13:59:06 +01:00
CUB3D ea6ea8074a tests: Add tests for BitmapData.threshold, fix issues found as a result 2023-01-10 13:59:06 +01:00
CUB3D 70f071b347 avm1: Implement Bitmapdata.threshold 2023-01-10 13:59:06 +01:00
CUB3D 8db909a7d4 desktop: Allow specifying player version 2023-01-10 13:13:30 +01:00
MrCheeze bf6342bd4b avm2: Fix hitTestPoint not transforming coordinates to world space
This behaviour is essentially copied from avm1 movie_clip.rs's hit_test.
Seems to fix several flashes that had broken collision until now.
2023-01-10 12:53:20 +01:00
Nathan Adams 724609e323 audio: Don't panic when reading an invalid mp3, bubble the error up 2023-01-10 11:10:46 +01:00
Nathan Adams 3b24d849e7 audio: Removed unwraps in mixer.rs and replaced with reasoned expects 2023-01-10 11:10:46 +01:00
Nathan Adams 7a9e8b4771 core: Made NullNavigatorBackend no longer use unwraps 2023-01-10 11:10:46 +01:00
CUB3D 84d0111a14 avm1: Add test for with scope nesting 2023-01-10 10:34:10 +01:00
CUB3D ca82ff65de avm1: Defining a local in a with scope should actually define it on the parent scope 2023-01-10 10:34:10 +01:00
Nathan Adams a37e070724 core: Use Color::WHITE for draw_rect when we don't care, as it's just identity color transform and thus cheaper 2023-01-10 09:39:28 +01:00
Nathan Adams 53d6fa4d8b render: Make render commands take in an actual value, not ref for immediate cloning 2023-01-10 09:39:28 +01:00
Adrian Wielgosik 14ee9b43fb avm2: Replace ok_or by ok_or_else 2023-01-09 21:01:39 +01:00
Aaron Hill 40d8751d67 avm2: Implement clipRect parameter for BitmapData.draw 2023-01-08 16:11:55 -05:00
Aaron Hill 1b71e288fd Remove 'gc_context lifetime
The latest `gc-arena` makes this unnecessary - we can just
use our `'a` lifetime for `MutationContext`
2023-01-06 19:20:39 -05:00
Moulins d332a174c3 Bump `gc-arena` to current master revision
This required small changes to some Debug impls that were missed in #8964
2023-01-06 18:22:43 -05:00
Nathan Adams a7738bec69 core: Added a few simple tracing::instruments 2023-01-06 04:25:22 +01:00
Nathan Adams 13fd830e7c core: Switch from log to tracing 2023-01-06 04:25:22 +01:00
MrCheeze 71fcd383a3 avm2: Add ctrlKey, altKey, shiftKey, controlKey properties to KeyboardEvent 2023-01-04 16:27:09 -05:00
Nathan Adams 4d948616db avm1: Implement BitmapData.draw with blend mode, fixes #8920 2023-01-04 12:09:08 -05:00
Nathan Adams cd550457e1 core: Made TDisplayObject::movie() no longer an Option<> 2023-01-04 08:20:08 +01:00
Nathan Adams 40a7bb04d6 core: Removed default impl of TDisplayObject::movie(), implement it everywhere 2023-01-04 08:20:08 +01:00
Aaron Hill 10491a1be9 core: Store data in `BitmapData` instead of `Bitmap`
This makes `Bitmap` delegate to `BitmapData` for
all of the bitmap-related information (handle, width, and height).
As a result, we now unconditionally store a `BitmapData` in `Bitmap`.

As a result, swapping the underling `BitmapData` instance will
automatically change the properties (and rendered image) of a `Bitmap`.

This required some refactoring in the render backends in order to
get access to a `BitmapHandle` through `BitmapData`.
2023-01-03 18:01:41 -07:00
MrCheeze 41df7fdc59 avm2: For old swf versions, invalid goto labels jump to frame 1 (fix #8954)
The regression test for this was edited directly in JPEXS, so there is
no corresponding fla to compile into the swf.
2023-01-03 17:10:06 -07:00
MrCheeze 77104ca473 avm2: Improve accuracy of gotoAndPlay / gotoAndStop (partially fix #8954)
Partially based on AVM1 implementation, partially based on the new
regression tests added in this commit.
2023-01-03 17:10:06 -07:00
nosamu 664a86161a avm2: Fix `for each..in` loops over Dictionary values 2023-01-03 16:52:15 -07:00
Moulins 27307d847a core: Replace some derived Debug impls with manual ones
In future versions of `gc-arena`, the `Debug` impl. of `Gc`
and `GcCell` will print the pointed-to value, which will cause
derived `Debug` impls. to enter an infinite recursion.

As such, this manually implements `Debug` on types wrapping a
`Gc/GcCell` to maintain the current behavior.
2023-01-03 18:03:23 -05:00
Nathan Adams 5a7ec70254 core: Remove blend mode unsupported message 2023-01-03 03:39:13 +01:00
Nathan Adams ded46e20e7 render: Replace PushBlendMode/PopBlendMode with Blend 2023-01-03 03:39:13 +01:00
EmperorBale a51ffd0e9f avm2: Strings passed to date constructor should be parsed 2023-01-02 11:43:03 -08:00
EmperorBale ab3a1e6148 avm2: Move date parsing into a separate function 2023-01-02 11:43:03 -08:00
MrCheeze bf18334294 avm2: Fix calling setTextFormat without providing a beginIndex and EndIndex
Previous behaviour defaulted to undefined and applied the format to the
range [0,0) instead of defaulting to -1 and applying the format to the
full length of the TextField.
2023-01-01 21:03:12 -08:00
Aaron Hill 9d6763510b core: Remove redundant 'clone' calls 2022-12-31 17:13:55 -05:00
nosamu 89e01b5598 avm2: Throw error in Loader.unload stub 2022-12-29 10:50:35 +01:00
EmperorBale ac4d74b9ed core: Use applicationDomain specified in context if available 2022-12-28 17:25:11 -05:00
EmperorBale 7e5018331d core: Add new `context` parameter to loader 2022-12-28 17:25:11 -05:00
dependabot[bot] 6f430bb40d build(deps): bump serde from 1.0.151 to 1.0.152
Bumps [serde](https://github.com/serde-rs/serde) from 1.0.151 to 1.0.152.
- [Release notes](https://github.com/serde-rs/serde/releases)
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.151...v1.0.152)

---
updated-dependencies:
- dependency-name: serde
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-28 10:55:35 +02:00
David Wendt 08fed6aeaa core: Don't attempt to set properties on parents after construction unless the child has an explicit name.
This already was implemented, but the prior commits broke it.
2022-12-27 20:15:49 -07:00
David Wendt 7eb0ca8ecc core: Unconstructed display objects should be `null`, not `undefined`. 2022-12-27 20:15:49 -07:00
David Wendt cbf2e94aba core: Fix AVM2 buttons getting constructed with the wrong initial state.
This code was always wrong; and only saved from breaking by other wrong code elsewhere. Specifically:

 * `SimpleButton.construct_frame` sets the wrong initial state
 * but `MovieClip.instantiate_child` fires frame events before `post_instantiation`
  * and `SimpleButton.post_instantiation` sets the correct state
2022-12-27 20:15:49 -07:00
David Wendt eb0eede07d chore: Remove unused/superceded event issue code 2022-12-27 20:15:49 -07:00
David Wendt b6aa035663 core: Instantiating display objects on the timeline should no longer construct them.
This works now because all object placement and removal happens in `enter_frame`. Constructing those objects right away causes them to drop added events.

We cannot remove other instances of `construct_frame`, however - those are in places where we actually do expect constructors to run, not just see things get placed.
2022-12-27 20:15:49 -07:00
David Wendt 4b71fff745 core: Children added to AVM2 buttons should not emit added events 2022-12-27 20:15:49 -07:00
David Wendt 0d7e9cd30e core: All display objects that can be placed by timeline need to add themselves to their parent object.
This also centralizes all the code we added in the prior commit into `on_construction_complete`, which should be called whenever an AVM2 object finishes construction.
2022-12-27 20:15:49 -07:00
David Wendt 1c5e97ccc6 core: Move AVM2 `PlaceObject` processing to `enter_frame`.
This has a few other knock-on effects:

 * AVM2 added-to-timeline events are fired by each object after it constructs its AVM2 side. This is opposed to before when we fired them after object instantiation and placement. This also gets rid of a prior hack we had for the AVM2 root movie getting added to the stage - or, more accurately, adopts it for everything.
 * The supercall constructor for `DisplayObject` runs `construct_frame` on all children. This matches Flash Player behavior.

NOTE: This currently breaks the `placed_with_name` check, so there's going to be a lot of spurious can't set warnings
2022-12-27 20:15:49 -07:00
dependabot[bot] 664c67ea27 build(deps): bump clap from 4.0.29 to 4.0.32
Bumps [clap](https://github.com/clap-rs/clap) from 4.0.29 to 4.0.32.
- [Release notes](https://github.com/clap-rs/clap/releases)
- [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md)
- [Commits](https://github.com/clap-rs/clap/compare/v4.0.29...v4.0.32)

---
updated-dependencies:
- dependency-name: clap
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-26 22:04:33 +01:00
Aaron Hill 6dc628e49f core: Remove some manual `Collect` impls
Some were completely unused, while others could be replaced
with a `#[derive(Collect)]`
2022-12-24 00:33:25 -06:00
Adrian Wielgosik 7a09dd5639 avm2: Convert FrameLabel to AS3, remove define_indirect_properties 2022-12-22 00:45:02 +01:00
Adrian Wielgosik e6e9c9edc2 avm2: Convert Dictionary to AS3 2022-12-21 23:56:48 +01:00
Adrian Wielgosik e90d595cb3 avm2: Convert SharedObject to AS3 2022-12-21 22:21:23 +01:00
Adrian Wielgosik f3ebb0c297 avm2: Convert JSON class to AS3 2022-12-21 22:21:23 +01:00
Lord-McSweeney 5cf5c8d5e5 Update Loader.as
Stub `flash.display.Loader.unload`
2022-12-20 16:58:55 -06:00
dependabot[bot] d12e1ebd6e build(deps): bump syn from 1.0.105 to 1.0.107
Bumps [syn](https://github.com/dtolnay/syn) from 1.0.105 to 1.0.107.
- [Release notes](https://github.com/dtolnay/syn/releases)
- [Commits](https://github.com/dtolnay/syn/compare/1.0.105...1.0.107)

---
updated-dependencies:
- dependency-name: syn
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-20 07:52:42 +02:00
dependabot[bot] 5383ae296d build(deps): bump quote from 1.0.21 to 1.0.23
Bumps [quote](https://github.com/dtolnay/quote) from 1.0.21 to 1.0.23.
- [Release notes](https://github.com/dtolnay/quote/releases)
- [Commits](https://github.com/dtolnay/quote/compare/1.0.21...1.0.23)

---
updated-dependencies:
- dependency-name: quote
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-20 07:29:38 +02:00
dependabot[bot] 9db6ace65f build(deps): bump serde from 1.0.150 to 1.0.151
Bumps [serde](https://github.com/serde-rs/serde) from 1.0.150 to 1.0.151.
- [Release notes](https://github.com/serde-rs/serde/releases)
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.150...v1.0.151)

---
updated-dependencies:
- dependency-name: serde
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-20 00:48:45 +01:00
dependabot[bot] 08566ed4ba build(deps): bump proc-macro2 from 1.0.47 to 1.0.49
Bumps [proc-macro2](https://github.com/dtolnay/proc-macro2) from 1.0.47 to 1.0.49.
- [Release notes](https://github.com/dtolnay/proc-macro2/releases)
- [Commits](https://github.com/dtolnay/proc-macro2/compare/1.0.47...1.0.49)

---
updated-dependencies:
- dependency-name: proc-macro2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-20 00:20:20 +01:00
dependabot[bot] 502b03a882 build(deps): bump rustversion from 1.0.9 to 1.0.11
Bumps [rustversion](https://github.com/dtolnay/rustversion) from 1.0.9 to 1.0.11.
- [Release notes](https://github.com/dtolnay/rustversion/releases)
- [Commits](https://github.com/dtolnay/rustversion/compare/1.0.9...1.0.11)

---
updated-dependencies:
- dependency-name: rustversion
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-19 21:37:54 +01:00
CUB3D 7b564ccd97 avm2: Stub registerClassAlias 2022-12-19 11:06:52 -08:00
Adrian Wielgosik 24a6f74b3c avm2: Convert Proxy to AS3 2022-12-19 18:25:25 +01:00
Adrian Wielgosik 96950f424e avm2: Stub InteractiveObject.focusRect 2022-12-18 14:36:08 -07:00
CUB3D 80cf98f501 avm2: Check for state parent in hit_test_shape as well as mouse_pick 2022-12-18 13:32:24 -07:00
CUB3D 2edbe3092b avm2: Ignore mouse_pick on static text 2022-12-18 13:32:24 -07:00
CUB3D b46a4186ab chore: Fmt 2022-12-18 13:32:24 -07:00
CUB3D 6f214c2165 chore: Fix clippy lint 2022-12-18 13:32:24 -07:00
CUB3D ef9483d961 avm2: hitTestPoint requires do to be on stage, only if shape_flag=true 2022-12-18 13:32:24 -07:00
CUB3D d7156e9a58 avm2: Dont transform mouse_pick point in button if hit_area has a parent 2022-12-18 13:32:24 -07:00
CUB3D 55926932e0 avm2: MouseUpInside clip events should be handled by avm2 buttons 2022-12-18 13:32:24 -07:00
CUB3D 8ddba5432c avm2: hitTestPoint requires the object to be on the stage 2022-12-18 13:32:24 -07:00
CUB3D 1013a6a162 avm2: Button bounds_with_transform should include bounds of current state child 2022-12-18 13:32:24 -07:00
CUB3D 391b3a9dfb avm2: Selecting the child of a SimpleButton should select the button, not the child
This fixes ingame menu buttons in BLOCnog
2022-12-18 13:32:24 -07:00
CUB3D fa44d61bc5 avm2: MouseEnabled shouldn't affect abillity to select children
Fixes #8694
2022-12-18 13:32:24 -07:00
CUB3D 690191dbdf avm2: Fix SimpleButton bounds 2022-12-18 13:32:24 -07:00
CUB3D f1401d6837 avm2: Fix hittests on depth=0 children 2022-12-18 13:32:24 -07:00
Mike Welsh c30eb38741 audio: Rename symphonia feature to mp3 2022-12-17 22:48:42 -08:00
Mike Welsh d162363c2f audio: Remove minimp3 feature 2022-12-17 22:48:42 -08:00
Moulins 625f09a91a avm1: remove unused GcCell in ArrayObject and SuperObject 2022-12-17 21:12:43 -08:00
Moulins 62e64c714e avm1: remove most of the contents of impl_custom_object! macro
The delegating methods are moved to default implementations on the
TObject trait, delegating to self.raw_script_object()
2022-12-17 21:12:43 -08:00
Moulins eadbf92454 avm1: rename TObject::{as => raw}_script_object & remove Option in ret. type
Usage of TObject::as_script_object was always followed by an unwrap, and
only SuperObject returned None.
The name change is intended to make clearer the fact that using the
returned object may bypass special behavior.
2022-12-17 21:12:43 -08:00
David Wendt 1255bf1c59 core: Don't fire init events on AVM2 until the first frame has been constructed. 2022-12-17 20:47:49 -08:00
Mike Welsh 696c9062d3 chore: Inherit cargo metadata from workspace
Use workspace inheritance added in Rust 1.64 to de-duplicate
various settings across all packages.
2022-12-16 15:53:59 -08:00
Adrian Wielgosik 870745e0ef avm2: Make pop_stack #[must_use] 2022-12-16 14:40:22 -08:00
Adrian Wielgosik 7df920b255 avm2: Support indexing with QNames 2022-12-16 14:40:22 -08:00
Adrian Wielgosik d2dfdb9a0b avm2: Collapse PackageNamespace to Namespace 2022-12-16 12:51:01 -08:00
relrelb 14747f26fd chore: Fix `clippy::uninlined_format_args` for `avm_debug!`
Though this is not currently enforced by Clippy.
2022-12-15 08:59:38 +02:00
relrelb bd9078addf chore: Fix `clippy::uninlined_format_args` lints 2022-12-15 08:59:38 +02:00
nosamu f904f20796 avm2: Stub SharedObject.clear and SharedObject.size 2022-12-15 08:41:28 +02:00
Adrian Wielgosik 92998e2c91 avm2: Translate ExternalInterface to AS 2022-12-14 17:57:45 +01:00
Adrian Wielgosik 5e115ed038 avm2: Stub more parts of LocalConnection and UrlRequest 2022-12-13 10:22:20 +01:00
Adrian Wielgosik c8314da8d3 avm2: Fix aliasing in BitmapData.copyChannel 2022-12-13 01:24:49 +01:00
Callum Thomson 20c9a3d765
AVM2: Implement System.setClipboard (#8751)
* avm2: Implement System.setClipboard

* web: Add comment to set_clipboard_content
2022-12-13 01:05:23 +01:00
CUB3D 02360b28dc avm2: Implement basic flash.net.navigateToURL 2022-12-13 00:34:10 +01:00
dependabot[bot] b1c4e6f143 build(deps): bump serde from 1.0.149 to 1.0.150
Bumps [serde](https://github.com/serde-rs/serde) from 1.0.149 to 1.0.150.
- [Release notes](https://github.com/serde-rs/serde/releases)
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.149...v1.0.150)

---
updated-dependencies:
- dependency-name: serde
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-12 21:21:45 +01:00
nosamu 1aaaf6d421 avm2: Stub SharedObject.close 2022-12-10 21:38:19 -06:00
Adrian Wielgosik 2bb4e2e549 core: Fix failing builds without avm_debug feature 2022-12-07 00:34:01 +01:00
David Wendt 8678325686 core: `Loader` must pass enter/construct frame lifecycle events to children or loaded SWFs won't work 2022-12-06 20:10:30 +01:00
Adrian Wielgosik e351f9f19b core: use ctrl+alt+f to dump DO render tree 2022-12-05 19:49:41 -07:00
Adrian Wielgosik 7b64fcf5fa avm2: Fix indirect event dispatching 2022-12-06 00:44:17 +01:00
dependabot[bot] 061f261c50 build(deps): bump syn from 1.0.104 to 1.0.105
Bumps [syn](https://github.com/dtolnay/syn) from 1.0.104 to 1.0.105.
- [Release notes](https://github.com/dtolnay/syn/releases)
- [Commits](https://github.com/dtolnay/syn/compare/1.0.104...1.0.105)

---
updated-dependencies:
- dependency-name: syn
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-05 23:15:10 +01:00
dependabot[bot] 3b285f8cf2 build(deps): bump serde from 1.0.148 to 1.0.149
Bumps [serde](https://github.com/serde-rs/serde) from 1.0.148 to 1.0.149.
- [Release notes](https://github.com/serde-rs/serde/releases)
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.148...v1.0.149)

---
updated-dependencies:
- dependency-name: serde
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-05 22:35:48 +01:00
kmeisthax f79208c75f
avm2: Fix no-op gotos (#8667)
* tests: Add a test for issue #8630

* core: No-op gotos in AS3 do not actually do anything, even though they emit events

Fixes issue #8630

* tests: Add more tests for various #8630-adjacent cases

* tests: Ignore the tests with script removal as they expect MovieClip children to be nulled upon removal

* chore: Case sensitive filesystem fix

Co-authored-by: Adrian Wielgosik <adrian.wielgosik@gmail.com>
2022-12-05 18:19:29 +01:00
wsxarcher c8e39da1e0 avm2: Implement filefilter filereference 2022-12-04 15:10:48 +01:00
Toad06 dcf1fb4ffd avm1: Various minor fixes in filters 2022-12-04 14:19:41 +01:00
Aaron Hill 1b3070ab85 core: Make `BitmapHandle` hold a trait object instead of an id
`BitmapHandle` now holds `Arc<dyn BitmapHandleImpl>`.
This allows us to move all of the per-bitmap backend data into
`BitmapHandle`, instead of holding an id to a backend-specific
hashmap.

This fixes the memory leak issue with bitmaps. Once the AVM side of a
bitmap (`Bitmap`/`BitmapData`) gets garbage-collected, the
`BitmapHandle` will get dropped, freeing all of the GPU resources
assoicated with the bitmap.
2022-12-03 19:44:44 -06:00
Adrian Wielgosik 0861153626 swf: make Clippy happy 2022-12-03 22:18:22 +01:00
David Wendt ce35313094 Revert "Revert "avm2: Implement `TextField` scrolling parameters""
This reverts commit f08aa19cb7.
2022-12-02 21:41:20 -05:00
Adrian Wielgosik f08aa19cb7 Revert "avm2: Implement `TextField` scrolling parameters"
This reverts commit 230ef315a2.
2022-12-02 18:22:19 -07:00
David Wendt 230ef315a2 avm2: Implement `TextField` scrolling parameters 2022-12-02 22:40:22 +01:00
Marco Bartoli f2080e6d57
avm2: implement get and set of displayobject filters (#8623) 2022-12-01 02:31:35 +01:00
dependabot[bot] 83487ae5d1 build(deps): bump serde from 1.0.147 to 1.0.148
Bumps [serde](https://github.com/serde-rs/serde) from 1.0.147 to 1.0.148.
- [Release notes](https://github.com/serde-rs/serde/releases)
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.147...v1.0.148)

---
updated-dependencies:
- dependency-name: serde
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-30 10:04:26 +01:00
dependabot[bot] e3923e0d3d build(deps): bump syn from 1.0.103 to 1.0.104
Bumps [syn](https://github.com/dtolnay/syn) from 1.0.103 to 1.0.104.
- [Release notes](https://github.com/dtolnay/syn/releases)
- [Commits](https://github.com/dtolnay/syn/compare/1.0.103...1.0.104)

---
updated-dependencies:
- dependency-name: syn
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-29 20:47:36 -07:00
Calvin304 5d5a56a7a3 avm2: Address feedback to DropShadowFilter stub 2022-11-27 09:46:18 -05:00
Calvin304 e46fc4fe8a avm2: stub DropShadowFilter 2022-11-27 09:46:18 -05:00
Marco Grassi 0c851ecfde don't include all the features in chrono to avoid including the vulnerable time dependency 2022-11-26 14:04:59 -05:00
Marco Grassi ad81b3bf14 upgrade lock and toml dependencies 2022-11-26 14:04:59 -05:00
Aaron Hill b8745f0ff1 avm2: Partially implement Stage3D for wgpu backend
This PR implements core 'stage3D' APIs. We are now able
to render at least two demos from the Context3D docs - a simple
triangle render, and a rotating cube.

Implemented in this PR:
* Stage3D access and Context3D creation
* IndexBuffer3D and VertexBuffer3D creation, uploading, and usage
* Program3D uploading and usage (via `naga-agal`)
* Context3D: configureBackBuffer, clear, drawTriangles, and present

Not yet implemented:
* Any 'dispose()' methods
* Depth and stencil buffers
* Context3D texture apis
* Scissor rectangle

General implementation strategy:

A new `Object` variant is added for each of the Stage3D objects
(VertexBuffer3D, Program3D, etc). This stores a handle to the
parent `Context3D`, and (depending on the object) a handle
to the underlying native resource, via `Rc<dyn
SomeRenderBackendTrait>`).

Calling methods on Context3D does not usually result in an immediate
call to a `wgpu` method. Instead, we queue up commands in our
`Context3D` instance, and execute them all on a call to `present`.
This avoids some nasty wgpu lifetime issues, and is very similar
to the approah we use for normal rendering.

The actual rendering happens on a `Texture`, with dimensions
determined by `createBackBuffer`. During 'Stage' rendering,
we render all of these Stage3D textures *behind* the normal
stage (but in front of the overall stage background color).
2022-11-25 21:43:00 -07:00
Toad06 460458812b avm1: Correct some properties in SWFv4 2022-11-25 20:35:59 -07:00
Aaron Hill 3bef8c4fd6 render: Remove `get_bitmap_pixels` and store data in `Character::Bitmap`
We only called `get_bitmap_pixels` when creating a `BitmapData`
for an SWF-provided `Bitmap`. We now store the initial pixels
in `Character::Bitmap`, and use them to initialize a `BitmapData`
when needed.

This lets us simplify the wgpu backend, which no longer needs
to store a `Bitmap` object. In addition to saving space for
`BitmapData` objects that lack an SWF `Bitmap`, this will make
it easier to move data from `bitmap_registry` into `BitmapHandle`
itself.
2022-11-25 16:08:42 -07:00
Mark Richins d345523d02 Fix conflicts 2022-11-23 20:45:37 -07:00
Mark Richins 9941701b3a Fix: change twips_2d to use x and y and fix bug 2022-11-23 20:45:37 -07:00
Mark Richins 63a291ac4b Fix promblems caused by moving Twips 2022-11-23 20:45:37 -07:00
EmperorBale 7a0f3d5d32 chore: Formatting 2022-11-23 17:28:28 -07:00
EmperorBale e922a118d8 avm2: Improve inlining of stack related functions 2022-11-23 17:28:28 -07:00
EmperorBale c919890a1e chore: Use if/else instead of matching cmp 2022-11-23 17:28:28 -07:00
EmperorBale 657f54b2f1 chore: Cleanup clippy lint 2022-11-23 17:28:28 -07:00
EmperorBale 35219cf592 avm2: `op_get_scope_object` should start at the scope depth. 2022-11-23 17:28:28 -07:00
EmperorBale eb9ce4073e avm2: Clear stack & scope when execution is complete. 2022-11-23 17:28:28 -07:00
EmperorBale 4d151931f8 chore: Improve doc comments 2022-11-23 17:28:28 -07:00
EmperorBale 601f36df33 avm2: Introduce `clear_stack` & `clear_scope`. 2022-11-23 17:28:28 -07:00
EmperorBale 98d3b8f3c1 avm2: Enforce max scope depth & minimum scope depth
when pushing/popping from scope stack.
2022-11-23 17:28:28 -07:00
EmperorBale 7a48014d36 avm2: Enforce max stack & stack depth when pushing/popping from stack 2022-11-23 17:28:28 -07:00
EmperorBale d46b2c39ca avm2: Share scope stack across AVM2 2022-11-23 17:28:28 -07:00
EmperorBale 16805a350b avm2: Store stack information in activations 2022-11-23 17:28:28 -07:00
Moulins c10244b0a4 core: Only unload D.O.s when they are removed from the render list
D.O.s removed by the timeline may only be removed from the depth list
(if they were manipulated by AS3 scripts), but their unload method
would still be called, which is wrong.
2022-11-23 16:44:38 -07:00
Moulins 53010544db core: Simplify core::do::container::Lists bitflags into boolean enum
Callsites only ever used two values, as children in the display list are
always in the render list.
2022-11-23 16:44:38 -07:00
Moulins 58e39623a5 core: Make all ChildContainer's methods private
And also, remove some dead code
2022-11-23 16:44:38 -07:00
Aaron Hill 4b8cd45f4b
avm2: Partially implement StaticText (#8343)
This is linked to the legacy DisplayObject::Text, which can
only be created by Flash CS6 (but is allowed in AVM2 swfs).

The 'StaticText' class cannot be constructed from ActionScript.
To support this, I've added support for native initializers to
playerglobal. This allows us to throw an exception in the
ActionScript constructor in Test.as, and do nothing in the native
intiializer (so that we can construct it from a DisplayObject).

I've left StaticText.text unimplemented for now, since it will require
dealing with Glyphs

Co-authored-by: kmeisthax <dcrkid@yahoo.com>
2022-11-23 18:30:47 -05:00
Moulins 9529a1cbdb avm1: address Scope nitpicks 2022-11-23 15:50:45 -07:00
Moulins 05e3e6434b avm1: Remove all allocations in `Activation::from_nothing`
This is done by:
  - using the global constant pool instead of a fresh empty one:
    - OK, as no call-site is directly executing arbitrary bytecode that
      could care about the contents of the constant pool.
  - pre-allocating the global scope object in the `Avm1` context
  - using the global scope directly instead of allocating a local scope:
    - OK, because no call-site is directly defining locals on the
      returned Activation's scope.
2022-11-23 15:50:45 -07:00
Moulins 5faba34eb2 avm1: remove 'globals' parameter from Activation::from_nothing
Across all invocations, this is always set to the global object so it
can be hard-coded inside the call.
2022-11-23 15:50:45 -07:00
Moulins ea03aa04b8 avm1: make scope references immutable; they were never actually modified
Rewrite Scope::new_target_scope, as the previous approach is unusable
now that Scope doesn't have interior mutability anymore.
2022-11-23 15:50:45 -07:00
Moulins 8cb0b47d1f avm1: make constant pool reference immutable; it was never actually modified 2022-11-23 15:50:45 -07:00
TÖRÖK Attila a9c94513a0 avm2,audio: Implement leftPeak and rightPeak in SoundChannel 2022-11-23 15:38:41 -07:00
michiel2005 50724448c8 Update array.rs 2022-11-23 15:19:07 -07:00
michiel2005 7c5f2805ef Avoid code duplication
Avoided code duplication in avm1 array.rs as asked
2022-11-23 15:19:07 -07:00
Moulins 2fa3d31732 Appease Clippy on nightly 2022-11-23 22:39:45 +01:00
Toad06 eb2ee06588 avm1: Fix `ExternalInterface.call` with blank strings in SWFv8 2022-11-22 16:51:59 -07:00
Aaron Hill bdadb17a95 render: Don't use BitmapHandle in tessellator
Currently, we rely on ShapeTessellator being able to get a BitmapHandle
without a RenderBackend. With the upcoming BitmapData refactor,
we will always need a RenderBackend to get a BitmapHandle, which creates
borrow-checker issues in ShapeTessellator (which is stored in a
RenderBackend).

To solve this, we split BitmapSource.bitmap into two methods -
BitmapSource.bitmap and BitmapSource.bitmap_handle. ShapeTessellator
continues to use BitmapSource.bitmap, and uses the u16 bitmap id
instead of a BitmapHandle. The BitmapSource.bitmap_handle method
is used inside each render backend to convert the id to a BitmapHandle,
avoiding borrow-checker issues.
2022-11-21 21:04:40 -07:00
David Wendt 0aec23b468 chore: Upgrade deprecated timezone code.
This doesn't actually add any new places for code to panic, since the deprecated functions all `unwrap`'d internally.
2022-11-21 18:50:46 -07:00
dependabot[bot] 1b6e91393e build(deps): bump indexmap from 1.9.1 to 1.9.2
Bumps [indexmap](https://github.com/bluss/indexmap) from 1.9.1 to 1.9.2.
- [Release notes](https://github.com/bluss/indexmap/releases)
- [Changelog](https://github.com/bluss/indexmap/blob/master/RELEASES.md)
- [Commits](https://github.com/bluss/indexmap/compare/1.9.1...1.9.2)

---
updated-dependencies:
- dependency-name: indexmap
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-21 18:27:58 -07:00
dependabot[bot] ccb1fa1b1b build(deps): bump clap from 4.0.24 to 4.0.26
Bumps [clap](https://github.com/clap-rs/clap) from 4.0.24 to 4.0.26.
- [Release notes](https://github.com/clap-rs/clap/releases)
- [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md)
- [Commits](https://github.com/clap-rs/clap/compare/v4.0.24...v4.0.26)

---
updated-dependencies:
- dependency-name: clap
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-21 18:07:28 -07:00
dependabot[bot] 25664778f3 build(deps): bump bitstream-io from 1.5.0 to 1.6.0
Bumps [bitstream-io](https://github.com/tuffy/bitstream-io) from 1.5.0 to 1.6.0.
- [Release notes](https://github.com/tuffy/bitstream-io/releases)
- [Commits](https://github.com/tuffy/bitstream-io/compare/v1.5.0...v1.6.0)

---
updated-dependencies:
- dependency-name: bitstream-io
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-21 17:16:38 -07:00
Toad06 caecc519cd avm1: Minimal implementation of `LoadVars.getBytesTotal` and `LoadVars.getBytesLoaded` 2022-11-20 22:00:36 -07:00
David Wendt ecdef4c6f4 core: Empty text lines should still have a height. 2022-11-20 17:13:48 -07:00
David Wendt 425bea45f8 avm1: `TextFormat.getTextExtent` uses the height of all boxes in the layout 2022-11-20 17:13:48 -07:00
David Wendt 66bf03908b avm1: Implement `TextFormat.getTextExtent` 2022-11-20 17:13:48 -07:00
David Wendt 83db53202e core: Add empty boxes for empty lines *without* breaking multiple-format lines. 2022-11-20 17:13:48 -07:00
David Wendt 88c3cf0c72 core: The leading for a given line is stated using the text format's leading, not the font's leading. 2022-11-20 17:13:48 -07:00
David Wendt 59f01a40f1 core: Empty lines should also generate a layout box. 2022-11-20 17:13:48 -07:00
David Wendt 5f7344259a avm2: Impl `TextField.numLines` and `.getLineMetrics` 2022-11-20 17:13:48 -07:00
David Wendt 1efa29baa6 core: Add methods for introspecting text metrics on an `EditText`. 2022-11-20 17:13:48 -07:00
Adrian Wielgosik 7e2b876ab3 avm2: Refactor context menu field bool checks into macro 2022-11-17 22:03:54 -05:00
Adrian Wielgosik e840d1f71c core: Support AVM2 context menu (sans callbacks) 2022-11-17 22:03:54 -05:00
Toad06 182c3b78e4 avm1: onData fails if the loaded data is an empty string 2022-11-17 20:51:11 -05:00
dependabot[bot] b3debc96af build(deps): bump clap from 4.0.22 to 4.0.24
Bumps [clap](https://github.com/clap-rs/clap) from 4.0.22 to 4.0.24.
- [Release notes](https://github.com/clap-rs/clap/releases)
- [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md)
- [Commits](https://github.com/clap-rs/clap/compare/v4.0.22...v4.0.24)

---
updated-dependencies:
- dependency-name: clap
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-15 09:33:20 +02:00
TÖRÖK Attila 08270efee7 avm2: Implement SoundMixer.computeSpectrum() 2022-11-10 19:11:29 -05:00
TÖRÖK Attila 2b4d8d9c6e core,desktop: Add and implement AudioBackend::get_sample_history() 2022-11-10 19:11:29 -05:00
Moulins fb8caad783 core: rename TInteractiveObject::{ibase => raw_interactive}(_mut)
To match with TDisplayObjectContainer::raw_container(_mut) introduced
in previous commit.
2022-11-09 23:39:15 -05:00
Moulins 0bc01c239f core: remove impl_display_object_container! macro
It is replaced by two accessor methods on the trait + default
implementations of all other methods.
2022-11-09 23:39:15 -05:00
dependabot[bot] 9303304e3b build(deps): bump clap from 4.0.18 to 4.0.22
Bumps [clap](https://github.com/clap-rs/clap) from 4.0.18 to 4.0.22.
- [Release notes](https://github.com/clap-rs/clap/releases)
- [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md)
- [Commits](https://github.com/clap-rs/clap/compare/v4.0.18...v4.0.22)

---
updated-dependencies:
- dependency-name: clap
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-08 00:25:12 +02:00
relrelb c516fef65d swf: Simplify read of `PlaceObject` tags
`tag_length` isn't really necessary since each tag is read using
a dedicated `swf::Reader`, which keeps track of the tag boundary
internally.

As a result, `tag_len` can be avoided passed around many times in
`movie_clip.rs`.
2022-11-08 00:05:41 +02:00
moulins 8cbd527e4c
avm1: Small cleanups in ActionQueue (#8486)
- Use a fixed-size array instead of a Vec for the queues
- Remove unwanted plurals in methods and types names
2022-11-06 07:39:11 +02:00
Moulins e121c82b10 avm1: remove manual bit-wrangling in declare_properties! macro
Now that the relevant compiler ICE is fixed, we can use the Attribute
constants directly
2022-11-03 09:19:11 +02:00
Adrian Wielgosik 3458cd92e4 avm2: Support DO.getBounds, (partial) getRect 2022-11-01 22:46:34 +01:00
relrelb 89f3445d62 swf: Introduce and use `Rectangle::width()` and `Rectangle::height()` 2022-11-01 09:49:04 +02:00
Aaron Hill 68471723b3 core: Fix clippy format string lint 2022-10-27 08:49:39 +03:00
relrelb fb7ba9c9a0 core: Extract `Graphic::drawing`
That returns a non-`Option` `Drawing`, and has no `.unwrap()`s.
2022-10-26 09:05:42 +03:00
relrelb 7dfc5b6e2e core: Extract `MovieClip::drawing`
That returns a non-`Option` `Drawing`. This avoids many `.unwrap()`s
in AVM1.
2022-10-26 09:05:42 +03:00
relrelb d3c6d9d148 avm1: Require a `MovieClip` in `MovieClip.duplicateMovie`
A `MovieClip` must be instantiated from an ID of a `MovieClip`.
2022-10-26 09:05:42 +03:00
dependabot[bot] d589130634 build(deps): bump serde from 1.0.145 to 1.0.147
Bumps [serde](https://github.com/serde-rs/serde) from 1.0.145 to 1.0.147.
- [Release notes](https://github.com/serde-rs/serde/releases)
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.145...v1.0.147)

---
updated-dependencies:
- dependency-name: serde
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-25 09:54:26 +03:00
dependabot[bot] 3c7e9235f6 build(deps): bump futures from 0.3.24 to 0.3.25
Bumps [futures](https://github.com/rust-lang/futures-rs) from 0.3.24 to 0.3.25.
- [Release notes](https://github.com/rust-lang/futures-rs/releases)
- [Changelog](https://github.com/rust-lang/futures-rs/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/futures-rs/compare/0.3.24...0.3.25)

---
updated-dependencies:
- dependency-name: futures
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-25 09:19:27 +03:00
dependabot[bot] c9f5524748 build(deps): bump clap from 4.0.15 to 4.0.18
Bumps [clap](https://github.com/clap-rs/clap) from 4.0.15 to 4.0.18.
- [Release notes](https://github.com/clap-rs/clap/releases)
- [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md)
- [Commits](https://github.com/clap-rs/clap/compare/v4.0.15...v4.0.18)

---
updated-dependencies:
- dependency-name: clap
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-25 09:00:26 +03:00
dependabot[bot] 6cedd3c04d build(deps): bump syn from 1.0.102 to 1.0.103
Bumps [syn](https://github.com/dtolnay/syn) from 1.0.102 to 1.0.103.
- [Release notes](https://github.com/dtolnay/syn/releases)
- [Commits](https://github.com/dtolnay/syn/compare/1.0.102...1.0.103)

---
updated-dependencies:
- dependency-name: syn
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-25 01:14:33 +02:00
Aaron Hill 7dcb333991 avm2: Remove dead code from MovieClip constructor
The call to `super_init` will initialize a `DisplayObject` (if unset)
in the `Sprite` constructor, using exactly the same logic that we're
attempting to use. The code in `MovieClip` is unreachable, and can
be deleted.
2022-10-24 11:46:20 -05:00
DragonGamesStudios 84f3739ece
core: Fixed a typo in messages on pressing Ctrl+Alt+D (#8360) 2022-10-23 16:44:33 +03:00
Aaron Hill 919b38f20b avm2: Stub Graphics.beginGradientFill 2022-10-22 17:58:13 -05:00
Aaron Hill 9dd0914bda core: Add root movie URL spoofing (desktop only).
The desktop player now takes a `--spoof-url` argument, which overrides
the movie URL provided to ActionScript. This does not affect non-root
movies loaded through `Loader`.
2022-10-22 15:24:14 -05:00
Adrian Wielgosik 7ccf7a4c69 avm2: Add missing set_object2 impl to Bitmap 2022-10-22 19:42:24 +02:00
Aaron Hill 4cb122461e avm2: Implement DisplayObject.cacheAsBitmap
The underlying flag currently does nothing, but this allows
SWFs to continue executing.
2022-10-20 18:37:35 -05:00
David Wendt 058a7a8b66 desktop: Allow specifying the load behavior for desktop 2022-10-18 16:47:49 -06:00
David Wendt 74d77a3df0 core: Add a player setting for if movies are allowed to execute before loading finishes 2022-10-18 16:47:49 -06:00
dependabot[bot] 71a4f569af build(deps): bump proc-macro2 from 1.0.46 to 1.0.47
Bumps [proc-macro2](https://github.com/dtolnay/proc-macro2) from 1.0.46 to 1.0.47.
- [Release notes](https://github.com/dtolnay/proc-macro2/releases)
- [Commits](https://github.com/dtolnay/proc-macro2/compare/1.0.46...1.0.47)

---
updated-dependencies:
- dependency-name: proc-macro2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-18 07:28:01 +03:00
Adrian Wielgosik bdc041677a render: Bail on attempts on panicking recursive render, part 2. 2022-10-17 18:02:21 -05:00
Aaron Hill 45515be0a3 render: Improve support for BitmapData.draw
This PR fixes a numbe of interconnected bugs:
* We weren't consistently uploading a dirty BitmapData to the render
  backend before drawing to/from it.
* BitmapData.draw should *not* add a fill color - it should draw over
  the current contents of the BitmapData
* After drawing to a non-transparent BitmapData, we need to manually
  set the opacity back to 255 for each pixel (the drawing process
  takes transparency into account, but the opacity information is
  thrown away at the end).
2022-10-17 12:53:38 -05:00
relrelb 86ef4bd7fe core: Simplify `Bitmap` creation
Change `Bitmap::new()` to accept a `ruffle_render::bitmap::Bitmap`
directly, instead of `width`, `height` and `bitmap_handle`. As a
consequence, all `RenderBackend::register_bitmap_*` methods are no
longer necessary - we can use `ruffle_redner::utils::*` to obtain
a `ruffle_render::bitmap::Bitmap` right before calling `Bitmap::new()`.
2022-10-17 20:05:30 +03:00
David Wendt 36844e5e2f chore: Use explicit `.clamp`
Also, update the tests to confirm that this doesn't break NaN handling.
2022-10-16 14:55:07 -06:00
David Wendt 10ad603566 avm1: Implement `TextField.antiAliasType`, `.gridFitType`, `.sharpness`, and `.thickness`.
Notably this required removing a few parameter checks from core that turned out to be AS3-only.
2022-10-16 14:55:07 -06:00
David Wendt 7155f88601 avm2: Implement `TextField.antiAliasType`, `.gridFitType`, `.sharpness`, and `.thickness`. 2022-10-16 14:55:07 -06:00
David Wendt b8693a3932 core: Retain Advanced render settings in Normal mode, even though they won't be used there. 2022-10-16 14:55:07 -06:00
relrelb 760f9e29df avm1: Migrate `BevelFilter` to `NativeObject` 2022-10-16 11:48:59 +03:00
relrelb 1cbc906b04 avm1: Migrate `BlurFilter` to `NativeObject` 2022-10-15 16:00:30 +03:00
relrelb 178bf4fe24 chore: Extract Cargo `edition` to `[workspace.package]`
This is possible since Rust 1.64.0: https://blog.rust-lang.org/2022/09/22/Rust-1.64.0.html#cargo-improvements-workspace-inheritance-and-multi-target-builds
2022-10-14 22:13:29 +03:00
relrelb dbfd28e708 web: Bump `wasm-bindgen` to 0.2.83
This restores commit 084b252030.

As usual, also bump its helper crates (`js-sys`, `web-sys` and
`wasm-bindgen-futures`) to the latest versions.
2022-10-14 21:49:40 +03:00
David Wendt 81ed624c26 avm2: Loaders should not be opaque to mouse events. 2022-10-14 12:27:31 -05:00
Tal Hayon 052ec75e2a avm2: BitmapData.perlinNoise and DisplacementMapFilter 2022-10-14 11:22:26 -05:00
relrelb bc73301592 avm1: Require some more prototypes
Since they are never `None`.
2022-10-14 00:23:12 +03:00
Aaron Hill feda41d6c1 avm2: Add LoaderInfo.uncaughtErrorEvents
We don't currently fire any events, but we store the object
so that listeners will be correctly registered.
2022-10-12 17:26:14 -05:00
relrelb 967ff56e3b avm1: Rewrite `Date` implementation
The new implementation is simpler, and supports many AVM1 quirks not
supported before.

In addition, migrate `Date` to `NativeObject`.
2022-10-13 00:49:50 +03:00
relrelb 21e24936b7 avm1: Correct `Number.toString` edge-case
`NaN` and large numbers are actually treated like `i32::MIN`. As described
in https://github.com/ruffle-rs/ruffle/issues/7772#issuecomment-1235977709,
Flash (at least 7+) fails to convert `i32::MIN` to a string due to a bug.
Since `i32::MIN` has no `i32` positive counterpart, digits extracted using
modulo are actually negative and characters before ASCII `'0'` are selected.

Flash 6- somehow return just `0` in those cases. This was Ruffle's behavior
up until this commit. This commit matches Ruffle behavior to latest Flash
Player, as we usually prefer. A `TODO` is still there in case we ever add
player version emulation.
2022-10-13 00:05:25 +03:00
relrelb f504804379 avm1: Require `fn_proto` in `FunctionObject::bare_function`
It was never `None`, except for 3 tests in `script_object.rs`,
which now use `activation.context.avm1.prototypes().function`.
2022-10-12 21:01:18 +03:00
dependabot[bot] 76f18cbc37 build(deps): bump clap from 4.0.9 to 4.0.12
Bumps [clap](https://github.com/clap-rs/clap) from 4.0.9 to 4.0.12.
- [Release notes](https://github.com/clap-rs/clap/releases)
- [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md)
- [Commits](https://github.com/clap-rs/clap/compare/v4.0.9...v4.0.12)

---
updated-dependencies:
- dependency-name: clap
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-11 00:32:53 +03:00
dependabot[bot] bdd7c27965 build(deps): bump syn from 1.0.101 to 1.0.102
Bumps [syn](https://github.com/dtolnay/syn) from 1.0.101 to 1.0.102.
- [Release notes](https://github.com/dtolnay/syn/releases)
- [Commits](https://github.com/dtolnay/syn/compare/1.0.101...1.0.102)

---
updated-dependencies:
- dependency-name: syn
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-10 23:42:49 +03:00
EmperorBale d72ef587f2 avm2: Add digest property to URLRequest 2022-10-10 12:48:35 -07:00
EmperorBale 5c9bf3ffc0 swf: Support SWZ files 2022-10-10 12:48:35 -07:00
Adrian Wielgosik 10c19fef57
render: Bail on attempts on panicking recursive render. (#8248) 2022-10-09 14:33:57 -05:00