CUB3D
f34579926c
chore: Format
2021-04-21 00:33:11 -07:00
CUB3D
99edb5ab2b
avm2: Implement Op::Sxi1
2021-04-21 00:33:11 -07:00
CUB3D
9ffa4f1f50
avm2: Implement Op::Lf64
2021-04-21 00:33:11 -07:00
CUB3D
b4736413fa
avm2: Implement Op::Sf64
2021-04-21 00:33:11 -07:00
CUB3D
2b4becf41f
avm2: Implement Op::Lf32
2021-04-21 00:33:11 -07:00
CUB3D
509392db8e
avm2: Implement Op::Sf32
2021-04-21 00:33:11 -07:00
CUB3D
dce2626482
avm2: Use from/to_le_bytes
2021-04-21 00:33:11 -07:00
CUB3D
35d7c5a7e3
chore: Format
2021-04-21 00:33:11 -07:00
CUB3D
ae9d5fd328
avm2: Implement Op::Li32
2021-04-21 00:33:11 -07:00
CUB3D
951d557a90
avm2: Implement Op::Si32
2021-04-21 00:33:11 -07:00
CUB3D
96ad0e3d00
avm2: Implement Op::Li16
2021-04-21 00:33:11 -07:00
CUB3D
aaaf6ace3e
avm2: Implement Op::Si16
2021-04-21 00:33:11 -07:00
CUB3D
f437539f73
avm2: Some domain memory is available by default and error when range invalid
2021-04-21 00:33:11 -07:00
CUB3D
5a0cdf60bc
avm2: Implement Op::Si8 and Op::Li8 badly
2021-04-21 00:33:11 -07:00
CUB3D
12a198f671
avm2: Implement Op::Coerce and add tests
2021-04-21 00:33:11 -07:00
CUB3D
c2969895b2
avm2: Add domain memory tests
2021-04-21 00:33:11 -07:00
CUB3D
89c01dca18
swf: Add support for AVM2 domain memory opcodes
2021-04-21 00:33:11 -07:00
TÖRÖK Attila
46ddc31254
avm2: Call the super initializer of LoaderInfo after construction
2021-04-19 18:16:47 -07:00
Mike Welsh
cbe685f8d5
tests: Update transform test to verify color transform rounding
2021-04-19 15:47:52 -07:00
Mike Welsh
0552d26551
core: Use Fixed8 and i16 for ColorTransform
...
Use the proper types for ColorTransform:
* Fixed8 (8.8) format for multiplicative component
* i16 format for additive component
This matches the behavior of Flash (for example, alpha only changes
in units of 1/256).
2021-04-19 15:47:52 -07:00
dependabot-preview[bot]
9c466c65da
build(deps): bump syn from 1.0.67 to 1.0.69
...
Bumps [syn](https://github.com/dtolnay/syn ) from 1.0.67 to 1.0.69.
- [Release notes](https://github.com/dtolnay/syn/releases )
- [Commits](https://github.com/dtolnay/syn/compare/1.0.67...1.0.69 )
Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2021-04-18 23:54:37 -07:00
relrelb
cd8ab813a4
avm1: Return an unboxed undefined in `TransformObject` constructor
...
This is now possible thanks to #2415 .
2021-04-17 09:27:29 -07:00
relrelb
6d68460196
tests: Expand funky_function_calls
2021-04-17 09:25:24 -07:00
relrelb
95cffdc2f9
avm1: Pass undefined this for CallMethod with non-string method_name
...
This isn't the most accurate behavior, since it should be an unboxed
Value, but currently it's not possible due to #843 .
2021-04-17 09:25:24 -07:00
relrelb
6a34070e76
tests: Expand sound
...
Check Sound.duration and Sound.getDuration() for detached sounds.
Check rounding behavior of Sound.duration and Sound.getDuration()
behind a comment because NullAudioBackend doesn't respect durations.
TODO: Uncomment it once NullAudioBackend returns real durations.
2021-04-17 09:11:50 -07:00
relrelb
e3478248ac
avm1: Implement Sound.getDuration() and Sound.setDuration()
...
These seem to be undocumented.
Looks like Sound.getDuration() behaves exactly as Sound.duration,
and Sound.setDuration() does nothing.
2021-04-17 09:11:50 -07:00
relrelb
6310e31023
avm1: Sound.duration should return undefined when no sound is attached
...
Previously it returned 0.
2021-04-17 09:11:50 -07:00
relrelb
4d41297b04
avm1: Remove reduntant new_ret_no_self annotation
...
Per https://rust-lang.github.io/rust-clippy/master/#new_ret_no_self ,
`new_ret_no_self` applies only to functions named `new`.
`TObject::create_bare_object` used to be named `new`, but was renamed
in 79af3ffe44
.
2021-04-16 15:25:22 -07:00
relrelb
1f934c5fc6
avm1: Remove redundant newlines
2021-04-16 15:25:22 -07:00
relrelb
dac60da936
avm1: ValueObject::boxed -> coerce_to_object
2021-04-16 15:25:22 -07:00
relrelb
0f8f0986e9
chore: Use matches!(...) in more places
2021-04-16 15:25:22 -07:00
relrelb
9dc63a7831
core: Remove redundant tuple
2021-04-16 15:25:22 -07:00
relrelb
a2e162be0d
avm1: Add Value::is_primitive
...
This provides a more convenient and readable way compared to
using matches!(Value::Object(_)).
2021-04-16 15:25:22 -07:00
relrelb
2ba6cada5b
avm1: Reserve arguments capacity
...
This prevents unnecessary re-allocations.
2021-04-16 15:25:22 -07:00
Chris Midgley
d89f0bbbfe
fix: looks like contentType is ignored (at least in FP6)
2021-04-16 12:36:49 -07:00
Chris Midgley
ba185418b9
chore: fmt
2021-04-16 12:36:49 -07:00
Chris Midgley
6c619495f4
chore: fix warnings
2021-04-16 12:36:49 -07:00
Chris Midgley
8e6bba1525
avm1: implement send_and_load
2021-04-16 12:36:49 -07:00
Chris Midgley
f1b07bd75b
avm1: set contentType on xml; fix initial contentType on load_vars.
2021-04-16 12:36:49 -07:00
dependabot-preview[bot]
f90d58703a
build(deps): bump pretty_assertions from 0.7.1 to 0.7.2
...
Bumps [pretty_assertions](https://github.com/colin-kiegel/rust-pretty-assertions ) from 0.7.1 to 0.7.2.
- [Release notes](https://github.com/colin-kiegel/rust-pretty-assertions/releases )
- [Changelog](https://github.com/colin-kiegel/rust-pretty-assertions/blob/main/CHANGELOG.md )
- [Commits](https://github.com/colin-kiegel/rust-pretty-assertions/compare/v0.7.1...v0.7.2 )
Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2021-04-15 14:30:00 -07:00
Mike Welsh
a45a5c2bcb
avm1: _levelN should shadow children instances with the same name
...
If a child clip is named `_level0`, accessing `_level0` should
return the level and not the child clip.
Move `DisplayObject::get_level_by_path` to `StageObject`, and
change it to return an `Option<Value>`, and return
`Some(Value::Undefined)` if the path is a valid level path but
the level is not occupied. This causes get/set of `_levelN` to
be swallowed, even if the level isn't populated.
2021-04-15 13:49:17 -07:00
Mike Welsh
34886933e5
avm1: Adjust precedence of children in StageObject::get
...
Children instances should shadow display object magic properties.
For example, a child named "_x" will be returned instead of the
parent's _x position in GetMember.
2021-04-15 13:49:17 -07:00
Mike Welsh
9224e85a2d
avm1: Delete2 returns true only if a property was actually deleted
...
This was incorrectly returning true for children instances
(`delete "clip"`).
2021-04-15 13:49:17 -07:00
Mike Welsh
d04989cf49
tests: Update stage_object_children test
...
Add a few tests for shadowing of child instances vs. display
object magic properties (for example, when a child clip is named
"_x" or "_level0").
2021-04-15 13:49:17 -07:00
desuwa
0d6c548be4
tests: Add tests for Player::run_actions at timer callbacks.
2021-04-15 13:48:27 -07:00
desuwa
3030f2098a
avm1: Run Player::run_actions after every timer callback.
2021-04-15 13:48:27 -07:00
EmperorBale
04d80e5e4e
chore: Fix more typos
2021-04-15 00:02:40 -07:00
EmperorBale
0ea02919b3
chore: Fix typo
2021-04-15 00:02:40 -07:00
EmperorBale
d227c6cbce
chore: Fix formatting
2021-04-15 00:02:40 -07:00
EmperorBale
153da75304
tests: Add test for IsType
2021-04-15 00:02:40 -07:00
EmperorBale
cbf8d77006
avm2: Fix IsType
2021-04-15 00:02:40 -07:00
EmperorBale
e4ba4b074a
tests: Add test for AsType
2021-04-15 00:02:40 -07:00
EmperorBale
ca2709f594
avm2: Implement AsType
2021-04-15 00:02:40 -07:00
EmperorBale
17acebb108
chore: Fix formatting
2021-04-15 00:02:40 -07:00
EmperorBale
f459e18b1a
tests: Update regression tests
2021-04-15 00:02:40 -07:00
EmperorBale
1d0c2b78b2
tests: Add test for AsTypeLate
2021-04-15 00:02:40 -07:00
EmperorBale
c0a56b14c0
avm2: Implement AsTypeLate
2021-04-15 00:02:40 -07:00
Mike Welsh
b9d84c0a82
chore: Appease clippy
...
Honor the branches-sharing-code lint.
2021-04-15 00:02:27 -07:00
Mike Welsh
d87be39e3c
avm2: Don't parse "inf" as Infinity
2021-04-14 21:51:48 -07:00
Mike Welsh
b6945395a8
avm1: Don't parse "inf" as Infinity
...
Rust nightly 4/13 allows f64::parse to handle "infinity", case
insensitive. This broke cases such as `Number("Infinity")`, which
should return `NaN` in AVM1.
Additionally, Rust will now print "-0" for negative zero, when
previously it would print "0".
* Return NaN for inf cases ("inf", "-Infinity", "+INF", etc.)
* Add a test for `Number("inf")` (this was also incorrect before
the latest nightly)
* Add a special case for zero in `f64_to_string` to ensure
that -0.0 gets coerced to "0".
For more info, see:
https://github.com/rust-lang/rfcs/issues/1074
2021-04-14 21:51:48 -07:00
Adrian Wielgosik
b2bed7a18d
avm1: Add missing clearTimeout() ( fix #4003 )
2021-04-14 11:02:04 -07:00
Moulins
f9bbe96812
core: Remove extra Option/Results from XmlNode getters
...
This removes some special cases and simplifies the code.
2021-04-11 14:16:48 -07:00
Moulins
ae1a01d181
avm1: Allow XMLNode reparenting ( closes #3962 )
...
`XMLNode.{appendChild, insertNode}` can now be used to move
child nodes from a parent to another.
There are two special cases:
- if the node is already a child of the destination, nothing happens
- if moving the node would create a cycle, nothing happens
2021-04-11 14:16:48 -07:00
relrelb
20d6fcc128
chore: Remove unnecessary type annotations
2021-04-10 18:39:16 -07:00
Mike Welsh
11f40384da
tests: Add test for loading into _root
2021-04-10 13:48:05 -07:00
Mike Welsh
aa0707411c
avm1: Update movie parameters when loading into _root/_level0
...
The movie framerate and dimensions should be changed when a movie
is loaded into _root or level 0.
2021-04-10 13:48:05 -07:00
David Wendt
7a781179aa
core: Move all of the remaining AVM2 object allocation and/or construction into the `construct_frame` step.
2021-04-09 22:24:22 -07:00
David Wendt
dc5b30e460
core: Remove "constructor ran" flag now that we can handle that with a local bool
2021-04-09 22:24:22 -07:00
David Wendt
27d09084fb
core: Use the library's AVM type to determine how to name the root.
...
We cannot check it's constructed AVM value anymore because it is now named before construction.
2021-04-09 22:24:22 -07:00
David Wendt
ebc5c3dd64
avm2: Ensure that objects are only *ever* constructed at frame construction time.
...
This ensures that root movie classes see their children in their constructor.
2021-04-09 22:24:22 -07:00
desuwa
e8de3a5a20
tests: Add tests for `MovieClip.hitTest()` with shapeflag and masks.
2021-04-09 22:11:07 -07:00
desuwa
4f90b9d161
avm1: Support masks when mouse-picking.
2021-04-09 22:11:07 -07:00
relrelb
f8b589fc24
core: Fix panic in remove_invalid_jpeg_data
...
`data` could be shorter than 4 bytes.
2021-04-09 14:47:19 -07:00
desuwa
755409673b
avm2: Add tests for set_width / set_height setting the scale to non-finite values.
2021-04-07 17:42:28 -06:00
desuwa
3c2d467a5f
avm1: Add tests for set_width / set_height setting the scale to non-finite values.
2021-04-07 17:42:28 -06:00
desuwa
fa1fde7083
core: Ensure the new scale is finite when setting the width / height of display objects.
2021-04-07 17:42:28 -06:00
desuwa
b7bf8334b2
core: Run `update_drag` earlier in the update cycle. Fix #1511
2021-04-06 15:48:06 -06:00
relrelb
732efb27c4
render: Fix RGB15 bitmaps decoding
...
Each row should be padded to 2.
2021-04-05 20:10:35 -06:00
David Wendt
5d198952e8
chore: Fix merge conflict mis-resolution
2021-04-05 16:18:37 -06:00
David Wendt
5cba07111e
avm2: Impl `LoaderInfo.parameters`
2021-04-05 16:18:37 -06:00
David Wendt
de1b0d4d0c
core: Add support for an explicit loader URL (though nothing sets it yet) and expose it in `LoaderInfo`.
2021-04-05 16:18:37 -06:00
David Wendt
4eee8be911
avm2: Impl `SWFVersion` enumeration
2021-04-05 16:18:37 -06:00
David Wendt
4c314a47cc
avm2: Impl `LoaderInfo.bytes`
2021-04-05 16:18:37 -06:00
David Wendt
a9328b228f
avm2: Allow writing to `ByteArrayStorage`
2021-04-05 16:18:37 -06:00
David Wendt
f61ea0b290
chore: Clippy beta/nightly compliance
2021-04-05 16:18:37 -06:00
David Wendt
46bf1b33c4
avm2: Impl `LoaderInfo.width`
2021-04-05 16:18:37 -06:00
David Wendt
28a1cb4308
avm2: Impl `LoaderInfo.url`
2021-04-05 16:18:37 -06:00
David Wendt
5941d6cf66
avm2: Impl `LoaderInfo.swfVersion`
2021-04-05 16:18:37 -06:00
David Wendt
6814fb9c22
avm2: Stub `LoaderInfo.isURLInaccessible`
2021-04-05 16:18:37 -06:00
David Wendt
b6e31d8be5
avm2: Impl `LoaderInfo.height`
2021-04-05 16:18:37 -06:00
David Wendt
e795da0358
avm2: Impl `LoaderInfo.frameRate`
2021-04-05 16:18:37 -06:00
David Wendt
cbd167fd6c
avm2: Stub `LoaderInfo.contentType`
2021-04-05 16:18:37 -06:00
David Wendt
76c563146d
tests: Grab `contentType` on frame two
2021-04-05 16:18:37 -06:00
David Wendt
7b7d250ce9
avm2: This is a getter, not a method
2021-04-05 16:18:37 -06:00
David Wendt
2a01260f52
avm2: `bytesLoaded` etc reports the compressed file length, not the uncompressed length
2021-04-05 16:18:37 -06:00
David Wendt
d0ad894f70
avm2: Impl `LoaderInfo.content`
2021-04-05 16:18:37 -06:00
David Wendt
b4cb01d2c9
avm2: Impl `LoaderInfo.bytesTotal`, and `.bytesLoaded`
...
`bytesLoaded` is currently aliased to `bytesTotal` as we do not yet support streaming loads
2021-04-05 16:18:37 -06:00
David Wendt
55e448ebaa
avm2: Impl `LoaderInfo.applicationDomain`
2021-04-05 16:18:37 -06:00
David Wendt
c156cd2a16
tests: Add tests for properties that are only accessible on frame 2
2021-04-05 16:18:37 -06:00
David Wendt
12dcfe7c62
avm2: Impl `LoaderInfo.actionScriptVersion`
2021-04-05 16:18:37 -06:00
David Wendt
1a7b33a1af
avm2: Impl `ActionScriptVersion`
2021-04-05 16:18:37 -06:00
David Wendt
a492c4db4d
tests: Add a test for `LoaderInfo`'s properties
2021-04-05 16:18:37 -06:00
David Wendt
fc26c26d1d
avm2: Allow access to `loaderInfo` on root movies
2021-04-05 16:18:37 -06:00
David Wendt
60c92dde49
avm2: Add Loader Info class & object type
2021-04-05 16:18:37 -06:00
CUB3D
e2f124ee34
avm2: Rename current_position -> instruction_start
2021-04-03 16:37:47 -06:00
CUB3D
c22ebc1de3
chore: Format on stable
2021-04-03 16:37:47 -06:00
CUB3D
d5c2e5559b
avm2: Don't mutably borrow for pos()
2021-04-03 16:37:47 -06:00
CUB3D
96f89a1643
avm2: Implement Op::LookupSwitch
2021-04-03 16:37:47 -06:00
relrelb
2d37f4d23e
avm1: Migrate `search_prototype` to primitive prototype
2021-04-03 12:40:05 -06:00
relrelb
bbded90697
avm1: Rename proto_value to proto
2021-04-01 17:06:07 -06:00
relrelb
89679bba65
avm1: Delete proto and set_proto
...
In favor of the new proto_value and set_proto_value pair.
In the next commit proto_value and set_proto_value will be renamed
to proto and set_proto.
2021-04-01 17:06:07 -06:00
relrelb
2c1dfea3ce
avm1: Migrate Player to proto_value
2021-04-01 17:06:07 -06:00
relrelb
76d80061a7
avm1: Migrate Object to proto_value
2021-04-01 17:06:07 -06:00
relrelb
e712a4fd59
avm1: Migrate FunctionObject to proto_value
2021-04-01 17:06:07 -06:00
relrelb
dc174b9d9f
avm1: Migrate StageObject to proto_value
2021-04-01 17:06:07 -06:00
relrelb
be60aa5941
avm1: Migrate XmlIdMapObject to proto_value
2021-04-01 17:06:07 -06:00
relrelb
ea52562d06
avm1: Migrate XmlAttributesObject to proto_value
2021-04-01 17:06:07 -06:00
relrelb
161db474a2
avm1: Migrate SuperObject to proto_value
2021-04-01 17:06:07 -06:00
relrelb
766a5db31c
avm1: Migrate ScriptObject to proto_value
2021-04-01 17:06:07 -06:00
relrelb
18a32424bd
amv1: Migrate custom_object.rs to proto_value
2021-04-01 17:06:07 -06:00
CUB3D
209b9cec36
chore: Format
2021-03-31 18:36:24 -06:00
CUB3D
ecbf6118bb
avm2: Update tests
2021-03-31 18:36:24 -06:00
CUB3D
9453743f9f
avm2: Add test for Op::EscXElem
2021-03-31 18:36:24 -06:00
CUB3D
0ea564f75c
avm2: Implement Op::EscXAttr and Op::EscXElem
2021-03-31 18:36:24 -06:00
relrelb
e453cbf0ef
tests: Expand object_prototypes
2021-03-31 18:04:52 -06:00
relrelb
e5660bc0c7
avm1: Allow primitive prototypes
...
Prototypes can be primitive, not just objects. However, TObject's
proto() and set_proto() work with Object and not Value. To allow
easier and more incremental migration from Object to Value, this
commit introduces a new pair of proto_value/set_proto_value functions
in TObject, preserving the existing proto/set_proto functions.
Both pairs have default implementations, so it's enough to implement
only one pair in each TObject implementation.
For now only ScriptObject uses the new pair, which fixes the behavior
of incorrectly coercing __proto__ to object.
Follow-up migration plan:
1. Replace all old proto/set_proto implementations by the new
proto_value/set_proto_value in all TObject implementations on a
one-by-one basis.
2. After proto/set_proto become unused, delete them and rename
proto_value/set_proto_value to proto/set_proto for more concise code.
2021-03-31 18:04:52 -06:00
relrelb
014e85b1f0
tests: Expand funky_function_calls
2021-03-31 17:59:58 -06:00
relrelb
5beb0164dd
tests: Cleanup funky_function_calls
2021-03-31 17:59:58 -06:00
relrelb
a3727e0727
avm1: Fix "this" argument conversion in Function.prototype.{call,apply}
...
The "this" argument should fall-back to the global object only for
undefined or null. Other primitives should be coerced to an object
rather than falling-back to the global object.
As a drive-by replace `Vec::new` by `Vec::with_capacity` in
`Function.prototype.apply` to minimize unnecessary reallocations.
2021-03-31 17:59:58 -06:00
CUB3D
8d68dcb562
avm2: Update tests
2021-03-29 20:46:02 -06:00
CUB3D
68527c13da
avm2: Implement flash.utils.getTimer
2021-03-29 20:46:02 -06:00
dependabot-preview[bot]
23af83f923
build(deps): bump syn from 1.0.64 to 1.0.65
...
Bumps [syn](https://github.com/dtolnay/syn ) from 1.0.64 to 1.0.65.
- [Release notes](https://github.com/dtolnay/syn/releases )
- [Commits](https://github.com/dtolnay/syn/compare/1.0.64...1.0.65 )
Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2021-03-27 01:40:26 -07:00
relrelb
7e1acce150
core: Fix build without default features
...
Previously `cargo build --no-default-features` failed because then
neither implementation of `Mp3Decoder` is chosen.
Fix that by not handling mp3 sounds at all in that case.
2021-03-27 01:40:11 -07:00
Mike Welsh
f96a414036
avm2: Lazily initialize Graphics object
...
Initialize a Sprite/Shape's Graphics object on the first access,
so that `shape.graphics == shape.graphics` is `true`.
2021-03-24 13:18:06 -07:00
Mike Welsh
040da925e4
avm2: Fix incorrect color in drawing API
2021-03-24 13:18:06 -07:00
Mike Welsh
9a08b9ae4f
avm2: flash.display.Graphics is final
2021-03-24 13:18:06 -07:00
David Wendt
df466dfba1
core: Start with an empty drawing when a `Shape` is converted into a `Drawing`.
2021-03-24 13:18:06 -07:00
David Wendt
b739b8d786
core: Retain the original `swf::Shape` until dynamic behavior is needed, upon which we switch to using a `Drawing`.
2021-03-24 13:18:06 -07:00
David Wendt
ff028de8de
core: `Drawing` should accept a SWF movie to pull bitmaps from
2021-03-24 13:18:06 -07:00
David Wendt
4238d8bd2a
tests: Add another test for drawing on `MovieClip`
2021-03-24 13:18:06 -07:00
David Wendt
1d57eee369
tests: Add a test for shape drawing
2021-03-24 13:18:06 -07:00
David Wendt
1d64f38bb7
avm2: Impl `drawRect`
2021-03-24 13:18:06 -07:00
David Wendt
60f4f2c534
core: `Graphic` should expose it's `Drawing` for external access
2021-03-24 13:18:06 -07:00
David Wendt
85ee005c0f
core: `Graphic` should always use it's stored `Drawing`'s bounds
2021-03-24 13:18:06 -07:00
David Wendt
e3f2d0f213
avm2: Allow constructing new `Shape`s.
2021-03-24 13:18:06 -07:00
David Wendt
62a779444d
avm2: `graphics` is a `Sprite` property, not a `MovieClip` property
2021-03-24 13:18:06 -07:00
David Wendt
5e7327d041
avm2: Allow drawing on `Shape`s.
2021-03-24 13:18:06 -07:00
David Wendt
e8b6d1a52a
core: Migrate clip drawing commands to exposing the internal `Drawing` to mutation
2021-03-24 13:18:06 -07:00
David Wendt
1a6f401f1f
avm2: Implement `Graphics.moveTo`
2021-03-24 13:18:06 -07:00
David Wendt
15d3a1e99d
avm2: Implement `Graphics.lineTo`
2021-03-24 13:18:06 -07:00