Move Canvas and QRCode to iced crate

Rename `canvas` modules to `geometry` in graphics subcrates
This commit is contained in:
Héctor Ramón Jiménez 2023-03-03 04:57:55 +01:00
parent d13d19ba35
commit 6cc48b5c62
No known key found for this signature in database
GPG key ID: 140CC052C94F138E
39 changed files with 140 additions and 148 deletions

View file

@ -17,9 +17,9 @@ image = ["iced_renderer/image", "image_rs"]
# Enables the `Svg` widget # Enables the `Svg` widget
svg = ["iced_renderer/svg"] svg = ["iced_renderer/svg"]
# Enables the `Canvas` widget # Enables the `Canvas` widget
canvas = ["iced_renderer/canvas"] canvas = ["iced_renderer/geometry"]
# Enables the `QRCode` widget # Enables the `QRCode` widget
qr_code = ["iced_renderer/qr_code"] qr_code = ["canvas", "qrcode"]
# Enables a debug view in native platforms (press F12) # Enables a debug view in native platforms (press F12)
debug = ["iced_winit/debug"] debug = ["iced_winit/debug"]
# Enables `tokio` as the `executor::Default` on native platforms # Enables `tokio` as the `executor::Default` on native platforms
@ -69,6 +69,11 @@ version = "0.24"
package = "image" package = "image"
optional = true optional = true
[dependencies.qrcode]
version = "0.12"
optional = true
default-features = false
[package.metadata.docs.rs] [package.metadata.docs.rs]
rustdoc-args = ["--cfg", "docsrs"] rustdoc-args = ["--cfg", "docsrs"]
features = ["image", "svg", "canvas", "qr_code"] features = ["image", "svg", "canvas", "qr_code"]

View file

