Nathan Adams
ca9749d1f2
core: Change from regex to custom domain matching in swf compatibility rewrites
2023-03-01 21:25:19 +01:00
Nathan Adams
b10d4876d3
web: Add compatibilityRules config option to disable all compatibility rules
2023-03-01 21:25:19 +01:00
Nathan Adams
ef42a391f5
core: Add default_compatibility_rules as a feature, and document when we add rules
2023-03-01 21:25:19 +01:00
Nathan Adams
1aedb7ff8d
core: Add CompatibilityRules struct for on-the-fly replacements for compatibility. Initially konggames -> kongregate.com rules
2023-03-01 21:25:19 +01:00
Aaron Hill
f282331204
core: Call `overwrite_cpu_pixels_from_gpu` just before we draw
...
If we bail out early, we want to preserve the current GPU -> CPU
sync.
2023-03-01 12:30:22 -06:00
Aaron Hill
076016b1be
avm2: Get XMLList 'filter' syntax working
...
This requires the ability to do a limited 'set_property',
as well as `get_enumerant_value`.
To prevent modification of XMLLists derived from queries,
I've introduced a `target` field on `XMLList`. This is
`None` for lists created with `new XMLList()`, and `Some`
when the list was derived from a query on an existing `XML`
/`XMLList`. We only allow `set_property` when `target` is `None`:
this is enough for filtering to work, and prevents silent incorrect
execution when trying to modify an existing node.
2023-03-01 12:04:02 -06:00
Aaron Hill
44a301e16a
avm2: Add `attribute` and `attributes` methods to `XML/XMLList`
2023-03-01 10:51:21 -06:00
Aaron Hill
1099218fdd
avm2: Stub Mouse.supportsCursor and Mouse.supportsNativeCursor
...
Since these are static properties, Ruffle previously (correctly)
returned `undefined` for SWFs that tried to access them, intead
of throwing an error.
2023-03-01 09:30:10 -06:00
Aaron Hill
78c9de7b8f
avm2: Fix constructing empty XMLList
...
A default empty text node should only be created for XML.
2023-03-01 15:57:34 +01:00
Daniel Jacobs
584cb4c1cf
web/ui: Open the virtual keyboard when clicking an editable EditText
2023-03-01 08:15:58 +02:00
Aaron Hill
61a664fec6
core: Produce an error when BitmapData.draw call is unsupported
2023-02-28 18:20:53 -06:00
EmperorBale
9338f1daa8
avm2: Fix default domain when loading movieclip
2023-02-28 13:04:24 -08:00
Marty_SVK
9c844678b5
avm2: Stub TextField.condenseWhite
2023-02-28 21:25:01 +01:00
relrelb
203788c1c8
core: Move `F64Extension` to `avm1`
...
Since it's only used there. Also rename the trait to `Clamp`.
2023-02-28 19:22:37 +02:00
relrelb
fe23eb0553
core: Introduce and use `F64Extension::clamp_to_i32`
...
Previously there were multiple implementations scattered across the
codebase. Unify them to a single place, in a more "Rusty" way (now
it's called via dot notation, rather than as a free function).
2023-02-28 19:22:37 +02:00
relrelb
b3fd1a47c6
core: Require `SwfMovie::url`
2023-02-28 19:05:20 +02:00
Lord-McSweeney
c01edc90bc
avm2: Stub `flash.text.StyleSheet` ( #9747 )
2023-02-28 16:35:47 +00:00
relrelb
cf0c32bd70
core: Remove some unused `RenderContext` fields
2023-02-28 17:48:57 +02:00
Nathan Adams
91a54f9e41
avm2: Use flags.set(foo) instead of |= foo
2023-02-28 16:25:12 +01:00
Nathan Adams
545193b098
swf: Deduplicate GradientFilter again
2023-02-28 16:25:12 +01:00
Nathan Adams
07d441a750
core: Don't impl FilterAvm2Ext for individual Filter structs
2023-02-28 16:25:12 +01:00
Nathan Adams
f79015e201
render: Use swf Filter types where possible. Gradient types had to be split into duplicate classes to allow for different trait impls based on which gradient filter type it is.
2023-02-28 16:25:12 +01:00
Nathan Adams
b8f7c66980
core: map_point in DisplacementMapFilter is i32 not u32
2023-02-28 16:25:12 +01:00
Nathan Adams
30a114a441
tests: Add avm2/convolution_filter test for swf->core->avm2 and avm2->core->avm2 testing
2023-02-28 16:25:12 +01:00
Nathan Adams
3777210117
core: Angle from swf tag is in radians, convert it to degrees
2023-02-28 16:25:12 +01:00
Nathan Adams
acc3180db7
core: Strength in filters is a f32, not u8
2023-02-28 16:25:12 +01:00
Nathan Adams
fc00ae8eb6
core: Load filters from PlaceObject tag
2023-02-28 16:25:12 +01:00
Nathan Adams
1408252ca3
core: Switch DisplayObjectBase::filters from avm2 objects to Vec<Filter>
2023-02-28 16:25:12 +01:00
Nathan Adams
e39fbe871d
render: Add Filter::GradientGlowFilter
2023-02-28 16:25:12 +01:00
Nathan Adams
bb38a7fa55
render: Add Filter::GradientBevelFilter
2023-02-28 16:25:12 +01:00
Nathan Adams
c8030d047d
render: Add Filter::GlowFilter
2023-02-28 16:25:12 +01:00
Nathan Adams
c9656c429e
render: Add Filter::DropShadowFilter
2023-02-28 16:25:12 +01:00
Nathan Adams
dbe2efff00
render: Add Filter::DisplacementMapFilter
2023-02-28 16:25:12 +01:00
Nathan Adams
f9c7303f01
render: Add Filter::ConvolutionFilter
2023-02-28 16:25:12 +01:00
Nathan Adams
9c1f6ea129
render: Add Filter::BevelFilter
2023-02-28 16:25:12 +01:00
Nathan Adams
5ee3a4b512
avm2: Extract out the Value -> Filter logic into a trait
2023-02-28 16:25:12 +01:00
Aaron Hill
54eb6e33ca
avm2: Ignore XML comments and processing instructions by default
...
This matches the default value of the settings on XML.
2023-02-27 15:53:39 -06:00
EmperorBale
4adb7853b7
avm2: Add concurrent classes
2023-02-27 12:27:37 -08:00
EmperorBale
d166295ee1
avm2: Add Telemetry class
2023-02-27 12:13:16 -08:00
Aaron Hill
82d03b4062
avm2: Ignore XML declaration and doctype
...
These are completely ignored by AVM2
2023-02-27 13:41:18 -06:00
Aaron Hill
c04b463f1f
avm2: Implement XML.children, XMLList.children, and related methods
2023-02-27 13:25:16 -06:00
Aaron Hill
7f58b92348
avm2: Implement encodeURI and encodeURIComponent
2023-02-27 12:40:39 -06:00
Nathan Adams
cfcd257932
avm2: Xml(foo) converts foo to string
2023-02-27 17:37:28 +01:00
Nathan Adams
38d1478ffa
avm2: Implement Sprite.hitArea
2023-02-27 16:28:14 +01:00
renovate[bot]
71e24eedba
fix(deps): update rust dependencies
2023-02-27 11:48:53 +02:00
relrelb
dc9ec40d31
chore: Allow `clippy::bool_to_int_with_if`
...
Seems like Clippy no longer complains about it.
2023-02-26 13:23:38 +02:00
Lord-McSweeney
6630222ba9
avm2: Stub flash.profiler.showRedrawRegions ( #9732 )
2023-02-25 19:52:45 -05:00
Aaron Hill
f9fc4b3179
avm2: Store interfaces from superclases/superinterfaces in ClassObject ( #9728 )
2023-02-25 23:57:50 +00:00
Aaron Hill
c7709dffec
avm2: Handle Event::CData when parsing XML
2023-02-25 17:26:31 -06:00
Adrian Wielgosik
55c59da6ac
avm2: Convert TextFormat to AS
2023-02-25 23:55:43 +01:00
Adrian Wielgosik
35120e9fdc
avm2: Convert Graphics to AS
2023-02-25 23:55:43 +01:00
Adrian Wielgosik
b9dc8a4d52
avm2: Do not box primitives when doing AS-level coercions
2023-02-25 23:31:17 +01:00
Adrian Wielgosik
e063d5b5a8
avm2: Fix coerce_to_boolean on boxed primitives
2023-02-25 23:31:17 +01:00
Lord-McSweeney
16b724246c
Remove stub mention from BitmapData
2023-02-25 23:12:39 +01:00
Lord-McSweeney
f14ef0a4dd
Cleanup globals.as
2023-02-25 23:12:39 +01:00
Lord-McSweeney
9c8f99e9ce
Use AvmError instead of RustError when throwing argumentError in Stage.
2023-02-25 23:12:39 +01:00
Lord-McSweeney
91ae3ae31e
Port Stage overrides to ActionScript
...
And throw IllegalOperationError s.
2023-02-25 23:12:39 +01:00
Lord-McSweeney
e72a935f1b
Move IllegalOperationError up so Stage can use it
2023-02-25 23:12:39 +01:00
Aaron Hill
b26f2fd6fb
avm2: Initial incomplete implementation of XML ( #9647 )
2023-02-25 20:06:36 +00:00
Aaron Hill
dfee80e981
avm2: Mention interfaces in globals.as ordering comment
2023-02-24 16:08:29 -06:00
Aaron Hill
82a3f473d9
avm2: Move some class definitions after playerglobal is loaded
2023-02-24 16:08:29 -06:00
Aaron Hill
62767213a6
avm2: Use 'flash.events' internal namespace for EventDispatcher
2023-02-24 16:08:29 -06:00
Aaron Hill
24e231ae06
avm2: Convert TextField to AS
2023-02-24 16:08:29 -06:00
Aaron Hill
337149ff0e
avm2: Add TextFormat AS stub
2023-02-24 16:08:29 -06:00
Aaron Hill
bc240db517
avm2: Convert SimpleButton to AS
2023-02-24 16:08:29 -06:00
Aaron Hill
d31c686360
avm2: Convert MovieClip to AS
2023-02-24 16:08:29 -06:00
Aaron Hill
aa7dc52b82
avm2: Convert Sprite to AS
2023-02-24 16:08:28 -06:00
Aaron Hill
d996aecb04
avm2: Convert Shape to AS
2023-02-24 16:08:28 -06:00
Aaron Hill
39063a5a04
avm2: Add Graphics stub
2023-02-24 16:08:28 -06:00
Aaron Hill
8831042e8f
avm2: Convert LoaderInfo to AS
2023-02-24 16:08:28 -06:00
Aaron Hill
be16286407
avm2: Convert several flash.display and flash.events classes to AS
...
These classes all reference each other, so it's difficult to convert
them individually.
2023-02-24 16:08:28 -06:00
Aaron Hill
6ce7bd3277
avm2: Convert EventDispatcher and IEventDispatcher to AS
2023-02-24 16:08:28 -06:00
Aaron Hill
cd2770ce7e
avm2: Add SoundTransform stub
2023-02-24 14:48:51 -06:00
EmperorBale
99aa274e0f
avm2: Stop loading scripts in reverse order
2023-02-24 11:55:58 -08:00
EmperorBale
5bc3c696b5
avm2: Ignore duplicate definitions
2023-02-24 11:55:58 -08:00
feos
871a4d053d
core: add framerate to SWF load log
...
fixes #8531
2023-02-24 12:13:00 +02:00
TÖRÖK Attila
5a7cd92bfe
avm2: Use a lookup table for cosine in SoundMixer.computeSpectrum()
...
This results in 128 times fewer calls to the builtin cosf function.
2023-02-23 23:51:55 +01:00
Aaron Hill
5f4bf7b5fa
avm2: Stub Capabilities.manufacturer and Capabilities.language
...
These are needed by Steambirds: Survival
2023-02-23 12:25:34 -06:00
Nathan Adams
3a29ebc600
avm2: Comment where our RangeErrors have different-to-flash text in DOC
2023-02-23 08:12:42 -06:00
Nathan Adams
5f7978cfa5
avm2: Use avm errors for RangeErrors inside DisplayObjectContainer
2023-02-23 08:12:42 -06:00
Nathan Adams
e17b154d47
avm2: Iterate the inheritance chain for class-symbol linkage
2023-02-22 22:27:13 +01:00
Aaron Hill
203d4cd3aa
avm2: Use Value::Undefined for out-of-range Vector enumerant index
...
This makes Vector consistenht with the other implementations
of `get_enumerant_name`. This also fixes a bug where AMF object
serialization would loop all te way to `u32::MAX` when serializing
a vector, because it would never see `Value::Undefined` and break.
2023-02-22 15:03:09 -06:00
Aaron Hill
f1b0247de7
avm2: Remove install_trait_late
2023-02-22 14:41:01 -06:00
Aaron Hill
c52f1082c4
avm2: Make `early_resolve_interface` take in a `domain` directly
2023-02-22 14:41:01 -06:00
Aaron Hill
c258423dc3
avm2: Allow resolving interfaces before ClassObjects are available
...
The Adobe Animate compiler can emit a 'newclass' opcode for
a concrete class before the 'newclass' opcodes for the interfaces
it implements. As a result, we cannot rely on looking up an interface
`ClassObject` when resolving a class's interfaces.
We now store a map of exported classes in `Domain`, and use this
to lookup interfaces before their `ClassObject`s have been created.
Additionally, `link_interfaces` was failing to consider superinterfaces,
which meant that methods from superinterfaces were not being copied
into the vtable. I've fixed this along with the other changes.
2023-02-22 14:41:01 -06:00
Bale
2cfa97e84d
avm2: ByteArray.readUTF/readUTFBytes should cut off after null byte ( #9673 )
...
* avm2: Fix #9668
* tests: Extend ByteArray test
2023-02-22 18:47:59 +00:00
Marty_SVK
fac7fc0666
Stub System.pauseForGCIfCollectionImminent
...
This progresses Papas Scooperia
2023-02-22 12:34:13 -06:00
Nathan Adams
e8fcc8b194
avm2: Don't reset SimpleButtons that are created by scripts
2023-02-22 18:49:04 +01:00
Nathan Adams
aef466f8f3
avm2: Implemented BitmapData.drawWithQuality
2023-02-22 17:36:55 +01:00
Nathan Adams
6539262db7
render: Add Quality option to RenderBackend::render_offscreen
2023-02-22 17:36:55 +01:00
nosamu
70bf0a816a
core: Add options to set and force stage scale mode
2023-02-22 12:13:20 +02:00
nosamu
a505d7a6d3
core: Fix off-by-one bug with clipDepth
2023-02-21 16:39:42 +02:00
Adrian Wielgosik
f7a12698b9
core: Implement Color::to_premultiplied_alpha without floats
2023-02-19 22:25:34 +01:00
Adrian Wielgosik
92e52f2d0a
avm2: Add missing imports
2023-02-19 19:06:54 +01:00
Lord-McSweeney
89792865d0
avm2: Stub Loader.close
2023-02-18 18:35:20 +00:00
Aaron Hill
3327a9a3fd
core: Set clipDepth to 0 when swapDepths affects a clip
...
This makes "Garfield's Comic Creator" properly show
panels when you close the editor.
2023-02-17 23:11:57 -06:00
EmperorBale
158de01c92
avm2: `goto_frame` should use the movieclips scene by default
2023-02-17 18:46:43 -08:00
Aaron Hill
071306f107
avm2: Also register EventDispatcher methods in ns "flash.events:IEventDispatcher"
...
This is needed by "Steambirds: Survival"
2023-02-17 20:32:27 -06:00
EmperorBale
bc165a81ff
chore: Add comment explaining why we skip the first scope
2023-02-18 01:37:12 +01:00
EmperorBale
7ef56c1d16
avm2: Search global scope after everything else
2023-02-18 01:37:12 +01:00