Move Canvas and QRCode to iced crate
Rename `canvas` modules to `geometry` in graphics subcrates
This commit is contained in:
parent
d13d19ba35
commit
6cc48b5c62
39 changed files with 140 additions and 148 deletions
|
|
@ -17,9 +17,9 @@ image = ["iced_renderer/image", "image_rs"]
|
|||
# Enables the `Svg` widget
|
||||
svg = ["iced_renderer/svg"]
|
||||
# Enables the `Canvas` widget
|
||||
canvas = ["iced_renderer/canvas"]
|
||||
canvas = ["iced_renderer/geometry"]
|
||||
# Enables the `QRCode` widget
|
||||
qr_code = ["iced_renderer/qr_code"]
|
||||
qr_code = ["canvas", "qrcode"]
|
||||
# Enables a debug view in native platforms (press F12)
|
||||
debug = ["iced_winit/debug"]
|
||||
# Enables `tokio` as the `executor::Default` on native platforms
|
||||
|
|
@ -69,6 +69,11 @@ version = "0.24"
|
|||
package = "image"
|
||||
optional = true
|
||||
|
||||
[dependencies.qrcode]
|
||||
version = "0.12"
|
||||
optional = true
|
||||
default-features = false
|
||||
|
||||
[package.metadata.docs.rs]
|
||||
rustdoc-args = ["--cfg", "docsrs"]
|
||||
features = ["image", "svg", "canvas", "qr_code"]
|
||||
|
|
|
|||
|
|
@ -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 = ();
|
||||
|
||||
fn draw(
|
||||
|
|
|
|||
|
|
@ -92,7 +92,7 @@ mod bezier {
|
|||
curves: &'a [Curve],
|
||||
}
|
||||
|
||||
impl<'a> canvas::Program<Curve, Renderer> for Bezier<'a> {
|
||||
impl<'a> canvas::Program<Curve> for Bezier<'a> {
|
||||
type State = Option<Pending>;
|
||||
|
||||
fn update(
|
||||
|
|
|
|||
|
|
@ -237,7 +237,7 @@ impl Theme {
|
|||
}
|
||||
}
|
||||
|
||||
impl<Message> canvas::Program<Message, Renderer> for Theme {
|
||||
impl<Message> canvas::Program<Message> for Theme {
|
||||
type State = ();
|
||||
|
||||
fn draw(
|
||||
|
|
|
|||
|
|
@ -393,7 +393,7 @@ mod grid {
|
|||
}
|
||||
}
|
||||
|
||||
impl canvas::Program<Message, Renderer> for Grid {
|
||||
impl canvas::Program<Message> for Grid {
|
||||
type State = Interaction;
|
||||
|
||||
fn update(
|
||||
|
|
|
|||
|
|
@ -97,7 +97,7 @@ struct SierpinskiGraph {
|
|||
cache: canvas::Cache,
|
||||
}
|
||||
|
||||
impl canvas::Program<Message, Renderer> for SierpinskiGraph {
|
||||
impl canvas::Program<Message> for SierpinskiGraph {
|
||||
type State = ();
|
||||
|
||||
fn update(
|
||||
|
|
|
|||
|
|
@ -150,7 +150,7 @@ impl State {
|
|||
}
|
||||
}
|
||||
|
||||
impl<Message> canvas::Program<Message, Renderer> for State {
|
||||
impl<Message> canvas::Program<Message> for State {
|
||||
type State = ();
|
||||
|
||||
fn draw(
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@ bmp = ["image_rs/bmp"]
|
|||
hdr = ["image_rs/hdr"]
|
||||
dds = ["image_rs/dds"]
|
||||
farbfeld = ["image_rs/farbfeld"]
|
||||
canvas = ["iced_native/canvas"]
|
||||
geometry = ["lyon_path"]
|
||||
opengl = []
|
||||
image_rs = ["kamadak-exif"]
|
||||
|
||||
|
|
@ -65,6 +65,10 @@ optional = true
|
|||
version = "0.5"
|
||||
optional = true
|
||||
|
||||
[dependencies.lyon_path]
|
||||
version = "1"
|
||||
optional = true
|
||||
|
||||
[package.metadata.docs.rs]
|
||||
rustdoc-args = ["--cfg", "docsrs"]
|
||||
all-features = true
|
||||
|
|
|
|||
|
|
@ -10,8 +10,6 @@ use std::borrow::Cow;
|
|||
///
|
||||
/// [`Renderer`]: crate::Renderer
|
||||
pub trait Backend {
|
||||
type Geometry: Into<crate::Primitive>;
|
||||
|
||||
/// Trims the measurements cache.
|
||||
///
|
||||
/// This method is currently necessary to properly trim the text cache in
|
||||
|
|
|
|||
36
graphics/src/geometry.rs
Normal file
36
graphics/src/geometry.rs
Normal 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>);
|
||||
}
|
||||
|
|
@ -1,8 +1,7 @@
|
|||
//! Fill [crate::widget::canvas::Geometry] with a certain style.
|
||||
use crate::widget::canvas::Gradient;
|
||||
use crate::Color;
|
||||
use crate::{Color, Gradient};
|
||||
|
||||
pub use crate::widget::canvas::Style;
|
||||
pub use crate::geometry::Style;
|
||||
|
||||
/// The style used to fill geometry.
|
||||
#[derive(Debug, Clone)]
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
use crate::widget::canvas::path::{arc, Arc, Path};
|
||||
use crate::geometry::path::{arc, Arc, Path};
|
||||
use crate::{Point, Size};
|
||||
|
||||
use lyon_path::builder::{self, SvgPathBuilder};
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
//! 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;
|
||||
|
||||
|
|
@ -1,5 +1,4 @@
|
|||
use crate::widget::canvas::Gradient;
|
||||
use crate::Color;
|
||||
use crate::{Color, Gradient};
|
||||
|
||||
/// The coloring style of some drawing.
|
||||
#[derive(Debug, Clone, PartialEq)]
|
||||
|
|
@ -33,6 +33,9 @@ pub mod primitive;
|
|||
pub mod renderer;
|
||||
pub mod window;
|
||||
|
||||
#[cfg(feature = "geometry")]
|
||||
pub mod geometry;
|
||||
|
||||
pub use antialiasing::Antialiasing;
|
||||
pub use backend::Backend;
|
||||
pub use error::Error;
|
||||
|
|
@ -41,6 +44,9 @@ pub use renderer::Renderer;
|
|||
pub use transformation::Transformation;
|
||||
pub use viewport::Viewport;
|
||||
|
||||
#[cfg(feature = "geometry")]
|
||||
pub use geometry::Geometry;
|
||||
|
||||
pub use iced_native::alignment;
|
||||
pub use iced_native::text;
|
||||
pub use iced_native::{
|
||||
|
|
|
|||
|
|
@ -215,15 +215,15 @@ where
|
|||
}
|
||||
}
|
||||
|
||||
#[cfg(feature = "canvas")]
|
||||
impl<B, T> iced_native::widget::canvas::Renderer for Renderer<B, T>
|
||||
#[cfg(feature = "geometry")]
|
||||
impl<B, T> crate::geometry::Renderer for Renderer<B, T>
|
||||
where
|
||||
B: Backend,
|
||||
{
|
||||
type Geometry = B::Geometry;
|
||||
type Geometry = crate::Geometry;
|
||||
|
||||
fn draw(&mut self, layers: Vec<Self::Geometry>) {
|
||||
self.primitives
|
||||
.extend(layers.into_iter().map(B::Geometry::into));
|
||||
.extend(layers.into_iter().map(crate::Geometry::into));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -8,7 +8,6 @@ license = "MIT"
|
|||
repository = "https://github.com/iced-rs/iced"
|
||||
|
||||
[features]
|
||||
canvas = ["lyon_path"]
|
||||
debug = []
|
||||
|
||||
[dependencies]
|
||||
|
|
@ -29,7 +28,3 @@ features = ["thread-pool"]
|
|||
[dependencies.iced_style]
|
||||
version = "0.7"
|
||||
path = "../style"
|
||||
|
||||
[dependencies.lyon_path]
|
||||
version = "1"
|
||||
optional = true
|
||||
|
|
|
|||
|
|
@ -6,8 +6,7 @@ edition = "2021"
|
|||
[features]
|
||||
image = ["iced_wgpu/image", "iced_tiny_skia/image"]
|
||||
svg = ["iced_wgpu/svg", "iced_tiny_skia/svg"]
|
||||
canvas = ["iced_wgpu/canvas", "iced_tiny_skia/canvas"]
|
||||
qr_code = ["canvas", "qrcode"]
|
||||
geometry = ["iced_wgpu/geometry", "iced_tiny_skia/geometry"]
|
||||
tracing = ["iced_wgpu/tracing"]
|
||||
|
||||
[dependencies]
|
||||
|
|
@ -31,8 +30,3 @@ iced_wgpu = { version = "0.9", path = "../wgpu" }
|
|||
|
||||
[target.'cfg(target_arch = "wasm32")'.dependencies]
|
||||
iced_wgpu = { version = "0.9", path = "../wgpu", features = ["webgl"] }
|
||||
|
||||
[dependencies.qrcode]
|
||||
version = "0.12"
|
||||
optional = true
|
||||
default-features = false
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
use crate::{Font, Geometry, Point, Size};
|
||||
use crate::{Font, Point, Size};
|
||||
|
||||
use iced_graphics::backend;
|
||||
use iced_graphics::text;
|
||||
|
|
@ -12,8 +12,6 @@ pub enum Backend {
|
|||
}
|
||||
|
||||
impl iced_graphics::Backend for Backend {
|
||||
type Geometry = Geometry;
|
||||
|
||||
fn trim_measurements(&mut self) {
|
||||
match self {
|
||||
Self::Wgpu(backend) => backend.trim_measurements(),
|
||||
|
|
|
|||
|
|
@ -2,22 +2,13 @@ mod cache;
|
|||
|
||||
pub use cache::Cache;
|
||||
|
||||
pub use iced_native::widget::canvas::event::{self, Event};
|
||||
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,
|
||||
};
|
||||
pub use iced_graphics::geometry::*;
|
||||
|
||||
use crate::{Backend, Point, Rectangle, Size, Vector};
|
||||
|
||||
pub use crate::Geometry;
|
||||
|
||||
pub enum Frame {
|
||||
Wgpu(iced_wgpu::canvas::Frame),
|
||||
TinySkia(iced_tiny_skia::canvas::Frame),
|
||||
Wgpu(iced_wgpu::geometry::Frame),
|
||||
TinySkia(iced_tiny_skia::geometry::Frame),
|
||||
}
|
||||
|
||||
macro_rules! delegate {
|
||||
|
|
@ -33,10 +24,10 @@ impl Frame {
|
|||
pub fn new<Theme>(renderer: &crate::Renderer<Theme>, size: Size) -> Self {
|
||||
match renderer.backend() {
|
||||
Backend::Wgpu(_) => {
|
||||
Frame::Wgpu(iced_wgpu::canvas::Frame::new(size))
|
||||
Frame::Wgpu(iced_wgpu::geometry::Frame::new(size))
|
||||
}
|
||||
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)) {
|
||||
let mut frame = match self {
|
||||
Self::Wgpu(_) => {
|
||||
Self::Wgpu(iced_wgpu::canvas::Frame::new(region.size()))
|
||||
Self::Wgpu(iced_wgpu::geometry::Frame::new(region.size()))
|
||||
}
|
||||
Self::TinySkia(_) => Self::TinySkia(
|
||||
iced_tiny_skia::canvas::Frame::new(region.size()),
|
||||
iced_tiny_skia::geometry::Frame::new(region.size()),
|
||||
),
|
||||
};
|
||||
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
use crate::widget::canvas::{Frame, Geometry};
|
||||
use crate::geometry::{Frame, Geometry};
|
||||
use crate::{Primitive, Renderer, Size};
|
||||
|
||||
use std::cell::RefCell;
|
||||
|
|
@ -1,6 +1,8 @@
|
|||
pub mod widget;
|
||||
pub mod window;
|
||||
|
||||
#[cfg(feature = "geometry")]
|
||||
pub mod geometry;
|
||||
|
||||
mod backend;
|
||||
mod settings;
|
||||
|
||||
|
|
@ -19,12 +21,3 @@ pub use iced_graphics::{
|
|||
/// [`iced`]: https://github.com/iced-rs/iced
|
||||
pub type Renderer<Theme = iced_native::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
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -165,14 +165,14 @@ pub use vertical_slider::VerticalSlider;
|
|||
|
||||
#[cfg(feature = "canvas")]
|
||||
#[cfg_attr(docsrs, doc(cfg(feature = "canvas")))]
|
||||
pub use iced_renderer::widget::canvas;
|
||||
pub mod canvas;
|
||||
|
||||
#[cfg(feature = "canvas")]
|
||||
#[cfg_attr(docsrs, doc(cfg(feature = "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
|
||||
Renderer: canvas::Renderer,
|
||||
Renderer: iced_renderer::geometry::Renderer,
|
||||
P: canvas::Program<Message, Renderer>,
|
||||
{
|
||||
Canvas::new(program)
|
||||
|
|
@ -193,7 +193,7 @@ pub mod image {
|
|||
|
||||
#[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_attr(docsrs, doc(cfg(feature = "svg")))]
|
||||
|
|
|
|||
|
|
@ -1,35 +1,22 @@
|
|||
//! 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 fill;
|
||||
pub mod path;
|
||||
pub mod stroke;
|
||||
|
||||
mod cursor;
|
||||
mod program;
|
||||
mod style;
|
||||
mod text;
|
||||
|
||||
pub use crate::gradient::{self, Gradient};
|
||||
pub use cursor::Cursor;
|
||||
pub use event::Event;
|
||||
pub use fill::Fill;
|
||||
pub use path::Path;
|
||||
pub use program::Program;
|
||||
pub use stroke::{LineCap, LineDash, LineJoin, Stroke};
|
||||
pub use style::Style;
|
||||
pub use text::Text;
|
||||
|
||||
use crate::layout::{self, Layout};
|
||||
use crate::mouse;
|
||||
use crate::renderer;
|
||||
use crate::widget::tree::{self, Tree};
|
||||
use crate::{
|
||||
Clipboard, Element, Length, Point, Rectangle, Shell, Size, Vector, Widget,
|
||||
};
|
||||
pub use iced_renderer::geometry::*;
|
||||
|
||||
use crate::{Length, Point, Rectangle, Size, Vector};
|
||||
|
||||
use iced_native::layout::{self, Layout};
|
||||
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;
|
||||
|
||||
|
|
@ -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:
|
||||
///
|
||||
/// ```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::{Color, Rectangle, Theme};
|
||||
/// use iced::{Color, Rectangle, Theme, Renderer};
|
||||
///
|
||||
/// // First, we define the data we need for drawing
|
||||
/// #[derive(Debug)]
|
||||
|
|
@ -58,9 +39,9 @@ use std::marker::PhantomData;
|
|||
/// impl Program<()> for Circle {
|
||||
/// 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`
|
||||
/// let mut frame = Frame::new(bounds.size());
|
||||
/// let mut frame = Frame::new(renderer, bounds.size());
|
||||
///
|
||||
/// // We create a `Path` representing a simple circle
|
||||
/// let circle = Path::circle(frame.center(), self.radius);
|
||||
|
|
@ -77,9 +58,9 @@ use std::marker::PhantomData;
|
|||
/// let canvas = Canvas::new(Circle { radius: 50.0 });
|
||||
/// ```
|
||||
#[derive(Debug)]
|
||||
pub struct Canvas<Message, Renderer, P>
|
||||
pub struct Canvas<P, Message, Renderer = crate::Renderer>
|
||||
where
|
||||
Renderer: self::Renderer,
|
||||
Renderer: iced_renderer::geometry::Renderer,
|
||||
P: Program<Message, Renderer>,
|
||||
{
|
||||
width: Length,
|
||||
|
|
@ -89,9 +70,9 @@ where
|
|||
theme_: PhantomData<Renderer>,
|
||||
}
|
||||
|
||||
impl<Message, Renderer, P> Canvas<Message, Renderer, P>
|
||||
impl<P, Message, Renderer> Canvas<P, Message, Renderer>
|
||||
where
|
||||
Renderer: self::Renderer,
|
||||
Renderer: iced_renderer::geometry::Renderer,
|
||||
P: Program<Message, Renderer>,
|
||||
{
|
||||
const DEFAULT_SIZE: f32 = 100.0;
|
||||
|
|
@ -120,10 +101,10 @@ where
|
|||
}
|
||||
}
|
||||
|
||||
impl<Message, Renderer, P> Widget<Message, Renderer>
|
||||
for Canvas<Message, Renderer, P>
|
||||
impl<P, Message, Renderer> Widget<Message, Renderer>
|
||||
for Canvas<P, Message, Renderer>
|
||||
where
|
||||
Renderer: self::Renderer,
|
||||
Renderer: iced_renderer::geometry::Renderer,
|
||||
P: Program<Message, Renderer>,
|
||||
{
|
||||
fn tag(&self) -> tree::Tag {
|
||||
|
|
@ -157,7 +138,7 @@ where
|
|||
fn on_event(
|
||||
&mut self,
|
||||
tree: &mut Tree,
|
||||
event: crate::Event,
|
||||
event: iced_native::Event,
|
||||
layout: Layout<'_>,
|
||||
cursor_position: Point,
|
||||
_renderer: &Renderer,
|
||||
|
|
@ -167,9 +148,13 @@ where
|
|||
let bounds = layout.bounds();
|
||||
|
||||
let canvas_event = match event {
|
||||
crate::Event::Mouse(mouse_event) => Some(Event::Mouse(mouse_event)),
|
||||
crate::Event::Touch(touch_event) => Some(Event::Touch(touch_event)),
|
||||
crate::Event::Keyboard(keyboard_event) => {
|
||||
iced_native::Event::Mouse(mouse_event) => {
|
||||
Some(Event::Mouse(mouse_event))
|
||||
}
|
||||
iced_native::Event::Touch(touch_event) => {
|
||||
Some(Event::Touch(touch_event))
|
||||
}
|
||||
iced_native::Event::Keyboard(keyboard_event) => {
|
||||
Some(Event::Keyboard(keyboard_event))
|
||||
}
|
||||
_ => 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>
|
||||
where
|
||||
Message: 'a,
|
||||
Renderer: 'a + self::Renderer,
|
||||
Renderer: 'a + iced_renderer::geometry::Renderer,
|
||||
P: Program<Message, Renderer> + 'a,
|
||||
{
|
||||
fn from(
|
||||
canvas: Canvas<Message, Renderer, P>,
|
||||
canvas: Canvas<P, Message, Renderer>,
|
||||
) -> Element<'a, Message, Renderer> {
|
||||
Element::new(canvas)
|
||||
}
|
||||
}
|
||||
|
||||
pub trait Renderer: crate::Renderer {
|
||||
type Geometry;
|
||||
|
||||
fn draw(&mut self, geometry: Vec<Self::Geometry>);
|
||||
}
|
||||
|
|
@ -1,9 +1,9 @@
|
|||
//! Handle events of a canvas.
|
||||
use crate::keyboard;
|
||||
use crate::mouse;
|
||||
use crate::touch;
|
||||
use iced_native::keyboard;
|
||||
use iced_native::mouse;
|
||||
use iced_native::touch;
|
||||
|
||||
pub use crate::event::Status;
|
||||
pub use iced_native::event::Status;
|
||||
|
||||
/// A [`Canvas`] event.
|
||||
///
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
use crate::widget::canvas::event::{self, Event};
|
||||
use crate::widget::canvas::mouse;
|
||||
use crate::widget::canvas::{Cursor, Renderer};
|
||||
use crate::widget::canvas::Cursor;
|
||||
use crate::Rectangle;
|
||||
|
||||
/// The state and logic of a [`Canvas`].
|
||||
|
|
@ -9,9 +9,9 @@ use crate::Rectangle;
|
|||
/// application.
|
||||
///
|
||||
/// [`Canvas`]: crate::widget::Canvas
|
||||
pub trait Program<Message, Renderer>
|
||||
pub trait Program<Message, Renderer = crate::Renderer>
|
||||
where
|
||||
Renderer: self::Renderer,
|
||||
Renderer: iced_renderer::geometry::Renderer,
|
||||
{
|
||||
/// The internal state mutated by the [`Program`].
|
||||
type State: Default + 'static;
|
||||
|
|
@ -71,7 +71,7 @@ where
|
|||
|
||||
impl<Message, Renderer, T> Program<Message, Renderer> for &T
|
||||
where
|
||||
Renderer: self::Renderer,
|
||||
Renderer: iced_renderer::geometry::Renderer,
|
||||
T: Program<Message, Renderer>,
|
||||
{
|
||||
type State = T::State;
|
||||
|
|
@ -2,9 +2,8 @@
|
|||
use crate::widget::canvas;
|
||||
use crate::Renderer;
|
||||
|
||||
use iced_graphics::renderer;
|
||||
|
||||
use iced_native::layout;
|
||||
use iced_native::renderer;
|
||||
use iced_native::widget::Tree;
|
||||
use iced_native::{
|
||||
Color, Element, Layout, Length, Point, Rectangle, Size, Vector, Widget,
|
||||
|
|
@ -6,7 +6,7 @@ edition = "2021"
|
|||
[features]
|
||||
image = []
|
||||
svg = []
|
||||
canvas = ["iced_native/canvas"]
|
||||
geometry = ["iced_graphics/geometry"]
|
||||
|
||||
[dependencies]
|
||||
raw-window-handle = "0.5"
|
||||
|
|
|
|||
|
|
@ -436,8 +436,6 @@ fn adjust_clip_mask(
|
|||
}
|
||||
|
||||
impl iced_graphics::Backend for Backend {
|
||||
type Geometry = ();
|
||||
|
||||
fn trim_measurements(&mut self) {
|
||||
self.text_pipeline.trim_measurement_cache();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,9 +1,9 @@
|
|||
use crate::{Point, Primitive, Rectangle, Size, Vector};
|
||||
|
||||
use iced_native::widget::canvas::fill::{self, Fill};
|
||||
use iced_native::widget::canvas::stroke::{self, Stroke};
|
||||
use iced_native::widget::canvas::{Path, Style, Text};
|
||||
use iced_native::Gradient;
|
||||
use iced_graphics::geometry::fill::{self, Fill};
|
||||
use iced_graphics::geometry::stroke::{self, Stroke};
|
||||
use iced_graphics::geometry::{Path, Style, Text};
|
||||
use iced_graphics::Gradient;
|
||||
|
||||
pub struct Frame {
|
||||
size: Size,
|
||||
|
|
@ -152,7 +152,7 @@ impl Frame {
|
|||
}
|
||||
|
||||
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 last_point = Default::default();
|
||||
|
|
@ -4,8 +4,8 @@ mod backend;
|
|||
mod settings;
|
||||
mod text;
|
||||
|
||||
#[cfg(feature = "canvas")]
|
||||
pub mod canvas;
|
||||
#[cfg(feature = "geometry")]
|
||||
pub mod geometry;
|
||||
|
||||
pub use iced_graphics::primitive;
|
||||
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@ bmp = ["iced_graphics/bmp"]
|
|||
hdr = ["iced_graphics/hdr"]
|
||||
dds = ["iced_graphics/dds"]
|
||||
farbfeld = ["iced_graphics/farbfeld"]
|
||||
canvas = ["iced_graphics/canvas", "lyon"]
|
||||
geometry = ["iced_graphics/geometry", "lyon"]
|
||||
spirv = ["wgpu/spirv"]
|
||||
webgl = ["wgpu/webgl"]
|
||||
|
||||
|
|
|
|||
|
|
@ -329,8 +329,6 @@ impl Backend {
|
|||
}
|
||||
|
||||
impl iced_graphics::Backend for Backend {
|
||||
type Geometry = ();
|
||||
|
||||
fn trim_measurements(&mut self) {
|
||||
self.text_pipeline.trim_measurement_cache()
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,9 +1,9 @@
|
|||
use iced_graphics::primitive::{self, Primitive};
|
||||
use iced_native::widget::canvas::fill::{self, Fill};
|
||||
use iced_native::widget::canvas::{
|
||||
use iced_graphics::geometry::fill::{self, Fill};
|
||||
use iced_graphics::geometry::{
|
||||
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::tessellation;
|
||||
|
|
@ -41,8 +41,8 @@ pub mod layer;
|
|||
pub mod settings;
|
||||
pub mod window;
|
||||
|
||||
#[cfg(feature = "canvas")]
|
||||
pub mod canvas;
|
||||
#[cfg(feature = "geometry")]
|
||||
pub mod geometry;
|
||||
|
||||
mod backend;
|
||||
mod buffer;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue