mirror of
https://github.com/servo/servo.git
synced 2025-06-06 16:45:39 +00:00
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:
parent
29c206a702
commit
b2ae3928ab
106 changed files with 28 additions and 289 deletions
|
@ -1054,7 +1054,8 @@ impl<'a> CanvasData<'a> {
|
|||
self.backend.set_global_composition(op, &mut self.state);
|
||||
}
|
||||
|
||||
pub fn recreate(&mut self, size: Size2D<u64>) {
|
||||
pub fn recreate(&mut self, size: Option<Size2D<u64>>) {
|
||||
let size = size.unwrap_or_else(|| self.drawtarget.get_size().to_u64());
|
||||
self.drawtarget = self
|
||||
.backend
|
||||
.create_drawtarget(Size2D::new(size.width, size.height));
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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()
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -28,7 +28,7 @@ pub enum CanvasMsg {
|
|||
Canvas2d(Canvas2dMsg, CanvasId),
|
||||
FromLayout(FromLayoutMsg, CanvasId),
|
||||
FromScript(FromScriptMsg, CanvasId),
|
||||
Recreate(Size2D<u64>, CanvasId),
|
||||
Recreate(Option<Size2D<u64>>, CanvasId),
|
||||
Close(CanvasId),
|
||||
}
|
||||
|
||||
|
|
|
@ -1,2 +0,0 @@
|
|||
[canvas-reset.https.html]
|
||||
expected: FAIL
|
|
@ -1,2 +0,0 @@
|
|||
[paint2d-reset.https.html]
|
||||
expected: FAIL
|
|
@ -1,3 +0,0 @@
|
|||
[2d.layer.valid-calls.save_reset_restore.html]
|
||||
[No exception raised on save() + reset() + restore().]
|
||||
expected: FAIL
|
|
@ -1,4 +0,0 @@
|
|||
[2d.reset.basic.html]
|
||||
[reset clears to transparent black]
|
||||
expected: FAIL
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
[2d.reset.render.drop_shadow.html]
|
||||
expected: FAIL
|
|
@ -1,2 +0,0 @@
|
|||
[2d.reset.render.global_composite_operation.html]
|
||||
expected: FAIL
|
|
@ -1,2 +0,0 @@
|
|||
[2d.reset.render.misc.html]
|
||||
expected: FAIL
|
|
@ -1,2 +0,0 @@
|
|||
[2d.reset.render.miter_limit.html]
|
||||
expected: FAIL
|
|
@ -1,2 +0,0 @@
|
|||
[2d.reset.render.text.html]
|
||||
expected: FAIL
|
|
@ -1,2 +0,0 @@
|
|||
[2d.reset.state.clip.html]
|
||||
expected: FAIL
|
|
@ -1,3 +0,0 @@
|
|||
[2d.reset.state.direction.html]
|
||||
[check that the state is reset]
|
||||
expected: FAIL
|
|
@ -1,3 +0,0 @@
|
|||
[2d.reset.state.fill_style.html]
|
||||
[check that the state is reset]
|
||||
expected: FAIL
|
|
@ -1,3 +0,0 @@
|
|||
[2d.reset.state.font.html]
|
||||
[check that the state is reset]
|
||||
expected: FAIL
|
|
@ -1,3 +0,0 @@
|
|||
[2d.reset.state.global_alpha.html]
|
||||
[check that the state is reset]
|
||||
expected: FAIL
|
|
@ -1,3 +0,0 @@
|
|||
[2d.reset.state.global_composite_operation.html]
|
||||
[check that the state is reset]
|
||||
expected: FAIL
|
|
@ -1,3 +0,0 @@
|
|||
[2d.reset.state.image_smoothing_enabled.html]
|
||||
[check that the state is reset]
|
||||
expected: FAIL
|
|
@ -1,3 +0,0 @@
|
|||
[2d.reset.state.line_cap.html]
|
||||
[check that the state is reset]
|
||||
expected: FAIL
|
|
@ -1,3 +0,0 @@
|
|||
[2d.reset.state.line_join.html]
|
||||
[check that the state is reset]
|
||||
expected: FAIL
|
|
@ -1,3 +0,0 @@
|
|||
[2d.reset.state.line_width.html]
|
||||
[check that the state is reset]
|
||||
expected: FAIL
|
|
@ -1,3 +0,0 @@
|
|||
[2d.reset.state.miter_limit.html]
|
||||
[check that the state is reset]
|
||||
expected: FAIL
|
|
@ -1,3 +0,0 @@
|
|||
[2d.reset.state.shadow_blur.html]
|
||||
[check that the state is reset]
|
||||
expected: FAIL
|
|
@ -1,3 +0,0 @@
|
|||
[2d.reset.state.shadow_color.html]
|
||||
[check that the state is reset]
|
||||
expected: FAIL
|
|
@ -1,3 +0,0 @@
|
|||
[2d.reset.state.shadow_offset_x.html]
|
||||
[check that the state is reset]
|
||||
expected: FAIL
|
|
@ -1,3 +0,0 @@
|
|||
[2d.reset.state.shadow_offset_y.html]
|
||||
[check that the state is reset]
|
||||
expected: FAIL
|
|
@ -1,3 +0,0 @@
|
|||
[2d.reset.state.stroke_style.html]
|
||||
[check that the state is reset]
|
||||
expected: FAIL
|
|
@ -1,3 +0,0 @@
|
|||
[2d.reset.state.text_align.html]
|
||||
[check that the state is reset]
|
||||
expected: FAIL
|
|
@ -1,3 +0,0 @@
|
|||
[2d.reset.state.text_baseline.html]
|
||||
[check that the state is reset]
|
||||
expected: FAIL
|
|
@ -1,3 +0,0 @@
|
|||
[2d.reset.state.transformation_matrix.html]
|
||||
[check that the state is reset]
|
||||
expected: FAIL
|
|
@ -1,3 +0,0 @@
|
|||
[2d.layer.valid-calls.save_reset_restore.html]
|
||||
[No exception raised on save() + reset() + restore().]
|
||||
expected: FAIL
|
|
@ -1,3 +0,0 @@
|
|||
[2d.layer.valid-calls.save_reset_restore.worker.html]
|
||||
[No exception raised on save() + reset() + restore().]
|
||||
expected: FAIL
|
|
@ -1,3 +0,0 @@
|
|||
[2d.reset.basic.html]
|
||||
[reset clears to transparent black]
|
||||
expected: FAIL
|
|
@ -1,3 +0,0 @@
|
|||
[2d.reset.basic.worker.html]
|
||||
[reset clears to transparent black]
|
||||
expected: FAIL
|
|
@ -1,2 +0,0 @@
|
|||
[2d.reset.render.drop_shadow.html]
|
||||
expected: FAIL
|
|
@ -1,2 +0,0 @@
|
|||
[2d.reset.render.global_composite_operation.html]
|
||||
expected: FAIL
|
|
@ -1,2 +0,0 @@
|
|||
[2d.reset.render.misc.html]
|
||||
expected: FAIL
|
|
@ -1,2 +0,0 @@
|
|||
[2d.reset.render.miter_limit.html]
|
||||
expected: FAIL
|
|
@ -1,2 +0,0 @@
|
|||
[2d.reset.render.text.html]
|
||||
expected: FAIL
|
|
@ -1,2 +0,0 @@
|
|||
[2d.reset.state.clip.html]
|
||||
expected: FAIL
|
|
@ -1,3 +0,0 @@
|
|||
[2d.reset.state.direction.html]
|
||||
[check that the state is reset]
|
||||
expected: FAIL
|
|
@ -1,3 +0,0 @@
|
|||
[2d.reset.state.direction.worker.html]
|
||||
[check that the state is reset]
|
||||
expected: FAIL
|
|
@ -1,3 +0,0 @@
|
|||
[2d.reset.state.fill_style.html]
|
||||
[check that the state is reset]
|
||||
expected: FAIL
|
|
@ -1,3 +0,0 @@
|
|||
[2d.reset.state.fill_style.worker.html]
|
||||
[check that the state is reset]
|
||||
expected: FAIL
|
|
@ -1,3 +0,0 @@
|
|||
[2d.reset.state.global_alpha.html]
|
||||
[check that the state is reset]
|
||||
expected: FAIL
|
|
@ -1,3 +0,0 @@
|
|||
[2d.reset.state.global_alpha.worker.html]
|
||||
[check that the state is reset]
|
||||
expected: FAIL
|
|
@ -1,3 +0,0 @@
|
|||
[2d.reset.state.global_composite_operation.html]
|
||||
[check that the state is reset]
|
||||
expected: FAIL
|
|
@ -1,3 +0,0 @@
|
|||
[2d.reset.state.global_composite_operation.worker.html]
|
||||
[check that the state is reset]
|
||||
expected: FAIL
|
|
@ -1,3 +0,0 @@
|
|||
[2d.reset.state.image_smoothing_enabled.html]
|
||||
[check that the state is reset]
|
||||
expected: FAIL
|
|
@ -1,3 +0,0 @@
|
|||
[2d.reset.state.image_smoothing_enabled.worker.html]
|
||||
[check that the state is reset]
|
||||
expected: FAIL
|
|
@ -1,3 +0,0 @@
|
|||
[2d.reset.state.line_cap.html]
|
||||
[check that the state is reset]
|
||||
expected: FAIL
|
|
@ -1,3 +0,0 @@
|
|||
[2d.reset.state.line_cap.worker.html]
|
||||
[check that the state is reset]
|
||||
expected: FAIL
|
|
@ -1,3 +0,0 @@
|
|||
[2d.reset.state.line_join.html]
|
||||
[check that the state is reset]
|
||||
expected: FAIL
|
|
@ -1,3 +0,0 @@
|
|||
[2d.reset.state.line_join.worker.html]
|
||||
[check that the state is reset]
|
||||
expected: FAIL
|
|
@ -1,3 +0,0 @@
|
|||
[2d.reset.state.line_width.html]
|
||||
[check that the state is reset]
|
||||
expected: FAIL
|
|
@ -1,3 +0,0 @@
|
|||
[2d.reset.state.line_width.worker.html]
|
||||
[check that the state is reset]
|
||||
expected: FAIL
|
|
@ -1,3 +0,0 @@
|
|||
[2d.reset.state.miter_limit.html]
|
||||
[check that the state is reset]
|
||||
expected: FAIL
|
|
@ -1,3 +0,0 @@
|
|||
[2d.reset.state.miter_limit.worker.html]
|
||||
[check that the state is reset]
|
||||
expected: FAIL
|
|
@ -1,3 +0,0 @@
|
|||
[2d.reset.state.shadow_blur.html]
|
||||
[check that the state is reset]
|
||||
expected: FAIL
|
|
@ -1,3 +0,0 @@
|
|||
[2d.reset.state.shadow_blur.worker.html]
|
||||
[check that the state is reset]
|
||||
expected: FAIL
|
|
@ -1,3 +0,0 @@
|
|||
[2d.reset.state.shadow_color.html]
|
||||
[check that the state is reset]
|
||||
expected: FAIL
|
|
@ -1,3 +0,0 @@
|
|||
[2d.reset.state.shadow_color.worker.html]
|
||||
[check that the state is reset]
|
||||
expected: FAIL
|
|
@ -1,3 +0,0 @@
|
|||
[2d.reset.state.shadow_offset_x.html]
|
||||
[check that the state is reset]
|
||||
expected: FAIL
|
|
@ -1,3 +0,0 @@
|
|||
[2d.reset.state.shadow_offset_x.worker.html]
|
||||
[check that the state is reset]
|
||||
expected: FAIL
|
|
@ -1,3 +0,0 @@
|
|||
[2d.reset.state.shadow_offset_y.html]
|
||||
[check that the state is reset]
|
||||
expected: FAIL
|
|
@ -1,3 +0,0 @@
|
|||
[2d.reset.state.shadow_offset_y.worker.html]
|
||||
[check that the state is reset]
|
||||
expected: FAIL
|
|
@ -1,3 +0,0 @@
|
|||
[2d.reset.state.stroke_style.html]
|
||||
[check that the state is reset]
|
||||
expected: FAIL
|
|
@ -1,3 +0,0 @@
|
|||
[2d.reset.state.stroke_style.worker.html]
|
||||
[check that the state is reset]
|
||||
expected: FAIL
|
|
@ -1,3 +0,0 @@
|
|||
[2d.reset.state.text_align.html]
|
||||
[check that the state is reset]
|
||||
expected: FAIL
|
|
@ -1,3 +0,0 @@
|
|||
[2d.reset.state.text_align.worker.html]
|
||||
[check that the state is reset]
|
||||
expected: FAIL
|
|
@ -1,3 +0,0 @@
|
|||
[2d.reset.state.text_baseline.html]
|
||||
[check that the state is reset]
|
||||
expected: FAIL
|
|
@ -1,3 +0,0 @@
|
|||
[2d.reset.state.text_baseline.worker.html]
|
||||
[check that the state is reset]
|
||||
expected: FAIL
|
|
@ -1,3 +0,0 @@
|
|||
[2d.reset.state.transformation_matrix.html]
|
||||
[check that the state is reset]
|
||||
expected: FAIL
|
|
@ -1,3 +0,0 @@
|
|||
[2d.reset.state.transformation_matrix.worker.html]
|
||||
[check that the state is reset]
|
||||
expected: FAIL
|
|
@ -1379,9 +1379,6 @@
|
|||
[Worklet interface: existence and properties of interface prototype object's "constructor" property]
|
||||
expected: FAIL
|
||||
|
||||
[CanvasRenderingContext2D interface: operation reset()]
|
||||
expected: FAIL
|
||||
|
||||
[CanvasRenderingContext2D interface: operation createConicGradient(double, double, double)]
|
||||
expected: FAIL
|
||||
|
||||
|
@ -1403,9 +1400,6 @@
|
|||
[CanvasRenderingContext2D interface: attribute textRendering]
|
||||
expected: FAIL
|
||||
|
||||
[CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "reset()" with the proper type]
|
||||
expected: FAIL
|
||||
|
||||
[CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "createConicGradient(double, double, double)" with the proper type]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,3 +0,0 @@
|
|||
[2d.layer.valid-calls.save_reset_restore.html]
|
||||
[No exception raised on save() + reset() + restore().]
|
||||
expected: FAIL
|
|
@ -1,4 +0,0 @@
|
|||
[2d.reset.basic.html]
|
||||
[reset clears to transparent black]
|
||||
expected: FAIL
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
[2d.reset.render.drop_shadow.html]
|
||||
expected: FAIL
|
|
@ -1,2 +0,0 @@
|
|||
[2d.reset.render.global_composite_operation.html]
|
||||
expected: FAIL
|
|
@ -1,2 +0,0 @@
|
|||
[2d.reset.render.misc.html]
|
||||
expected: FAIL
|
|
@ -1,2 +0,0 @@
|
|||
[2d.reset.render.miter_limit.html]
|
||||
expected: FAIL
|
|
@ -1,2 +0,0 @@
|
|||
[2d.reset.render.text.html]
|
||||
expected: FAIL
|
|
@ -1,2 +0,0 @@
|
|||
[2d.reset.state.clip.html]
|
||||
expected: FAIL
|
|
@ -1,3 +0,0 @@
|
|||
[2d.reset.state.direction.html]
|
||||
[check that the state is reset]
|
||||
expected: FAIL
|
|
@ -1,3 +0,0 @@
|
|||
[2d.reset.state.fill_style.html]
|
||||
[check that the state is reset]
|
||||
expected: FAIL
|
|
@ -1,3 +0,0 @@
|
|||
[2d.reset.state.global_alpha.html]
|
||||
[check that the state is reset]
|
||||
expected: FAIL
|
|
@ -1,3 +0,0 @@
|
|||
[2d.reset.state.global_composite_operation.html]
|
||||
[check that the state is reset]
|
||||
expected: FAIL
|
|
@ -1,3 +0,0 @@
|
|||
[2d.reset.state.image_smoothing_enabled.html]
|
||||
[check that the state is reset]
|
||||
expected: FAIL
|
|
@ -1,3 +0,0 @@
|
|||
[2d.reset.state.line_cap.html]
|
||||
[check that the state is reset]
|
||||
expected: FAIL
|
|
@ -1,3 +0,0 @@
|
|||
[2d.reset.state.line_join.html]
|
||||
[check that the state is reset]
|
||||
expected: FAIL
|
|
@ -1,3 +0,0 @@
|
|||
[2d.reset.state.line_width.html]
|
||||
[check that the state is reset]
|
||||
expected: FAIL
|
|
@ -1,3 +0,0 @@
|
|||
[2d.reset.state.miter_limit.html]
|
||||
[check that the state is reset]
|
||||
expected: FAIL
|
|
@ -1,3 +0,0 @@
|
|||
[2d.reset.state.shadow_blur.html]
|
||||
[check that the state is reset]
|
||||
expected: FAIL
|
|
@ -1,3 +0,0 @@
|
|||
[2d.reset.state.shadow_color.html]
|
||||
[check that the state is reset]
|
||||
expected: FAIL
|
|
@ -1,3 +0,0 @@
|
|||
[2d.reset.state.shadow_offset_x.html]
|
||||
[check that the state is reset]
|
||||
expected: FAIL
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue