Commit Graph

431 Commits

Author SHA1 Message Date
Toad06 45795c9d24 desktop/web: Add a mouse enter event 2023-04-25 18:01:49 +02:00
relrelb ff7c458739 core: Accept borrowed strings in `NavigatorBackend::navigate_to_url`
This avoids some unnecessary clones.
2023-04-24 22:06:47 +03:00
nosamu 3cde3482f4 core: Add frame rate config option 2023-04-24 14:01:37 +02:00
nosamu 6e8929e6d0 desktop: Handle relative URLs in navigate_to_url
Fixes #10773
2023-04-22 13:57:27 +02:00
nosamu 8a15eb3c38 desktop: Fix loading relative URLs when movie URL ends in empty path segment 2023-04-05 11:42:43 -07:00
nosamu 460f0811b7 desktop: Add base URL option 2023-04-05 11:25:49 -07:00
nosamu da41f4a966 desktop: Add max execution duration option 2023-04-05 11:25:49 -07:00
Nathan Adams 1bb8515d85 chore: Update avm2 compatibility warning to be less severe 2023-03-15 15:30:25 -07:00
Aaron Hill 66aad3ebc5 core: Use a separate matrix for stage alignment and HiDPI scaling
The stage alignment settings viewport_scale_factor should *not* be
applied to `Stage.transform.matrix`, which is only ever changed
as a result of explicit modification from ActionScript. Instead,
alignment and scaling are performed a separate step, which is
transparent to ActionScript.

I've implemented this through a new `viewport_matrix` field,
which is used during stage rendering and mouse coordinate
transformation.

This makes Stage3D instances properly scale - previously, they
would render unscaled. The linux standalone Flash Player doesn't
seem to use HiDPI mode, so I didn't realize that this was a bug
until now.

