diff options
-rw-r--r-- | Cargo.lock | 44 | ||||
-rw-r--r-- | components/canvas/Cargo.toml | 5 | ||||
-rw-r--r-- | components/canvas/azure_backend.rs | 785 | ||||
-rw-r--r-- | components/canvas/build.rs | 20 | ||||
-rw-r--r-- | components/canvas/canvas_data.rs | 48 | ||||
-rw-r--r-- | components/canvas/lib.rs | 4 | ||||
-rw-r--r-- | components/gfx/platform/freetype/font_template.rs | 2 | ||||
-rw-r--r-- | components/servo/Cargo.toml | 2 | ||||
-rw-r--r-- | docs/ORGANIZATION.md | 2 | ||||
-rw-r--r-- | ports/glutin/Cargo.toml | 2 | ||||
-rw-r--r-- | ports/libmlservo/Cargo.toml | 2 | ||||
-rw-r--r-- | ports/libsimpleservo/api/Cargo.toml | 2 | ||||
-rw-r--r-- | ports/libsimpleservo/capi/Cargo.toml | 2 | ||||
-rw-r--r-- | ports/libsimpleservo/jniapi/Cargo.toml | 2 | ||||
-rw-r--r-- | python/servo/command_base.py | 8 | ||||
-rw-r--r-- | python/tidy/servo_tidy/licenseck.py | 1 | ||||
-rw-r--r-- | python/tidy/servo_tidy_tests/rust_tidy.rs | 8 |
17 files changed, 12 insertions, 927 deletions
diff --git a/Cargo.lock b/Cargo.lock index fc6def6eea8..22ac43bde09 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -188,18 +188,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1d49d90015b3c36167a20fe2810c5cd875ad504b39cff3d4eae7977e6b7c1cb2" [[package]] -name = "azure" -version = "0.37.0" -source = "git+https://github.com/servo/rust-azure#1dbd223157997b5b5301e7da73bff37f928a7418" -dependencies = [ - "cmake", - "euclid", - "libc", - "servo-freetype-sys", - "servo-skia", -] - -[[package]] name = "background_hang_monitor" version = "0.0.1" dependencies = [ @@ -489,7 +477,6 @@ dependencies = [ name = "canvas" version = "0.0.1" dependencies = [ - "azure", "bitflags", "byteorder", "canvas_traits", @@ -2094,16 +2081,6 @@ dependencies = [ ] [[package]] -name = "glx" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d56d59aa89ba084f04dd4767df10649c65d1ab180a9a0d1eabb9b1d5a28ab2bd" -dependencies = [ - "gl_generator 0.11.0", - "libc", -] - -[[package]] name = "gobject-sys" version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -5226,27 +5203,6 @@ dependencies = [ ] [[package]] -name = "servo-skia" -version = "0.30000023.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3cf31d622cdfc24317eb1caa1018294f8058eb8315c9ed79103487b9504ddadb" -dependencies = [ - "cgl 0.3.2", - "cmake", - "euclid", - "expat-sys", - "gleam 0.7.0", - "glutin", - "glx", - "io-surface", - "libc", - "servo-egl", - "servo-fontconfig-sys", - "servo-freetype-sys", - "x11", -] - -[[package]] name = "servo_allocator" version = "0.0.1" dependencies = [ diff --git a/components/canvas/Cargo.toml b/components/canvas/Cargo.toml index 82e34bde036..9c48df20ef6 100644 --- a/components/canvas/Cargo.toml +++ b/components/canvas/Cargo.toml @@ -11,15 +11,12 @@ name = "canvas" path = "lib.rs" [features] -canvas2d-azure = ["azure"] -canvas2d-raqote = ["raqote"] webgl_backtrace = ["canvas_traits/webgl_backtrace"] no-wgl = ["surfman/sm-no-wgl"] xr-profile = ["webxr-api/profile", "time"] [dependencies] -azure = {git = "https://github.com/servo/rust-azure", optional = true} bitflags = "1.0" byteorder = "1" canvas_traits = {path = "../canvas_traits"} @@ -33,7 +30,7 @@ half = "1" ipc-channel = "0.14" log = "0.4" num-traits = "0.2" -raqote = {git = "https://github.com/jrmuizel/raqote", optional = true} +raqote = {git = "https://github.com/jrmuizel/raqote"} time = { version = "0.1.0", optional = true } pixels = {path = "../pixels"} servo_config = {path = "../config"} diff --git a/components/canvas/azure_backend.rs b/components/canvas/azure_backend.rs deleted file mode 100644 index 9b9d94c5052..00000000000 --- a/components/canvas/azure_backend.rs +++ /dev/null @@ -1,785 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ - -use crate::canvas_data::{ - Backend, CanvasPaintState, Color, CompositionOp, DrawOptions, ExtendMode, Filter, - GenericDrawTarget, GenericPathBuilder, GradientStop, GradientStops, Path, Pattern, - SourceSurface, StrokeOptions, SurfaceFormat, -}; -use crate::canvas_paint_thread::AntialiasMode; -use azure::azure::{AzFloat, AzGradientStop, AzPoint}; -use azure::azure_hl; -use azure::azure_hl::SurfacePattern; -use azure::azure_hl::{BackendType, ColorPattern, DrawTarget}; -use azure::azure_hl::{CapStyle, JoinStyle}; -use azure::azure_hl::{LinearGradientPattern, RadialGradientPattern}; -use canvas_traits::canvas::*; -use cssparser::RGBA; -use euclid::default::{Point2D, Rect, Size2D, Transform2D, Vector2D}; - -use std::marker::PhantomData; - -pub struct AzureBackend; - -impl Backend for AzureBackend { - fn get_composition_op(&self, opts: &DrawOptions) -> CompositionOp { - CompositionOp::Azure(opts.as_azure().composition) - } - - fn need_to_draw_shadow(&self, color: &Color) -> bool { - color.as_azure().a != 0.0f32 - } - - fn size_from_pattern(&self, rect: &Rect<f32>, pattern: &Pattern) -> Option<Size2D<f32>> { - match pattern { - Pattern::Azure(azure_hl::Pattern::Surface(ref surface), _) => { - let surface_size = surface.size(); - let size = match (surface.repeat_x, surface.repeat_y) { - (true, true) => rect.size, - (true, false) => Size2D::new(rect.size.width, surface_size.height as f32), - (false, true) => Size2D::new(surface_size.width as f32, rect.size.height), - (false, false) => { - Size2D::new(surface_size.width as f32, surface_size.height as f32) - }, - }; - Some(size) - }, - Pattern::Azure(..) => None, - } - } - - fn set_shadow_color<'a>(&mut self, color: RGBA, state: &mut CanvasPaintState<'a>) { - state.shadow_color = Color::Azure(color.to_azure_style()); - } - - fn set_fill_style<'a>( - &mut self, - style: FillOrStrokeStyle, - state: &mut CanvasPaintState<'a>, - drawtarget: &dyn GenericDrawTarget, - ) { - if let Some(pattern) = style.to_azure_pattern(drawtarget) { - state.fill_style = Pattern::Azure(pattern, PhantomData::default()) - } - } - - fn set_stroke_style<'a>( - &mut self, - style: FillOrStrokeStyle, - state: &mut CanvasPaintState<'a>, - drawtarget: &dyn GenericDrawTarget, - ) { - if let Some(pattern) = style.to_azure_pattern(drawtarget) { - state.stroke_style = Pattern::Azure(pattern, PhantomData::default()) - } - } - - fn set_global_composition<'a>( - &mut self, - op: CompositionOrBlending, - state: &mut CanvasPaintState<'a>, - ) { - state - .draw_options - .as_azure_mut() - .set_composition_op(op.to_azure_style()); - } - - fn create_drawtarget(&self, size: Size2D<u64>) -> Box<dyn GenericDrawTarget> { - // FIXME(nox): Why is the size made of i32 values? - Box::new(DrawTarget::new( - BackendType::Skia, - size.to_i32(), - azure_hl::SurfaceFormat::B8G8R8A8, - )) - } - - fn recreate_paint_state<'a>(&self, state: &CanvasPaintState<'a>) -> CanvasPaintState<'a> { - CanvasPaintState::new(AntialiasMode::from_azure( - state.draw_options.as_azure().antialias, - )) - } -} - -impl<'a> CanvasPaintState<'a> { - pub fn new(antialias: AntialiasMode) -> CanvasPaintState<'a> { - CanvasPaintState { - draw_options: DrawOptions::Azure(azure_hl::DrawOptions::new( - 1.0, - azure_hl::CompositionOp::Over, - antialias.into_azure(), - )), - fill_style: Pattern::Azure( - azure_hl::Pattern::Color(ColorPattern::new(azure_hl::Color::black())), - PhantomData::default(), - ), - stroke_style: Pattern::Azure( - azure_hl::Pattern::Color(ColorPattern::new(azure_hl::Color::black())), - PhantomData::default(), - ), - stroke_opts: StrokeOptions::Azure(azure_hl::StrokeOptions::new( - 1.0, - JoinStyle::MiterOrBevel, - CapStyle::Butt, - 10.0, - &[], - )), - transform: Transform2D::identity(), - shadow_offset_x: 0.0, - shadow_offset_y: 0.0, - shadow_blur: 0.0, - shadow_color: Color::Azure(azure_hl::Color::transparent()), - } - } -} - -impl GenericPathBuilder for azure_hl::PathBuilder { - fn arc( - &mut self, - origin: Point2D<f32>, - radius: f32, - start_angle: f32, - end_angle: f32, - anticlockwise: bool, - ) { - azure_hl::PathBuilder::arc( - self, - origin as Point2D<AzFloat>, - radius as AzFloat, - start_angle as AzFloat, - end_angle as AzFloat, - anticlockwise, - ); - } - fn bezier_curve_to( - &mut self, - control_point1: &Point2D<f32>, - control_point2: &Point2D<f32>, - control_point3: &Point2D<f32>, - ) { - azure_hl::PathBuilder::bezier_curve_to( - self, - control_point1 as &Point2D<AzFloat>, - control_point2 as &Point2D<AzFloat>, - control_point3 as &Point2D<AzFloat>, - ); - } - fn close(&mut self) { - azure_hl::PathBuilder::close(self); - } - fn ellipse( - &mut self, - origin: Point2D<f32>, - radius_x: f32, - radius_y: f32, - rotation_angle: f32, - start_angle: f32, - end_angle: f32, - anticlockwise: bool, - ) { - azure_hl::PathBuilder::ellipse( - self, - origin as Point2D<AzFloat>, - radius_x as AzFloat, - radius_y as AzFloat, - rotation_angle as AzFloat, - start_angle as AzFloat, - end_angle as AzFloat, - anticlockwise, - ); - } - fn get_current_point(&mut self) -> Option<Point2D<f32>> { - let AzPoint { x, y } = azure_hl::PathBuilder::get_current_point(self); - Some(Point2D::new(x as f32, y as f32)) - } - fn line_to(&mut self, point: Point2D<f32>) { - azure_hl::PathBuilder::line_to(self, point as Point2D<AzFloat>); - } - fn move_to(&mut self, point: Point2D<f32>) { - azure_hl::PathBuilder::move_to(self, point as Point2D<AzFloat>); - } - fn quadratic_curve_to(&mut self, control_point: &Point2D<f32>, end_point: &Point2D<f32>) { - azure_hl::PathBuilder::quadratic_curve_to( - self, - control_point as &Point2D<AzFloat>, - end_point as &Point2D<AzFloat>, - ); - } - fn finish(&mut self) -> Path { - Path::Azure(azure_hl::PathBuilder::finish(self)) - } -} - -impl GenericDrawTarget for azure_hl::DrawTarget { - fn clear_rect(&mut self, rect: &Rect<f32>) { - azure_hl::DrawTarget::clear_rect(self, rect as &Rect<AzFloat>); - } - - fn copy_surface( - &mut self, - surface: SourceSurface, - source: Rect<i32>, - destination: Point2D<i32>, - ) { - azure_hl::DrawTarget::copy_surface(self, surface.into_azure(), source, destination); - } - - fn create_gradient_stops( - &self, - gradient_stops: Vec<GradientStop>, - extend_mode: ExtendMode, - ) -> GradientStops { - let gradient_stops: Vec<AzGradientStop> = - gradient_stops.into_iter().map(|x| x.into_azure()).collect(); - GradientStops::Azure(self.create_gradient_stops(&gradient_stops, extend_mode.into_azure())) - } - - fn create_path_builder(&self) -> Box<dyn GenericPathBuilder> { - Box::new(self.create_path_builder()) - } - - fn create_similar_draw_target( - &self, - size: &Size2D<i32>, - format: SurfaceFormat, - ) -> Box<dyn GenericDrawTarget> { - Box::new(self.create_similar_draw_target(size, format.into_azure())) - } - fn create_source_surface_from_data( - &self, - data: &[u8], - size: Size2D<i32>, - stride: i32, - ) -> Option<SourceSurface> { - self.create_source_surface_from_data(data, size, stride, azure_hl::SurfaceFormat::B8G8R8A8) - .map(|s| SourceSurface::Azure(s)) - } - fn draw_surface( - &mut self, - surface: SourceSurface, - dest: Rect<f64>, - source: Rect<f64>, - filter: Filter, - draw_options: &DrawOptions, - ) { - let surf_options = azure_hl::DrawSurfaceOptions::new(filter.as_azure(), true); - let draw_options = azure_hl::DrawOptions::new( - draw_options.as_azure().alpha, - draw_options.as_azure().composition, - azure_hl::AntialiasMode::None, - ); - azure_hl::DrawTarget::draw_surface( - self, - surface.into_azure(), - dest.to_azure_style(), - source.to_azure_style(), - surf_options, - draw_options, - ); - } - fn draw_surface_with_shadow( - &self, - surface: SourceSurface, - dest: &Point2D<f32>, - color: &Color, - offset: &Vector2D<f32>, - sigma: f32, - operator: CompositionOp, - ) { - self.draw_surface_with_shadow( - surface.into_azure(), - dest as &Point2D<AzFloat>, - color.as_azure(), - offset as &Vector2D<AzFloat>, - sigma as AzFloat, - operator.into_azure(), - ); - } - fn fill(&mut self, path: &Path, pattern: Pattern, draw_options: &DrawOptions) { - azure_hl::DrawTarget::fill( - self, - path.as_azure(), - pattern.as_azure().to_pattern_ref(), - draw_options.as_azure(), - ); - } - fn fill_rect( - &mut self, - rect: &Rect<f32>, - pattern: Pattern, - draw_options: Option<&DrawOptions>, - ) { - azure_hl::DrawTarget::fill_rect( - self, - rect as &Rect<AzFloat>, - pattern.as_azure().to_pattern_ref(), - draw_options.map(|x| x.as_azure()), - ); - } - fn get_format(&self) -> SurfaceFormat { - SurfaceFormat::Azure(self.get_format()) - } - fn get_size(&self) -> Size2D<i32> { - let size = self.get_size(); - Size2D::new(size.width, size.height) - } - fn get_transform(&self) -> Transform2D<f32> { - self.get_transform() as Transform2D<f32> - } - fn pop_clip(&mut self) { - azure_hl::DrawTarget::pop_clip(self); - } - fn push_clip(&mut self, path: &Path) { - azure_hl::DrawTarget::push_clip(self, path.as_azure()); - } - fn set_transform(&mut self, matrix: &Transform2D<f32>) { - azure_hl::DrawTarget::set_transform(self, matrix as &Transform2D<AzFloat>); - } - fn snapshot(&self) -> SourceSurface { - SourceSurface::Azure(self.snapshot()) - } - fn stroke( - &mut self, - path: &Path, - pattern: Pattern, - stroke_options: &StrokeOptions, - draw_options: &DrawOptions, - ) { - azure_hl::DrawTarget::stroke( - self, - path.as_azure(), - pattern.as_azure().to_pattern_ref(), - stroke_options.as_azure(), - draw_options.as_azure(), - ); - } - fn stroke_line( - &mut self, - start: Point2D<f32>, - end: Point2D<f32>, - pattern: Pattern, - stroke_options: &StrokeOptions, - draw_options: &DrawOptions, - ) { - let stroke_options = stroke_options.as_azure(); - let cap = match stroke_options.line_join { - JoinStyle::Round => CapStyle::Round, - _ => CapStyle::Butt, - }; - - let stroke_opts = azure_hl::StrokeOptions::new( - stroke_options.line_width, - stroke_options.line_join, - cap, - stroke_options.miter_limit, - stroke_options.mDashPattern, - ); - - azure_hl::DrawTarget::stroke_line( - self, - start, - end, - pattern.as_azure().to_pattern_ref(), - &stroke_opts, - draw_options.as_azure(), - ); - } - fn stroke_rect( - &mut self, - rect: &Rect<f32>, - pattern: Pattern, - stroke_options: &StrokeOptions, - draw_options: &DrawOptions, - ) { - azure_hl::DrawTarget::stroke_rect( - self, - rect as &Rect<AzFloat>, - pattern.as_azure().to_pattern_ref(), - stroke_options.as_azure(), - draw_options.as_azure(), - ); - } - - #[allow(unsafe_code)] - fn snapshot_data(&self, f: &dyn Fn(&[u8]) -> Vec<u8>) -> Vec<u8> { - unsafe { f(self.snapshot().get_data_surface().data()) } - } - - #[allow(unsafe_code)] - fn snapshot_data_owned(&self) -> Vec<u8> { - unsafe { self.snapshot().get_data_surface().data().into() } - } -} - -impl AntialiasMode { - fn into_azure(self) -> azure_hl::AntialiasMode { - match self { - AntialiasMode::Default => azure_hl::AntialiasMode::Default, - AntialiasMode::None => azure_hl::AntialiasMode::None, - } - } - - fn from_azure(val: azure_hl::AntialiasMode) -> AntialiasMode { - match val { - azure_hl::AntialiasMode::Default => AntialiasMode::Default, - azure_hl::AntialiasMode::None => AntialiasMode::None, - v => unimplemented!("{:?} is unsupported", v), - } - } -} - -impl ExtendMode { - fn into_azure(self) -> azure_hl::ExtendMode { - match self { - ExtendMode::Azure(m) => m, - } - } -} - -impl GradientStop { - fn into_azure(self) -> AzGradientStop { - match self { - GradientStop::Azure(s) => s, - } - } -} - -impl GradientStops { - fn into_azure(self) -> azure_hl::GradientStops { - match self { - GradientStops::Azure(s) => s, - } - } -} - -impl Color { - fn as_azure(&self) -> &azure_hl::Color { - match self { - Color::Azure(s) => s, - } - } -} - -impl CompositionOp { - fn into_azure(self) -> azure_hl::CompositionOp { - match self { - CompositionOp::Azure(s) => s, - } - } -} - -impl SurfaceFormat { - fn into_azure(self) -> azure_hl::SurfaceFormat { - match self { - SurfaceFormat::Azure(s) => s, - } - } -} - -impl SourceSurface { - fn into_azure(self) -> azure_hl::SourceSurface { - match self { - SourceSurface::Azure(s) => s, - } - } -} - -impl Path { - fn as_azure(&self) -> &azure_hl::Path { - match self { - Path::Azure(p) => p, - } - } -} - -impl Pattern<'_> { - fn as_azure(&self) -> &azure_hl::Pattern { - match self { - Pattern::Azure(p, _) => p, - } - } -} - -impl DrawOptions { - fn as_azure(&self) -> &azure_hl::DrawOptions { - match self { - DrawOptions::Azure(options) => options, - } - } - fn as_azure_mut(&mut self) -> &mut azure_hl::DrawOptions { - match self { - DrawOptions::Azure(options) => options, - } - } - pub fn set_alpha(&mut self, val: f32) { - match self { - DrawOptions::Azure(options) => options.alpha = val as AzFloat, - } - } -} - -impl<'a> StrokeOptions<'a> { - pub fn as_azure(&self) -> &azure_hl::StrokeOptions<'a> { - match self { - StrokeOptions::Azure(options) => options, - } - } - pub fn set_line_width(&mut self, val: f32) { - match self { - StrokeOptions::Azure(options) => options.line_width = val as AzFloat, - } - } - pub fn set_miter_limit(&mut self, val: f32) { - match self { - StrokeOptions::Azure(options) => options.miter_limit = val as AzFloat, - } - } - pub fn set_line_join(&mut self, val: LineJoinStyle) { - match self { - StrokeOptions::Azure(options) => options.line_join = val.to_azure_style(), - } - } - pub fn set_line_cap(&mut self, val: LineCapStyle) { - match self { - StrokeOptions::Azure(options) => options.line_cap = val.to_azure_style(), - } - } -} - -pub trait ToAzureStyle { - type Target; - fn to_azure_style(self) -> Self::Target; -} - -impl ToAzureStyle for Rect<f64> { - type Target = Rect<f32>; - - fn to_azure_style(self) -> Rect<f32> { - Rect::new( - Point2D::new(self.origin.x as f32, self.origin.y as f32), - Size2D::new(self.size.width as f32, self.size.height as f32), - ) - } -} - -impl ToAzureStyle for LineCapStyle { - type Target = CapStyle; - - fn to_azure_style(self) -> CapStyle { - match self { - LineCapStyle::Butt => CapStyle::Butt, - LineCapStyle::Round => CapStyle::Round, - LineCapStyle::Square => CapStyle::Square, - } - } -} - -impl ToAzureStyle for LineJoinStyle { - type Target = JoinStyle; - - fn to_azure_style(self) -> JoinStyle { - match self { - LineJoinStyle::Round => JoinStyle::Round, - LineJoinStyle::Bevel => JoinStyle::Bevel, - LineJoinStyle::Miter => JoinStyle::Miter, - } - } -} - -impl ToAzureStyle for CompositionStyle { - type Target = azure_hl::CompositionOp; - - fn to_azure_style(self) -> azure_hl::CompositionOp { - match self { - CompositionStyle::SrcIn => azure_hl::CompositionOp::In, - CompositionStyle::SrcOut => azure_hl::CompositionOp::Out, - CompositionStyle::SrcOver => azure_hl::CompositionOp::Over, - CompositionStyle::SrcAtop => azure_hl::CompositionOp::Atop, - CompositionStyle::DestIn => azure_hl::CompositionOp::DestIn, - CompositionStyle::DestOut => azure_hl::CompositionOp::DestOut, - CompositionStyle::DestOver => azure_hl::CompositionOp::DestOver, - CompositionStyle::DestAtop => azure_hl::CompositionOp::DestAtop, - CompositionStyle::Copy => azure_hl::CompositionOp::Source, - CompositionStyle::Lighter => azure_hl::CompositionOp::Add, - CompositionStyle::Xor => azure_hl::CompositionOp::Xor, - } - } -} - -impl ToAzureStyle for BlendingStyle { - type Target = azure_hl::CompositionOp; - - fn to_azure_style(self) -> azure_hl::CompositionOp { - match self { - BlendingStyle::Multiply => azure_hl::CompositionOp::Multiply, - BlendingStyle::Screen => azure_hl::CompositionOp::Screen, - BlendingStyle::Overlay => azure_hl::CompositionOp::Overlay, - BlendingStyle::Darken => azure_hl::CompositionOp::Darken, - BlendingStyle::Lighten => azure_hl::CompositionOp::Lighten, - BlendingStyle::ColorDodge => azure_hl::CompositionOp::ColorDodge, - BlendingStyle::ColorBurn => azure_hl::CompositionOp::ColorBurn, - BlendingStyle::HardLight => azure_hl::CompositionOp::HardLight, - BlendingStyle::SoftLight => azure_hl::CompositionOp::SoftLight, - BlendingStyle::Difference => azure_hl::CompositionOp::Difference, - BlendingStyle::Exclusion => azure_hl::CompositionOp::Exclusion, - BlendingStyle::Hue => azure_hl::CompositionOp::Hue, - BlendingStyle::Saturation => azure_hl::CompositionOp::Saturation, - BlendingStyle::Color => azure_hl::CompositionOp::Color, - BlendingStyle::Luminosity => azure_hl::CompositionOp::Luminosity, - } - } -} - -impl ToAzureStyle for CompositionOrBlending { - type Target = azure_hl::CompositionOp; - - fn to_azure_style(self) -> azure_hl::CompositionOp { - match self { - CompositionOrBlending::Composition(op) => op.to_azure_style(), - CompositionOrBlending::Blending(op) => op.to_azure_style(), - } - } -} - -pub trait ToAzurePattern { - fn to_azure_pattern(&self, drawtarget: &dyn GenericDrawTarget) -> Option<azure_hl::Pattern>; -} - -impl ToAzurePattern for FillOrStrokeStyle { - fn to_azure_pattern(&self, drawtarget: &dyn GenericDrawTarget) -> Option<azure_hl::Pattern> { - Some(match *self { - FillOrStrokeStyle::Color(ref color) => { - azure_hl::Pattern::Color(ColorPattern::new(color.to_azure_style())) - }, - FillOrStrokeStyle::LinearGradient(ref linear_gradient_style) => { - let gradient_stops: Vec<GradientStop> = linear_gradient_style - .stops - .iter() - .map(|s| { - GradientStop::Azure(azure_hl::GradientStop { - offset: s.offset as f32, - color: s.color.to_azure_style(), - }) - }) - .collect(); - - azure_hl::Pattern::LinearGradient(LinearGradientPattern::new( - &Point2D::new( - linear_gradient_style.x0 as f32, - linear_gradient_style.y0 as f32, - ), - &Point2D::new( - linear_gradient_style.x1 as f32, - linear_gradient_style.y1 as f32, - ), - drawtarget - .create_gradient_stops( - gradient_stops, - ExtendMode::Azure(azure_hl::ExtendMode::Clamp), - ) - .into_azure(), - &Transform2D::identity(), - )) - }, - FillOrStrokeStyle::RadialGradient(ref radial_gradient_style) => { - let gradient_stops: Vec<GradientStop> = radial_gradient_style - .stops - .iter() - .map(|s| { - GradientStop::Azure(azure_hl::GradientStop { - offset: s.offset as f32, - color: s.color.to_azure_style(), - }) - }) - .collect(); - - azure_hl::Pattern::RadialGradient(RadialGradientPattern::new( - &Point2D::new( - radial_gradient_style.x0 as f32, - radial_gradient_style.y0 as f32, - ), - &Point2D::new( - radial_gradient_style.x1 as f32, - radial_gradient_style.y1 as f32, - ), - radial_gradient_style.r0 as f32, - radial_gradient_style.r1 as f32, - drawtarget - .create_gradient_stops( - gradient_stops, - ExtendMode::Azure(azure_hl::ExtendMode::Clamp), - ) - .into_azure(), - &Transform2D::identity(), - )) - }, - FillOrStrokeStyle::Surface(ref surface_style) => { - let source_surface = drawtarget - .create_source_surface_from_data( - &surface_style.surface_data, - // FIXME(nox): Why are those i32 values? - surface_style.surface_size.to_i32(), - surface_style.surface_size.width as i32 * 4, - )? - .into_azure(); - azure_hl::Pattern::Surface(SurfacePattern::new( - source_surface.azure_source_surface, - surface_style.repeat_x, - surface_style.repeat_y, - &Transform2D::identity(), - )) - }, - }) - } -} - -impl ToAzureStyle for RGBA { - type Target = azure_hl::Color; - - fn to_azure_style(self) -> azure_hl::Color { - azure_hl::Color::rgba( - self.red_f32() as f32, - self.green_f32() as f32, - self.blue_f32() as f32, - self.alpha_f32() as f32, - ) - } -} - -impl Pattern<'_> { - pub fn is_zero_size_gradient(&self) -> bool { - match *self { - Pattern::Azure(azure_hl::Pattern::LinearGradient(ref gradient), _) => { - gradient.is_zero_size() - }, - _ => false, - } - } -} - -impl Filter { - fn as_azure(&self) -> azure_hl::Filter { - match *self { - Filter::Linear => azure_hl::Filter::Linear, - Filter::Point => azure_hl::Filter::Point, - } - } -} - -impl Path { - pub fn transformed_copy_to_builder( - &self, - transform: &Transform2D<f32>, - ) -> Box<dyn GenericPathBuilder> { - Box::new(self.as_azure().transformed_copy_to_builder(transform)) - } - - pub fn contains_point(&self, x: f64, y: f64, path_transform: &Transform2D<f32>) -> bool { - self.as_azure().contains_point(x, y, path_transform) - } - - pub fn copy_to_builder(&self) -> Box<dyn GenericPathBuilder> { - Box::new(self.as_azure().copy_to_builder()) - } -} diff --git a/components/canvas/build.rs b/components/canvas/build.rs deleted file mode 100644 index 17010bce69d..00000000000 --- a/components/canvas/build.rs +++ /dev/null @@ -1,20 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ - -fn main() { - let azure = std::env::var_os("CARGO_FEATURE_CANVAS2D_AZURE").is_some(); - let raqote = std::env::var_os("CARGO_FEATURE_CANVAS2D_RAQOTE").is_some(); - - if !(azure || raqote) { - error("Must enable one of the `canvas2d-azure` or `canvas2d-raqote` features.") - } - if azure && raqote { - error("Must not enable both of the `canvas2d-azure` and `canvas2d-raqote` features.") - } -} - -fn error(message: &str) { - print!("\n\n Error: {}\n\n", message); - std::process::exit(1) -} diff --git a/components/canvas/canvas_data.rs b/components/canvas/canvas_data.rs index e31cf4d68ed..823999b3c98 100644 --- a/components/canvas/canvas_data.rs +++ b/components/canvas/canvas_data.rs @@ -23,6 +23,7 @@ use webrender_api::units::RectExt as RectExt_; /// further operations to it in device space. When it's time to /// draw the path, we convert it back to userspace and draw it /// with the correct transform applied. +/// TODO: De-abstract now that Azure is removed? enum PathState { /// Path builder in user-space. If a transform has been applied /// but no further path operations have occurred, it is stored @@ -80,8 +81,8 @@ pub trait Backend { fn size_from_pattern(&self, rect: &Rect<f32>, pattern: &Pattern) -> Option<Size2D<f32>>; } -/// A generic PathBuilder that abstracts the interface for -/// azure's and raqote's PathBuilder. +/// A generic PathBuilder that abstracts the interface for azure's and raqote's PathBuilder. +/// TODO: De-abstract now that Azure is removed? pub trait GenericPathBuilder { fn arc( &mut self, @@ -220,6 +221,7 @@ impl<'a> PathBuilderRef<'a> { // TODO(pylbrecht) // This defines required methods for DrawTarget of azure and raqote // The prototypes are derived from azure's methods. +// TODO: De-abstract now that Azure is removed? pub trait GenericDrawTarget { fn clear_rect(&mut self, rect: &Rect<f32>); fn copy_surface( @@ -299,93 +301,57 @@ pub trait GenericDrawTarget { #[derive(Clone)] pub enum ExtendMode { - #[cfg(feature = "canvas2d-azure")] - Azure(azure::azure_hl::ExtendMode), - #[cfg(feature = "canvas2d-raqote")] Raqote(()), } pub enum GradientStop { - #[cfg(feature = "canvas2d-azure")] - Azure(azure::AzGradientStop), - #[cfg(feature = "canvas2d-raqote")] Raqote(raqote::GradientStop), } pub enum GradientStops { - #[cfg(feature = "canvas2d-azure")] - Azure(azure::azure_hl::GradientStops), - #[cfg(feature = "canvas2d-raqote")] Raqote(Vec<raqote::GradientStop>), } #[derive(Clone)] pub enum Color { - #[cfg(feature = "canvas2d-azure")] - Azure(azure::azure_hl::Color), - #[cfg(feature = "canvas2d-raqote")] Raqote(raqote::SolidSource), } #[derive(Clone)] pub enum CompositionOp { - #[cfg(feature = "canvas2d-azure")] - Azure(azure::azure_hl::CompositionOp), - #[cfg(feature = "canvas2d-raqote")] Raqote(raqote::BlendMode), } pub enum SurfaceFormat { - #[cfg(feature = "canvas2d-azure")] - Azure(azure::azure_hl::SurfaceFormat), - #[cfg(feature = "canvas2d-raqote")] Raqote(()), } #[derive(Clone)] pub enum SourceSurface { - #[cfg(feature = "canvas2d-azure")] - Azure(azure::azure_hl::SourceSurface), - #[cfg(feature = "canvas2d-raqote")] Raqote(Vec<u8>), // TODO: See if we can avoid the alloc (probably?) } #[derive(Clone)] pub enum Path { - #[cfg(feature = "canvas2d-azure")] - Azure(azure::azure_hl::Path), - #[cfg(feature = "canvas2d-raqote")] Raqote(raqote::Path), } #[derive(Clone)] pub enum Pattern<'a> { - #[cfg(feature = "canvas2d-azure")] - Azure(azure::azure_hl::Pattern, PhantomData<&'a ()>), - #[cfg(feature = "canvas2d-raqote")] Raqote(crate::raqote_backend::Pattern<'a>), } pub enum DrawSurfaceOptions { - #[cfg(feature = "canvas2d-azure")] - Azure(azure::azure_hl::DrawSurfaceOptions), - #[cfg(feature = "canvas2d-raqote")] Raqote(()), } #[derive(Clone)] pub enum DrawOptions { - #[cfg(feature = "canvas2d-azure")] - Azure(azure::azure_hl::DrawOptions), - #[cfg(feature = "canvas2d-raqote")] Raqote(raqote::DrawOptions), } #[derive(Clone)] pub enum StrokeOptions<'a> { - #[cfg(feature = "canvas2d-azure")] - Azure(azure::azure_hl::StrokeOptions<'a>), - #[cfg(feature = "canvas2d-raqote")] Raqote(raqote::StrokeStyle, PhantomData<&'a ()>), } @@ -410,12 +376,6 @@ pub struct CanvasData<'a> { pub canvas_id: CanvasId, } -#[cfg(feature = "canvas2d-azure")] -fn create_backend() -> Box<dyn Backend> { - Box::new(crate::azure_backend::AzureBackend) -} - -#[cfg(feature = "canvas2d-raqote")] fn create_backend() -> Box<dyn Backend> { Box::new(crate::raqote_backend::RaqoteBackend) } diff --git a/components/canvas/lib.rs b/components/canvas/lib.rs index b61e32a63e8..1e5872420bc 100644 --- a/components/canvas/lib.rs +++ b/components/canvas/lib.rs @@ -9,10 +9,6 @@ extern crate bitflags; #[macro_use] extern crate log; -#[cfg(feature = "canvas2d-azure")] -mod azure_backend; - -#[cfg(feature = "canvas2d-raqote")] mod raqote_backend; pub use webgl_mode::WebGLComm; diff --git a/components/gfx/platform/freetype/font_template.rs b/components/gfx/platform/freetype/font_template.rs index b1b356d0f25..52654ed6d5a 100644 --- a/components/gfx/platform/freetype/font_template.rs +++ b/components/gfx/platform/freetype/font_template.rs @@ -12,7 +12,7 @@ use webrender_api::NativeFontHandle; /// Platform specific font representation for Linux. /// The identifier is an absolute path, and the bytes /// field is the loaded data that can be passed to -/// freetype and azure directly. +/// freetype and Raqote directly. #[derive(Deserialize, Serialize)] pub struct FontTemplateData { // If you add members here, review the Debug impl below diff --git a/components/servo/Cargo.toml b/components/servo/Cargo.toml index 29136079e33..8c975d604a6 100644 --- a/components/servo/Cargo.toml +++ b/components/servo/Cargo.toml @@ -12,8 +12,6 @@ path = "lib.rs" crate-type = ["rlib"] [features] -canvas2d-azure = ["canvas/canvas2d-azure"] -canvas2d-raqote = ["canvas/canvas2d-raqote"] debugmozjs = ["script/debugmozjs"] egl = ["mozangle/egl"] energy-profiling = ["profile_traits/energy-profiling"] diff --git a/docs/ORGANIZATION.md b/docs/ORGANIZATION.md index d369a0b50b3..abc9d8f13dc 100644 --- a/docs/ORGANIZATION.md +++ b/docs/ORGANIZATION.md @@ -105,7 +105,7 @@ * <https://github.com/servo/ipc-channel/>: an IPC implementation * <https://github.com/PistonDevelopers/image/>: image decoders * <https://github.com/tomaka/glutin/>: cross-platform windowing and input -* <https://github.com/servo/rust-azure/>: bindings to Moz2D/Azure (cross-platform 2D rendering library) +* <https://github.com/jrmuizel/raqote>: a pure Rust 2D Graphics Library * <https://github.com/servo/rust-cssparser/>: a CSS parser * <https://github.com/servo/rust-selectors/>: a CSS selector matching library * <https://github.com/cyderize/rust-websocket/>: a WebSocket protocol implementation diff --git a/ports/glutin/Cargo.toml b/ports/glutin/Cargo.toml index a5771518b84..bfe5aadbd6c 100644 --- a/ports/glutin/Cargo.toml +++ b/ports/glutin/Cargo.toml @@ -27,8 +27,6 @@ OriginalFilename = "servo.exe" ProductName = "Servo" [features] -canvas2d-azure = ["libservo/canvas2d-azure"] -canvas2d-raqote = ["libservo/canvas2d-raqote"] default = ["webdriver", "max_log_level"] egl = ["libservo/egl"] energy-profiling = ["libservo/energy-profiling"] diff --git a/ports/libmlservo/Cargo.toml b/ports/libmlservo/Cargo.toml index 4173db9ad4e..9d407883103 100644 --- a/ports/libmlservo/Cargo.toml +++ b/ports/libmlservo/Cargo.toml @@ -13,8 +13,6 @@ test = false bench = false [features] -canvas2d-azure = ["simpleservo/canvas2d-azure"] -canvas2d-raqote = ["simpleservo/canvas2d-raqote"] egl = ["simpleservo/egl"] layout-2013 = ["simpleservo/layout-2013"] layout-2020 = ["simpleservo/layout-2020"] diff --git a/ports/libsimpleservo/api/Cargo.toml b/ports/libsimpleservo/api/Cargo.toml index bbd496eabf6..66a0cd83a3d 100644 --- a/ports/libsimpleservo/api/Cargo.toml +++ b/ports/libsimpleservo/api/Cargo.toml @@ -31,8 +31,6 @@ libloading = "0.5" gl_generator = "0.11" [features] -canvas2d-azure = ["libservo/canvas2d-azure"] -canvas2d-raqote = ["libservo/canvas2d-raqote"] default = ["webdriver", "max_log_level"] debugmozjs = ["libservo/debugmozjs"] media-dummy = ["libservo/media-dummy"] diff --git a/ports/libsimpleservo/capi/Cargo.toml b/ports/libsimpleservo/capi/Cargo.toml index ec1c5ae8f99..2973f1dcb04 100644 --- a/ports/libsimpleservo/capi/Cargo.toml +++ b/ports/libsimpleservo/capi/Cargo.toml @@ -27,8 +27,6 @@ winapi = {version = "0.3", features = ["wingdi", "winuser", "winnt", "winbase", cbindgen = "0.9" [features] -canvas2d-azure = ["simpleservo/canvas2d-azure"] -canvas2d-raqote = ["simpleservo/canvas2d-raqote"] debugmozjs = ["simpleservo/debugmozjs"] default = ["webdriver", "max_log_level"] media-dummy = ["simpleservo/media-dummy"] diff --git a/ports/libsimpleservo/jniapi/Cargo.toml b/ports/libsimpleservo/jniapi/Cargo.toml index c0f42bcec8d..9336b5bd086 100644 --- a/ports/libsimpleservo/jniapi/Cargo.toml +++ b/ports/libsimpleservo/jniapi/Cargo.toml @@ -27,8 +27,6 @@ simpleservo = { path = "../api" } cc = "1.0" [features] -canvas2d-azure = ["simpleservo/canvas2d-azure"] -canvas2d-raqote = ["simpleservo/canvas2d-raqote"] debugmozjs = ["simpleservo/debugmozjs"] default = ["webdriver", "max_log_level"] media-dummy = ["simpleservo/media-dummy"] diff --git a/python/servo/command_base.py b/python/servo/command_base.py index b20d6d365aa..9cba39dc2d7 100644 --- a/python/servo/command_base.py +++ b/python/servo/command_base.py @@ -841,7 +841,6 @@ install them, let us know by filing a bug!") action='store_true', help='Build with frame pointer enabled, used by the background hang monitor.', ), - CommandArgument('--with-raqote', default=None, action='store_true'), CommandArgument('--with-layout-2020', default=None, action='store_true'), CommandArgument('--with-layout-2013', default=None, action='store_true'), CommandArgument('--without-wgl', default=None, action='store_true'), @@ -882,7 +881,7 @@ install them, let us know by filing a bug!") env=None, verbose=False, target=None, android=False, magicleap=False, libsimpleservo=False, features=None, debug_mozjs=False, with_debug_assertions=False, - with_frame_pointer=False, with_raqote=False, without_wgl=False, + with_frame_pointer=False, without_wgl=False, with_layout_2020=False, with_layout_2013=False, uwp=False, media_stack=None, ): @@ -913,16 +912,11 @@ install them, let us know by filing a bug!") if not magicleap: features.append("native-bluetooth") if uwp: - features.append("canvas2d-raqote") features.append("no-wgl") features.append("uwp") else: # Non-UWP builds provide their own libEGL via mozangle. features.append("egl") - if with_raqote and "canvas2d-azure" not in features: - features.append("canvas2d-raqote") - elif "canvas2d-azure" not in features: - features.append("canvas2d-raqote") if with_layout_2020 or (self.config["build"]["layout-2020"] and not with_layout_2013): features.append("layout-2020") elif "layout-2020" not in features: diff --git a/python/tidy/servo_tidy/licenseck.py b/python/tidy/servo_tidy/licenseck.py index 28ea34274e7..8c505366d65 100644 --- a/python/tidy/servo_tidy/licenseck.py +++ b/python/tidy/servo_tidy/licenseck.py @@ -64,7 +64,6 @@ licenses_dep_toml = [ 'name = "dylib"', 'name = "ipc-channel"', 'name = "mozjs_sys"', - 'name = "azure"', 'name = "freetype"', 'name = "js"', 'name = "servo-freetype-sys"', diff --git a/python/tidy/servo_tidy_tests/rust_tidy.rs b/python/tidy/servo_tidy_tests/rust_tidy.rs index 78b47a14401..1bd0cfa3d27 100644 --- a/python/tidy/servo_tidy_tests/rust_tidy.rs +++ b/python/tidy/servo_tidy_tests/rust_tidy.rs @@ -3,12 +3,12 @@ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ use app_units::Au; -use azure::azure_hl::{ AntialiasMode, Color, ColorPattern, CompositionOp }; -use azure::azure_hl::{AntialiasMode, Color, +use raqote::{GradientStop, Source, SolidSource}; +use raqote::{Source, SolidSource}, ColorPattern, CompositionOp}; use euclid::Size2D; -use azure::azure::AzIntSize; -use azure::azure::{AzIntSize}; +use raqote::Gradient; +use raqote::{Gradient}; mod paint_context; |