Introduce Svg struct in core::svg
This commit is contained in:
parent
8708101c89
commit
d4b08462e5
18 changed files with 146 additions and 257 deletions
|
|
@ -16,7 +16,7 @@ pub use stroke::{LineCap, LineDash, LineJoin, Stroke};
|
|||
pub use style::Style;
|
||||
pub use text::Text;
|
||||
|
||||
pub use crate::core::Image;
|
||||
pub use crate::core::{Image, Svg};
|
||||
pub use crate::gradient::{self, Gradient};
|
||||
|
||||
use crate::cache::Cached;
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
//! Draw and generate geometry.
|
||||
use crate::core::svg;
|
||||
use crate::core::{Color, Point, Radians, Rectangle, Size, Vector};
|
||||
use crate::geometry::{self, Fill, Image, Path, Stroke, Text};
|
||||
use crate::core::{Point, Radians, Rectangle, Size, Vector};
|
||||
use crate::geometry::{self, Fill, Image, Path, Stroke, Svg, Text};
|
||||
|
||||
/// The region of a surface that can be used to draw geometry.
|
||||
#[allow(missing_debug_implementations)]
|
||||
|
|
@ -206,15 +205,7 @@ pub trait Backend: Sized {
|
|||
);
|
||||
|
||||
fn draw_image(&mut self, bounds: Rectangle, image: impl Into<Image>);
|
||||
|
||||
fn draw_svg(
|
||||
&mut self,
|
||||
handle: &svg::Handle,
|
||||
bounds: Rectangle,
|
||||
color: Option<Color>,
|
||||
rotation: Radians,
|
||||
opacity: f32,
|
||||
);
|
||||
fn draw_svg(&mut self, bounds: Rectangle, svg: impl Into<Svg>);
|
||||
|
||||
fn into_geometry(self) -> Self::Geometry;
|
||||
}
|
||||
|
|
@ -262,17 +253,8 @@ impl Backend for () {
|
|||
) {
|
||||
}
|
||||
|
||||
fn into_geometry(self) -> Self::Geometry {}
|
||||
|
||||
fn draw_image(&mut self, _bounds: Rectangle, _image: impl Into<Image>) {}
|
||||
fn draw_svg(&mut self, _bounds: Rectangle, _svg: impl Into<Svg>) {}
|
||||
|
||||
fn draw_svg(
|
||||
&mut self,
|
||||
_handle: &svg::Handle,
|
||||
_bounds: Rectangle,
|
||||
_color: Option<Color>,
|
||||
_rotation: Radians,
|
||||
_opacity: f32,
|
||||
) {
|
||||
}
|
||||
fn into_geometry(self) -> Self::Geometry {}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,7 +2,9 @@
|
|||
#[cfg(feature = "image")]
|
||||
pub use ::image as image_rs;
|
||||
|
||||
use crate::core::{image, svg, Color, Radians, Rectangle};
|
||||
use crate::core::image;
|
||||
use crate::core::svg;
|
||||
use crate::core::Rectangle;
|
||||
|
||||
/// A raster or vector image.
|
||||
#[derive(Debug, Clone, PartialEq)]
|
||||
|
|
@ -11,22 +13,7 @@ pub enum Image {
|
|||
Raster(image::Image, Rectangle),
|
||||
|
||||
/// A vector image.
|
||||
Vector {
|
||||
/// The handle of a vector image.
|
||||
handle: svg::Handle,
|
||||
|
||||
/// The [`Color`] filter
|
||||
color: Option<Color>,
|
||||
|
||||
/// The bounds of the image.
|
||||
bounds: Rectangle,
|
||||
|
||||
/// The rotation of the image.
|
||||
rotation: Radians,
|
||||
|
||||
/// The opacity of the image.
|
||||
opacity: f32,
|
||||
},
|
||||
Vector(svg::Svg, Rectangle),
|
||||
}
|
||||
|
||||
impl Image {
|
||||
|
|
@ -34,9 +21,7 @@ impl Image {
|
|||
pub fn bounds(&self) -> Rectangle {
|
||||
match self {
|
||||
Image::Raster(image, bounds) => bounds.rotate(image.rotation),
|
||||
Image::Vector {
|
||||
bounds, rotation, ..
|
||||
} => bounds.rotate(*rotation),
|
||||
Image::Vector(svg, bounds) => bounds.rotate(svg.rotation),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue