Aaron Hill
53f42e0bec
avm2: Fix getQualifiedClassName for null and undefined
2022-09-27 00:05:06 -05:00
nosamu
66fa67cdcc
Revert "avm1: Remove `Value::to_primitive_num`"
...
This reverts commit 2c50a04e37
.
2022-09-26 18:40:39 -05:00
Aaron Hill
12b0bffd12
wgpu: Remove `width` and `height` fields from our `Texture` wrapper struct
...
These are duplicates of fields in `Bitmap`
2022-09-26 15:00:26 -05:00
Aaron Hill
f5b59f869c
avm2: Show native method names in stack trace
...
Previously, we would display an empty string for the method name.
We can now store a `&'static str` again in `NativeMethod`,
instead of needing a `Cow`
2022-09-26 14:13:48 -05:00
relrelb
65ecb4fe8f
avm2: Remove `From<Box<dyn std::error::Error>> for Error<'gc>`
2022-09-26 19:51:38 +03:00
relrelb
cc531ff7db
avm2: `playerglobal.swf` should be valid
2022-09-26 19:51:38 +03:00
relrelb
1f6368b946
avm2: Ignore `write!()` errors
...
As it cannot fail.
2022-09-26 19:51:38 +03:00
relrelb
e3e4aeb248
avm2: Throw `flash.errors.IOError` from `ByteArray`
...
Instead of propagating the underlying compression library errors.
Also, make `ByteArray.deflate` and `ByteArray.inflate` pure-ActionScript
methods that call into the native `ByteArray.compress` and `ByteArray.uncompress`
native methods, respectively.
2022-09-26 19:51:38 +03:00
relrelb
95de87ad0a
avm2: Throw `VerifyError` for invalid ABC files
2022-09-26 19:51:38 +03:00
relrelb
a894ec5ca8
avm2: JSON serialization cannot fail
2022-09-26 19:51:38 +03:00
relrelb
a8f869329e
web: Fix config with `serde-wasm-bindgen`
...
Since `serde-wasm-bindgen` doesn't support `#[serde(default)]` (https://github.com/cloudflare/serde-wasm-bindgen/issues/20 ),
we no longer able to deserialize a partial `Config` object. As a solution,
take care to pass a full object from the TypeScript side.
2022-09-26 17:23:32 +03:00
David Wendt
51c9e3714a
ci: Yes, even me.
2022-09-25 16:28:18 -06:00
David Wendt
2ca5730a60
ci: Notify Discord when the Wiki changes.
...
We'd do this with Webhooks, but Discord's webhook impl for github does not work.
2022-09-25 16:23:27 -06:00
Aaron Hill
dddc9e954a
avm2: Add tests for looking up properties on Class objects
2022-09-25 15:37:50 -05:00
relrelb
c9ca7e2095
avm2: Port `flash.ui.Mouse` to ActionScript
2022-09-25 16:50:03 +03:00
relrelb
e1d01b0a5e
swf: Extract `Rectangle` to a separate file
...
And make it generic, as a first step towards making it a general-purpose
data structure for the whole codebase. Some potential replacements are:
* `BoundingBox` in `render/src/bounding_box.rs`.
* `BoxBounds` in `core/src/html/dimensions.rs`.
* Parameters to a bunch of `BitmapData` methods in
`core/src/bitmap/bitmap_data.rs`.
2022-09-25 10:37:56 +03:00
relrelb
898ccfba5d
avm1: Migrate `ColorTransform` to `NativeObject`
2022-09-25 02:43:53 +03:00
golfinq
ceb877c55f
avm2: Implement error types for avm2
2022-09-25 02:27:59 +03:00
Aaron Hill
192215634d
web: Switch to `serde-wasm-bindgen` over `serde-serialize` feature ( #8080 )
...
The `serde-serialize` feature is deprecated
(https://github.com/rustwasm/wasm-bindgen/pull/3031 ).
This solves a cyclic dependency error with aHash
2022-09-25 01:44:52 +03:00
dowgird
e448f5e027
avm2: implemented flash.utils.unescapeMultiByte
2022-09-25 01:19:11 +03:00
relrelb
c532d70844
avm2: Port `flash.net.ObjectEncoding` to ActionScript
...
Along with the `flash.net.IDynamicPropertyOutput` and `flash.net.IDynamicPropertyWriter`
interfaces.
2022-09-25 00:36:31 +03:00
EmperorBale
98edcc4dc0
avm2: Add non-debug version of ErrorObject::display_full
2022-09-24 22:29:55 +02:00
Aaron Hill
66df5ea3de
avm2: Implement typed 'catch' blocks
...
Now that we have a custom `Error` enum, this is very straightforwawrd.
I've converted `getDefinitionByName` return an AVM error, since this
is commonly used by games to test for a class.
2022-09-24 13:03:29 -05:00
relrelb
b5084eef25
Revert "web: Bump `wasm-bindgen` to 0.2.83"
...
This reverts commit 1954f6162f
.
2022-09-24 09:52:25 +03:00
Aaron Hill
b571b43375
avm2: Fix some `avm_debug!` calls.
...
These were debug-printing `Gc<Multiname>` instead of `Multiname`
2022-09-24 09:16:35 +03:00
Aaron Hill
7b0bc0fb74
avm2: Implement undocumented 'Function.length' property
...
This returns the function's parameter count, and is used by the Starling
framework to implement a custom event dispatcher.
2022-09-23 18:36:23 -05:00
Aaron Hill
25f176995a
avm2: Stub flash.ui.Multitouch
...
This is needed by Starling
2022-09-23 16:04:30 -05:00
kmeisthax
d09ea7514e
chore: Oops, I meant to clamp to total frames.
...
Pointed out by @n0samu
2022-09-23 11:45:52 -06:00
David Wendt
293d52048b
chore: Don't ask me how this `s` got in the output file
2022-09-23 11:45:52 -06:00
David Wendt
5a9f0ea099
tests: Add a test for `WaitForFrame`'s clamping behavior.
2022-09-23 11:45:52 -06:00
David Wendt
aca1c0fb50
avm1: Clamp `WaitForFrame` ops to the total frame count of the movie clip being tested.
2022-09-23 11:45:52 -06:00
relrelb
1954f6162f
web: Bump `wasm-bindgen` to 0.2.83
...
This reverts commit cf721d45f9
and restores
commit 084b252030
, this time without updating
`web-sys`, due to being coupled to `wgpu`.
2022-09-23 17:23:35 +03:00
relrelb
4828a9c5cf
avm1: Remove `get_` prefix from `ColorTransformObject` getters
...
To match Rust naming conventions.
2022-09-23 11:10:12 +03:00
relrelb
e7643c731b
core: `ColorTransform` cleanup
...
Main changes:
* Merge `ColorTransformParams` into `ColorTransformObject`, as it's only relevant for AVM1.
* Make `BitmapData::color_transform` work with a generic `ColorTransform`, which uses fixed-point
arithmetic.
Note that Ruffle still calculates color transforms slightly different from Flash. This is probably
caused by inaccuracy of the current `ColorTransformObject` to `ColorTransform` conversion and/or the
`ColorTransform` application logic itself. Since this requires further research, it'll be fixed in a
future PR.
2022-09-23 11:10:12 +03:00
EmperorBale
a17352a01a
avm2: Switch XML & XMLList to actionscript
2022-09-22 15:18:23 -07:00
EmperorBale
bfaedcf321
tests: Add test for checkfilter opcode
2022-09-22 15:18:23 -07:00
EmperorBale
1cc765d675
avm2: Implement checkfilter opcode
2022-09-22 15:18:23 -07:00
EmperorBale
6dea1fa264
avm2: Implement TypeError
2022-09-22 15:18:23 -07:00
relrelb
b2dc72a923
swf: Remove `impl Default for FunctionFlags`
...
Simply use `FunctionFlags::empty()` directly.
2022-09-22 23:29:34 +03:00
relrelb
2c50a04e37
avm1: Remove `Value::to_primitive_num`
...
Use `Value::to_primitive` instead.
2022-09-22 22:40:07 +03:00
relrelb
d5209c4c43
core: Refactor `Percent` type
...
Unconditionally represet percentages as `f64` between `0.0` and `100.0`.
2022-09-22 04:17:44 +03:00
relrelb
c31e9e2b11
render: Random cleanups
...
Avoid some `Vec::with_capacity` and de-duplicate code.
2022-09-22 03:00:02 +03:00
relrelb
9d4ab37ef6
core: Replace consecutive `push`es with `extend`
...
This should be slightly more efficient.
2022-09-22 03:00:02 +03:00
EmperorBale
e40229d90b
tests: Add test for ByteArray.writeObject
2022-09-21 13:39:58 -07:00
EmperorBale
fe951b4989
avm2: Implement ByteArray.writeObject
...
While doing this I also noticed that we were incorrectly producing AmfValue::Integer if our
target AMF version is AMF0. This is incorrect because AMF0 is based on AS2, which does not
recognise Integer as a valid type, and therefore must be represented with Number instead.
2022-09-21 13:39:58 -07:00
Daniel Jacobs
eefaca1e05
avm2: Add a few missed ActionScript enums
2022-09-21 20:54:36 +02:00
Aaron Hill
6ad72d0ef9
avm2: Assign 'prototype.name' through class object
...
This makes the files compile under mxmlc
2022-09-21 12:37:37 -05:00
Aaron Hill
e99c7fa4af
Add size assertions for Result<Value, Error> and Value
2022-09-21 12:37:37 -05:00
Aaron Hill
93b7de2fe6
avm2: Use custom Error instead of std::error::Error
2022-09-21 12:37:37 -05:00
Adrian Wielgosik
d1ffaad927
avm2: Support enumerating null/undefined
2022-09-21 00:03:44 +02:00