From 4974b4a1f638041ad99f4050256b168748e77ea9 Mon Sep 17 00:00:00 2001 From: sagudev <16504129+sagudev@users.noreply.github.com> Date: Tue, 24 Jun 2025 16:13:58 +0200 Subject: [PATCH] canvas: Remove rect -> line handling (#37664) This causes wrong rendering on vello. Current backends already handle one dim zero correctly by themself (this was probably needed for azure), but if we ever needed this, it should be implemented inside faulty backend. Testing: Existing WPT tests Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com> --- components/canvas/backend.rs | 8 -------- components/canvas/canvas_data.rs | 11 ----------- components/canvas/raqote_backend.rs | 25 ------------------------- 3 files changed, 44 deletions(-) diff --git a/components/canvas/backend.rs b/components/canvas/backend.rs index 9db9b02f536..63df9d00fe6 100644 --- a/components/canvas/backend.rs +++ b/components/canvas/backend.rs @@ -107,14 +107,6 @@ pub(crate) trait GenericDrawTarget { stroke_options: &B::StrokeOptions, draw_options: &B::DrawOptions, ); - fn stroke_line( - &mut self, - start: Point2D, - end: Point2D, - pattern: &B::Pattern<'_>, - stroke_options: &B::StrokeOptions, - draw_options: &B::DrawOptions, - ); fn stroke_rect( &mut self, rect: &Rect, diff --git a/components/canvas/canvas_data.rs b/components/canvas/canvas_data.rs index dbde4bd408c..0b9239dac92 100644 --- a/components/canvas/canvas_data.rs +++ b/components/canvas/canvas_data.rs @@ -23,7 +23,6 @@ use servo_arc::Arc as ServoArc; use style::color::AbsoluteColor; use style::properties::style_structs::Font as FontStyleStruct; use unicode_script::Script; -use webrender_api::units::RectExt as RectExt_; use webrender_api::{ImageDescriptor, ImageDescriptorFlags, ImageFormat, ImageKey}; use crate::backend::{ @@ -793,16 +792,6 @@ impl<'a, B: Backend> CanvasData<'a, B> { &self.state.draw_options, ); }); - } else if rect.size.width == 0. || rect.size.height == 0. { - let mut stroke_opts = self.state.stroke_opts.clone(); - stroke_opts.set_line_cap(LineCapStyle::Butt); - self.drawtarget.stroke_line( - rect.origin, - rect.bottom_right(), - &self.state.stroke_style, - &stroke_opts, - &self.state.draw_options, - ); } else { self.drawtarget.stroke_rect( rect, diff --git a/components/canvas/raqote_backend.rs b/components/canvas/raqote_backend.rs index 4ce709fca56..0475b58dfdb 100644 --- a/components/canvas/raqote_backend.rs +++ b/components/canvas/raqote_backend.rs @@ -603,31 +603,6 @@ impl GenericDrawTarget for raqote::DrawTarget { ) { self.stroke(path, &source(pattern), stroke_options, draw_options); } - fn stroke_line( - &mut self, - start: Point2D, - end: Point2D, - pattern: &::Pattern<'_>, - stroke_options: &::StrokeOptions, - draw_options: &::DrawOptions, - ) { - let mut pb = raqote::PathBuilder::new(); - pb.move_to(start.x, start.y); - pb.line_to(end.x, end.y); - let mut stroke_options = stroke_options.clone(); - let cap = match stroke_options.join { - raqote::LineJoin::Round => raqote::LineCap::Round, - _ => raqote::LineCap::Butt, - }; - stroke_options.cap = cap; - - self.stroke( - &pb.finish(), - &source(pattern), - &stroke_options, - draw_options, - ); - } fn stroke_rect( &mut self, rect: &Rect,