canvas2d: Implement .reset() (#31258)

* Implement Canvas2D reset

* Update WPT tests

* Apply suggestions from code review

---------

Co-authored-by: Martin Robinson <mrobinson@igalia.com>
This commit is contained in:
Smitty 2024-02-05 03:53:00 -05:00 committed by GitHub
parent 29c206a702
commit b2ae3928ab
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
106 changed files with 28 additions and 289 deletions

View file

@ -216,7 +216,14 @@ impl CanvasState {
pub fn set_bitmap_dimensions(&self, size: Size2D<u64>) {
self.reset_to_initial_state();
self.ipc_renderer
.send(CanvasMsg::Recreate(size, self.get_canvas_id()))
.send(CanvasMsg::Recreate(Some(size), self.get_canvas_id()))
.unwrap();
}
pub fn reset(&self) {
self.reset_to_initial_state();
self.ipc_renderer
.send(CanvasMsg::Recreate(None, self.get_canvas_id()))
.unwrap();
}

View file

@ -74,7 +74,7 @@ impl CanvasRenderingContext2D {
self.canvas_state
.get_ipc_renderer()
.send(CanvasMsg::Recreate(
size.to_u64(),
Some(size.to_u64()),
self.canvas_state.get_canvas_id(),
))
.unwrap();
@ -181,6 +181,11 @@ impl CanvasRenderingContext2DMethods for CanvasRenderingContext2D {
self.canvas_state.restore()
}
/// <https://html.spec.whatwg.org/multipage/#dom-context-2d-reset>
fn Reset(&self) {
self.canvas_state.reset()
}
// https://html.spec.whatwg.org/multipage/#dom-context-2d-scale
fn Scale(&self, x: f64, y: f64) {
self.canvas_state.scale(x, y)

View file

@ -213,6 +213,11 @@ impl OffscreenCanvasRenderingContext2DMethods for OffscreenCanvasRenderingContex
self.canvas_state.restore()
}
/// <https://html.spec.whatwg.org/multipage/#dom-context-2d-reset>
fn Reset(&self) {
self.canvas_state.reset()
}
// https://html.spec.whatwg.org/multipage/#dom-context-2d-globalalpha
fn GlobalAlpha(&self) -> f64 {
self.canvas_state.global_alpha()

View file

@ -95,6 +95,11 @@ impl PaintRenderingContext2DMethods for PaintRenderingContext2D {
self.context.Restore()
}
/// <https://html.spec.whatwg.org/multipage/#dom-context-2d-reset>
fn Reset(&self) {
self.context.Reset()
}
// https://html.spec.whatwg.org/multipage/#dom-context-2d-scale
fn Scale(&self, x: f64, y: f64) {
self.context.Scale(x, y)

View file

@ -44,6 +44,7 @@ interface mixin CanvasState {
// state
undefined save(); // push state on state stack
undefined restore(); // pop state stack and restore state
undefined reset();
};
interface mixin CanvasTransform {