David Wendt
bba2ecae8e
core: `Shape` gets an instance number
2021-05-16 17:53:07 -07:00
David Wendt
3707ef7fec
tests: Add a test for child events using the same timeline structure as the structure test.
2021-05-16 17:53:07 -07:00
David Wendt
11d7fe5107
core: Correct the order of events that are fired when an `Avm2Button` is instantiated on the timeline.
2021-05-16 17:53:07 -07:00
David Wendt
6a70c1b3e0
tests: Extend the simplebutton structure test to include frame 2
2021-05-16 17:53:07 -07:00
David Wendt
a013a7dfdf
core: Initial construction should also prevent normal frame execution first frame
2021-05-16 17:53:07 -07:00
David Wendt
9f5a7f5065
core: AVM2 `Button`s run their children one frame at construction time
2021-05-16 17:53:07 -07:00
David Wendt
bfef7f9969
core: `Avm2Button` should always construct a sprite for each state, even if it's not used.
2021-05-16 17:53:07 -07:00
David Wendt
afefdb892f
tests: Add a test for timeline-constructed AS3 `SimpleButton` contents
2021-05-16 17:53:07 -07:00
David Wendt
821ed25374
avm2: `Avm2Button` should construct it's children
2021-05-16 17:53:07 -07:00
David Wendt
71b87f8935
avm2: Also impl `construct_frame` and `run_frame_scripts` for `Avm2Button`
2021-05-16 17:53:07 -07:00
David Wendt
4869ec650e
core: `Avm2Button` should construct a sprite whenever there's anything other than one child
2021-05-16 17:53:07 -07:00
David Wendt
c317d77916
core: `Avm2Button` shouldn't try to construct a Sprite using it's prototype
2021-05-16 17:53:07 -07:00
David Wendt
10bed4fe30
core: `set_avm2_constructor` works on constructors, not prototypes
2021-05-16 17:53:07 -07:00
David Wendt
d049ba8c0f
core: Child instantiation should print the error message it got when it fails
2021-05-16 17:53:07 -07:00
David Wendt
25473ac1dc
core: Allow AVM2 movies to define `Avm2Button` characters in their libraries
2021-05-16 17:53:07 -07:00
David Wendt
cb44554135
avm2: Add setters and getters for the four states of `SimpleButton`
2021-05-16 17:53:07 -07:00
David Wendt
494083673c
core: Add AVM2 version of Button
2021-05-16 17:53:07 -07:00
David Wendt
22eac776be
avm2: Stub `flash.display.SimpleButton`
2021-05-16 17:53:07 -07:00
David Wendt
cffa739a54
avm2: Store the sprite proto
2021-05-16 17:53:07 -07:00
David Wendt
c0296d9963
core: Rename `Button` to `Avm1Button`
2021-05-16 17:53:07 -07:00
Reiner Gerecke
efdb9c153d
core: Fix endless loop when layouting text
...
If a textfield has word wrapping enabled, is very small in size and
tries to layout a single character onto it, the layout code can run into
an endless loop where it's creating new lines and trying to fit the text
again.
If text doesn't fit at the start of a line, it won't fit on the next
either, so abort and display the whole text span on the line. Text will
be cut-off.
This can be reproduced with a AS2 file like this:
class Test {
static var app : Test;
function Test() {
_root.createTextField("tf",0,0,0,6,20);
_root.tf.text = "0";
_root.tf.wordWrap = true;
}
static function main(mc) {
app = new Test();
}
}
Build it with `mtasc -main -header 100💯 30 test.as -swf test.swf`
2021-05-15 18:56:51 -07:00
Mike Welsh
69a0700ca1
core: Remove collect::CollectWrapper
...
No longer necessary, it is possible to mark individual fields
as `#[collect(require_static)]`.
2021-05-13 23:24:10 -07:00
Mike Welsh
b882284fc9
core: Use bitflags for HitTestOptions
2021-05-12 23:02:06 -07:00
relrelb
85b234003f
avm1: Handle undefined/empty method name in NewMethod
...
Seems like it behaves similarly to CallMethod with an undefined/empty
method name.
2021-05-12 20:47:06 -07:00
relrelb
2589ecdde0
avm1: Correct ImplementsOp
2021-05-12 20:47:06 -07:00
relrelb
3bf3f1015d
avm1: Return undefined on invalid count in InitArray and InitObject
...
Both InitArray and InitObject should bail-out without popping anything
off the stack when the elements/properties count is negative or greater
than or equals 2147483648.
2021-05-12 20:47:06 -07:00
relrelb
72531eddff
avm1: Cleanup CallMethod
2021-05-12 20:47:06 -07:00
relrelb
2e0bc78cd6
avm1: Fix variadic arguments
...
Previously, if the arguments count was greater than the actual
stack size, then a stack underflow occurred which resulted in a
sequence of undefined values. That didn't match Flash's behavior.
Also, this prevents potential huge allocations that hang Ruffle.
In addition, num_args seems like it should use coerce_to_u32
(wraps at 4294967297). This also means that -1 ends up acting like
u32::MAX and would pop all values off of the stack.
2021-05-12 20:47:06 -07:00
dependabot[bot]
62301dea54
chore: Bump syn from 1.0.71 to 1.0.72
...
Bumps [syn](https://github.com/dtolnay/syn ) from 1.0.71 to 1.0.72.
- [Release notes](https://github.com/dtolnay/syn/releases )
- [Commits](https://github.com/dtolnay/syn/compare/1.0.71...1.0.72 )
Signed-off-by: dependabot[bot] <support@github.com>
2021-05-10 09:40:26 -07:00
Mike Welsh
6051ee4cb1
core: Disallow .. in shared object paths ( fix #3961 )
...
Toss out any shared objects that contain ".." in the name
to avoid accessing files outside of the Ruffle data directory.
The DiskStorageBackend also will fail any requests with a ".."
component as an extra precaution.
Fixes #3961 .
2021-05-09 23:20:32 -07:00
CUB3D
61298b2be3
avm1: Add parsing of legacy json SharedObjects for backwards compatability
2021-05-09 23:20:32 -07:00
CUB3D
f4a9446829
avm1: Fix tests for SharedObject
2021-05-09 23:20:32 -07:00
CUB3D
c398aded68
chore: Remove debug printing
2021-05-09 23:20:32 -07:00
CUB3D
cd1cde1708
avm1: Implement de/serialization of shared objects into Flash Player Lso format
2021-05-09 23:20:32 -07:00
relrelb
6b6b335440
avm1: Use bitflags for Array.sort flags
2021-05-08 01:37:05 -07:00
Mike Welsh
ba7fd1b2b9
chore: Appease clippy, bump url
...
Bump url and avoid `Url::into_string` deprecation warnings.
Fix `single_char_pattern` clippy lints.
2021-05-07 20:51:26 -07:00
relrelb
b2bc24919a
avm1: Replace `current_swf_version` with `swf_version`
...
They happen to be identical, and `swf_version` is more idomatic.
2021-05-07 13:26:20 -07:00
Mike Welsh
ef617eebad
avm1: Use `set_html_text` when initializing textfield from a variable binding
...
If a textfield was created with a variable binding, and the variable
already existed, the initial text of the textfield is set to the
variable value. However, this was not obeying the HTML setting of
the text field, so HTML tags were mistakenly shown in some content.
Fixes #3522 .
2021-05-06 16:58:33 -07:00
Adrian Wielgosik
5319a5bb81
Remove lifetime from constants
2021-05-06 10:54:33 -07:00
Adrian Wielgosik
faa0e50e89
avm2: Unify NativeMethod and GenericNativeMethod
2021-05-06 10:54:33 -07:00
Adrian Wielgosik
46ddb9be82
avm2: Generate class traits from const arrays
2021-05-06 10:54:33 -07:00
Adrian Wielgosik
8312243f42
avm2: Don't repeatedly call class.write(mc)
2021-05-06 10:54:33 -07:00
Mike Welsh
b82391726f
avm1: MovieClip.getBytesLoaded/Total should return the clip's length
...
MovieClip.getBytesLoaded and getBytesTotal return the size of that
specific clip, even if it's not a loaded SWF. The previous logic
only returned the size of the parent SWF.
If the clip is an SWF, the uncompressed size of the SWF is returned.
Otherwise, the length of the tag list inside the clip's DefineSprite
tag is returned.
2021-05-04 16:36:56 -07:00
Aaron Hill
08d0829177
Move all SWF tests out of `core` to new `tests` package
...
This allows `regressions_tests.rs` to depend on other crates in the
workspace, such as `render`, without introducing a cyclic dependency.
Split out from #4054
2021-05-04 11:47:59 -07:00
Mike Welsh
f9769451d6
avm1: Handle CDATA sections in XML
2021-05-03 16:23:04 -07:00
Moulins
78627acc92
chore: Move core::property_map to core::avm1::property_map
2021-05-03 13:47:14 -07:00
Moulins
272841729e
core: Replace SwfMovie's PropertyMap by a list of key-value pairs
...
PropertyMap is an AVM1-only concept, and shouldn't be used on cross-VM
types.
2021-05-03 13:47:14 -07:00
Mike Welsh
dca97afdd7
chore: Remove puremp3 feature
...
Wasn't being used, remove the puremp3 dependency.
2021-05-02 19:31:01 -07:00
Adrian Wielgosik
8ca22c1f02
core: Support for custom context menu items on movie root
2021-05-02 15:28:00 -07:00
Chris Midgley
31911d24ab
tests: replace existing shared object test using mtasc
2021-05-01 17:40:01 -07:00
Chris Midgley
c03bc62074
fix: SharedObject data property is not deleteable
2021-05-01 17:40:01 -07:00
Mike Welsh
e8ec02418b
avm2: Fix Array.splice
...
Fix `Array.splice` in cases where elements are added but not
deleted, and when the starting index is larger than the length
of the array.
2021-04-30 13:48:27 -07:00
Mike Welsh
2a46c72bb2
avm1: Fix Array.splice
...
Clamp the index parameters to the length of the array. This fixes
`[].splice(1, 0, 'obj');` to add the object at the proper
position (0, because the start index 1 is larger than the length).
2021-04-30 13:48:27 -07:00
dependabot-preview[bot]
b57e1a14f0
build(deps): bump syn from 1.0.70 to 1.0.71
...
Bumps [syn](https://github.com/dtolnay/syn ) from 1.0.70 to 1.0.71.
- [Release notes](https://github.com/dtolnay/syn/releases )
- [Commits](https://github.com/dtolnay/syn/compare/1.0.70...1.0.71 )
Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2021-04-28 10:02:43 -07:00
David Wendt
041003f256
avm2: Slot lookups don't need the whole trait list, just the first one we find.
2021-04-28 00:01:47 -07:00
David Wendt
fd08a6ebf6
avm2: Instantiate slot traits on `get_slot`, `set_slot` etc.
...
Previously, we only instantiated slot traits when named as a property, which is only half the picture.
2021-04-28 00:01:47 -07:00
David Wendt
e35d1edbf0
avm2: Allow pulling traits by slot id
2021-04-28 00:01:47 -07:00
David Wendt
07db1786f1
tests: Add a test for AVM2 nested closures (which thus tests `newactivation`)
2021-04-28 00:01:47 -07:00
David Wendt
9318028b52
avm2: `newactivation` should return an object which implements the traits listed in the associated method `body`'s trait list
2021-04-28 00:01:47 -07:00
David Wendt
6c5098d3c7
avm2: Fix order in which `setslot` takes it's parameters
2021-04-28 00:01:47 -07:00
Adrian Wielgosik
5a6117722d
core: Also hide playback controls on single-frame SWFs
2021-04-27 16:42:02 -07:00
Adrian Wielgosik
a1737b5922
avm1: Respect menu.builtInItems, but on root clip only
2021-04-27 16:42:02 -07:00
Adrian Wielgosik
c3a16cb992
avm2: Support Stage.showDefaultContextMenu
2021-04-27 16:42:02 -07:00
Adrian Wielgosik
ce4d66e0f4
avm1: support Stage.showMenu
2021-04-27 16:42:02 -07:00
Adrian Wielgosik
41a126885c
web: Minimal context menu buttons for movie control
2021-04-27 16:42:02 -07:00
TÖRÖK Attila
61fddf530e
core/display_object: Correctly draw videos that have different bounds than the size of their actual frame data
2021-04-27 11:49:16 -07:00
Mike Welsh
1f8434aee6
tests: Add test for Stage.scaleMode/align
2021-04-26 01:15:42 -07:00
Mike Welsh
a57f227bda
core: Implement Stage resize events
2021-04-26 01:15:42 -07:00
Mike Welsh
251fd55567
core: Adjust stage size by DPI factor in NoScale scale mode
2021-04-26 01:15:42 -07:00
Mike Welsh
98befe678e
avm2: Add flash.display.StageScaleMode and Stage.scaleMode
2021-04-26 01:15:42 -07:00
Mike Welsh
80bcf68634
avm1: Add StageScaleMode and StageAlign properties to Stage
2021-04-26 01:15:42 -07:00
Mike Welsh
b4717130e3
core: Add StageScaleMode and StageAlign properties to Stage
2021-04-26 01:15:42 -07:00
David Wendt
a877fe8c67
tests: Add a new test for properties unique to the `Stage`
2021-04-26 01:15:42 -07:00
David Wendt
52c3b0f1bc
avm2: `Stage.color` yields background color alpha (always 0xFF) in the high bits of the u32
2021-04-26 01:15:42 -07:00
David Wendt
41fe51e9db
avm2: Impl `flash.display.StageQuality` enum
2021-04-26 01:15:42 -07:00
David Wendt
93d7f0b450
avm2: Stub `Stage.quality`
2021-04-26 01:15:42 -07:00
David Wendt
327a425fde
avm2: Stub `Stage.allowsFullScreen` and `Stage.allowsFullScreenInteractive`
2021-04-26 01:15:42 -07:00
David Wendt
cb167e0814
avm2: Impl `Stage.stageWidth`/`Stage.stageHeight`, sorta
2021-04-26 01:15:42 -07:00
David Wendt
1ee5bbf7ba
avm2: Impl `Stage.frameRate`
2021-04-26 01:15:42 -07:00
David Wendt
5d8f70d695
avm2: Implement `Stage.focus`
2021-04-26 01:15:42 -07:00
David Wendt
524f5fe57f
avm2: Impl `Stage.color`'s setter
2021-04-26 01:15:42 -07:00
David Wendt
6c6bd74af9
avm2: Impl `Stage.displayState`'s getter
2021-04-26 01:15:42 -07:00
David Wendt
ae080fd65f
avm2: Impl `flash.display.StageDisplayState`
2021-04-26 01:15:42 -07:00
David Wendt
b858f74139
avm2: Impl `Stage.contentsScaleFactor`
2021-04-26 01:15:42 -07:00
David Wendt
247f7e3de4
avm2: Impl `Stage.color`
2021-04-26 01:15:42 -07:00
David Wendt
d7a0d15fd8
avm2: Expose `Stage.browserZoomFactor`
2021-04-26 01:15:42 -07:00
David Wendt
0c6584ca03
core: Store the viewport's scale factor on the stage
2021-04-26 01:15:42 -07:00
David Wendt
98788ef194
avm2: Impl `flash.display.StageAlign`
2021-04-26 01:15:42 -07:00
David Wendt
2a30887660
avm2: Support the half-broken `loaderInfo` on the `Stage`
2021-04-26 01:15:42 -07:00
David Wendt
ef4db9ba16
avm2: Add overrides for every property that cannot be set on the `Stage`.
...
Yes, this includes properties that aren't implemented yet. They'll return a different error, but they'll still error out regardless, so I'm fine with this.
2021-04-26 01:15:42 -07:00
David Wendt
bc9affb09d
tests: Add tests for stage access and basic display object properties
2021-04-26 01:15:42 -07:00
David Wendt
716d492006
avm2: The stage's name should be `null`, not an empty string; and setting it should except.
2021-04-26 01:15:42 -07:00
David Wendt
01f74f6eb1
avm2: Add a convenience method for marking a builtin override trait.
2021-04-26 01:15:42 -07:00
David Wendt
8452e23382
avm2: Allow access to the `Stage`, both directly and indirectly
2021-04-26 01:15:42 -07:00
David Wendt
ba66c62947
core: Ensure `Stage` always has an AVM2 representation
2021-04-26 01:15:42 -07:00
David Wendt
81de112774
avm2: Add `Stage` class stub
2021-04-26 01:15:42 -07:00
David Wendt
7f4a99ca60
core: Add a `root_clip` method for `Stage` and make everything grabbing depth 0 off the stage use it
2021-04-26 01:15:42 -07:00
David Wendt
36e486b1d0
core: We don't need `CollectWrapper` anymore
2021-04-26 01:15:42 -07:00
David Wendt
f6fe0a84a2
core: Move the viewport and stage dimensions into the `Stage`.
2021-04-26 01:15:42 -07:00
David Wendt
c09bd0520c
core: Run all of the steps of a frame update on the `Stage`
2021-04-26 01:15:42 -07:00