@ -69,7 +69,7 @@ impl Application for Arc {
} }
} }
impl<Message> canvas::Program<Message, Renderer> for Arc { impl<Message> canvas::Program<Message> for Arc {
type State = (); type State = ();
fn draw( fn draw(

View file

@ -92,7 +92,7 @@ mod bezier {
curves: &'a [Curve], curves: &'a [Curve],
} }
impl<'a> canvas::Program<Curve, Renderer> for Bezier<'a> { impl<'a> canvas::Program<Curve> for Bezier<'a> {
type State = Option<Pending>; type State = Option<Pending>;
fn update( fn update(

View file

@ -237,7 +237,7 @@ impl Theme {
} }
} }
impl<Message> canvas::Program<Message, Renderer> for Theme { impl<Message> canvas::Program<Message> for Theme {
type State = (); type State = ();
fn draw( fn draw(

View file

@ -393,7 +393,7 @@ mod grid {
} }
} }
impl canvas::Program<Message, Renderer> for Grid { impl canvas::Program<Message> for Grid {
type State = Interaction; type State = Interaction;
fn update( fn update(

View file

@ -97,7 +97,7 @@ struct SierpinskiGraph {
cache: canvas::Cache, cache: canvas::Cache,
} }
impl canvas::Program<Message, Renderer> for SierpinskiGraph { impl canvas::Program<Message> for SierpinskiGraph {
type State = (); type State = ();
fn update( fn update(

View file

@ -150,7 +150,7 @@ impl State {
} }
} }
impl<Message> canvas::Program<Message, Renderer> for State { impl<Message> canvas::Program<Message> for State {
type State = (); type State = ();
fn draw( fn draw(

View file

@ -24,7 +24,7 @@ bmp = ["image_rs/bmp"]
hdr = ["image_rs/hdr"] hdr = ["image_rs/hdr"]
dds = ["image_rs/dds"] dds = ["image_rs/dds"]
farbfeld = ["image_rs/farbfeld"] farbfeld = ["image_rs/farbfeld"]
canvas = ["iced_native/canvas"] geometry = ["lyon_path"]
opengl = [] opengl = []
image_rs = ["kamadak-exif"] image_rs = ["kamadak-exif"]
@ -65,6 +65,10 @@ optional = true
version = "0.5" version = "0.5"
optional = true optional = true
[dependencies.lyon_path]
version = "1"
optional = true
[package.metadata.docs.rs] [package.metadata.docs.rs]
rustdoc-args = ["--cfg", "docsrs"] rustdoc-args = ["--cfg", "docsrs"]
all-features = true all-features = true

View file

@ -10,8 +10,6 @@ use std::borrow::Cow;
/// ///
/// [`Renderer`]: crate::Renderer /// [`Renderer`]: crate::Renderer
pub trait Backend { pub trait Backend {
type Geometry: Into<crate::Primitive>;
/// Trims the measurements cache. /// Trims the measurements cache.
/// ///
/// This method is currently necessary to properly trim the text cache in /// This method is currently necessary to properly trim the text cache in

36
graphics/src/geometry.rs Normal file
View file

@ -0,0 +1,36 @@
//! Draw 2D graphics for your users.
//!
//! A [`Canvas`] widget can be used to draw different kinds of 2D shapes in a
//! [`Frame`]. It can be used for animation, data visualization, game graphics,
//! and more!
pub mod fill;
pub mod path;
pub mod stroke;
mod style;
mod text;
pub use fill::Fill;
pub use path::Path;
pub use stroke::{LineCap, LineDash, LineJoin, Stroke};
pub use style::Style;
pub use text::Text;
pub use iced_native::gradient::{self, Gradient};
use crate::Primitive;
#[derive(Debug, Clone)]
pub struct Geometry(pub Primitive);
impl From<Geometry> for Primitive {
fn from(geometry: Geometry) -> Self {
geometry.0
}
}
pub trait Renderer: iced_native::Renderer {
type Geometry;
fn draw(&mut self, geometry: Vec<Self::Geometry>);
}

View file

@ -1,8 +1,7 @@
//! Fill [crate::widget::canvas::Geometry] with a certain style. //! Fill [crate::widget::canvas::Geometry] with a certain style.
use crate::widget::canvas::Gradient; use crate::{Color, Gradient};
use crate::Color;
pub use crate::widget::canvas::Style; pub use crate::geometry::Style;
/// The style used to fill geometry. /// The style used to fill geometry.
#[derive(Debug, Clone)] #[derive(Debug, Clone)]

View file

@ -1,4 +1,4 @@
use crate::widget::canvas::path::{arc, Arc, Path}; use crate::geometry::path::{arc, Arc, Path};
use crate::{Point, Size}; use crate::{Point, Size};
use lyon_path::builder::{self, SvgPathBuilder}; use lyon_path::builder::{self, SvgPathBuilder};

View file

@ -1,5 +1,5 @@
//! Create lines from a [crate::widget::canvas::Path] and assigns them various attributes/styles. //! Create lines from a [crate::widget::canvas::Path] and assigns them various attributes/styles.
pub use crate::widget::canvas::Style; pub use crate::geometry::Style;
use crate::Color; use crate::Color;

View file

@ -1,5 +1,4 @@
use crate::widget::canvas::Gradient; use crate::{Color, Gradient};
use crate::Color;
/// The coloring style of some drawing. /// The coloring style of some drawing.
#[derive(Debug, Clone, PartialEq)] #[derive(Debug, Clone, PartialEq)]

View file

@ -33,6 +33,9 @@ pub mod primitive;
pub mod renderer; pub mod renderer;
pub mod window; pub mod window;
#[cfg(feature = "geometry")]
pub mod geometry;
pub use antialiasing::Antialiasing; pub use antialiasing::Antialiasing;
pub use backend::Backend; pub use backend::Backend;
pub use error::Error; pub use error::Error;
@ -41,6 +44,9 @@ pub use renderer::Renderer;
pub use transformation::Transformation; pub use transformation::Transformation;
pub use viewport::Viewport; pub use viewport::Viewport;
#[cfg(feature = "geometry")]
pub use geometry::Geometry;
pub use iced_native::alignment; pub use iced_native::alignment;
pub use iced_native::text; pub use iced_native::text;
pub use iced_native::{ pub use iced_native::{

View file

@ -215,15 +215,15 @@ where
} }
} }
#[cfg(feature = "canvas")] #[cfg(feature = "geometry")]
impl<B, T> iced_native::widget::canvas::Renderer for Renderer<B, T> impl<B, T> crate::geometry::Renderer for Renderer<B, T>
where where
B: Backend, B: Backend,
{ {
type Geometry = B::Geometry; type Geometry = crate::Geometry;
fn draw(&mut self, layers: Vec<Self::Geometry>) { fn draw(&mut self, layers: Vec<Self::Geometry>) {
self.primitives self.primitives
.extend(layers.into_iter().map(B::Geometry::into)); .extend(layers.into_iter().map(crate::Geometry::into));
} }
} }

View file

@ -8,7 +8,6 @@ license = "MIT"
repository = "https://github.com/iced-rs/iced" repository = "https://github.com/iced-rs/iced"
[features] [features]
canvas = ["lyon_path"]
debug = [] debug = []
[dependencies] [dependencies]
@ -29,7 +28,3 @@ features = ["thread-pool"]
[dependencies.iced_style] [dependencies.iced_style]
version = "0.7" version = "0.7"
path = "../style" path = "../style"
[dependencies.lyon_path]
version = "1"
optional = true

View file

@ -6,8 +6,7 @@ edition = "2021"
[features] [features]
image = ["iced_wgpu/image", "iced_tiny_skia/image"] image = ["iced_wgpu/image", "iced_tiny_skia/image"]
svg = ["iced_wgpu/svg", "iced_tiny_skia/svg"] svg = ["iced_wgpu/svg", "iced_tiny_skia/svg"]
canvas = ["iced_wgpu/canvas", "iced_tiny_skia/canvas"] geometry = ["iced_wgpu/geometry", "iced_tiny_skia/geometry"]
qr_code = ["canvas", "qrcode"]
tracing = ["iced_wgpu/tracing"] tracing = ["iced_wgpu/tracing"]
[dependencies] [dependencies]
@ -31,8 +30,3 @@ iced_wgpu = { version = "0.9", path = "../wgpu" }
[target.'cfg(target_arch = "wasm32")'.dependencies] [target.'cfg(target_arch = "wasm32")'.dependencies]
iced_wgpu = { version = "0.9", path = "../wgpu", features = ["webgl"] } iced_wgpu = { version = "0.9", path = "../wgpu", features = ["webgl"] }
[dependencies.qrcode]
version = "0.12"
optional = true
default-features = false

View file

@ -1,4 +1,4 @@
use crate::{Font, Geometry, Point, Size}; use crate::{Font, Point, Size};
use iced_graphics::backend; use iced_graphics::backend;
use iced_graphics::text; use iced_graphics::text;
@ -12,8 +12,6 @@ pub enum Backend {
} }
impl iced_graphics::Backend for Backend { impl iced_graphics::Backend for Backend {
type Geometry = Geometry;
fn trim_measurements(&mut self) { fn trim_measurements(&mut self) {
match self { match self {
Self::Wgpu(backend) => backend.trim_measurements(), Self::Wgpu(backend) => backend.trim_measurements(),

View file

@ -2,22 +2,13 @@ mod cache;
pub use cache::Cache; pub use cache::Cache;
pub use iced_native::widget::canvas::event::{self, Event}; pub use iced_graphics::geometry::*;
pub use iced_native::widget::canvas::fill::{self, Fill};
pub use iced_native::widget::canvas::gradient::{self, Gradient};
pub use iced_native::widget::canvas::path::{self, Path};
pub use iced_native::widget::canvas::stroke::{self, Stroke};
pub use iced_native::widget::canvas::{
Canvas, Cursor, LineCap, LineDash, LineJoin, Program, Renderer, Style, Text,
};
use crate::{Backend, Point, Rectangle, Size, Vector}; use crate::{Backend, Point, Rectangle, Size, Vector};
pub use crate::Geometry;
pub enum Frame { pub enum Frame {
Wgpu(iced_wgpu::canvas::Frame), Wgpu(iced_wgpu::geometry::Frame),
TinySkia(iced_tiny_skia::canvas::Frame), TinySkia(iced_tiny_skia::geometry::Frame),
} }
macro_rules! delegate { macro_rules! delegate {
@ -33,10 +24,10 @@ impl Frame {
pub fn new<Theme>(renderer: &crate::Renderer<Theme>, size: Size) -> Self { pub fn new<Theme>(renderer: &crate::Renderer<Theme>, size: Size) -> Self {
match renderer.backend() { match renderer.backend() {
Backend::Wgpu(_) => { Backend::Wgpu(_) => {
Frame::Wgpu(iced_wgpu::canvas::Frame::new(size)) Frame::Wgpu(iced_wgpu::geometry::Frame::new(size))
} }
Backend::TinySkia(_) => { Backend::TinySkia(_) => {
Frame::TinySkia(iced_tiny_skia::canvas::Frame::new(size)) Frame::TinySkia(iced_tiny_skia::geometry::Frame::new(size))
} }
} }
} }
@ -131,10 +122,10 @@ impl Frame {
pub fn with_clip(&mut self, region: Rectangle, f: impl FnOnce(&mut Frame)) { pub fn with_clip(&mut self, region: Rectangle, f: impl FnOnce(&mut Frame)) {
let mut frame = match self { let mut frame = match self {
Self::Wgpu(_) => { Self::Wgpu(_) => {
Self::Wgpu(iced_wgpu::canvas::Frame::new(region.size())) Self::Wgpu(iced_wgpu::geometry::Frame::new(region.size()))
} }
Self::TinySkia(_) => Self::TinySkia( Self::TinySkia(_) => Self::TinySkia(
iced_tiny_skia::canvas::Frame::new(region.size()), iced_tiny_skia::geometry::Frame::new(region.size()),
), ),
}; };

View file

@ -1,4 +1,4 @@
use crate::widget::canvas::{Frame, Geometry}; use crate::geometry::{Frame, Geometry};
use crate::{Primitive, Renderer, Size}; use crate::{Primitive, Renderer, Size};
use std::cell::RefCell; use std::cell::RefCell;

View file

@ -1,6 +1,8 @@
pub mod widget;
pub mod window; pub mod window;
#[cfg(feature = "geometry")]
pub mod geometry;
mod backend; mod backend;
mod settings; mod settings;
@ -19,12 +21,3 @@ pub use iced_graphics::{
/// [`iced`]: https://github.com/iced-rs/iced /// [`iced`]: https://github.com/iced-rs/iced
pub type Renderer<Theme = iced_native::Theme> = pub type Renderer<Theme = iced_native::Theme> =
iced_graphics::Renderer<Backend, Theme>; iced_graphics::Renderer<Backend, Theme>;
#[derive(Debug, Clone)]
pub struct Geometry(pub(crate) Primitive);
impl From<Geometry> for Primitive {
fn from(geometry: Geometry) -> Self {
geometry.0
}
}

View file

@ -165,14 +165,14 @@ pub use vertical_slider::VerticalSlider;
#[cfg(feature = "canvas")] #[cfg(feature = "canvas")]
#[cfg_attr(docsrs, doc(cfg(feature = "canvas")))] #[cfg_attr(docsrs, doc(cfg(feature = "canvas")))]
pub use iced_renderer::widget::canvas; pub mod canvas;
#[cfg(feature = "canvas")] #[cfg(feature = "canvas")]
#[cfg_attr(docsrs, doc(cfg(feature = "canvas")))] #[cfg_attr(docsrs, doc(cfg(feature = "canvas")))]
/// Creates a new [`Canvas`]. /// Creates a new [`Canvas`].
pub fn canvas<P, Message, Renderer>(program: P) -> Canvas<Message, Renderer, P> pub fn canvas<P, Message, Renderer>(program: P) -> Canvas<P, Message, Renderer>
where where
Renderer: canvas::Renderer, Renderer: iced_renderer::geometry::Renderer,
P: canvas::Program<Message, Renderer>, P: canvas::Program<Message, Renderer>,
{ {
Canvas::new(program) Canvas::new(program)
@ -193,7 +193,7 @@ pub mod image {
#[cfg(feature = "qr_code")] #[cfg(feature = "qr_code")]
#[cfg_attr(docsrs, doc(cfg(feature = "qr_code")))] #[cfg_attr(docsrs, doc(cfg(feature = "qr_code")))]
pub use iced_renderer::widget::qr_code; pub mod qr_code;
#[cfg(feature = "svg")] #[cfg(feature = "svg")]
#[cfg_attr(docsrs, doc(cfg(feature = "svg")))] #[cfg_attr(docsrs, doc(cfg(feature = "svg")))]

View file

@ -1,35 +1,22 @@
//! Draw 2D graphics for your users. //! Draw 2D graphics for your users.
//!
//! A [`Canvas`] widget can be used to draw different kinds of 2D shapes in a
//! [`Frame`]. It can be used for animation, data visualization, game graphics,
//! and more!
pub mod event; pub mod event;
pub mod fill;
pub mod path;
pub mod stroke;
mod cursor; mod cursor;
mod program; mod program;
mod style;
mod text;
pub use crate::gradient::{self, Gradient};
pub use cursor::Cursor; pub use cursor::Cursor;
pub use event::Event; pub use event::Event;
pub use fill::Fill;
pub use path::Path;
pub use program::Program; pub use program::Program;
pub use stroke::{LineCap, LineDash, LineJoin, Stroke};
pub use style::Style;
pub use text::Text;
use crate::layout::{self, Layout}; pub use iced_renderer::geometry::*;
use crate::mouse;
use crate::renderer; use crate::{Length, Point, Rectangle, Size, Vector};
use crate::widget::tree::{self, Tree};
use crate::{ use iced_native::layout::{self, Layout};
Clipboard, Element, Length, Point, Rectangle, Shell, Size, Vector, Widget, use iced_native::mouse;
}; use iced_native::renderer;
use iced_native::widget::tree::{self, Tree};
use iced_native::{Clipboard, Element, Shell, Widget};
use std::marker::PhantomData; use std::marker::PhantomData;
@ -39,14 +26,8 @@ use std::marker::PhantomData;
/// If you want to get a quick overview, here's how we can draw a simple circle: /// If you want to get a quick overview, here's how we can draw a simple circle:
/// ///
/// ```no_run /// ```no_run
/// # mod iced {
/// # pub mod widget {
/// # pub use iced_graphics::widget::canvas;
/// # }
/// # pub use iced_native::{Color, Rectangle, Theme};
/// # }
/// use iced::widget::canvas::{self, Canvas, Cursor, Fill, Frame, Geometry, Path, Program}; /// use iced::widget::canvas::{self, Canvas, Cursor, Fill, Frame, Geometry, Path, Program};
/// use iced::{Color, Rectangle, Theme}; /// use iced::{Color, Rectangle, Theme, Renderer};
/// ///
/// // First, we define the data we need for drawing /// // First, we define the data we need for drawing
/// #[derive(Debug)] /// #[derive(Debug)]
@ -58,9 +39,9 @@ use std::marker::PhantomData;
/// impl Program<()> for Circle { /// impl Program<()> for Circle {
/// type State = (); /// type State = ();
/// ///
/// fn draw(&self, _state: &(), _theme: &Theme, bounds: Rectangle, _cursor: Cursor) -> Vec<Geometry>{ /// fn draw(&self, _state: &(), renderer: &Renderer, _theme: &Theme, bounds: Rectangle, _cursor: Cursor) -> Vec<Geometry>{
/// // We prepare a new `Frame` /// // We prepare a new `Frame`
/// let mut frame = Frame::new(bounds.size()); /// let mut frame = Frame::new(renderer, bounds.size());
/// ///
/// // We create a `Path` representing a simple circle /// // We create a `Path` representing a simple circle
/// let circle = Path::circle(frame.center(), self.radius); /// let circle = Path::circle(frame.center(), self.radius);
@ -77,9 +58,9 @@ use std::marker::PhantomData;
/// let canvas = Canvas::new(Circle { radius: 50.0 }); /// let canvas = Canvas::new(Circle { radius: 50.0 });
/// ``` /// ```
#[derive(Debug)] #[derive(Debug)]
pub struct Canvas<Message, Renderer, P> pub struct Canvas<P, Message, Renderer = crate::Renderer>
where where
Renderer: self::Renderer, Renderer: iced_renderer::geometry::Renderer,
P: Program<Message, Renderer>, P: Program<Message, Renderer>,
{ {
width: Length, width: Length,
@ -89,9 +70,9 @@ where
theme_: PhantomData<Renderer>, theme_: PhantomData<Renderer>,
} }
impl<Message, Renderer, P> Canvas<Message, Renderer, P> impl<P, Message, Renderer> Canvas<P, Message, Renderer>
where where
Renderer: self::Renderer, Renderer: iced_renderer::geometry::Renderer,
P: Program<Message, Renderer>, P: Program<Message, Renderer>,
{ {
const DEFAULT_SIZE: f32 = 100.0; const DEFAULT_SIZE: f32 = 100.0;
@ -120,10 +101,10 @@ where
} }
} }
impl<Message, Renderer, P> Widget<Message, Renderer> impl<P, Message, Renderer> Widget<Message, Renderer>
for Canvas<Message, Renderer, P> for Canvas<P, Message, Renderer>
where where
Renderer: self::Renderer, Renderer: iced_renderer::geometry::Renderer,
P: Program<Message, Renderer>, P: Program<Message, Renderer>,
{ {
fn tag(&self) -> tree::Tag { fn tag(&self) -> tree::Tag {
@ -157,7 +138,7 @@ where
fn on_event( fn on_event(
&mut self, &mut self,
tree: &mut Tree, tree: &mut Tree,
event: crate::Event, event: iced_native::Event,
layout: Layout<'_>, layout: Layout<'_>,
cursor_position: Point, cursor_position: Point,
_renderer: &Renderer, _renderer: &Renderer,
@ -167,9 +148,13 @@ where
let bounds = layout.bounds(); let bounds = layout.bounds();
let canvas_event = match event { let canvas_event = match event {
crate::Event::Mouse(mouse_event) => Some(Event::Mouse(mouse_event)), iced_native::Event::Mouse(mouse_event) => {
crate::Event::Touch(touch_event) => Some(Event::Touch(touch_event)), Some(Event::Mouse(mouse_event))
crate::Event::Keyboard(keyboard_event) => { }
iced_native::Event::Touch(touch_event) => {
Some(Event::Touch(touch_event))
}
iced_native::Event::Keyboard(keyboard_event) => {
Some(Event::Keyboard(keyboard_event)) Some(Event::Keyboard(keyboard_event))
} }
_ => None, _ => None,
@ -238,22 +223,16 @@ where
} }
} }
impl<'a, Message, Renderer, P> From<Canvas<Message, Renderer, P>> impl<'a, P, Message, Renderer> From<Canvas<P, Message, Renderer>>
for Element<'a, Message, Renderer> for Element<'a, Message, Renderer>
where where
Message: 'a, Message: 'a,
Renderer: 'a + self::Renderer, Renderer: 'a + iced_renderer::geometry::Renderer,
P: Program<Message, Renderer> + 'a, P: Program<Message, Renderer> + 'a,
{ {
fn from( fn from(
canvas: Canvas<Message, Renderer, P>, canvas: Canvas<P, Message, Renderer>,
) -> Element<'a, Message, Renderer> { ) -> Element<'a, Message, Renderer> {
Element::new(canvas) Element::new(canvas)
} }
} }
pub trait Renderer: crate::Renderer {
type Geometry;
fn draw(&mut self, geometry: Vec<Self::Geometry>);
}

View file

@ -1,9 +1,9 @@
//! Handle events of a canvas. //! Handle events of a canvas.
use crate::keyboard; use iced_native::keyboard;
use crate::mouse; use iced_native::mouse;
use crate::touch; use iced_native::touch;
pub use crate::event::Status; pub use iced_native::event::Status;
/// A [`Canvas`] event. /// A [`Canvas`] event.
/// ///

View file

@ -1,6 +1,6 @@
use crate::widget::canvas::event::{self, Event}; use crate::widget::canvas::event::{self, Event};
use crate::widget::canvas::mouse; use crate::widget::canvas::mouse;
use crate::widget::canvas::{Cursor, Renderer}; use crate::widget::canvas::Cursor;
use crate::Rectangle; use crate::Rectangle;
/// The state and logic of a [`Canvas`]. /// The state and logic of a [`Canvas`].
@ -9,9 +9,9 @@ use crate::Rectangle;
/// application. /// application.
/// ///
/// [`Canvas`]: crate::widget::Canvas /// [`Canvas`]: crate::widget::Canvas
pub trait Program<Message, Renderer> pub trait Program<Message, Renderer = crate::Renderer>
where where
Renderer: self::Renderer, Renderer: iced_renderer::geometry::Renderer,
{ {
/// The internal state mutated by the [`Program`]. /// The internal state mutated by the [`Program`].
type State: Default + 'static; type State: Default + 'static;
@ -71,7 +71,7 @@ where
impl<Message, Renderer, T> Program<Message, Renderer> for &T impl<Message, Renderer, T> Program<Message, Renderer> for &T
where where
Renderer: self::Renderer, Renderer: iced_renderer::geometry::Renderer,
T: Program<Message, Renderer>, T: Program<Message, Renderer>,
{ {
type State = T::State; type State = T::State;

View file

@ -2,9 +2,8 @@
use crate::widget::canvas; use crate::widget::canvas;
use crate::Renderer; use crate::Renderer;
use iced_graphics::renderer;
use iced_native::layout; use iced_native::layout;
use iced_native::renderer;
use iced_native::widget::Tree; use iced_native::widget::Tree;
use iced_native::{ use iced_native::{
Color, Element, Layout, Length, Point, Rectangle, Size, Vector, Widget, Color, Element, Layout, Length, Point, Rectangle, Size, Vector, Widget,

View file

@ -6,7 +6,7 @@ edition = "2021"
[features] [features]
image = [] image = []
svg = [] svg = []
canvas = ["iced_native/canvas"] geometry = ["iced_graphics/geometry"]
[dependencies] [dependencies]
raw-window-handle = "0.5" raw-window-handle = "0.5"

View file

@ -436,8 +436,6 @@ fn adjust_clip_mask(
} }
impl iced_graphics::Backend for Backend { impl iced_graphics::Backend for Backend {
type Geometry = ();
fn trim_measurements(&mut self) { fn trim_measurements(&mut self) {
self.text_pipeline.trim_measurement_cache(); self.text_pipeline.trim_measurement_cache();
} }

View file

@ -1,9 +1,9 @@
use crate::{Point, Primitive, Rectangle, Size, Vector}; use crate::{Point, Primitive, Rectangle, Size, Vector};
use iced_native::widget::canvas::fill::{self, Fill}; use iced_graphics::geometry::fill::{self, Fill};
use iced_native::widget::canvas::stroke::{self, Stroke}; use iced_graphics::geometry::stroke::{self, Stroke};
use iced_native::widget::canvas::{Path, Style, Text}; use iced_graphics::geometry::{Path, Style, Text};
use iced_native::Gradient; use iced_graphics::Gradient;
pub struct Frame { pub struct Frame {
size: Size, size: Size,
@ -152,7 +152,7 @@ impl Frame {
} }
fn convert_path(path: &Path) -> tiny_skia::Path { fn convert_path(path: &Path) -> tiny_skia::Path {
use iced_native::widget::canvas::path::lyon_path; use iced_graphics::geometry::path::lyon_path;
let mut builder = tiny_skia::PathBuilder::new(); let mut builder = tiny_skia::PathBuilder::new();
let mut last_point = Default::default(); let mut last_point = Default::default();

View file

@ -4,8 +4,8 @@ mod backend;
mod settings; mod settings;
mod text; mod text;
#[cfg(feature = "canvas")] #[cfg(feature = "geometry")]
pub mod canvas; pub mod geometry;
pub use iced_graphics::primitive; pub use iced_graphics::primitive;

View file

@ -21,7 +21,7 @@ bmp = ["iced_graphics/bmp"]
hdr = ["iced_graphics/hdr"] hdr = ["iced_graphics/hdr"]
dds = ["iced_graphics/dds"] dds = ["iced_graphics/dds"]
farbfeld = ["iced_graphics/farbfeld"] farbfeld = ["iced_graphics/farbfeld"]
canvas = ["iced_graphics/canvas", "lyon"] geometry = ["iced_graphics/geometry", "lyon"]
spirv = ["wgpu/spirv"] spirv = ["wgpu/spirv"]
webgl = ["wgpu/webgl"] webgl = ["wgpu/webgl"]

View file

@ -329,8 +329,6 @@ impl Backend {
} }
impl iced_graphics::Backend for Backend { impl iced_graphics::Backend for Backend {
type Geometry = ();
fn trim_measurements(&mut self) { fn trim_measurements(&mut self) {
self.text_pipeline.trim_measurement_cache() self.text_pipeline.trim_measurement_cache()
} }

View file

@ -1,9 +1,9 @@
use iced_graphics::primitive::{self, Primitive}; use iced_graphics::geometry::fill::{self, Fill};
use iced_native::widget::canvas::fill::{self, Fill}; use iced_graphics::geometry::{
use iced_native::widget::canvas::{
LineCap, LineDash, LineJoin, Path, Stroke, Style, Text, LineCap, LineDash, LineJoin, Path, Stroke, Style, Text,
}; };
use iced_native::{Gradient, Point, Rectangle, Size, Vector}; use iced_graphics::primitive::{self, Primitive};
use iced_graphics::{Gradient, Point, Rectangle, Size, Vector};
use lyon::geom::euclid; use lyon::geom::euclid;
use lyon::tessellation; use lyon::tessellation;

View file

@ -41,8 +41,8 @@ pub mod layer;
pub mod settings; pub mod settings;
pub mod window; pub mod window;
#[cfg(feature = "canvas")] #[cfg(feature = "geometry")]
pub mod canvas; pub mod geometry;
mod backend; mod backend;
mod buffer; mod buffer;