In the process of implementing this, I discovered and fixed a bug
with how we handle changing the viewport size under winit.
Calling `self.window.set_inner_size` does not immediately take
effect (at least on X11) - calling `self.window.inner_size()`
will report the old size until the next resize event.
Since build our Stage matrices from `self.window.inner_size()`
(and start running the SWF) immediately after `RuffleEvent::OnMetadata`,
we would run a few SWF frames with an incorrect viewport size. This
is visible to SWFs that have the scale mode set to "noScale", and
could break SWFs that expect the initial viewport size to be
the movie size. I've fixed this by delaying SWF execution until
we get a Resize event (if `self.window.inner_size()` does not
immediately report the size we set).
2023-03-13 02:02:40 -05:00
Aaron Hill 830d5198f2 desktop: Actually use 'quality' flag
This was being completely ignored
2023-03-04 18:45:25 -06:00
Aria Aghaei 352ed20d34
desktop: Handle errors before detaching from console on Windows CLI (#9781)
Co-authored-by: relrelb <relrelbachar@gmail.com>
2023-03-04 12:33:26 +00:00
Daniel Jacobs 584cb4c1cf web/ui: Open the virtual keyboard when clicking an editable EditText 2023-03-01 08:15:58 +02:00
relrelb b3fd1a47c6 core: Require `SwfMovie::url` 2023-02-28 19:05:20 +02:00
relrelb b3d45bc7b0 desktop: Avoid deprecated `KeyboardInput::modifiers`
As suggested, use `WindowEvent::ModifiersChanged` instead.
2023-02-27 13:02:58 +02:00
Aria Aghaei 44149614c7
desktop: min and max window size for ruffle (#9608)
Co-authored-by: Swag Gaming <memail@cock.li>
Co-authored-by: Aria Aghaei <ariaaghaei@gmail.com>
Co-authored-by: relrelb <relrelbachar@gmail.com>
2023-02-24 11:04:44 +00:00
nosamu 70bf0a816a core: Add options to set and force stage scale mode 2023-02-22 12:13:20 +02:00
nosamu 15435c6bea desktop: Support `file` URLs 2023-02-16 19:46:16 +02:00
nosamu e68cb433b2 desktop: Support flashvars passed via URL parameters 2023-02-14 23:05:22 +01:00
Aaron Hill c597f9f996 core: Fix Clippy lints on nightly 2023-02-13 03:38:54 +01:00
nosamu 1a65a0942c desktop: Add --letterbox option 2023-02-09 23:43:25 -08:00
Nathan Adams 68761608fc desktop: Add --quality option 2023-02-06 16:08:04 +01:00
Nathan Adams 6e224a7ba0 desktop: Don't record memory stacks by default 2023-02-05 18:02:19 +01:00
nosamu 12c67d5068 desktop: Improve --help messages 2023-02-03 21:17:56 +01:00
Aaron Hill e91f586523 desktop: Bump cpal to 0.15.0
`build_output_stream` now takes in a `timeout` parameter - I've
passed in `None` to keep the current behavior.

cpal addded lots of new `SampleFormat` enum values. For now, I'm
just returning an error if we encounter any of them - a quick test
showed that desktop audio is still working on my Linux machine.
2023-01-31 16:15:16 +01:00
p0008874 9bdc02e3a7 Update main.rs 2023-01-28 12:43:21 -07:00
p0008874 520248bc1d Add detail on dont_warn_on_unsupported_content 2023-01-28 12:43:21 -07:00
CUB3D f559fe0077 desktop: Add key code for Numpad Enter 2023-01-24 22:12:32 -06:00
CUB3D 92d1e81a16 desktop: Add keycodes for Tab, Return and Backspace 2023-01-24 22:12:32 -06:00
Nathan Adams f83c573734 desktop: Make crash headings ### instead of # 2023-01-19 00:50:56 +01:00
Nathan Adams e02b19ba86 desktop: Reorder extra info in crash report 2023-01-19 00:50:56 +01:00
Nathan Adams a986cc05fe desktop: Clippy lint 2023-01-19 00:50:56 +01:00
Nathan Adams e27fdda3dc desktop: Add version info to crash report 2023-01-19 00:50:56 +01:00
Nathan Adams 2189d19324 desktop: Also include avm2 stacktrace in panic report 2023-01-19 00:50:56 +01:00
Nathan Adams 3c8f5b41cc chore: Added platform dropdown to crash report template 2023-01-19 00:50:56 +01:00
Nathan Adams ea37d0a3ad desktop: Implement crash report dialog when a panic happens 2023-01-19 00:50:56 +01:00
nosamu c16705ceee desktop: Add `.spl` to file dialog filter 2023-01-16 18:05:36 +01:00
Nathan Adams 047bfc5700 desktop: Don't allow -p for --player_version as it conflicts with --power 2023-01-10 22:24:48 +01:00
CUB3D 7254d3c110 chore: Fmt 2023-01-10 13:13:30 +01:00
CUB3D 8db909a7d4 desktop: Allow specifying player version 2023-01-10 13:13:30 +01:00
Nathan Adams 1f7a5f44f9 desktop: Disallow unwrap() and unwrap_err() in desktop crate 2023-01-10 11:10:46 +01:00
Nathan Adams fbe1630a4b desktop: Removed unwraps in ui backend 2023-01-10 11:10:46 +01:00
Nathan Adams f812030f70 desktop: Removed unwrap and replaced with ? in storage backend 2023-01-10 11:10:46 +01:00
Nathan Adams ee17d05a84 desktop: Removed unwrap in navigator 2023-01-10 11:10:46 +01:00
Nathan Adams e20eb77035 desktop: movie_url is always Some, simplify code 2023-01-10 11:10:46 +01:00
Nathan Adams 48d8cb54f4 desktop: Replaced most unwraps with expects or ? in main.rs 2023-01-10 11:10:46 +01:00
Nathan Adams f606735720 desktop: Add tracy feature 2023-01-08 20:02:26 +01:00
Nathan Adams b27a1045a1 desktop: Switch from env_logger to tracing-subscriber 2023-01-06 04:25:22 +01:00
Nathan Adams ab6012c42c desktop: Switch from log to tracing 2023-01-06 04:25:22 +01:00
Marco Grassi 6873cda76e move away from unmaintained clipboard crate and use arboard crate 2022-11-26 14:04:59 -05:00
TÖRÖK Attila 2b4d8d9c6e core,desktop: Add and implement AudioBackend::get_sample_history() 2022-11-10 19:11:29 -05:00
relrelb 89f3445d62 swf: Introduce and use `Rectangle::width()` and `Rectangle::height()` 2022-11-01 09:49:04 +02:00
Aaron Hill 68471723b3 core: Fix clippy format string lint 2022-10-27 08:49:39 +03:00
cyraid f51e4dd67f
desktop: Fix #8315 by setting the base_url from the movie_url so requests later can use relative url's. (#8358)
Co-authored-by: Dennis Fehr <dennis.james.fehr@gmail.com>
2022-10-25 13:26:19 +03:00
Aaron Hill 9dd0914bda core: Add root movie URL spoofing (desktop only).
The desktop player now takes a `--spoof-url` argument, which overrides
the movie URL provided to ActionScript. This does not affect non-root
movies loaded through `Loader`.
2022-10-22 15:24:14 -05:00
David Wendt 058a7a8b66 desktop: Allow specifying the load behavior for desktop 2022-10-18 16:47:49 -06:00
relrelb 47a22070a4 desktop: Avoid deprecated `winit::EventLoop::with_user_event()`
Use `EventLoopBuilder::with_user_event().build()` instead, as suggested
by the deprecation warning.
2022-10-11 10:59:19 +03:00
relrelb a9dedf759a chore: Fix `clap` update
As described in https://github.com/clap-rs/clap/blob/master/CHANGELOG.md#400---2022-09-28.
2022-10-05 21:33:34 +03:00
Aaron Hill 474fd7fa8f desktop: Always mark task as ready on wake
We were incorrectly skipping the call to `task.set_ready`
if `self.waiting_for_poll` was set. The `waiting_for_poll` flag
should only be used to avoid redundant messages being sent into
the event loop.

This was causing us to ignore wakeups if more than one wakup
arrived in between calls to `poll_all`.
2022-09-11 15:48:17 -05:00
Nathan Adams c7f420dde5 wgpu: Moved WgpuRenderBackend into backend.rs 2022-09-11 09:07:53 +02:00
= 2b3249c9a4 core: Made core no longer depend on software video decoders 2022-09-04 17:46:58 -07:00
EmperorBale f8289b47d8
avm2: Implement call stack & stack traces (#7564)
* avm2: Implement call stack

* avm2: Class traits should have a special prefix

* avm2: Stack tracebacks should also contain error message

* avm2: Move method naming to Executable

* avm2: Handle getter and setter methods in tracebacks

* chore: Formatting

* chore: Add comments

* avm2: Make full_name write to a string, instead of creating a new one

* core: Make GcArena publicly accessible

* core: Add Deref impl for Either type

* desktop: Add AVM2 call stack to panic message

* avm2: Prefix native methods with a `/`

* chore: Appease clippy

* avm2: Check if method actually contains bytecode instead of unwrapping

* web: Add AVM2 stack trace to panic message

* chore: Formatting

* chore: Clippy

* avm2: Fix stack traces for free standing functions

* core: Remove global data from context

* core: Rename GcGlobalData to GcCallstack

* core: Introduce StaticCallstack, make GcArena private again

Co-authored-by: Adrian Wielgosik <4729533+adrian17@users.noreply.github.com>
2022-08-28 18:30:20 +02:00
= b7dcd26c38 core: Use Cow<str> for FullscreenError in UI backend, as it can't ever be anything else 2022-08-25 23:43:21 +02:00
= 726217c6c2 desktop: Use anyhow to replace generic errors with more meaningful ones 2022-08-25 23:43:21 +02:00
= 30e7d23cc0 desktop: Use anyhow errors for desktop audio errors 2022-08-25 23:43:21 +02:00
= 5b5ee7d448 core: Made audio backend use actual real error enums, and not box<error> 2022-08-25 23:43:21 +02:00
Aaron Hill 98c7f443ce core: Only store viewport dimensions in `RenderBackend`
Previously, the viewport height and width were stored in
both `Stage` and the `RenderBackend`. Any changes to the viewport
dimensions (e.g. due to window resizing) needed to be updated in both
places to keep our handling of the viewport consistent.

This PR adds a new `ViewportDimensions` type, which holds the
width, height, and scale factor. It is stored inside the
`RenderBackend` impl, and is retrieved using the newly added
method `RenderBackend.get_viewport_dimensions`. After a `Player`
has been constructed, any code that needes access to the viewport
dimensions will ultimate go through this method.

Unfortunately, `Stage` needs to use the viewport dimensions
in `build_matrices`. Therefore, any code modifying the viewport
dimensions should go through `player.set_viewport_dimensions`,
which ensures that the stage matrices are rebuilt after the render
backend is updated.
2022-08-22 13:44:30 -07:00
relrelb e42a6b62e6 core: Require `target` in `NavigatorBackend::navigate_to_url`
Make the `target` parameter just a `String` instead of an `Option<String>`.
`None` is not needed as it's totally equivalent to an empty string.
2022-08-06 11:20:03 +03:00
relrelb afd24cad12 desktop: Tiny cleanup 2022-07-09 11:06:39 +03:00
relrelb f643048c1c core: Introduce `Request`
Which holds both a URL and what was `RequestOptions` formerly.
2022-07-09 09:43:42 +03:00
relrelb 4978158638 chore: Resolve `clap` deprecation warnings
As suggested in https://github.com/clap-rs/clap/blob/master/CHANGELOG.md#320---2022-06-13.
2022-06-17 07:58:21 +03:00
relrelb 102fc46ca2 desktop: Fetch root movie asynchronously
Use `Player::fetch_root_movie` for loading the root movie, as an
early preparation for chunked loading.
2022-06-06 21:02:09 +03:00
relrelb 0097a75703 desktop: Organize UI event loop
Run (almost) all event handlers regardless of whether a movie is loaded
or not. This will be useful for rendering a blank screen before a
movie has been loaded.
2022-06-06 21:02:09 +03:00
Robert Setter 6114f14fe0
Updating the verbiage for the AS3 warnings to try and reduce the number of support questions about it. (#7106)
* Updating AS3 warning verbiage.

* Updating AS3 verbiage

* Increase root font size

* Refining font size.

* correcting font size in .message
2022-05-29 15:08:46 +03:00
Mike Welsh 32bf7e1412 chore: Appease clippy 2022-05-22 02:34:18 -07:00
bbb651 cf820b4f95 desktop: Add fullscreen command line option 2022-05-20 19:51:22 -07:00
relrelb 87ce0f56b7 core: Remove `NavigatorBackend::resolve_relative_url`
The resolved URL only used by `NavigatorBackend::fetch`. So simply
inline `NavigatorBackend::resolve_relative_url` into `NavigatorBackend::fetch`,
per implementation.
2022-05-07 09:06:53 -07:00
relrelb ea665d91f2 core: Introduce and use `Response::url` 2022-05-07 09:06:53 -07:00
relrelb 2517d8de4b core: Introduce struct `Response`
Currently it's a trivial wrapper around `Vec<u8>`, but more fields
will be added in the future (e.g. response URL, HTTP status code).
2022-05-07 09:06:53 -07:00
Mike Welsh 1eb06908c8 core: Make PlayerBuilder::build infallible 2022-04-29 09:14:32 -07:00
Mike Welsh f48182ef3d core: Add various settings to PlayerBuilder 2022-04-29 09:14:32 -07:00
Mike Welsh e1e2b1008a core: Add PlayerBuilder 2022-04-29 09:14:32 -07:00
relrelb 86da42459c desktop: Use `Arc::new_cyclic`
It became stable on Rust 1.60.0.
2022-04-29 09:11:58 -07:00
relrelb 66492441f1 desktop: De-duplicate file reading code
Unify the sandboxed and non-sandboxed cases.
2022-04-08 16:51:59 -07:00
relrelb 7497fb7008 core: Change `Player::set_root_movie` to accept a `SwfMovie`
Move the `Arc::new` to within the function.
2022-04-08 15:16:25 -07:00
David Wendt c664f0b9ba desktop: Add a `sandbox` feature that opens a native file picker to request access to movie subresources.
We notify the user with a message box first to explain why we need them to pick a file.
2022-03-30 11:37:25 -07:00
relrelb ad944800be core: Perfer `Loader`'s `FetchError`
`NetworkError` and `NetworkUnavailable` were rarely used, and they
were very similar to `FetchError`.
2022-03-17 20:31:59 -07:00
relrelb 8a17d88c77 core: Remove `NavigatorBackend::time_since_launch`
`core` already depends on the `instant` crate which abstracts
`std::instant::Instant` and polyfills it on Web. Use it to replace
`NavigatorBackend::time_since_launch` in order to make `NavigatorBackend`
a little smaller and more simple.
2022-03-17 00:08:44 +02:00
relrelb 031126a1b8 core: Remove `LocaleBackend`
Previously there were 3 implementations of `LocaleBackend`:
`DesktopLocaleBackend`, `WebLocaleBackend` and `NullLocaleBackend`.

While `DesktopLocaleBackend`, `WebLocaleBackend` were identical,
`NullLocaleBackend` always returned a fixed date/time for tests
determinism.

Unify them in a single file, and use `cfg!(test)` and a new dedicated
`deterministic` feature to decide whether to mock date/time or not.
This should not cause any behavioral changes.
2022-03-16 19:57:53 +02:00
relrelb 5da7149aaf desktop: Access `App` fields directly
I think older Rust versions couldn't handle this, but I may be wrong.
Anyway, now it works and is more straight-forward.
2022-03-16 18:49:59 +02:00
relrelb 32f5cd22a4 desktop: Split `movie` and `movie_url`
This makes the code a little more readble.
2022-03-14 21:59:16 +02:00
relrelb 83287e4d48 desktop: Store only `bool` instead of `SwfMovie`
Because it was only used as such.
2022-03-14 21:59:16 +02:00
relrelb a3f858c510 desktop: Turn `load_from_file_dialog` into `pick_file`
This deduplicates some code (the calls to `parse_url` and `load_movie`),
plus makes the path choosing flow more linear.
2022-03-14 21:59:16 +02:00
relrelb d22186c088 desktop: Extract `parse_url` from `load_movie_from_path`
And change `load_movie_from_path` to `load_movie`.
2022-03-14 21:59:16 +02:00
relrelb 8ad8122b68 desktop: Change return type of `App::run` to `!`
The never type is already stable for function return types.
2022-03-14 21:59:16 +02:00
relrelb 7a591b885c desktop: Remove `loop` from `App::run`
`winit::event_loop::EventLoop::run` never returns, so there's no
point calling it over and over again.
2022-03-14 21:59:16 +02:00
Chris Midgley 453b0f1fe3 desktop: swap out tinyfiledialogs for rfd 2022-02-23 22:45:26 +02:00
Mike Welsh d5986a7294 desktop: Don't swallow Escape key (fix #6135) 2022-01-25 00:22:28 -08:00
relrelb 82b4c6ef27 core: Support mouse buttons in `KeyCode`
Add `MouseLeft`, `MouseRight` and `MouseMiddle` to `KeyCode` for
AVM1's `Key.isDown()` function.
2022-01-10 01:18:49 -08:00
relrelb 6396c21bc0 core: Rename `PlayerEvent::MouseLeft` to `MouseLeave`
So it's not consfusing with `KeyCode::MouseLeft`.
2022-01-10 01:18:49 -08:00
relrelb 07c5330456 core: Introduce `InputManager`
`InputManager` encapsulates the common logic that previously the
`UiBackend`s used to implement.
2021-12-15 14:20:30 -08:00
relrelb 0e3168f99e desktop: Small event-related cleanups
* Use `match state` for `MouseInput` events.
* Remove `ReceivedCharacter` handling from `DesktopUiBackend::handle_event`.
2021-11-25 07:35:33 +02:00
relrelb cbce91365c desktop: Track `keys_down` by `KeyCode`
This makes `DesktopUiBackend::is_key_down` a simple one-line check.
Also unify the handling code of `ElementState::Pressed` and `ElementState::Released`,
which had a lot of common code.
2021-11-25 07:35:33 +02:00
Tal Hayon 7ed38850fd core: implement displayState for Stage in avm1/2 2021-11-11 16:20:05 -07:00
Adrian Wielgosik 8cc00f32bb chore: Stop using traits available in prelude 2021-10-21 10:24:05 -07:00
dependabot[bot] 40aeffb91d build(deps): bump clap from 3.0.0-beta.4 to 3.0.0-beta.5
Bumps [clap](https://github.com/clap-rs/clap) from 3.0.0-beta.4 to 3.0.0-beta.5.
- [Release notes](https://github.com/clap-rs/clap/releases)
- [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md)
- [Commits](https://github.com/clap-rs/clap/commits)

---
updated-dependencies:
- dependency-name: clap
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-10-18 14:50:19 -07:00
Chris Midgley b0e3698c44
desktop: correct error when passing an invalid absolute windows filepath 2021-10-09 11:26:45 -07:00
relrelb 3aeffce365 desktop: Refactor clap settings
* Fix #5252 by passing `multiple_occurrences = true`.
* Remove `case_insensitive = true`.
* Reformat comments a bit.
2021-09-08 16:04:09 -07:00
Mike Welsh 94d02fa653 core: Add AudioMixer to core
Pull out the audio mixing code from desktop and add it to core.
This will allow other backends to use it (such as the web audio
backend) to get consistent audio across all platforms.
2021-09-07 16:48:34 -07:00
Tal Hayon 4625ca0e0b web: fix base param 2021-09-07 16:45:35 -07:00
David Wendt 116fb1f323 avm2: Impl `Sound.play`
This does not (yet) implement the third `SoundTransform` parameter on `play`.
2021-09-03 16:47:02 -06:00
David Wendt 3b6eea2a1d core: Report sound duration as `f64` and round down in AS1 2021-09-03 16:47:02 -06:00
David Wendt 89b411593f avm2: Impl `Sound.bytesTotal` 2021-09-03 16:47:02 -06:00
relrelb fff739d5c9 desktop: Cleanup `CpalAudioBackend` 2021-09-03 22:48:35 +03:00
relrelb 66e2a2166e desktop: Revert cpal initialization on a separate thread
It was initialized on a separate thread since 6178dd9ef1,
as a workaround for Windows.

But now thanks to https://github.com/RustAudio/cpal/pull/597, this
is no longer needed, and cpal can be initialized on the same thread
as before.
2021-09-03 22:48:35 +03:00
David Wendt dae087017c desktop: Add video backend to timedemo 2021-08-21 14:13:55 -06:00
EmperorBale 792a0d6502 desktop: Fix clap settings 2021-08-20 21:41:44 -06:00
Adrian Wielgosik b940e7f00f Extension: Sidestep CORS issues by offering to load the SWF in a tab 2021-08-02 21:28:16 +02:00
Adrian Wielgosik 35d543b610 desktop: Add a flag to disable AS3 warning popup 2021-07-06 17:03:45 +02:00
relrelb 0fd1c05fd5 chore: Use into() in more places 2021-06-22 11:49:41 -07:00
relrelb f82faf9603 chore: Appease clippy 2021-06-05 10:16:00 -07:00
Mike Welsh 3ddb97d2f6 core: Add SwfMovie::frame_rate and num_frames 2021-05-23 23:02:38 -07:00
Mike Welsh 077c7f045e core: Add SwfMovie::stage_size
Change `SwfMovie::width` and `height` to return `Twips`.
2021-05-23 23:02:38 -07:00
Mike Welsh e1439f4105 swf: Add HeaderExt struct providing additional info
When reading an SWF, search for FileAttributes and
SetBackgroundColor and return this along with the header data
because it's useful (in particular, the AS3 flag).
2021-05-23 23:02:38 -07:00
relrelb 7acf0349c3 desktop: Refactor main.rs 2021-05-11 18:58:08 -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
Mike Welsh 339f0e2862 desktop: Append .sol extension to SharedObject files
Also, prefix the shared object name with # if it contains a
slash, (e.g. `#mygame/foo`). This matches Flash's directory
structure and makes it easier to transfer saved data to Ruffle.
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
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
Mike Welsh e35933aeee desktop: Fix window size calculation
Change width/height CLI paramters to `f64`, and also clamp window
size to minimum of 1x1 to prevent panics from invalid window
dimensions.
2021-05-06 17:56:35 -07:00
Nicolas F 423fcf5019 desktop: add parameters to specify window size
This adds two optional parameters, --width and --height, which
allow the user to specify a desired physical window width and
height to be used. If only one of the two parameters is present,
the other will be deduced from it and the movie's aspect ratio.

If neither are present, the window's size is set to the movie's
logical size, in accordance with the behaviour before this change.
2021-05-06 15:58:41 -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
David Wendt 0c6584ca03 core: Store the viewport's scale factor on the stage 2021-04-26 01:15:42 -07:00
relrelb 79bcee07f5 audio: Properly round sound duration
Previously it was always rounded down. Change it to the nearest
integer.
2021-04-17 09:11:50 -07:00
EmperorBale 1020aa84d6 chore: Simplify response.status() formatting 2021-04-06 16:01:34 -06:00
EmperorBale e36ad2874b chore: Make error message more helpful 2021-04-06 16:01:34 -06:00
EmperorBale 51e2ebf492 web/desktop: Check the HTTP status of requests 2021-04-06 16:01:34 -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
Tempy111 00e1f36984 core: Add missing support for Tab keycode 2021-02-27 16:44:39 -08:00
Mike Welsh 3099914374 chore: Appease clippy 2021-02-27 16:10:46 -08:00
David Wendt b78baeb41d core: Add software video backend, separate from the null backend, to store software decoders. 2021-02-16 19:03:48 -08:00
David Wendt 80bceeacab core: Add `VideoBackend` to host video decoders 2021-02-16 19:03:48 -08:00
relrelb bb89391f3a chore: Avoid deprecated constants
The Rust documentation considers numeric constants prefixed with std::
as deprecated.
For example: https://doc.rust-lang.org/std/u16/constant.MAX.html.
2021-02-12 06:36:17 -08:00
Mike Welsh e5fb1f09e7 chore: Appease clippy
* #[derive(Collect)] should be before #[collect]
 * Replace redunant `&buf[..]` with `buf`
 * Changes most cases of UPPERCase to UpperCase
 * Allow upper_case_acronym on most SWF types, as they are from
   SWF spec/more annoying to change.
2021-02-12 06:32:42 -08:00
Mike Welsh 16bd7fade6 web: Use case-insensitive check for detecting javascript scheme 2021-02-08 03:41:16 -08:00
crumblingstatue 5f25fe8807
desktop: Don't unwrap url to file path conversion
It might not succeed.
This unwrap crashes the newgrounds Meat Boy flash on desktop.

Instead, use unwrap_or_default with an empty path. This will cause
the read to fail, but it's better than crashing the whole program.
2021-02-04 15:08:56 -08:00
relrelb 074731e1a4 audio: Add Nellymoser support 2021-02-02 00:41:01 -08:00
Mads Marquart 1990e51639 avm2: Add UiBackend::display_unsupported_message
To allow displaying rich content when unsupported ActionScript 3 content is encountered.
2021-01-31 23:04:20 -08:00
relrelb 7431cd9b10
core: Merge InputBackend into UiBackend 2021-01-30 16:36:45 -08:00
Mads Marquart 6772f96469 desktop: Use slice unpacking instead of unsafe get_unchecked 2021-01-28 14:39:35 -08:00
Mike Welsh 5e0527c599 desktop: Fix sound envelopes to use proper positions
The points in an SWF sound envelope are always in 44.1KHz. The
desktop audio backend would end up using this points in the sound's
sample rate, often causing the envelope to be delayed.

Now the envelope is applied after resampling, and the positions
are scaled based on the output sample rate.
2021-01-27 16:16:30 -08:00