Commit Graph

2167 Commits

Author SHA1 Message Date
Mike Welsh 369c5bda56 render: Implement Bitmap smoothing property 2020-12-15 00:04:51 -08:00
CUB3D 3556ffd778 chore: Fixes after rebase 2020-12-15 00:04:51 -08:00
CUB3D a92b8ffded core: All other changes from review 2020-12-15 00:04:51 -08:00
CUB3D ccd08f14d9 core: Fix naming and safety issues 2020-12-15 00:04:51 -08:00
CUB3D e483d0959f core: Remove unwraps 2020-12-15 00:04:51 -08:00
CUB3D 6f91352d41 chore: Fix clippy lints 2020-12-15 00:04:51 -08:00
CUB3D eea45d6ae6 core: Tidy up loadBitmap 2020-12-15 00:04:51 -08:00
CUB3D 23a9c7143a core: Support failiable constructors 2020-12-15 00:04:51 -08:00
CUB3D b3dd5c0c0b core+renderer: Fix corner cases 2020-12-15 00:04:51 -08:00
CUB3D 666c3db9c6 core: Refactor bitmapData 2020-12-15 00:04:51 -08:00
CUB3D 74ab728cff core: Format 2020-12-15 00:04:51 -08:00
CUB3D 22a7b1d340 core: Add handling of invalid arguments for getColorBoundsRect/colorTransform 2020-12-15 00:04:51 -08:00
CUB3D 353d5a268b core: Add better handling of invalid arguments to BitmapData 2020-12-15 00:04:51 -08:00
CUB3D 9d46d67588 core+web+renderer: Add load/attach Bitmap and handling for invalid args with BitmapData 2020-12-15 00:04:51 -08:00
CUB3D 3c12fa6ee5 core: Implement BitmapData.floodFill and correct getPixel for invalid coordinates 2020-12-15 00:04:51 -08:00
CUB3D 3afd20063f core: Implement get/set pixel(32) functions 2020-12-15 00:04:51 -08:00
CUB3D e45e942a1f core: Start implementation for flash.display.BitmapData 2020-12-15 00:04:51 -08:00
dependabot-preview[bot] 843bc74292 build(deps): bump indexmap from 1.6.0 to 1.6.1
Bumps [indexmap](https://github.com/bluss/indexmap) from 1.6.0 to 1.6.1.
- [Release notes](https://github.com/bluss/indexmap/releases)
- [Commits](https://github.com/bluss/indexmap/compare/1.6.0...1.6.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-12-14 17:49:16 -08:00
David Wendt acadcb8fc0 avm2: `Event` is a sealed class. 2020-12-14 16:46:33 -08:00
David Wendt f7f51dcde2 avm2: `EventPhase` and `PropagationMode` should be `Eq` 2020-12-14 16:46:33 -08:00
David Wendt 6caaf0d222 avm2: Implement all of the `Event` class constants.
I'm not writing tests for these, my wrists hurt enough as is.
2020-12-14 16:46:33 -08:00
David Wendt 8a787e6153 avm2: Implement `Event.toString` (which matches it's valueof behavior) 2020-12-14 16:46:33 -08:00
David Wendt dc32d7894c avm2: Remove redundant event phase accessor 2020-12-14 16:46:33 -08:00
David Wendt ec63ff55cb avm2: Implement `Event.stopPropagation` and `Event.stopImmediatePropagation`.
These aren't testable yet.
2020-12-14 16:46:33 -08:00
David Wendt d393a5f4f8 avm2: Implement `Event.preventDefault` and `Event.isDefaultPrevented` 2020-12-14 16:46:33 -08:00
David Wendt 8b9a804ae9 avm2: Implement `Event.formatToString`. 2020-12-14 16:46:33 -08:00
David Wendt 584c6c8b11 avm2: Implement `Event.clone` 2020-12-14 16:46:33 -08:00
David Wendt 3d12929914 avm2: Expose `Event.target`, `currentTarget`, and `eventPhase`.
These have no tests because these properties can only be updated by an event broadcaster.
2020-12-14 16:46:33 -08:00
David Wendt 90da20579c avm2: Implement `Event.bubbles`, `cancelable`, and `type`. 2020-12-14 16:46:33 -08:00
David Wendt 58f4470dc5 avm2: Add `Event` class, object type, and native representation 2020-12-14 16:46:33 -08:00
jmckiern 709561a255 avm1: Use ? on set_text_color so errors are raised 2020-12-14 12:45:45 -08:00
jmckiern ec1ff0be3a avm1: Use ? instead of match Ok()'s so errors are raised 2020-12-14 12:45:45 -08:00
jmckiern a09ac58ebd chore: Remove TODO 2020-12-14 12:45:45 -08:00
jmckiern cfd003de7a avm1: Implement TextField.backgroundColor 2020-12-14 12:45:45 -08:00
jmckiern 61e3214d0a avm1: Implement TextField.borderColor 2020-12-14 12:45:45 -08:00
Sam Morrow c4d7b24629 web: Fix cors issues with http (close ruffle-rs#1486) 2020-12-14 05:51:28 -08:00
Zeh Fernando 8e9de8e16b core: Implement MovieClip._lockroot in avm1
This also enables the (previously ignored) _lockroot tests.
2020-12-13 15:34:42 -08:00
Mike Welsh ee74197a00 avm1: Move TextField properties to prototype
Remove TextField::attach_virtual properties, as properties are
on the prototype, not the textfield itself.

Use the `with_text_field_props` macro for these properties.

Also remove `get_` prefix from most getters to match naming
conventions.
2020-12-09 14:45:20 -08:00
David Wendt ed4d51dfc1 avm1: Don't panic if we encounter an invalid display object hierarchy for AS2. Instead, yield a runtime error. 2020-12-09 14:00:06 -08:00
David Wendt afd033898c avm2: Implement `hitTestObject` 2020-12-09 14:00:06 -08:00
David Wendt d9172780c5 avm2: Implement `hitTestPoint`. 2020-12-09 14:00:06 -08:00
David Wendt b18b87e566 avm2: Implement `mouseX` and `mouseY`.
Note that we cannot write a reproducible test for this.
2020-12-09 14:00:06 -08:00
David Wendt 06ba2f898a avm2: Implement `visible`. 2020-12-09 14:00:06 -08:00
David Wendt d489aca377 avm2: Expose `DisplayObject.root` 2020-12-09 14:00:06 -08:00
David Wendt 4b9deb7106 core: Don't crash on rootless display objects.
Instead, crash if AVM1 ever sees a rootless display object.
2020-12-09 14:00:06 -08:00
David Wendt 0069d51dad swf: `pushshort` should be read as a `u30` and then cast to an `i16` as it's parsed representation. 2020-12-09 14:00:06 -08:00
David Wendt 1b2a4708d6 avm2: Implement `DisplayObject.parent`. 2020-12-09 14:00:06 -08:00
David Wendt 852f26bdeb tests: Fix name test breaking with our half-working execution order 2020-12-09 14:00:06 -08:00
David Wendt c053f2c87c avm2: Expose DisplayObject `name` property 2020-12-09 14:00:06 -08:00
David Wendt ea7efe8740 core: Avoid double-borrow when moving clips between parents 2020-12-09 14:00:06 -08:00
David Wendt a7b4f7fbd0 core: Add instantiated by timeline flag as AVM2 appears to track that 2020-12-09 14:00:06 -08:00
David Wendt 6080585d73 core: Assign `rootN` format names to top-level AVM2 movie clips. 2020-12-09 14:00:06 -08:00
David Wendt 19f9e99954 avm2: Expose and test `rotation`. 2020-12-09 14:00:06 -08:00
David Wendt 29f96e76ab tests: Activate alpha test (since it seems to work fine) 2020-12-09 14:00:06 -08:00
David Wendt 200581e1e3 avm2: Expose `x` and `y` properties. 2020-12-09 14:00:06 -08:00
David Wendt 4784dc3c03 tests: Add more stringent height/width test that we're only accurate to within 1 twip. 2020-12-09 14:00:06 -08:00
David Wendt abca120628 avm2: Expose `width` to AS3 code. 2020-12-09 14:00:06 -08:00
David Wendt 3225cd40e2 core: Avoid panic when display objects are manipulated in clearly invalid ways. 2020-12-09 14:00:06 -08:00
David Wendt 990401a09c core: Allow percentages (e.g. scalex/y) to be specified, stored, and cached at either [0..1] or [0..100] scale. 2020-12-09 14:00:06 -08:00
David Wendt 6da658a845 avm2: `pushshort` has an undocumented coercion step 2020-12-09 14:00:06 -08:00
David Wendt 90e203b004 avm2: `this.height` ignores negative values 2020-12-09 14:00:06 -08:00
David Wendt bd00bea744 avm2: Expose `alpha`, `height`, `scaleY`, and `scaleX` to script code. 2020-12-09 14:00:06 -08:00
David Wendt 69db45131b tests: Add inactive tests for `alpha`, `height`, `rotation`, `width`, `x`, and `y`. 2020-12-09 14:00:06 -08:00
dependabot-preview[bot] d1c79a5dd5 build(deps): bump png from 0.16.7 to 0.16.8
Bumps [png](https://github.com/image-rs/image-png) from 0.16.7 to 0.16.8.
- [Release notes](https://github.com/image-rs/image-png/releases)
- [Changelog](https://github.com/image-rs/image-png/blob/master/CHANGES.md)
- [Commits](https://github.com/image-rs/image-png/commits)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-12-08 21:13:22 -08:00
jmckiern 3cab11d18e avm1: Implement TextField.textColor (close #1863) 2020-12-07 15:09:36 -08:00
dependabot-preview[bot] 17eb651682 build(deps): bump syn from 1.0.53 to 1.0.54
Bumps [syn](https://github.com/dtolnay/syn) from 1.0.53 to 1.0.54.
- [Release notes](https://github.com/dtolnay/syn/releases)
- [Commits](https://github.com/dtolnay/syn/compare/1.0.53...1.0.54)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-12-07 13:08:20 -08:00
Mike Welsh 9901738249 chore: Appease rustfmt 2020-12-07 10:35:40 -08:00
relrelb 989bfb8f3e avm1: Improve loops treatment in Sound.start
The second argument of Sound.start, loops, can be greater than
std::u16::MAX, but previously greater values were treated as 1.
Ideally, the solution is to respect those values, but since SoundInfo
holds a u16, a short-term solution is to treat them as std::u16::MAX
instead.
2020-12-06 14:22:38 -08:00
Mike Welsh 16b9c77d02 core: Remove panic in morph shape lerp 2020-12-05 00:19:30 -08:00
dependabot-preview[bot] f45fa80e29 build(deps): bump smallvec from 1.5.0 to 1.5.1
Bumps [smallvec](https://github.com/servo/rust-smallvec) from 1.5.0 to 1.5.1.
- [Release notes](https://github.com/servo/rust-smallvec/releases)
- [Commits](https://github.com/servo/rust-smallvec/compare/v1.5.0...v1.5.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-12-04 17:54:47 -08:00
bbb651 92bd0874e1 Fixed "Swap" only working for i32 2020-12-03 15:51:37 -08:00
bbb651 8baf35e7af Added AVM2 op "Swap" 2020-12-03 15:51:37 -08:00
Mike Welsh 758a32f5f0 core: Remove unimplemented! in decode_define_bits_lossless 2020-12-02 23:58:03 -08:00
Zeh Fernando c018ac065c tests: Add test for MovieClip._lockroot in avm1 2020-12-02 11:59:01 -08:00
Mike Welsh a0d56aad44 core: Don't panic on DefineFont4 2020-12-01 23:01:35 -08:00
Mike Welsh 25e7ec99a0 core: Handle serializing arrays in SharedObjects 2020-11-30 22:15:34 -08:00
Mike Welsh ad5028817a core: Remove unnecssary parameter from Button::set_state 2020-11-30 01:15:43 -08:00
Mike Welsh 0d79d85d83 avm1: Fix MovieClip properties being attached to Object.prototype 2020-11-30 01:15:43 -08:00
Mike Welsh aedddd29ab avm1: Implement Button.enabled and MovieClip.enabled 2020-11-30 01:15:43 -08:00
dependabot-preview[bot] 827a8ee18d build(deps): bump syn from 1.0.52 to 1.0.53
Bumps [syn](https://github.com/dtolnay/syn) from 1.0.52 to 1.0.53.
- [Release notes](https://github.com/dtolnay/syn/releases)
- [Commits](https://github.com/dtolnay/syn/compare/1.0.52...1.0.53)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-11-29 22:46:08 -08:00
Mike Welsh ab200b6dc0 avm1: Don't fire button events when invisible (fix #1521) 2020-11-29 12:47:36 -08:00
Mike Welsh dafe7e5027 avm1: Implement Key.getAscii 2020-11-29 02:31:10 -08:00
Mike Welsh 18addef831 core: Don't run stream sounds when stopped (fix #1719) 2020-11-27 21:11:15 -08:00
dependabot-preview[bot] 3d9ebbde9c build(deps): bump syn from 1.0.51 to 1.0.52
Bumps [syn](https://github.com/dtolnay/syn) from 1.0.51 to 1.0.52.
- [Release notes](https://github.com/dtolnay/syn/releases)
- [Commits](https://github.com/dtolnay/syn/compare/1.0.51...1.0.52)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-11-27 15:46:54 -08:00
David Wendt a978b649b9 core: Also gate the `set_parent` change on `remove_range` just in case 2020-11-27 13:23:34 -08:00
David Wendt 0f1d4d5248 core: Always remove children from their old render list positions regardless of what depth list position they had 2020-11-27 13:23:34 -08:00
David Wendt e69e6fcc5e core: Fix regression on Super Mario 63 2020-11-27 13:23:34 -08:00
David Wendt 6e565d4da2 core: Fix compliation error caused by the `TDisplayObjectContainer` refactor 2020-11-27 13:23:34 -08:00
David Wendt 5a2f17a642 core: Consistently refer to render list positions as an `index` for consistency with Rust naming conventions 2020-11-27 13:23:34 -08:00
David Wendt c011c028de avm2: Correctly coerce render list indicies as `i32`, not `u32`. 2020-11-27 13:23:34 -08:00
David Wendt 01539baf5d core: Move `render_children` into `TDisplayObjectContainer`. 2020-11-27 13:23:34 -08:00
David Wendt ba311dd5b4 core: Remove previous changes to make certain `DisplayObject` methods take `&mut self`, which noises up the PR 2020-11-27 13:23:34 -08:00
David Wendt 6d992e239a core: Re-fix #1580 as it's fix didn't make it into the `DisplayObjectContainer` refactor the first time 2020-11-27 13:23:34 -08:00
David Wendt 8764831533 chore: cargo 1.47 changed the formatting algorithm 2020-11-27 13:23:34 -08:00
David Wendt 365601f2d9 core: New-depth children should always be placed before higher children, not after lower ones.
We will call this the "before-above" rule, to contrast with the previous "after-below" behavior. The main difference is how off-depth-list children are handled, which more closely matches AVM2.

The previous implementation of after-below wouldn't work unless we made the fallback case of not having a below child put it to the *end* of the list. This gave us test pass but broke animations. The first one I tried, Cirno's Perfect Math Class, prepends the entire depth list, which with the half-broken after-below behavior wound up appending to the render list.

There isn't an inverse problem with before-below and the end of the list, since we cover that case and we don't have to put weird exceptions.
2020-11-27 13:23:34 -08:00
David Wendt 74b50f2586 core: AVM2-locked children should still be removable from the depth list. 2020-11-27 13:23:34 -08:00
David Wendt 3769d24715 core: Fix incorrect placement of clips where depth placements intended to place objects at the bottom of the list instead placed them at the top. 2020-11-27 13:23:34 -08:00
David Wendt 35bc43cce2 avm2: Swapping children should lock them from depth manipulation. 2020-11-27 13:23:34 -08:00
David Wendt c8cd4a9192 avm2: Remove outdated documentation on some internal functions. 2020-11-27 13:23:34 -08:00
David Wendt 6cb3ff9632 avm2: Stub `getObjectsUnderPoint` and `areInaccessibleObjectsUnderPoint` as we do not yet support the `Point` class 2020-11-27 13:23:34 -08:00