David Wendt
153571c0c4
Implement `FormatSpans::set_text_format`.
...
This also necessitated the addition of code to:
* Ensure span breaks exist at both sides of the text boundary, without creating degenerate (length-0) spans
* Consolidate spans with matching text formats
* Shorten or lengthen the total list of text spans to match the backing string
* Ensure at least one text span exists at all times
This still has some minor to-dos: for example, it relies on the default `TextSpan` formatting, which probably should be replaced with actually accepting or storing a default format to be used when constructing new text spans.
2020-06-20 19:16:15 -04:00
David Wendt
102c494de4
Add a type to hold text with some text spans, and some tests for that type.
2020-06-20 19:16:14 -04:00
David Wendt
1671fc6eba
Add an internal representation of text spans.
...
Despite having HTML and CSS rendering capabilities, the Flash text field actually does not use HTML as it's internal representation. Instead, the text-span format implied by `getTextFormat` and `setTextFormat` is used to drive layout. You can see this by watching what happens to `htmlText`, *especially* when you add and remove stylesheets.
The `LayoutBox` machinery will be adapted to consume text spans in a future commit. This would make the entire rendering pipeline: HTML/CSS -> Text Spans -> Layout Boxes -> Render commands.
2020-06-20 19:16:14 -04:00
David Wendt
850831181c
Add tests for all non-trivial methods of `Position`, `Size`, and `BoxBounds`.
2020-06-20 19:16:13 -04:00
David Wendt
ef035c5283
Add `Size.max`, conversions between `Position` and `Size`, `BoxBounds.extent`, and `BoxBounds.with_size`.
2020-06-20 19:16:13 -04:00
David Wendt
e7c34d9745
Switch `BoxBounds` from a position-and-size representation to an offset-and-extent representation.
...
This makes the implementation of rectangle union (`Add`/`AddAssign`) far easier as we just compute the min and max of the offset and extent coordinates. It also makes the conversion into and from `swf::Rectangle` easier as it's now effectively a generic version of that datatype.
On the other hand, `width`, `height`, and `size` now have to be calculated, and require `T` to be self-`Sub`. I'm not sure if this is that much of a problem or not.
2020-06-20 19:16:12 -04:00
David Wendt
0a1de3276f
Add extra types for indicating moving a position and resizing a box.
2020-06-20 19:16:12 -04:00
David Wendt
a4c8cd4711
Add a set of types for tracking CSS attributes, positions, sizes, and bounds on layout boxes.
2020-06-20 19:16:12 -04:00
David Wendt
4739e08c11
Add the ability to split lines from the middle of an already-existing flow operation
2020-06-20 19:16:12 -04:00
David Wendt
7e7ca88c3d
`post_instantiate` is morally equivalent to duplicating the display object it's called on, so we should also duplicate the XML document attached to it.
...
We don't have to do this for `object` because we don't actually construct the script object until instantiation time.
2020-06-20 19:16:11 -04:00
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
dependabot-preview[bot]
abeece7e78
build(deps): bump image from 0.23.5 to 0.23.6
...
Bumps [image](https://github.com/image-rs/image ) from 0.23.5 to 0.23.6.
- [Release notes](https://github.com/image-rs/image/releases )
- [Changelog](https://github.com/image-rs/image/blob/master/CHANGES.md )
- [Commits](https://github.com/image-rs/image/compare/v0.23.5...v0.23.6 )
Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-20 13:29:30 -07:00
dependabot-preview[bot]
05c02335fb
build(deps): bump serde from 1.0.112 to 1.0.113
...
Bumps [serde](https://github.com/serde-rs/serde ) from 1.0.112 to 1.0.113.
- [Release notes](https://github.com/serde-rs/serde/releases )
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.112...v1.0.113 )
Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-19 21:22:21 +00: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
Nathan Adams
3695c3c9fa
tests: Add test for default names of display objects
2020-06-18 16:26:36 -07:00
Mike Welsh
62cfeb3754
core: Assign default name to unnamed clips ( fix #66 )
2020-06-18 16:26:36 -07:00
dependabot-preview[bot]
3faa48e599
build(deps-dev): bump @wdio/local-runner from 6.1.17 to 6.1.19 in /web
...
Bumps [@wdio/local-runner](https://github.com/webdriverio/webdriverio ) from 6.1.17 to 6.1.19.
- [Release notes](https://github.com/webdriverio/webdriverio/releases )
- [Changelog](https://github.com/webdriverio/webdriverio/blob/master/CHANGELOG.md )
- [Commits](https://github.com/webdriverio/webdriverio/compare/v6.1.17...v6.1.19 )
Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-18 11:59:13 -07:00
dependabot-preview[bot]
f6845cdf3d
build(deps-dev): bump @wdio/mocha-framework in /web
...
Bumps [@wdio/mocha-framework](https://github.com/webdriverio/webdriverio ) from 6.1.17 to 6.1.19.
- [Release notes](https://github.com/webdriverio/webdriverio/releases )
- [Changelog](https://github.com/webdriverio/webdriverio/blob/master/CHANGELOG.md )
- [Commits](https://github.com/webdriverio/webdriverio/compare/v6.1.17...v6.1.19 )
Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-18 11:28:48 -07:00
dependabot-preview[bot]
0608e48911
build(deps-dev): bump @wdio/cli from 6.1.17 to 6.1.19 in /web
...
Bumps [@wdio/cli](https://github.com/webdriverio/webdriverio ) from 6.1.17 to 6.1.19.
- [Release notes](https://github.com/webdriverio/webdriverio/releases )
- [Changelog](https://github.com/webdriverio/webdriverio/blob/master/CHANGELOG.md )
- [Commits](https://github.com/webdriverio/webdriverio/compare/v6.1.17...v6.1.19 )
Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-18 11:28:28 -07:00
Nathan Adams
25ad2a428d
tests: Improve attach_movie test to prove when the first frame is executed
2020-06-17 14:16:38 -07:00
Mike Welsh
33cbc1fe2f
web: Avoid panics on unimplemented audio codecs
2020-06-17 12:14:08 -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
Mike Welsh
568d0513ed
tests: register_and_init_order tests for constructor after goto
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
dependabot-preview[bot]
da17d8f2e4
build(deps): bump path-slash from 0.1.1 to 0.1.2
...
Bumps [path-slash](https://github.com/rhysd/path-slash ) from 0.1.1 to 0.1.2.
- [Release notes](https://github.com/rhysd/path-slash/releases )
- [Changelog](https://github.com/rhysd/path-slash/blob/master/CHANGELOG.md )
- [Commits](https://github.com/rhysd/path-slash/compare/0.1.1...v0.1.2 )
Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-16 11:56:54 -07:00
dependabot-preview[bot]
cb33ecc14f
build(deps): bump structopt from 0.3.14 to 0.3.15
...
Bumps [structopt](https://github.com/TeXitoi/structopt ) from 0.3.14 to 0.3.15.
- [Release notes](https://github.com/TeXitoi/structopt/releases )
- [Changelog](https://github.com/TeXitoi/structopt/blob/master/CHANGELOG.md )
- [Commits](https://github.com/TeXitoi/structopt/compare/v0.3.14...v0.3.15 )
Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-16 10:06:32 -07:00
dependabot-preview[bot]
a472005f1b
build(deps): bump base64 from 0.12.1 to 0.12.2
...
Bumps [base64](https://github.com/marshallpierce/rust-base64 ) from 0.12.1 to 0.12.2.
- [Release notes](https://github.com/marshallpierce/rust-base64/releases )
- [Changelog](https://github.com/marshallpierce/rust-base64/blob/master/RELEASE-NOTES.md )
- [Commits](https://github.com/marshallpierce/rust-base64/compare/v0.12.1...v0.12.2 )
Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-15 16:54:03 -07:00
dependabot-preview[bot]
5f6d521097
build(deps-dev): bump eslint-plugin-prettier from 3.1.3 to 3.1.4 in /web
...
Bumps [eslint-plugin-prettier](https://github.com/prettier/eslint-plugin-prettier ) from 3.1.3 to 3.1.4.
- [Release notes](https://github.com/prettier/eslint-plugin-prettier/releases )
- [Changelog](https://github.com/prettier/eslint-plugin-prettier/blob/master/CHANGELOG.md )
- [Commits](https://github.com/prettier/eslint-plugin-prettier/compare/v3.1.3...v3.1.4 )
Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-15 09:57:56 -07:00