mirror of
https://github.com/servo/servo.git
synced 2025-09-27 23:30:08 +01:00
canvas: Use Transform2D<f64>
instead of Transform2D<f32>
(#38316)
I mostly did dumb replacement so please check that this is correct. In addition, `canvas_data::draw_with_shadow` needs some a bit of a closer look. Testing: This is covered by existing tests, and it is likely that WPT tests are unaffected by the precision of the transform, even though it is technically more correct. Fixes: #38256 Signed-off-by: Narfinger <Narfinger@users.noreply.github.com>
This commit is contained in:
parent
4ff1e8dbd9
commit
3f7f9ba6cd
8 changed files with 91 additions and 97 deletions
|
@ -169,8 +169,8 @@ impl VelloDrawTarget {
|
|||
}
|
||||
}
|
||||
|
||||
fn is_viewport_cleared(&mut self, rect: &Rect<f32>, transform: Transform2D<f32>) -> bool {
|
||||
let transformed_rect = transform.outer_transformed_rect(rect);
|
||||
fn is_viewport_cleared(&mut self, rect: &Rect<f32>, transform: Transform2D<f64>) -> bool {
|
||||
let transformed_rect = transform.outer_transformed_rect(&rect.cast());
|
||||
if transformed_rect.is_empty() {
|
||||
return false;
|
||||
}
|
||||
|
@ -239,7 +239,7 @@ impl GenericDrawTarget for VelloDrawTarget {
|
|||
Self::new_with_renderer(device, queue, Rc::new(RefCell::new(renderer)), size)
|
||||
}
|
||||
|
||||
fn clear_rect(&mut self, rect: &Rect<f32>, transform: Transform2D<f32>) {
|
||||
fn clear_rect(&mut self, rect: &Rect<f32>, transform: Transform2D<f64>) {
|
||||
// vello scene only ever grows,
|
||||
// so we use every opportunity to shrink it
|
||||
if self.is_viewport_cleared(rect, transform) {
|
||||
|
@ -250,7 +250,7 @@ impl GenericDrawTarget for VelloDrawTarget {
|
|||
}
|
||||
self.ensure_drawing();
|
||||
let rect: kurbo::Rect = rect.cast().into();
|
||||
let transform = transform.cast().into();
|
||||
let transform = transform.into();
|
||||
self.scene
|
||||
.push_layer(peniko::Compose::Clear, 0.0, transform, &rect);
|
||||
self.scene.fill(
|
||||
|
@ -310,7 +310,7 @@ impl GenericDrawTarget for VelloDrawTarget {
|
|||
source: Rect<f64>,
|
||||
filter: Filter,
|
||||
composition_options: CompositionOptions,
|
||||
transform: Transform2D<f32>,
|
||||
transform: Transform2D<f64>,
|
||||
) {
|
||||
self.ensure_drawing();
|
||||
let scale_up = dest.size.width > source.size.width || dest.size.height > source.size.height;
|
||||
|
@ -367,7 +367,7 @@ impl GenericDrawTarget for VelloDrawTarget {
|
|||
fill_rule: FillRule,
|
||||
style: FillOrStrokeStyle,
|
||||
composition_options: CompositionOptions,
|
||||
transform: Transform2D<f32>,
|
||||
transform: Transform2D<f64>,
|
||||
) {
|
||||
self.ensure_drawing();
|
||||
self.with_composition(composition_options.composition_operation, |self_| {
|
||||
|
@ -387,7 +387,7 @@ impl GenericDrawTarget for VelloDrawTarget {
|
|||
start: Point2D<f32>,
|
||||
style: FillOrStrokeStyle,
|
||||
composition_options: CompositionOptions,
|
||||
transform: Transform2D<f32>,
|
||||
transform: Transform2D<f64>,
|
||||
) {
|
||||
self.ensure_drawing();
|
||||
let pattern = convert_to_brush(style, composition_options);
|
||||
|
@ -448,7 +448,7 @@ impl GenericDrawTarget for VelloDrawTarget {
|
|||
rect: &Rect<f32>,
|
||||
style: FillOrStrokeStyle,
|
||||
composition_options: CompositionOptions,
|
||||
transform: Transform2D<f32>,
|
||||
transform: Transform2D<f64>,
|
||||
) {
|
||||
self.ensure_drawing();
|
||||
let pattern = convert_to_brush(style, composition_options);
|
||||
|
@ -471,7 +471,7 @@ impl GenericDrawTarget for VelloDrawTarget {
|
|||
}
|
||||
}
|
||||
|
||||
fn push_clip(&mut self, path: &Path, _fill_rule: FillRule, transform: Transform2D<f32>) {
|
||||
fn push_clip(&mut self, path: &Path, _fill_rule: FillRule, transform: Transform2D<f64>) {
|
||||
self.scene
|
||||
.push_layer(peniko::Mix::Clip, 1.0, transform.cast().into(), &path.0);
|
||||
let mut path = path.clone();
|
||||
|
@ -497,7 +497,7 @@ impl GenericDrawTarget for VelloDrawTarget {
|
|||
style: FillOrStrokeStyle,
|
||||
line_options: LineOptions,
|
||||
composition_options: CompositionOptions,
|
||||
transform: Transform2D<f32>,
|
||||
transform: Transform2D<f64>,
|
||||
) {
|
||||
self.ensure_drawing();
|
||||
self.with_composition(composition_options.composition_operation, |self_| {
|
||||
|
@ -517,7 +517,7 @@ impl GenericDrawTarget for VelloDrawTarget {
|
|||
style: FillOrStrokeStyle,
|
||||
line_options: LineOptions,
|
||||
composition_options: CompositionOptions,
|
||||
transform: Transform2D<f32>,
|
||||
transform: Transform2D<f64>,
|
||||
) {
|
||||
self.ensure_drawing();
|
||||
let rect: kurbo::Rect = rect.cast().into();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue