Nathan Adams
545193b098
swf: Deduplicate GradientFilter again
2023-02-28 16:25:12 +01:00
Nathan Adams
f79015e201
render: Use swf Filter types where possible. Gradient types had to be split into duplicate classes to allow for different trait impls based on which gradient filter type it is.
2023-02-28 16:25:12 +01:00
Nathan Adams
7da2a061cc
swf: ColorMatrixFilter::matrix is actually f32, not Fixed16
2023-02-28 16:25:12 +01:00
Nathan Adams
ce9159cba4
swf: Fixed read order of BevelFilter colors. The swf spec is wrong.
2023-02-28 16:25:12 +01:00
relrelb
5f4f23cceb
swf: Don't truncate `ClipEventFlag` in SWFv5
...
Although in SWFv5 the 2nd byte is documented to be reserved (all 0),
Flash does read it and treats it the same as for SWFv6.
Fixes #8620
2023-02-25 23:20:45 +02:00
relrelb
e98aa54599
swf: Introduce `ConvolutionFilterFlags`
2023-02-21 16:55:13 +02:00
relrelb
35ef402b95
swf: Introduce `GradientFilterFlags`
2023-02-21 16:55:13 +02:00
relrelb
1fbfd2cbbc
swf: Introduce `BevelFilterFlags`
2023-02-21 16:55:13 +02:00
relrelb
1f9c940331
swf: Introduce `GlowFilterFlags`
2023-02-21 16:55:13 +02:00
relrelb
2aaf337b6a
swf: Introduce `BlurFilterFlags`
2023-02-21 16:55:13 +02:00
relrelb
c86cd4fa9d
swf: Introduce `DropShadowFilterFlags`
2023-02-21 16:55:13 +02:00
Nathan Adams
f2acb7c230
swf: Added DoAbc2 tag
2023-02-14 08:51:45 +01:00
Nathan Adams
69f93f926e
swf: Rename DoAbc to DoAbc2
2023-02-14 08:51:45 +01:00
nosamu
0e4db6a2c9
swf: Accept Scaleform GFx header signatures
2023-01-16 18:25:34 +01:00
relrelb
bd9078addf
chore: Fix `clippy::uninlined_format_args` lints
2022-12-15 08:59:38 +02:00
Mark Richins
d345523d02
Fix conflicts
2022-11-23 20:45:37 -07:00
Mark Richins
63a291ac4b
Fix promblems caused by moving Twips
2022-11-23 20:45:37 -07:00
relrelb
c516fef65d
swf: Simplify read of `PlaceObject` tags
...
`tag_length` isn't really necessary since each tag is read using
a dedicated `swf::Reader`, which keeps track of the tag boundary
internally.
As a result, `tag_len` can be avoided passed around many times in
`movie_clip.rs`.
2022-11-08 00:05:41 +02:00
Aaron Hill
68471723b3
core: Fix clippy format string lint
2022-10-27 08:49:39 +03:00
relrelb
b0b0e55c24
swf: Extract read/write of filters to separate functions
...
Also unify the identical `GradientGlowFilter` and `GradientBevelFilter`
structs into `GradientFilter`.
2022-10-14 02:27:49 +03:00
EmperorBale
35c9597032
chore: Appease clippy
2022-10-10 12:48:35 -07:00
EmperorBale
5c9bf3ffc0
swf: Support SWZ files
2022-10-10 12:48:35 -07:00
relrelb
bf0ace0b88
chore: Appease clippy
2022-10-09 13:46:28 +05:45
Adrian Wielgosik
0f30278e48
Add missing comment
2022-10-04 20:02:14 +03:00
Adrian Wielgosik
52f7736436
swf: treat empty gradients as solid black color
2022-10-03 20:18:30 +02:00
relrelb
e1d01b0a5e
swf: Extract `Rectangle` to a separate file
...
And make it generic, as a first step towards making it a general-purpose
data structure for the whole codebase. Some potential replacements are:
* `BoundingBox` in `render/src/bounding_box.rs`.
* `BoxBounds` in `core/src/html/dimensions.rs`.
* Parameters to a bunch of `BitmapData` methods in
`core/src/bitmap/bitmap_data.rs`.
2022-09-25 10:37:56 +03:00
Mike Welsh
de114f0a3d
swf: Read font height in DefineEditText when HasFontClass is set
...
The SWF19 specs incorrectly state DefineEditText tag only contains
font height if the HasFont flag is set. The tag also contains
the height if the HasFontClass flag is set. This indicates that a
font is used via runtime sharing.
2022-09-06 20:02:23 -07:00
Mike Welsh
b1404edfdc
swf: Use bitflags for EditText
2022-09-06 20:02:23 -07:00
relrelb
3b752cc600
swf: Merge `read_color_transform_no_alpha` into `read_color_transform`
...
Differentiate between the cases using a new `has_alpha` boolean
parameter.
2022-09-03 13:24:12 -07:00
relrelb
fb39bb2b71
swf: Remove `Copy` from `Rectangle`
...
Use `.clone()` explicitly where needed.
2022-09-02 18:21:13 -07:00
relrelb
299da43c16
swf: Extract `ShapeFlag`
2022-09-02 18:21:13 -07:00
relrelb
efd449dc0d
swf: Extract `DefineMorphShapeFlag`
2022-09-02 18:21:13 -07:00
relrelb
16a1b7b832
swf: Remove `length` parameter of `read_frame_label`
...
Use `unwrap_or_default()` to optionally read a byte.
Also remove unused `context` parameter of `MovieClip::frame_label`.
2022-09-02 10:42:09 -07:00
relrelb
9ec3137891
swf: Remove `tag_length` parameter of `read_define_button_cxform`
...
It was not needed since `Reader` accounts for it internally.
2022-09-02 10:42:09 -07:00
Aaron Hill
fa0c843a4d
avm2: Implement DisplayObject.scrollRect
...
This property causes a DisplayObject to be both translated
and cropped.
2022-08-26 13:04:01 -07:00
relrelb
ad91992cb5
swf: Simplify `DoAbc` tag handling
...
Extract `swf::Reader::read_do_abc()` which, as the name suggests,
reads a `DoAbc` tag, and use it before calling to `Avm2::load_abc`.
Finally, introduce `DoAbcFlag` using `bitflags`.
This greatly simplifies the ABC loading code.
2022-08-26 11:37:04 -07:00
Mike Welsh
d092861c15
chore: Appease clippy
...
Fix `assertions_on_result_states` lints.
2022-07-29 19:32:41 -07:00
Aaron Hill
bb5c9a1de5
swf: Handle incorrect 'PlaceObject3' tag
...
Fixes #7098
Some SWF appear to have a PlaceObject3 tag with
`HAS_CACHE_AS_BITMAP` set, but the tag ends without
including the corresponding 'is_bitmap_cached' byte.
2022-06-10 16:56:08 +03:00
relrelb
781d091d42
swf: Return concrete data types in `Reader` methods
...
Where possible, return the specific data type instead of the generic
`Tag` type. Most reader methods do this already, so this brings the
rest in-line.
2022-05-09 14:59:38 -07:00
Mike Welsh
146b8adc68
swf: Clean up LineStyle
...
* Remove LineStyle::color, instead using fill_style with
FillStyle::Color to indicate solid color.
* Store `flags` in the struct instead of separate bools/values.
* Add getters/setters for ease of use.
* Add builder-style methods for setting LineStyle properties.
* Fix misnamed ALLOW_CLOSE flag to NO_CLOSE.
2022-04-11 22:50:40 -07:00
Mike Welsh
478f970fc8
chore: Appease clippy
2022-04-09 18:23:51 -07:00
relrelb
9234336dfc
swf: Rename `PlaceFlag::IS_IMAGE` to `PlaceFlag::HAS_IMAGE`
...
To match the SWF19 spec.
2022-03-26 11:33:26 -07:00
relrelb
094da8f1a4
swf: Organize clippy attributes
...
Move them to specific places as possible.
2022-03-26 11:33:26 -07:00
relrelb
71b0a6e32e
swf: Use bitflags for `FontInfoFlag`
2022-03-26 11:33:26 -07:00
relrelb
fd06fa0537
swf: Use bitflags for `LineStyleFlag`
2022-03-26 11:33:26 -07:00
relrelb
e88c7102f5
swf: Use bitflags for `PlaceFlag`
2022-03-26 11:33:26 -07:00
relrelb
6d2005c2fe
swf: Simplify `read_str_with_len`
...
Read the length in the function itself rather than receiving it as
an argument.
2022-03-26 11:33:26 -07:00
relrelb
1230b5e713
swf: Use bitflags for `FontFlag`
2022-03-26 11:33:26 -07:00
relrelb
71a1757d29
swf: Make `Glyph::advance` non-`Option`
...
Simply use `0` instead of `None`.
2022-03-26 11:33:26 -07:00
relrelb
984342abf3
swf: Avoid some `Vec::resize` usages
...
Use the `vec![]` macro instead.
2022-03-26 11:33:26 -07:00