summaryrefslogtreecommitdiffstats
path: root/graphics
diff options
context:
space:
mode:
Diffstat (limited to 'graphics')
-rw-r--r--graphics/Cargo.toml12
-rw-r--r--graphics/src/image/vector.rs17
-rw-r--r--graphics/src/primitive.rs9
-rw-r--r--graphics/src/widget/canvas/cache.rs7
-rw-r--r--graphics/src/widget/canvas/stroke.rs18
5 files changed, 17 insertions, 46 deletions
diff --git a/graphics/Cargo.toml b/graphics/Cargo.toml
index 13ab61d8..a37c99a2 100644
--- a/graphics/Cargo.toml
+++ b/graphics/Cargo.toml
@@ -11,7 +11,7 @@ keywords = ["gui", "ui", "graphics", "interface", "widgets"]
categories = ["gui"]
[features]
-svg = ["resvg", "usvg", "tiny-skia"]
+svg = ["resvg"]
image = ["png", "jpeg", "jpeg_rayon", "gif", "webp", "bmp"]
png = ["image_rs/png"]
jpeg = ["image_rs/jpeg"]
@@ -71,15 +71,7 @@ default-features = false
optional = true
[dependencies.resvg]
-version = "0.18"
-optional = true
-
-[dependencies.usvg]
-version = "0.18"
-optional = true
-
-[dependencies.tiny-skia]
-version = "0.6"
+version = "0.29"
optional = true
[dependencies.kamadak-exif]
diff --git a/graphics/src/image/vector.rs b/graphics/src/image/vector.rs
index 82d77aff..c950ccd6 100644
--- a/graphics/src/image/vector.rs
+++ b/graphics/src/image/vector.rs
@@ -5,6 +5,8 @@ use crate::Color;
use iced_native::svg;
use iced_native::Size;
+use resvg::tiny_skia;
+use resvg::usvg;
use std::collections::{HashMap, HashSet};
use std::fs;
@@ -21,7 +23,7 @@ impl Svg {
pub fn viewport_dimensions(&self) -> Size<u32> {
match self {
Svg::Loaded(tree) => {
- let size = tree.svg_node().size;
+ let size = tree.size;
Size::new(size.width() as u32, size.height() as u32)
}
@@ -51,20 +53,14 @@ impl<T: Storage> Cache<T> {
let svg = match handle.data() {
svg::Data::Path(path) => {
let tree = fs::read_to_string(path).ok().and_then(|contents| {
- usvg::Tree::from_str(
- &contents,
- &usvg::Options::default().to_ref(),
- )
- .ok()
+ usvg::Tree::from_str(&contents, &usvg::Options::default())
+ .ok()
});
tree.map(Svg::Loaded).unwrap_or(Svg::NotFound)
}
svg::Data::Bytes(bytes) => {
- match usvg::Tree::from_data(
- bytes,
- &usvg::Options::default().to_ref(),
- ) {
+ match usvg::Tree::from_data(bytes, &usvg::Options::default()) {
Ok(tree) => Svg::Loaded(tree),
Err(_) => Svg::NotFound,
}
@@ -125,6 +121,7 @@ impl<T: Storage> Cache<T> {
} else {
usvg::FitTo::Height(height)
},
+ tiny_skia::Transform::default(),
img.as_mut(),
)?;
diff --git a/graphics/src/primitive.rs b/graphics/src/primitive.rs
index 5a163a2f..cef422a2 100644
--- a/graphics/src/primitive.rs
+++ b/graphics/src/primitive.rs
@@ -9,9 +9,10 @@ use crate::triangle;
use std::sync::Arc;
/// A rendering primitive.
-#[derive(Debug, Clone)]
+#[derive(Debug, Clone, Default)]
pub enum Primitive {
/// An empty primitive
+ #[default]
None,
/// A group of primitives
Group {
@@ -117,9 +118,3 @@ pub enum Primitive {
cache: Arc<Primitive>,
},
}
-
-impl Default for Primitive {
- fn default() -> Primitive {
- Primitive::None
- }
-}
diff --git a/graphics/src/widget/canvas/cache.rs b/graphics/src/widget/canvas/cache.rs
index 52217bbb..678b0f92 100644
--- a/graphics/src/widget/canvas/cache.rs
+++ b/graphics/src/widget/canvas/cache.rs
@@ -4,7 +4,9 @@ use crate::Primitive;
use iced_native::Size;
use std::{cell::RefCell, sync::Arc};
+#[derive(Default)]
enum State {
+ #[default]
Empty,
Filled {
bounds: Size,
@@ -12,11 +14,6 @@ enum State {
},
}
-impl Default for State {
- fn default() -> Self {
- State::Empty
- }
-}
/// A simple cache that stores generated [`Geometry`] to avoid recomputation.
///
/// A [`Cache`] will not redraw its geometry unless the dimensions of its layer
diff --git a/graphics/src/widget/canvas/stroke.rs b/graphics/src/widget/canvas/stroke.rs
index 4c19251d..49f5701c 100644
--- a/graphics/src/widget/canvas/stroke.rs
+++ b/graphics/src/widget/canvas/stroke.rs
@@ -59,9 +59,10 @@ impl<'a> Default for Stroke<'a> {
}
/// The shape used at the end of open subpaths when they are stroked.
-#[derive(Debug, Clone, Copy)]
+#[derive(Debug, Clone, Copy, Default)]
pub enum LineCap {
/// The stroke for each sub-path does not extend beyond its two endpoints.
+ #[default]
Butt,
/// At the end of each sub-path, the shape representing the stroke will be
/// extended by a square.
@@ -71,12 +72,6 @@ pub enum LineCap {
Round,
}
-impl Default for LineCap {
- fn default() -> LineCap {
- LineCap::Butt
- }
-}
-
impl From<LineCap> for lyon::tessellation::LineCap {
fn from(line_cap: LineCap) -> lyon::tessellation::LineCap {
match line_cap {
@@ -89,9 +84,10 @@ impl From<LineCap> for lyon::tessellation::LineCap {
/// The shape used at the corners of paths or basic shapes when they are
/// stroked.
-#[derive(Debug, Clone, Copy)]
+#[derive(Debug, Clone, Copy, Default)]
pub enum LineJoin {
/// A sharp corner.
+ #[default]
Miter,
/// A round corner.
Round,
@@ -99,12 +95,6 @@ pub enum LineJoin {
Bevel,
}
-impl Default for LineJoin {
- fn default() -> LineJoin {
- LineJoin::Miter
- }
-}
-
impl From<LineJoin> for lyon::tessellation::LineJoin {
fn from(line_join: LineJoin) -> lyon::tessellation::LineJoin {
match line_join {