Aaron Hill
768eaa1a01
avm2: Store at most a single type parameter in names/clasess
...
The only generic class is `Vector`, which only has a single parameter.
However, we currently store a list of type parameters in several places,
which requires redundant checks that the list only has one entry.
Instead, we now store an `Option` everwhere except for
`swf::Multiname::TypeName` (since the actual SWF format supports
multiple type parameters). We still perform the same check when loading
bytecode (the swf Multiname should only have at most one type
parameter), but the rest of the codebase can deal with an `Option`
instead.
2023-07-02 16:02:53 -04:00
Aaron Hill
b77c1fc78f
core: Fix Nightly clippy lint
2023-07-02 14:32:45 +02:00
Aaron Hill
f7c50865a0
core: Update formatting with latest nightly 'cargo fmt'
2023-07-02 14:32:45 +02:00
Adrian Wielgosik
bd043c09c7
cargo fmt
2023-07-01 23:38:09 +02:00
David Wendt
679f179a60
docs: Document the aliasing situation with `VideoSource::Swf`
2023-07-01 23:38:09 +02:00
David Wendt
d382b29fb1
core: Allocate a new `VideoSource` when attaching netstreams rather than attaching the stream to every instance of the video
2023-07-01 23:38:09 +02:00
David Wendt
b2544618ab
core: `VideoStream` should not hold the last decoded frame as this data structure is shared across multiple instances of the same character
2023-07-01 23:38:09 +02:00
Adrian Wielgosik
7eb7f2ee2c
avm2: Correctly set and use Video class from Rust
2023-07-01 22:45:20 +02:00
Lord-McSweeney
7ad864ca02
avm2+tests: Implement Matrix3D.copyColumnFrom; add a test
2023-07-01 15:23:29 -04:00
Aaron Hill
6e1f00edf2
render: Implement more PixelBender features ( #11800 )
2023-07-01 13:50:43 -04:00
Aaron Hill
710be15f78
core: Bail out of operations::color_transform if [xy]_min==[xy]_max
...
In the special case where y_min==y_max==(height-1),
we would create a bad 'encompassing' region - subtracing
one from the max would make it smaller than the min,
causing `PixelRegion::encompassing_pixels` to treat it
as the minimum, and add one to `height - 1`
There's no work to do when x_min==x_max or y_min==y_max,
so we can also skip the sync and GC write in this case.
2023-07-01 09:55:59 -04:00
Nathan Adams
5e608764ec
core: Add debug feature to find display objects by mouse
2023-07-01 12:58:32 +02:00
Aaron Hill
c2fcdf6fd6
avm2: Implement Stage3D.requestContext3DMatchingProfiles
...
For now, we just ignore the parameters and call requestContext3D
2023-06-30 23:22:56 -04:00
Crowdin Bot
29a5c6a4cd
chore: Update translations from Crowdin
2023-07-01 00:47:31 +02:00
David Wendt
32524d3abd
core: AVM2 display object allocators always ensure both halves of the display object are connected correctly
2023-06-30 16:14:28 -06:00
David Wendt
8ac8b926ac
core: If a video does not have an `onMetaData` block, register a compatible-ish datastream so that we can still play the video
2023-06-30 16:14:28 -06:00
David Wendt
b9aaaf5259
flv: ScreenVideo v2 also wants the FLV video data byte
2023-06-30 16:14:28 -06:00
David Wendt
3ff1db014f
flv: Screen Video wants the FLV `VideoData` header byte
2023-06-30 16:14:28 -06:00
David Wendt
ff1ed66729
flv: VP6 video packets have a horizontal and vertical adjustment before the actual video data.
2023-06-30 16:14:28 -06:00
David Wendt
98ee78be1a
avm2: Make netstream event initialization more concise
2023-06-30 16:14:28 -06:00
David Wendt
04ee039d3c
avm2: Use `ParametersExt` to grab parameters in `Video.init()`
2023-06-30 16:14:28 -06:00
David Wendt
faf8fb5d3f
avm2: Move as much `Video` initialization as possible into an instance allocator function
2023-06-30 16:14:28 -06:00
David Wendt
45e6f07009
core: Pause the stream if we hit a tag parsing error.
2023-06-30 16:14:28 -06:00
David Wendt
af0149c476
core: Log netstream signature verification errors
2023-06-30 16:14:28 -06:00
David Wendt
b639af1ada
avm2: `Video.init` doesn't need to call `super_init`
2023-06-30 16:14:28 -06:00
David Wendt
d2f806a901
core: The AVM2 version of this test wants a spurious status event
2023-06-30 16:14:28 -06:00
David Wendt
ab21b5b106
core: The stop event is `NetStream.Play.Stop`
2023-06-30 16:14:28 -06:00
David Wendt
fc50a688fb
core: Update stream time after processing tags
2023-06-30 16:14:28 -06:00
David Wendt
4dd9508471
avm1: Implement onStatus events for NetStream
2023-06-30 16:14:28 -06:00
David Wendt
63b27a4a20
avm2: Pass status events through to AVM2.
2023-06-30 16:14:28 -06:00
David Wendt
757ae40abc
core: Add stubs for stream event triggers
2023-06-30 16:14:28 -06:00
David Wendt
da2ef5392e
core: Make the `NetStream`/AVM link bidirectional
2023-06-30 16:14:28 -06:00
David Wendt
067474dea5
chore: Remove unused variables from stream.rs
2023-06-30 16:14:28 -06:00
David Wendt
d498a412e5
core: Retain original SWF dimensions for self bounds
2023-06-30 16:14:28 -06:00
David Wendt
b164319e32
core: FLV metadata is stored as an array, not an object.
2023-06-30 16:14:28 -06:00
David Wendt
643b053e8d
core: Don't mark the video stream as corrupt if we haven't gotten the full header yet
2023-06-30 16:14:28 -06:00
David Wendt
587a99fae7
core: Netstream loaders are... well, netstream loaders.
2023-06-30 16:14:28 -06:00
David Wendt
0e207cce8d
core: Actually spawn the loader future for the netstream
2023-06-30 16:14:28 -06:00
David Wendt
7e986bd90d
avm1: `NetStream` constructor must return itself
2023-06-30 16:14:28 -06:00
David Wendt
766ee5302d
core: Properly expose AVM1/2 objects for videos.
2023-06-30 16:14:28 -06:00
David Wendt
a52f738009
core: Silence various errors triggered by loading an empty video stream
2023-06-30 16:14:28 -06:00
David Wendt
257403d04e
core: Errors in tag parsing should include the explanation of the underlying error
2023-06-30 16:14:28 -06:00
David Wendt
f690162a4f
avm2: Actually create an unconnected `Video` when one is constructed via `new Video`
2023-06-30 16:14:28 -06:00
David Wendt
c86360a10b
core: `Video`s attached to a `NetStream` get their bitmap size and data from the attached `NetStream`.
2023-06-30 16:14:28 -06:00
David Wendt
9e318fc8e8
core: Process basic FLV video data tags and funnel them to the video backend.
...
This works a bit differently from SWF videos, we do not retain decoded video frames or valid seek points indefinitely. This assumes code interacting with `NetStream` is at least mildly aware of how a video codec is supposed to work and what the performance implications of that are.
2023-06-30 16:14:28 -06:00
David Wendt
3d5156b90d
core: Update the stream offset after each tag is processed.
...
The `preload_offset` is only ever moved forward, of course.
2023-06-30 16:14:28 -06:00
David Wendt
3410d9fcf8
core: Process `onMetaData` to get our stream definition with.
...
We use `preload_offset` to avoid processing the same metadata multiple times.
2023-06-30 16:14:28 -06:00
David Wendt
286acddfea
core: Introduce the notion of a separate preload step.
...
We don't actually process tags out of order, we're just tracking what tags have already been processed. FLV embeds critical video metadata in a ScriptData tag that we need to pull data out of and process.
2023-06-30 16:14:28 -06:00
David Wendt
bc9fd3613e
core: Add stub FLV processing
2023-06-30 16:14:28 -06:00
Fancy2209
8f0a43f9d9
Add prependRotation, copyRowTo and copyRowFrom ( #11698 )
...
Co-authored-by: Aaron Hill <aa1ronham@gmail.com>
2023-06-30 14:31:08 -04:00
Aaron Hill
1c151a86d6
avm2: Stub isXMLName
2023-06-29 15:51:39 -04:00
Nathan Adams
a5915a9bdb
swf: Make Color Copy
2023-06-29 20:32:36 +02:00
Lord-McSweeney
04747f86b6
avm2: Stub AVM1Movie
2023-06-29 12:05:01 -04:00
EmperorBale
e846d035e5
avm2: Use `method_name` as last resort if available in stack trace
2023-06-29 11:49:48 -04:00
Aaron Hill
9b8a8c9974
avm2: Correctly re-use objects in XML/XMLList call handlers and ctors
...
`XML(someXMLObj)` and `XMLList(someXMLList)` perform the
normal cast behavior (returning the same object), instead
of creating a new object like other arguments do.
This also applies to `new XMLList(someXMLObj)`
and `XML(singleElemXMLList)`
2023-06-28 21:16:05 -04:00
Crowdin Bot
1430e98851
chore: Update translations from Crowdin
2023-06-28 23:19:47 +02:00
Niv.Kaminer
053bcf9376
core: Update sounds in rootless SWF ( close #11666 )
2023-06-26 16:59:01 -04:00
renovate[bot]
3057aa59dd
chore(deps): lock file maintenance rust dependencies
2023-06-25 21:53:00 -04:00
renovate[bot]
f62dd17284
fix(deps): update rust crate indexmap to v2
2023-06-25 20:27:33 -04:00
Nathan Adams
0ca206ce4f
core: Add dumb filter list inside debug ui
2023-06-25 21:58:46 +02:00
Nathan Adams
628d8f66ad
render: Add filters to BitmapCacheEntry
2023-06-25 21:58:46 +02:00
Lord-McSweeney
a38dec3f9c
core: Erase filters in GotoPlaceObject::new if initial PlaceObject has none
2023-06-25 18:27:54 +02:00
Lord-McSweeney
0dba2ac37c
core: Overwrite filters in GotoPlaceObject::merge
2023-06-25 18:27:54 +02:00
Lord-McSweeney
2d02886f5a
avm2+tests: Support CData in XML.toXMLString; add test
2023-06-25 00:25:47 -04:00
Nathan Adams
f24aabf74e
core: Don't hold a borrow on Avm1Button whilst adding children - fixes #11706
2023-06-24 22:33:42 +02:00
MrCheeze
1baccb483a
core: Apply filters when modifying an object, not just when instantiating
2023-06-24 17:22:32 +02:00
Nathan Adams
6d77ff1fc4
core: Store just abcd fields of Matrix inside BitmapCache, as we don't use tx/ty
2023-06-24 01:42:04 +02:00
Nathan Adams
4f9cc4e3c4
core: Clear this on scrollRect, not just ancestors
2023-06-24 01:42:04 +02:00
Nathan Adams
668cc31fa4
chore: Comment changes regarding cacheAsBitmap
2023-06-24 01:42:04 +02:00
Nathan Adams
a5b28b50bf
core: Don't invalidate things more than once per frame, to avoid repeat walking of the DO tree
2023-06-24 01:42:04 +02:00
Nathan Adams
cdb0774642
core: Hook up DisplayObject::opaque_background
2023-06-24 01:42:04 +02:00
Nathan Adams
ee444853b4
avm1: Implement MovieClip.cacheAsBitmap
2023-06-24 01:42:04 +02:00
Nathan Adams
d94c73cebe
core: Rename bitmap cache methods and make clear which one is preference and which one is actual
2023-06-24 01:42:04 +02:00
Nathan Adams
9795fc9311
core: Invalidate ancestors on scrollRect changes
2023-06-24 01:42:04 +02:00
Nathan Adams
f0b72ee89c
core: Add cacheAsBitmap debug buttons
2023-06-24 01:42:04 +02:00
Nathan Adams
f81b1f83b9
core: Fix panic in recursive set_maskee/set_masker
2023-06-24 01:42:04 +02:00
Nathan Adams
1a9bec3062
core: Don't use cacheAsBitmap when bitmapdata.draw() as it'll keep reinvalidating it
2023-06-24 01:42:04 +02:00
Nathan Adams
f43560ab88
render: Switch to providing cacheAsBitmap entries all at once on submit frame
2023-06-24 01:42:04 +02:00
Nathan Adams
2594453831
render: Add render_offscreen_for_cache for more optimised CacheAsBitmap
2023-06-24 01:42:04 +02:00
Nathan Adams
5a67b2dcb7
core: Don't rerender cacheAsBitmap if the color transform changes (unlike Flash - but it should be fine!)
2023-06-24 01:42:04 +02:00
Nathan Adams
d49a8ce0e6
core: Invalidate cacheAsBitmap when drawing api is used
2023-06-24 01:42:04 +02:00
Nathan Adams
cc8edb3bf1
core: Invalidate cacheAsBitmap when various more properties change
2023-06-24 01:42:04 +02:00
Nathan Adams
27db3e70b4
core: Invalidate cacheAsBitmap when transform changes
2023-06-24 01:42:04 +02:00
Nathan Adams
0f01efb322
core: Invalidate cacheAsBitmap when video change
2023-06-24 01:42:04 +02:00
Nathan Adams
41991da624
core: Invalidate cacheAsBitmap when texts change
2023-06-24 01:42:04 +02:00
Nathan Adams
932291bbad
core: Invalidate cacheAsBitmap when morphs change
2023-06-24 01:42:04 +02:00
Nathan Adams
8a3ccdd080
core: Invalidate cacheAsBitmap when graphics change
2023-06-24 01:42:04 +02:00
Nathan Adams
c39217e139
core: Invalidate cacheAsBitmap when children are added or removed
2023-06-24 01:42:04 +02:00
Nathan Adams
fe742194b1
core: Implement cacheAsBitmap behaviour
2023-06-24 01:42:04 +02:00
Niv.Kaminer
69b09ab1ef
avm2: Implement Serialization for ByteArrayObject
2023-06-23 08:29:53 -04:00
Crowdin Bot
b1149cd267
chore: Update translations from Crowdin
2023-06-23 11:49:47 +02:00
Fancy2209
9ab4c163c7
Fix TouchEvent.as ( #11685 )
...
* Update TouchEvent.as
* Oops
2023-06-23 08:14:23 +00:00
Lord-McSweeney
8127971dfd
avm2: Remove AIR-only FocusDirection class
2023-06-22 08:47:10 +03:00
Lord-McSweeney
f6360b343e
avm2: flash.sampler stubs
2023-06-21 21:03:29 +03:00
Nathan Adams
a078d91c31
core: Simplify open_character_button a bit
2023-06-21 18:27:12 +02:00
Nathan Adams
8dd3b50da6
core: Deemphasise invalid rects in debug ui
2023-06-21 18:27:12 +02:00
Nathan Adams
00e02d1511
core: Add debug window to list known movies
2023-06-21 18:27:12 +02:00
Nathan Adams
c0247c020a
swf: Add write_swf_raw_tags for reconstructing a swf from its parts
2023-06-21 18:27:12 +02:00
Nathan Adams
4e0628b730
core: Refactor out a show_avm2_value for debugger
2023-06-21 18:27:12 +02:00
Nathan Adams
e6b087dbc2
core: Remove swf saving for now, we need to reconstruct the swf from the data
2023-06-21 18:27:12 +02:00