David Wendt
a3f4509d63
Store all text internally as an HTML tree, alongside the existing strings.
...
We're reusing the XML machinery to handle HTML - this is probably not 100% correct, but writing a new HTML parser to cover just `EditText` will be rather complicated.
2020-06-20 19:16:11 -04:00
David Wendt
cc854db9b3
Derive `Collect` on `EditTextData`.
2020-06-20 19:16:10 -04:00
David Wendt
ac9cd0cf87
Move `TextFormat` over to a new `html` module, which will hold all the stuff necessary for rendering HTML in an `EditText`.
...
`TextFormat` is owned data and should be collectable as static.
2020-06-20 19:16:10 -04:00
Nathan Adams
2e7ebbf258
avm1: Fatal errors will halt the AVM and prevent further execution
2020-06-20 15:02:00 -07:00
Nathan Adams
f5da954b32
avm1: Merge avm1::Error and avm1::ExecutionError for now. It's plausible that nested inside actions we can encounter an ExecutionError, so at that point it doesn't make sense to have a separation.
2020-06-20 15:02:00 -07:00
Nathan Adams
e2c607c70f
avm1: Avm1::retire_stack_frame can't error, so adjust its signature appropriately
2020-06-20 15:02:00 -07:00
Nathan Adams
a36e2105a3
avm1: Made avm1::Error an actual error type, and removed all calls that throw incorrect errors in avm1
2020-06-20 15:02:00 -07:00
Nathan Adams
ad07520af3
avm1: Add avm1::ExecutionError
2020-06-20 15:02:00 -07:00
Nathan Adams
adb8ffbf9c
core: Convert XML errors into an enum
2020-06-20 15:02:00 -07:00
Nathan Adams
59ccd75518
core: Rename loader::LoaderError to loader::Error
2020-06-20 15:02:00 -07:00
Nathan Adams
b6f012cf7f
core: Use thiserror to derive Loader errors
2020-06-20 15:02:00 -07:00
Nathan Adams
0f1eef9022
core: Introduce LoaderError to all Loader methods
2020-06-20 15:02:00 -07:00
Nathan Adams
c8f0753da4
core: Rename Value::as_number to Value::coerce_to_f64
2020-06-19 12:48:28 -07:00
Nathan Adams
67042b255c
core: Replace Value::as_* numeric methods in favour of coerce_to_* or manual matching
2020-06-19 12:48:28 -07:00
Nathan Adams
270f63b2f3
core: Made Object::to_string return a Cow<str>
2020-06-19 12:48:28 -07:00
Nathan Adams
f4b4d0ebb7
core: Replace Value::into_string in favour of coerce_to_string or manual matching
2020-06-19 12:48:28 -07:00
Nathan Adams
5662b2d4d9
core: Make Value::coerce_to_string return a Cow<str>`
2020-06-19 12:48:28 -07:00
Nathan Adams
9633dc71c3
core: Replace Value::as_string in favour of coerce_to_string or manual matching
2020-06-19 12:48:28 -07:00
Nathan Adams
e44568c31c
core: Remove Value::call_method, you must box the value first
2020-06-19 12:48:28 -07:00
Nathan Adams
5dd1a1e509
core: Remove Value::get, you must box the value first
2020-06-19 12:48:28 -07:00
Nathan Adams
fc18c2fce5
core: Rename Value::as_object to Value::coerce_to_object
2020-06-19 12:48:28 -07:00
Nathan Adams
b2b57c1540
core: Make Value::as_object always return a (possibly boxed) object
2020-06-19 12:48:28 -07:00
Mike Welsh
62cfeb3754
core: Assign default name to unnamed clips ( fix #66 )
2020-06-18 16:26:36 -07:00
Mike Welsh
83feeefeeb
audio: Don't panic on unimplemented codecs
...
Remove `unimplemented` calls when encountring unsupported codecs
such as Nellymoser. Instead, return an Error that can be
gracefully handled.
2020-06-17 12:14:08 -07:00
Mike Welsh
1d7e6b7e8a
chore: Fix let-unit-value clippy lint
2020-06-17 11:25:06 -07:00
Mike Welsh
77cb186357
avm1: Constructors queue to run after a goto
...
If a class is registered to a clip that is placed on the timeline
during a goto, that constructor should run after the frame is
completely constructed. In order to tell whether to run the
constructor immediately, add a parameter to `post_instantiation`
to indicate if the clip is instantiated from the AVM or via a
standard timeline seek.
2020-06-16 14:53:44 -07:00
Nathan Adams
5efab4c579
core: Implement RGB15 PNGs - fixes #724
2020-06-16 14:53:19 -07:00
Mike Welsh
35a4c05923
avm1: CallFunction can resolve variable paths
2020-06-13 02:48:38 -07:00
Mike Welsh
ce73b4eaa7
core: Recursively unload child display objects
...
Child movie clips should run their unload actions when the parent
is removed.
2020-06-11 23:39:16 -07:00
Mike Welsh
9b0881edb7
core: Set $version on root
...
_root has a $version property that should matches
`System.capabilites.version`. This allows Nanaca Crash to boot.
2020-06-11 10:03:29 -07:00
Mike Welsh
b5daf3d020
core: Fix BoundingBox::union for invalid bounds
2020-06-10 17:17:08 -07:00
CUB3D
fa11ef1e81
core: Add remaining capabilities
2020-06-09 23:57:46 +01:00
CUB3D
dd5d2976ea
core: Add missing functions to System.security
2020-06-09 23:03:13 +01:00
CUB3D
07d4f3a8eb
core: Fix build
2020-06-09 22:41:11 +01:00
CUB3D
ad3bc612aa
chore: Fix clippy lints
2020-06-09 22:41:11 +01:00
CUB3D
4987cfdaac
core: Refactor enums, Add unknown windows os support and fix attributes
...
Now using Display to convert enums.
Also added support for a fallback "Windows" os for when the current version can't be detected
2020-06-09 22:41:11 +01:00
CUB3D
48bef91917
core: Remove clear_clipboard, format and fix tests
2020-06-09 22:41:11 +01:00
CUB3D
bc1055e381
core: Create system protos in globals.rs, fix version-dependant output
...
Make get_server_string output order match flash, also make language and manufacturer output respect emulated player version
2020-06-09 22:41:11 +01:00
CUB3D
de013426bc
core: Url encode serverString
2020-06-09 22:41:11 +01:00
CUB3D
887e09337f
core: Add dummy impl of System.security
2020-06-09 22:41:11 +01:00
CUB3D
fc8cd1139a
core: Add initial System.IME implementation
2020-06-09 22:41:11 +01:00
CUB3D
94a53f3506
core: Store System.capabilities in SystemProperties
2020-06-09 22:41:11 +01:00
CUB3D
af41ac5602
core: Add clipboard support to input backend
2020-06-09 22:41:11 +01:00
CUB3D
0f0f778830
core: Retain properties for System in the player
2020-06-09 22:41:11 +01:00
CUB3D
8471523e49
core: Add basic System.capabilities implementation
2020-06-09 22:41:11 +01:00
CUB3D
50abbe1887
core: Implement basic System global
2020-06-09 22:41:10 +01:00
Nathan Adams
58df56e4a4
core: Add `Value::get` shortcut that resolves Objects or returns Undefined
2020-06-08 15:12:05 -07:00
Nathan Adams
d0ad1b57fe
core: Replace `toString`/`valueOf` calls with `call_method`
2020-06-08 15:12:05 -07:00
Nathan Adams
c592b5fb2a
core: `Value::call_method` no longer requires you to resolve after calling it
2020-06-08 15:12:05 -07:00
Nathan Adams
d39ffcfadc
core: `Value::call` no longer requires you to resolve after calling it
2020-06-08 15:12:05 -07:00
Nathan Adams
fe55c5a264
core: `TObject::call_method` no longer requires you to resolve after calling it
2020-06-08 15:12:05 -07:00
Nathan Adams
da3e2bb0a0
core: `TObject::call` no longer requires you to resolve after calling it
2020-06-08 15:12:05 -07:00
Nathan Adams
26590d4c63
core: `TObject::get_local` no longer requires you to resolve after retrieving it
2020-06-08 15:12:05 -07:00
Nathan Adams
a121a3a4d0
core: `TObject::get` no longer requires you to resolve after retrieving it
2020-06-08 15:12:05 -07:00
Nathan Adams
34cf21289b
avm1: Fixed some missing behaviours with flash.geom.Rectangle
2020-06-02 18:49:01 -07:00
Nathan Adams
f5765f2bac
avm1: Implement all of flash.geom.Rectangle + tests ( #305 )
2020-06-02 18:49:01 -07:00
Nathan Adams
226a97ef4b
core: Don't panic on `new DoesntExist()`
2020-06-02 18:49:01 -07:00
Nathan Adams
0d53f0a952
chore: Fix new clippy lint about short variable names - fixes #668
2020-06-01 10:31:46 -07:00
Mike Welsh
3a8c705e95
chore: Fix clippy lints
2020-05-30 03:47:12 -07:00
Nathan Adams
4c1ce6d765
core: Print swf version on startup, and warn when we run into avm2
2020-05-30 02:48:54 -07:00
Nathan Adams
ddf2aa3ec1
avm1: Implement all of flash.geom.Point ( #304 )
2020-05-27 00:23:45 -07:00
CUB3D
590321133f
core: Fix incorrect String.charCodeAt bounds check ( close #633 )
2020-05-25 13:35:41 -07:00
Mike Welsh
993421e732
core: Children run an initial frame when changing button states
...
There was a one-frame-off flicker when a button changed states.
Now children will tick a frame so that they are properly created
immediately when the parent button changes state.
2020-05-24 08:57:30 -07:00
Mike Welsh
932ad30570
core: Flatten ClipActions into a single event per action
...
Previously a MovieClip's clip action would have a set of events
that would trigger it. Now we flatten these out into a single
event per action, because this is by far the common case. If an
action does happen to have >1 event, it will be duplicated for each.
2020-05-24 08:57:30 -07:00
Mike Welsh
c427d55dbb
core: Clean up clip event handlers
...
Remove ButtonEvent and subsume it in ClipEvent. Player now tosses
ClipEvents down the display tree, cleaning up some of the event code.
2020-05-24 08:57:30 -07:00
Mike Welsh
6929cea996
core: Implement button event handlers for movie clips
2020-05-24 08:57:30 -07:00
Mike Welsh
09ca11f788
webgl: Implement linear RGB gradients
2020-05-22 11:03:16 -07:00
Nathan Adams
3346accb9c
core: More accurate shape_bounds/edge_bounds in drawing api
2020-05-21 20:34:48 +02:00
Nathan Adams
62a1914c3e
core: BoundingBox::encompass should properly convert invalid BBs to valid BBs.
...
This means that encompassing 100,100 on an invalid BB should create a BB of 100,100-100,100, and not 0,0-100,100
2020-05-21 20:19:26 +02:00
Nathan Adams
279c07d9b8
core: Update drawings on render instead of on tick
2020-05-21 18:38:10 +02:00
Nathan Adams
55215273e8
core: Stretch edge & shape bounds separately and avoid a clone, in rendering api
2020-05-21 18:38:10 +02:00
Nathan Adams
04690581ba
core: Refactor common code in drawing api
2020-05-21 18:38:10 +02:00
Nathan Adams
1f8abc92fd
core: Keep track of cursor position in drawings
2020-05-21 18:38:10 +02:00
Nathan Adams
99574cfa72
core: Move drawing api out from `movie_clip` into `drawing`
2020-05-21 18:38:10 +02:00
Nathan Adams
31b0a5ae76
avm1: Implement gradient matrix types
2020-05-20 14:54:41 +02:00
Nathan Adams
5098eb079d
avm1: Implement most of flash.geom.Matrix ( #303 )
2020-05-20 14:54:41 +02:00
Nathan Adams
14331da71b
avm1: Add flash.geom.Matrix and methods to convert between this and swf::Matrix
2020-05-20 14:54:41 +02:00
Nathan Adams
eda862c719
swf: Merged core::Matrix into swf::Matrix
2020-05-20 14:54:41 +02:00
Nathan Adams
61e464099c
core: Add initial drawing API to MovieClip
2020-05-20 14:54:40 +02:00
Nathan Adams
7ab6703fc9
render: Add RenderBackend::replace_shape method
2020-05-20 14:54:40 +02:00
Nathan Adams
4c80ae150c
core: Make DistilledShape use Boundingbox and not Rectangle
...
Rectangle more represents compressed swf data and isn't suited for performing operations, and the drawing api will be generating these dynamically
2020-05-20 14:54:33 +02:00
Nathan Adams
f7b5f14f65
core: Make RenderBack::register_bitmap* methods return a Result ( fixes #531 )
2020-05-19 07:12:36 -07:00
Mike Welsh
031f5d6501
core: Avoid undefined behavior in f64_to_wrapping functions
2020-05-13 02:41:50 -07:00
Mike Welsh
b59140ee01
render: Add support for GIF decoding in DefineBitsJPEG tags
2020-05-13 00:15:09 -07:00
Mike Welsh
5d84d33710
render: Handle PNG data in DefineBitsJPEG tags ( fix #530 )
2020-05-13 00:15:09 -07:00
Nathan Adams
b82b869950
core: Don't panic when NullNavigatorBackend can't do futures
2020-05-11 01:09:07 -07:00
Nathan Adams
2343074c56
core: Make RenderBackend downcastable
2020-05-11 01:09:07 -07:00
Nathan Adams
edcd1e6d65
core: Add keyboard shortcut to dump every variable (ctrl+alt+V, same as Flash Player)
2020-05-10 23:39:54 -07:00
Nathan Adams
c787e28fcd
render: Introduce a DistilledShape and use that instead of swf::Shape for the rendering API
2020-05-10 22:03:56 -07:00
Nathan Adams
5767fb1772
swf: Added utility method for `Color::from_rgb(rgb, alpha)`
2020-05-10 22:03:56 -07:00
Nathan Adams
601715aa19
render: Merge begin_frame and clear as they're always called together
2020-05-10 22:03:56 -07:00
Nathan Adams
054e6f1ac6
chore: Fix new rust check lint about std::mem::replace
2020-05-10 03:29:25 -07:00
Nathan Adams
bac99368be
chore: Fix new clippy lints about cloning
2020-05-10 03:29:25 -07:00
Nathan Adams
47a44a5fe8
desktop: Prime window with known width/height of the movie
2020-05-04 16:07:38 -07:00
Nathan Adams
51d9f3ef36
core: Change Player::new to take in a SwfMovie, not &[u8]
2020-05-04 16:07:38 -07:00
Nathan Adams
84f6b4d06e
core: Set init_object values after prototype but before constructor
2020-05-03 12:46:55 -07:00
Nathan Adams
0152f384ea
core: Run any on(construct) events at the appropriate time
2020-05-03 12:46:55 -07:00
Mike Welsh
f09bd8c079
core: Clean up tick/render loop
...
Don't call `render` from `Player::tick`; instead, require the
frontends to explicitly call `render` when they wish to redraw.
The frontend can query `Player::needs_render` to see if the stage
is dirty and needs a redraw. Update desktop and web to use this
new method.
This fits better with the newer winit event loop model, which
requires explicitly calling `request_redraw`, and should avoid
spurious renders.
2020-05-02 04:25:21 -07:00
Mike Welsh
6339c74d67
render: Add wgpu backend (merge #527 )
...
Adds a wgpu-rs render backend.
2020-05-02 03:42:05 -07:00
Nathan Adams
8384847084
avm1: Deleting on a non-object is a silent failure & warning, not a hard error
2020-04-30 14:18:54 -07:00