Lord-McSweeney
1389f5fa67
avm2: Record all jump sources in verifier
2024-06-20 17:02:13 -07:00
Kamil Jarosz
8b2c9d8157
avm2: Add stub for winding behavior of drawing triangles in Graphics
...
Currently, even-odd winding rule is used to render triangles,
but FP uses non-zero.
2024-06-19 23:24:55 +02:00
Kamil Jarosz
14ac29e435
avm2: Handle wrong number of coords when drawing triangles in Graphics
...
FP throws an error when the number of coordinates is odd for the indexed
version, and when is not divisible by 6 for the non-indexed version.
2024-06-19 23:24:55 +02:00
Kamil Jarosz
86a3086808
avm2: Fix errors thrown when culling has wrong value in Graphics
...
The errors differ between Graphics.drawTriangles and GraphicsTrianglePath.
The former throws 2004, whereas the latter throws 2008.
2024-06-19 23:24:55 +02:00
Kamil Jarosz
64acc7b3ad
avm2: Ignore out of range and non-integer triangle indices in Graphics
...
This behavior imitates FP's behavior.
2024-06-19 23:24:55 +02:00
Kamil Jarosz
2b9289e1b2
avm2: Implement culling for drawing triangles in Graphics
2024-06-19 23:24:55 +02:00
Kamil Jarosz
4993d70594
avm2: Unify drawing triangles in graphics.rs
...
There were two implementations for drawing triangles: one for
Graphics.drawTriangles, and the other for GraphicsTrianglePath.
However, they behave almost identically, so this patch uses
draw_triangles_internal for both.
2024-06-19 23:24:55 +02:00
Kamil Jarosz
9e1248d130
avm2: Add make_error_1125
2024-06-19 23:24:55 +02:00
Nathan Adams
4d12e0e5b4
core: Implement LocalConnection
2024-06-19 21:54:25 +02:00
Kamil Jarosz
0f534c837f
avm2: Improve drawing paths in Graphics
...
This patch improves drawing paths in Graphics:
* no error is thrown when there are 0 commands,
* no error is thrown when there are missing data points,
* an error is thrown when the number of coordinates is odd,
* no error is thrown and command processing is stopped
when an unknown command is encountered,
* the vector with parsed commands is removed, as it's not needed.
2024-06-19 20:58:33 +02:00
Kamil Jarosz
fae1500cc6
avm2: Add make_error_2004
2024-06-19 20:58:33 +02:00
Kamil Jarosz
687e049dc1
debug_ui: Add option to draw layout boxes for EditText
2024-06-19 20:12:43 +02:00
TÖRÖK Attila
35f5227e2d
core,desktop: Update `wgpu` to `v0.20.1`, bump `egui`
2024-06-18 23:10:43 +02:00
Lord-McSweeney
9c8e4d7dce
core: Remove `DataFormat` for `URLLoader` loads since we can just check the string field
...
Also, don't set the data as variables if there is no data to set.
2024-06-18 20:56:50 +02:00
Lord-McSweeney
7a1ee0e109
core: `URLLoader` should check the data format after loading finishes, not when starting a load
2024-06-18 20:56:50 +02:00
Crowdin Bot
a731b82b54
chore: Update translations from Crowdin
2024-06-17 14:57:20 +02:00
Adrian Wielgosik
cacfb5a6a4
avm2: Fix and unify converting SWF's 1-based to 0-based slot indexing
2024-06-16 16:11:17 -07:00
Tom Schuster
4463a69c87
avm2: Implement namespace support for flash.xml
2024-06-15 22:26:57 +02:00
Crowdin Bot
8fb214ea71
chore: Update translations from Crowdin
2024-06-14 22:41:19 +02:00
Lord-McSweeney
18c50df838
avm2: Don't get the `Class` class by using `instance_of` in `into_finished_class`
2024-06-13 23:49:52 +02:00
Lord-McSweeney
1705870951
avm2: Class initializers will be called twice when constructing two `ClassObject`s for one `Class`
2024-06-13 23:49:52 +02:00
Lord-McSweeney
7e7032d908
avm2: Remove `constructor`, `native_constructor`, and `call_handler` fields from `ClassObject`
...
They were already present on `Class`
2024-06-13 23:49:52 +02:00
dependabot[bot]
52404bc3aa
build(deps): bump the cargo-minor group with 6 updates
...
Bumps the cargo-minor group with 6 updates:
| Package | From | To |
| --- | --- | --- |
| [clap](https://github.com/clap-rs/clap ) | `4.5.4` | `4.5.7` |
| [url](https://github.com/servo/rust-url ) | `2.5.0` | `2.5.1` |
| [linkme](https://github.com/dtolnay/linkme ) | `0.3.26` | `0.3.27` |
| [regex](https://github.com/rust-lang/regex ) | `1.10.4` | `1.10.5` |
| [zip](https://github.com/zip-rs/zip2 ) | `2.1.2` | `2.1.3` |
Updates `clap` from 4.5.4 to 4.5.7
- [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/compare/clap_complete-v4.5.4...v4.5.7 )
Updates `url` from 2.5.0 to 2.5.1
- [Release notes](https://github.com/servo/rust-url/releases )
- [Commits](https://github.com/servo/rust-url/compare/v2.5.0...v2.5.1 )
Updates `linkme` from 0.3.26 to 0.3.27
- [Release notes](https://github.com/dtolnay/linkme/releases )
- [Commits](https://github.com/dtolnay/linkme/compare/0.3.26...0.3.27 )
Updates `regex` from 1.10.4 to 1.10.5
- [Release notes](https://github.com/rust-lang/regex/releases )
- [Changelog](https://github.com/rust-lang/regex/blob/master/CHANGELOG.md )
- [Commits](https://github.com/rust-lang/regex/compare/1.10.4...1.10.5 )
Updates `zip` from 2.1.2 to 2.1.3
- [Release notes](https://github.com/zip-rs/zip2/releases )
- [Changelog](https://github.com/zip-rs/zip2/blob/master/CHANGELOG.md )
- [Commits](https://github.com/zip-rs/zip2/compare/v2.1.2...v2.1.3 )
---
updated-dependencies:
- dependency-name: clap
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: cargo-minor
- dependency-name: url
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: cargo-minor
- dependency-name: linkme
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: cargo-minor
- dependency-name: quick-xml
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: cargo-minor
- dependency-name: regex
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: cargo-minor
- dependency-name: zip
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: cargo-minor
...
Signed-off-by: dependabot[bot] <support@github.com>
2024-06-13 01:05:26 +02:00
Crowdin Bot
4fa5853f88
chore: Update translations from Crowdin
2024-06-13 00:44:49 +02:00
Nathan Adams
c9b111996f
web: Make serde (more-)optional in core
2024-06-13 00:22:33 +02:00
Kamil Jarosz
e8dbd58306
core: Use DisplayObject.movie() instead of context.swf where applicable
...
This prevents problems in case of mixed-AVM content.
2024-06-13 00:06:10 +02:00
Kamil Jarosz
39e8a15db5
core: Update focus after handling press, not before
...
Updating focus before handling press caused onRollOut
to be fired before onPress, but it should be fired after.
2024-06-12 23:49:06 +02:00
TÖRÖK Attila
516c56db15
chore: Suppress a `clippy::doc_lazy_continuation` beta lint false positive
2024-06-12 23:09:39 +02:00
TÖRÖK Attila
0d25b5dba8
chore: Fix `clippy::needless_borrows_for_generic_args` beta lint
2024-06-12 22:42:18 +02:00
TÖRÖK Attila
6b4ee7dfde
chore: Fix most `clippy::doc_lazy_continuation` beta lints
2024-06-12 22:42:18 +02:00
Lord-McSweeney
0e062c4b9b
avm2: Replace two more uses of `instance_of` with `instance_class`
2024-06-12 19:46:32 +02:00
Lord-McSweeney
97f75cc0b4
avm2: Move interface logic from `ClassObject` to `Class`
2024-06-12 19:46:32 +02:00
Lord-McSweeney
90c370d61b
avm2: Always store a Class on vtable
2024-06-12 19:46:32 +02:00
Lord-McSweeney
2c9028d2f9
avm2: Replace most uses of `instance_of` with `instance_class`
...
Also store a Class -> alias mapping instead of a ClassObject -> alias mapping for AMF.
2024-06-12 19:46:32 +02:00
Crowdin Bot
3b9bb3f5db
chore: Update translations from Crowdin
2024-06-10 00:02:16 +02:00
Adrian Wielgosik
bc85638920
avm2: Port registerClassAlias logic to Rust
2024-06-09 09:14:20 -07:00
Kamil Jarosz
142fc1d232
core: Prevent copying and cutting text from a password field
2024-06-09 15:38:35 +02:00
Kamil Jarosz
c23ec0782a
core: Prevent pasting empty string when the clipboard is empty
2024-06-09 15:38:35 +02:00
Kamil Jarosz
a2751c3c0f
core: Add English translations for copy/paste context menu
2024-06-09 15:38:35 +02:00
Kamil Jarosz
6117c3c68e
core: Add copy/paste context menu for EditText
...
This menu is shown when the EditText is focused and the mouse hovers over it.
It has the following elements, which may be disabled
when e.g. the field is not editable / selectable:
* Cut,
* Copy,
* Paste,
* Delete,
* Select All.
2024-06-09 15:38:35 +02:00
Kamil Jarosz
0910104c3b
core: Add EditText::is_text_control_applicable
...
This method is useful for checking whether the given text control code
may be applied to the current state of the EditText.
2024-06-09 15:38:35 +02:00
Kamil Jarosz
1f3c230691
core: Pass UpdateContext to ContextMenuState::build_builtin_items
...
This simplifies code, as we do not have to access
the same elements over and over.
2024-06-09 15:38:35 +02:00
Adrian Wielgosik
2955add845
avm2: In Array.sortOn, behave better in presence of nonsense args
2024-06-09 11:11:57 +02:00
Lord-McSweeney
1d1eb6c966
avm2: Fix `NewClass` not popping the base class and better null propagation in optimizer
2024-06-08 14:25:43 -07:00
Lord-McSweeney
bb7a315afd
avm2: Misc. optimizer improvements
2024-06-08 14:25:43 -07:00
Nathan Adams
70fca6fa0a
web: Add create_audio to builder
2024-06-08 08:42:04 +02:00
Nathan Adams
3fa8735e97
web: Don't parse config in Rust, do it in Typescript with some tests
2024-06-08 08:42:04 +02:00
Lord-McSweeney
6e53f98068
avm2: Fix performance regression
...
A `ScriptObject` was being allocated on every `call_method` call
2024-06-08 00:31:29 +02:00
Kamil Jarosz
2704e1f506
core: Implement setting tabChildren for AVM1 for debug UI
2024-06-08 00:12:53 +02:00
Kamil Jarosz
b43f23ce9a
core: Move a tabChildren-related comment to the proper place
2024-06-08 00:12:53 +02:00
Kamil Jarosz
191e879172
avm2: Properly implement Stage.tabChildren
...
Stage.tabChildren does not modify the value of tabChildren of the stage,
but rather sets the tabChildren of the root movie.
2024-06-08 00:12:53 +02:00
Kamil Jarosz
da80f6d76e
debug_ui: Add "Tab children enabled"
2024-06-08 00:12:53 +02:00
Tom Schuster
c1ace7edc7
avm2: Use an empty string as the prefix for xmlns=
2024-06-06 20:14:40 +02:00
Kamil Jarosz
c3ad08c810
avm1: Treat MovieClip.createTextField params as integers
...
The parameters x,y,width,height of MovieClip.createTextField
should be integers.
2024-06-06 17:08:52 +02:00
Kamil Jarosz
5c89dd8374
avm2: Make the root movie non-highlightable
2024-06-05 02:08:13 +02:00
Kamil Jarosz
c51f13e4e4
debug_ui: Add "Is Root" to Display tab
2024-06-05 02:08:13 +02:00
Kamil Jarosz
348cb6ea6d
core: Remove unnecessary SWF version check in is_focusable
...
This check is unnecessary as is_focusable is only used in AVM1.
2024-06-05 02:08:13 +02:00
Kamil Jarosz
d39c7339d9
avm1: Make the root movie clip non-focusable and non-tabbable
...
Root movie clip should be neither focusable, nor tabbable.
2024-06-05 02:08:13 +02:00
Lord-McSweeney
488fc4ae9f
avm2: `Script` doesn't need to be borrowed
2024-06-04 15:31:14 -07:00
Lord-McSweeney
6acfc3953a
avm2: Slightly improve findprop optimizations when property is found on script
2024-06-04 15:31:14 -07:00
Lord-McSweeney
b523ad4b32
avm2: Fix a typo
2024-06-04 15:31:14 -07:00
Lord-McSweeney
ad2c5c547e
avm2: Cleanup optimizer
2024-06-04 15:31:14 -07:00
Lord-McSweeney
150d9d8bca
avm2: Implement `flash.text.IME` package
2024-06-04 15:31:14 -07:00
Lord-McSweeney
43549ab1d7
avm2: Add a vtable to Class, support getting vtable of static methods in optimizer
2024-06-04 15:31:14 -07:00
Kamil Jarosz
516e10ae26
avm1: Drop focus on EditText when something else is clicked
...
In AVM1 text fields are somewhat special when handling focus.
When a text field is clicked, it gains focus,
when something else is clicked, it loses the focus.
However, this logic only applies to text fields, other objects
(buttons, movie clips) neither gain focus nor lose it upon press.
2024-06-04 19:39:20 +02:00
Tom Schuster
b6612e8f83
avm2: Support namespaces in XML.setName
2024-06-04 18:50:49 +02:00
Tom Schuster
690a280fa5
avm2: Improve prefix support in ToXMLString
2024-06-04 00:22:42 +02:00
Tom Schuster
8671bdd8ee
avm2: Implement XML.inScopeNamespaces
2024-06-04 00:22:42 +02:00
Tom Schuster
0b446d7cc6
avm2: Implement XML.setNamespace
2024-06-04 00:22:42 +02:00
Tom Schuster
2f7dfd8051
avm2: Implement XML.namespaceDeclarations
2024-06-04 00:22:42 +02:00
Tom Schuster
f20f57c6f1
avm2: Implement XML.namespace
2024-06-04 00:22:42 +02:00
Tom Schuster
3f99866ca4
avm2: Implement XML.addNamespace
2024-06-04 00:22:42 +02:00
Lord-McSweeney
540cc5fb68
avm1: Stub `bufferLength` and `bufferTime` on `NetStream`
2024-06-03 23:56:22 +02:00
Thomas Lupin
b08750a998
avm1: fix loadvars.send parameters
2024-06-03 23:36:33 +02:00
dependabot[bot]
b9d246b2a5
build(deps): bump the cargo-minor group with 4 updates
...
Bumps the cargo-minor group with 4 updates: [proc-macro2](https://github.com/dtolnay/proc-macro2 ), [toml_edit](https://github.com/toml-rs/toml ), [zip](https://github.com/zip-rs/zip2 ) and [toml](https://github.com/toml-rs/toml ).
Updates `proc-macro2` from 1.0.84 to 1.0.85
- [Release notes](https://github.com/dtolnay/proc-macro2/releases )
- [Commits](https://github.com/dtolnay/proc-macro2/compare/1.0.84...1.0.85 )
Updates `toml_edit` from 0.22.13 to 0.22.14
- [Commits](https://github.com/toml-rs/toml/compare/v0.22.13...v0.22.14 )
Updates `zip` from 2.1.1 to 2.1.2
- [Release notes](https://github.com/zip-rs/zip2/releases )
- [Changelog](https://github.com/zip-rs/zip2/blob/master/CHANGELOG.md )
- [Commits](https://github.com/zip-rs/zip2/compare/v2.1.1...v2.1.2 )
Updates `toml` from 0.8.13 to 0.8.14
- [Commits](https://github.com/toml-rs/toml/compare/toml-v0.8.13...toml-v0.8.14 )
---
updated-dependencies:
- dependency-name: proc-macro2
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: cargo-minor
- dependency-name: toml_edit
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: cargo-minor
- dependency-name: zip
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: cargo-minor
- dependency-name: toml
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: cargo-minor
...
Signed-off-by: dependabot[bot] <support@github.com>
2024-06-03 23:21:12 +02:00
Adrian Wielgosik
224edfe06f
core: Unify WStr::MAX_LEN range checks
2024-06-02 23:00:23 +02:00
Adrian Wielgosik
6a75def83a
avm2: Fix panic on substr(i, len>usize::MAX)
2024-06-02 23:00:23 +02:00
sleepycatcoding
83cc8cf294
avm2: Implement a few avmplus XML edge cases
2024-06-02 01:52:52 +03:00
Tom Schuster
1402a59a20
avm2: :Implement FLV Date to Avm2Value conversion
2024-06-02 00:35:36 +02:00
Tom Schuster
cdbc6d289c
avm2: Implement the abstract equality comparison for QName
2024-06-01 20:52:17 +02:00
dependabot[bot]
febbfe8f42
build(deps): bump the cargo-minor group with 4 updates
...
Bumps the cargo-minor group with 4 updates: [tokio](https://github.com/tokio-rs/tokio ), [regress](https://github.com/ridiculousfish/regress ), [fontdb](https://github.com/RazrFalcon/fontdb ) and [zip](https://github.com/zip-rs/zip2 ).
Updates `tokio` from 1.37.0 to 1.38.0
- [Release notes](https://github.com/tokio-rs/tokio/releases )
- [Commits](https://github.com/tokio-rs/tokio/compare/tokio-1.37.0...tokio-1.38.0 )
Updates `regress` from 0.9.1 to 0.10.0
- [Release notes](https://github.com/ridiculousfish/regress/releases )
- [Commits](https://github.com/ridiculousfish/regress/compare/v0.9.1...v0.10.0 )
Updates `fontdb` from 0.17.0 to 0.18.0
- [Changelog](https://github.com/RazrFalcon/fontdb/blob/master/CHANGELOG.md )
- [Commits](https://github.com/RazrFalcon/fontdb/compare/v0.17.0...v0.18.0 )
Updates `zip` from 2.1.0 to 2.1.1
- [Release notes](https://github.com/zip-rs/zip2/releases )
- [Changelog](https://github.com/zip-rs/zip2/blob/master/CHANGELOG.md )
- [Commits](https://github.com/zip-rs/zip2/compare/v2.1.0...v2.1.1 )
---
updated-dependencies:
- dependency-name: tokio
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: cargo-minor
- dependency-name: regress
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: cargo-minor
- dependency-name: fontdb
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: cargo-minor
- dependency-name: zip
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: cargo-minor
...
Signed-off-by: dependabot[bot] <support@github.com>
2024-06-01 17:46:28 +02:00
Nathan Adams
618e061564
core: Expand on audio related error messages
2024-06-01 14:08:54 +02:00
Kamil Jarosz
f4a517dbd1
text: Invalidate bitmap cache on scroll
...
This patch fixes scrolling text fields when filters are applied.
2024-05-31 22:24:34 +02:00
sleepycatcoding
2fd5dfde9c
avm2: Implement XMLList.normalize
2024-05-31 22:09:17 +02:00
Tom Schuster
d98e3d9b99
avm2: Parse XML namespace declaration and make ToXMLString output them
...
This does not implement any of the XML API functions that interact with
namespaces.
Fixes #16340
2024-05-30 21:14:06 +02:00
TÖRÖK Attila
b282d1325a
core: Pass on H.264 packets from FLV streams to the video backend
2024-05-30 20:22:33 +02:00
sleepycatcoding
007a532717
avm2: Implement XMLList.contains
2024-05-30 00:43:45 +03:00
Tom Schuster
1fe1b8d67d
avm2: Introduce an E4XNamespace type (NFCI)
2024-05-29 22:37:40 +02:00
Kamil Jarosz
c32b27c294
core: Fix stop() when executing attachMovie in DoInitAction
...
This fixes a bug where the code in the first frame of a movie clip
could have been executed after the second frame
(so that instructions like stop did not work properly).
That is because when the first frame was executed in preload
(e.g. for a sprite attached using attachMovie), the actions were queued,
the second frame was executed in run_frame, and then the actions from
the first frame were executed.
Ensuring that all actions are executed after preload fixes this issue.
2024-05-28 23:57:13 +02:00
Adrian Wielgosik
2532d7e927
avm2: Refactor Executable->BoundMethod, introduce freestanding exec()
2024-05-28 23:32:21 +02:00
Kamil Jarosz
3bb47db5f9
avm1: Move FunctionObject's base to FunctionObjectData
...
This shrinks AVM1's Object (from 24 to 16 bytes on x64), and
allows future shrinkage of AVM1's Value (e.g. from 24 to 16 bytes
on x64 after putting all strings behind a Gc pointer).
2024-05-28 23:18:11 +02:00
Kamil Jarosz
658e800dfc
core: Drop the focus when it's made invisible
...
When an object has focus and is made invisible,
the focus should be dropped.
2024-05-28 23:01:12 +02:00
Kamil Jarosz
23c1d32990
core: Pass UpdateContext to set_visible
2024-05-28 23:01:12 +02:00
dependabot[bot]
a6a683ffa1
build(deps): bump the cargo-minor group with 2 updates
...
Bumps the cargo-minor group with 2 updates: [serde](https://github.com/serde-rs/serde ) and [proc-macro2](https://github.com/dtolnay/proc-macro2 ).
Updates `serde` from 1.0.202 to 1.0.203
- [Release notes](https://github.com/serde-rs/serde/releases )
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.202...v1.0.203 )
Updates `proc-macro2` from 1.0.83 to 1.0.84
- [Release notes](https://github.com/dtolnay/proc-macro2/releases )
- [Commits](https://github.com/dtolnay/proc-macro2/compare/1.0.83...1.0.84 )
---
updated-dependencies:
- dependency-name: serde
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: cargo-minor
- dependency-name: proc-macro2
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: cargo-minor
...
Signed-off-by: dependabot[bot] <support@github.com>
2024-05-28 00:48:13 +02:00
sleepycatcoding
cd24b91a82
avm2: Implement XMLList to XML proxy methods
2024-05-27 21:47:22 +02:00
sleepycatcoding
ab0792904b
avm2: Stub XML.add/set/removeNamespace
2024-05-27 21:47:22 +02:00
Nathan Adams
381b0897c9
avm2: Implement ExternalInterface.objectID
2024-05-26 23:00:33 +02:00
Kamil Jarosz
1bf9756b4e
text: Allow selecting text by dragging
...
This patch allows selecting text by pressing and dragging the mouse.
2024-05-26 12:38:16 +02:00
Adrian Wielgosik
bafc5d250e
tests: Add a depdendent string test, with test-only AS3
2024-05-26 12:14:30 +02:00
Adrian Wielgosik
d6dbc5e767
core: Support dependent strings for concatenation
2024-05-26 12:14:30 +02:00