Restore canvas::Program API
This commit is contained in:
parent
3d17cf8790
commit
b972ebca8f
12 changed files with 71 additions and 53 deletions
|
|
@ -1,7 +1,9 @@
|
||||||
use std::{f32::consts::PI, time::Instant};
|
use std::{f32::consts::PI, time::Instant};
|
||||||
|
|
||||||
use iced::mouse;
|
use iced::mouse;
|
||||||
use iced::widget::canvas::{self, stroke, Cache, Canvas, Frame, Path, Stroke};
|
use iced::widget::canvas::{
|
||||||
|
self, stroke, Cache, Canvas, Frame, Geometry, Path, Stroke,
|
||||||
|
};
|
||||||
use iced::{Element, Length, Point, Rectangle, Renderer, Subscription, Theme};
|
use iced::{Element, Length, Point, Rectangle, Renderer, Subscription, Theme};
|
||||||
|
|
||||||
pub fn main() -> iced::Result {
|
pub fn main() -> iced::Result {
|
||||||
|
|
@ -55,11 +57,11 @@ impl<Message> canvas::Program<Message> for Arc {
|
||||||
fn draw(
|
fn draw(
|
||||||
&self,
|
&self,
|
||||||
_state: &Self::State,
|
_state: &Self::State,
|
||||||
renderer: &mut Renderer,
|
renderer: &Renderer,
|
||||||
theme: &Theme,
|
theme: &Theme,
|
||||||
bounds: Rectangle,
|
bounds: Rectangle,
|
||||||
_cursor: mouse::Cursor,
|
_cursor: mouse::Cursor,
|
||||||
) {
|
) -> Vec<Geometry> {
|
||||||
let geometry = self.cache.draw(renderer, bounds.size(), |frame| {
|
let geometry = self.cache.draw(renderer, bounds.size(), |frame| {
|
||||||
let palette = theme.palette();
|
let palette = theme.palette();
|
||||||
|
|
||||||
|
|
@ -102,6 +104,6 @@ impl<Message> canvas::Program<Message> for Arc {
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
renderer.draw_geometry([geometry]);
|
vec![geometry]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -52,7 +52,9 @@ impl Example {
|
||||||
mod bezier {
|
mod bezier {
|
||||||
use iced::mouse;
|
use iced::mouse;
|
||||||
use iced::widget::canvas::event::{self, Event};
|
use iced::widget::canvas::event::{self, Event};
|
||||||
use iced::widget::canvas::{self, frame, Canvas, Frame, Path, Stroke};
|
use iced::widget::canvas::{
|
||||||
|
self, frame, Canvas, Frame, Geometry, Path, Stroke,
|
||||||
|
};
|
||||||
use iced::{Element, Length, Point, Rectangle, Renderer, Theme};
|
use iced::{Element, Length, Point, Rectangle, Renderer, Theme};
|
||||||
|
|
||||||
#[derive(Default)]
|
#[derive(Default)]
|
||||||
|
|
@ -138,11 +140,11 @@ mod bezier {
|
||||||
fn draw(
|
fn draw(
|
||||||
&self,
|
&self,
|
||||||
state: &Self::State,
|
state: &Self::State,
|
||||||
renderer: &mut Renderer,
|
renderer: &Renderer,
|
||||||
_theme: &Theme,
|
_theme: &Theme,
|
||||||
bounds: Rectangle,
|
bounds: Rectangle,
|
||||||
cursor: mouse::Cursor,
|
cursor: mouse::Cursor,
|
||||||
) {
|
) -> Vec<Geometry> {
|
||||||
let content =
|
let content =
|
||||||
self.state.cache.draw(renderer, bounds.size(), |frame| {
|
self.state.cache.draw(renderer, bounds.size(), |frame| {
|
||||||
Curve::draw_all(self.curves, frame);
|
Curve::draw_all(self.curves, frame);
|
||||||
|
|
@ -153,10 +155,10 @@ mod bezier {
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
renderer.draw_geometry([content]);
|
|
||||||
|
|
||||||
if let Some(pending) = state {
|
if let Some(pending) = state {
|
||||||
pending.draw(renderer, bounds, cursor);
|
vec![content, pending.draw(renderer, bounds, cursor)]
|
||||||
|
} else {
|
||||||
|
vec![content]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -203,10 +205,10 @@ mod bezier {
|
||||||
impl Pending {
|
impl Pending {
|
||||||
fn draw(
|
fn draw(
|
||||||
&self,
|
&self,
|
||||||
renderer: &mut Renderer,
|
renderer: &Renderer,
|
||||||
bounds: Rectangle,
|
bounds: Rectangle,
|
||||||
cursor: mouse::Cursor,
|
cursor: mouse::Cursor,
|
||||||
) {
|
) -> Geometry {
|
||||||
let mut frame = frame(renderer, bounds.size());
|
let mut frame = frame(renderer, bounds.size());
|
||||||
|
|
||||||
if let Some(cursor_position) = cursor.position_in(bounds) {
|
if let Some(cursor_position) = cursor.position_in(bounds) {
|
||||||
|
|
@ -227,7 +229,7 @@ mod bezier {
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
renderer.draw_geometry([frame]);
|
frame.into()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,8 @@
|
||||||
use iced::alignment;
|
use iced::alignment;
|
||||||
use iced::mouse;
|
use iced::mouse;
|
||||||
use iced::widget::canvas::{stroke, Cache, Frame, LineCap, Path, Stroke};
|
use iced::widget::canvas::{
|
||||||
|
stroke, Cache, Frame, Geometry, LineCap, Path, Stroke,
|
||||||
|
};
|
||||||
use iced::widget::{canvas, container};
|
use iced::widget::{canvas, container};
|
||||||
use iced::{
|
use iced::{
|
||||||
Degrees, Element, Font, Length, Point, Rectangle, Renderer, Subscription,
|
Degrees, Element, Font, Length, Point, Rectangle, Renderer, Subscription,
|
||||||
|
|
@ -82,11 +84,11 @@ impl<Message> canvas::Program<Message> for Clock {
|
||||||
fn draw(
|
fn draw(
|
||||||
&self,
|
&self,
|
||||||
_state: &Self::State,
|
_state: &Self::State,
|
||||||
renderer: &mut Renderer,
|
renderer: &Renderer,
|
||||||
theme: &Theme,
|
theme: &Theme,
|
||||||
bounds: Rectangle,
|
bounds: Rectangle,
|
||||||
_cursor: mouse::Cursor,
|
_cursor: mouse::Cursor,
|
||||||
) {
|
) -> Vec<Geometry> {
|
||||||
let clock = self.clock.draw(renderer, bounds.size(), |frame| {
|
let clock = self.clock.draw(renderer, bounds.size(), |frame| {
|
||||||
let palette = theme.extended_palette();
|
let palette = theme.extended_palette();
|
||||||
|
|
||||||
|
|
@ -163,7 +165,7 @@ impl<Message> canvas::Program<Message> for Clock {
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
renderer.draw_geometry([clock]);
|
vec![clock]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
use iced::alignment::{self, Alignment};
|
use iced::alignment::{self, Alignment};
|
||||||
use iced::mouse;
|
use iced::mouse;
|
||||||
use iced::widget::canvas::{self, Canvas, Frame, Path};
|
use iced::widget::canvas::{self, Canvas, Frame, Geometry, Path};
|
||||||
use iced::widget::{column, row, text, Slider};
|
use iced::widget::{column, row, text, Slider};
|
||||||
use iced::{
|
use iced::{
|
||||||
Color, Element, Font, Length, Pixels, Point, Rectangle, Renderer, Size,
|
Color, Element, Font, Length, Pixels, Point, Rectangle, Renderer, Size,
|
||||||
|
|
@ -252,18 +252,18 @@ impl<Message> canvas::Program<Message> for Theme {
|
||||||
fn draw(
|
fn draw(
|
||||||
&self,
|
&self,
|
||||||
_state: &Self::State,
|
_state: &Self::State,
|
||||||
renderer: &mut Renderer,
|
renderer: &Renderer,
|
||||||
theme: &iced::Theme,
|
theme: &iced::Theme,
|
||||||
bounds: Rectangle,
|
bounds: Rectangle,
|
||||||
_cursor: mouse::Cursor,
|
_cursor: mouse::Cursor,
|
||||||
) {
|
) -> Vec<Geometry> {
|
||||||
let theme = self.canvas_cache.draw(renderer, bounds.size(), |frame| {
|
let theme = self.canvas_cache.draw(renderer, bounds.size(), |frame| {
|
||||||
let palette = theme.extended_palette();
|
let palette = theme.extended_palette();
|
||||||
|
|
||||||
self.draw(frame, palette.background.base.text);
|
self.draw(frame, palette.background.base.text);
|
||||||
});
|
});
|
||||||
|
|
||||||
renderer.draw_geometry([theme]);
|
vec![theme]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -193,7 +193,9 @@ mod grid {
|
||||||
use iced::touch;
|
use iced::touch;
|
||||||
use iced::widget::canvas;
|
use iced::widget::canvas;
|
||||||
use iced::widget::canvas::event::{self, Event};
|
use iced::widget::canvas::event::{self, Event};
|
||||||
use iced::widget::canvas::{frame, Cache, Canvas, Frame, Path, Text};
|
use iced::widget::canvas::{
|
||||||
|
frame, Cache, Canvas, Frame, Geometry, Path, Text,
|
||||||
|
};
|
||||||
use iced::{
|
use iced::{
|
||||||
Color, Element, Length, Point, Rectangle, Renderer, Size, Theme, Vector,
|
Color, Element, Length, Point, Rectangle, Renderer, Size, Theme, Vector,
|
||||||
};
|
};
|
||||||
|
|
@ -516,11 +518,11 @@ mod grid {
|
||||||
fn draw(
|
fn draw(
|
||||||
&self,
|
&self,
|
||||||
_interaction: &Interaction,
|
_interaction: &Interaction,
|
||||||
renderer: &mut Renderer,
|
renderer: &Renderer,
|
||||||
_theme: &Theme,
|
_theme: &Theme,
|
||||||
bounds: Rectangle,
|
bounds: Rectangle,
|
||||||
cursor: mouse::Cursor,
|
cursor: mouse::Cursor,
|
||||||
) {
|
) -> Vec<Geometry> {
|
||||||
let center = Vector::new(bounds.width / 2.0, bounds.height / 2.0);
|
let center = Vector::new(bounds.width / 2.0, bounds.height / 2.0);
|
||||||
|
|
||||||
let life = self.life_cache.draw(renderer, bounds.size(), |frame| {
|
let life = self.life_cache.draw(renderer, bounds.size(), |frame| {
|
||||||
|
|
@ -638,9 +640,9 @@ mod grid {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
renderer.draw_geometry([life, grid, overlay]);
|
vec![life, grid, overlay]
|
||||||
} else {
|
} else {
|
||||||
renderer.draw_geometry([life, overlay]);
|
vec![life, overlay]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -292,11 +292,11 @@ fn square<'a>(size: impl Into<Length> + Copy) -> Element<'a, Message> {
|
||||||
fn draw(
|
fn draw(
|
||||||
&self,
|
&self,
|
||||||
_state: &Self::State,
|
_state: &Self::State,
|
||||||
renderer: &mut Renderer,
|
renderer: &Renderer,
|
||||||
theme: &Theme,
|
theme: &Theme,
|
||||||
bounds: Rectangle,
|
bounds: Rectangle,
|
||||||
_cursor: mouse::Cursor,
|
_cursor: mouse::Cursor,
|
||||||
) {
|
) -> Vec<canvas::Geometry> {
|
||||||
use canvas::Frame;
|
use canvas::Frame;
|
||||||
|
|
||||||
let mut frame = canvas::frame(renderer, bounds.size());
|
let mut frame = canvas::frame(renderer, bounds.size());
|
||||||
|
|
@ -309,7 +309,7 @@ fn square<'a>(size: impl Into<Length> + Copy) -> Element<'a, Message> {
|
||||||
palette.background.strong.color,
|
palette.background.strong.color,
|
||||||
);
|
);
|
||||||
|
|
||||||
renderer.draw_geometry([frame]);
|
vec![frame.into()]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@ use iced::mouse;
|
||||||
use iced::touch;
|
use iced::touch;
|
||||||
use iced::widget::canvas::event;
|
use iced::widget::canvas::event;
|
||||||
use iced::widget::canvas::stroke::{self, Stroke};
|
use iced::widget::canvas::stroke::{self, Stroke};
|
||||||
use iced::widget::canvas::{self, Canvas};
|
use iced::widget::canvas::{self, Canvas, Geometry};
|
||||||
use iced::{Color, Element, Length, Point, Rectangle, Renderer, Theme};
|
use iced::{Color, Element, Length, Point, Rectangle, Renderer, Theme};
|
||||||
|
|
||||||
use std::collections::HashMap;
|
use std::collections::HashMap;
|
||||||
|
|
@ -83,11 +83,11 @@ impl canvas::Program<Message> for Multitouch {
|
||||||
fn draw(
|
fn draw(
|
||||||
&self,
|
&self,
|
||||||
_state: &Self::State,
|
_state: &Self::State,
|
||||||
renderer: &mut Renderer,
|
renderer: &Renderer,
|
||||||
_theme: &Theme,
|
_theme: &Theme,
|
||||||
bounds: Rectangle,
|
bounds: Rectangle,
|
||||||
_cursor: mouse::Cursor,
|
_cursor: mouse::Cursor,
|
||||||
) {
|
) -> Vec<Geometry> {
|
||||||
use canvas::Frame;
|
use canvas::Frame;
|
||||||
|
|
||||||
let fingerweb = self.cache.draw(renderer, bounds.size(), |frame| {
|
let fingerweb = self.cache.draw(renderer, bounds.size(), |frame| {
|
||||||
|
|
@ -156,6 +156,6 @@ impl canvas::Program<Message> for Multitouch {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
renderer.draw_geometry([fingerweb]);
|
vec![fingerweb]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
use iced::mouse;
|
use iced::mouse;
|
||||||
use iced::widget::canvas::event::{self, Event};
|
use iced::widget::canvas::event::{self, Event};
|
||||||
use iced::widget::canvas::{self, Canvas};
|
use iced::widget::canvas::{self, Canvas, Geometry};
|
||||||
use iced::widget::{column, row, slider, text};
|
use iced::widget::{column, row, slider, text};
|
||||||
use iced::{Color, Length, Point, Rectangle, Renderer, Size, Theme};
|
use iced::{Color, Length, Point, Rectangle, Renderer, Size, Theme};
|
||||||
|
|
||||||
|
|
@ -107,11 +107,11 @@ impl canvas::Program<Message> for SierpinskiGraph {
|
||||||
fn draw(
|
fn draw(
|
||||||
&self,
|
&self,
|
||||||
_state: &Self::State,
|
_state: &Self::State,
|
||||||
renderer: &mut Renderer,
|
renderer: &Renderer,
|
||||||
_theme: &Theme,
|
_theme: &Theme,
|
||||||
bounds: Rectangle,
|
bounds: Rectangle,
|
||||||
_cursor: mouse::Cursor,
|
_cursor: mouse::Cursor,
|
||||||
) {
|
) -> Vec<Geometry> {
|
||||||
use canvas::Frame;
|
use canvas::Frame;
|
||||||
|
|
||||||
let geom = self.cache.draw(renderer, bounds.size(), |frame| {
|
let geom = self.cache.draw(renderer, bounds.size(), |frame| {
|
||||||
|
|
@ -141,7 +141,7 @@ impl canvas::Program<Message> for SierpinskiGraph {
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
renderer.draw_geometry([geom]);
|
vec![geom]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@ use iced::mouse;
|
||||||
use iced::widget::canvas;
|
use iced::widget::canvas;
|
||||||
use iced::widget::canvas::gradient;
|
use iced::widget::canvas::gradient;
|
||||||
use iced::widget::canvas::stroke::{self, Stroke};
|
use iced::widget::canvas::stroke::{self, Stroke};
|
||||||
use iced::widget::canvas::Path;
|
use iced::widget::canvas::{Geometry, Path};
|
||||||
use iced::window;
|
use iced::window;
|
||||||
use iced::{
|
use iced::{
|
||||||
Color, Element, Length, Point, Rectangle, Renderer, Size, Subscription,
|
Color, Element, Length, Point, Rectangle, Renderer, Size, Subscription,
|
||||||
|
|
@ -126,11 +126,11 @@ impl<Message> canvas::Program<Message> for State {
|
||||||
fn draw(
|
fn draw(
|
||||||
&self,
|
&self,
|
||||||
_state: &Self::State,
|
_state: &Self::State,
|
||||||
renderer: &mut Renderer,
|
renderer: &Renderer,
|
||||||
_theme: &Theme,
|
_theme: &Theme,
|
||||||
bounds: Rectangle,
|
bounds: Rectangle,
|
||||||
_cursor: mouse::Cursor,
|
_cursor: mouse::Cursor,
|
||||||
) {
|
) -> Vec<Geometry> {
|
||||||
use canvas::Frame;
|
use canvas::Frame;
|
||||||
use std::f32::consts::PI;
|
use std::f32::consts::PI;
|
||||||
|
|
||||||
|
|
@ -198,7 +198,7 @@ impl<Message> canvas::Program<Message> for State {
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
renderer.draw_geometry([background, system]);
|
vec![background, system]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -124,11 +124,11 @@ impl<Message> canvas::Program<Message> for State {
|
||||||
fn draw(
|
fn draw(
|
||||||
&self,
|
&self,
|
||||||
_state: &Self::State,
|
_state: &Self::State,
|
||||||
renderer: &mut Renderer,
|
renderer: &Renderer,
|
||||||
theme: &Theme,
|
theme: &Theme,
|
||||||
bounds: Rectangle,
|
bounds: Rectangle,
|
||||||
_cursor: mouse::Cursor,
|
_cursor: mouse::Cursor,
|
||||||
) {
|
) -> Vec<canvas::Geometry> {
|
||||||
use canvas::Frame;
|
use canvas::Frame;
|
||||||
|
|
||||||
let geometry = self.cache.draw(renderer, bounds.size(), |frame| {
|
let geometry = self.cache.draw(renderer, bounds.size(), |frame| {
|
||||||
|
|
@ -155,7 +155,7 @@ impl<Message> canvas::Program<Message> for State {
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
renderer.draw_geometry([geometry]);
|
vec![geometry]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -26,13 +26,17 @@ use std::marker::PhantomData;
|
||||||
/// change or it is explicitly cleared.
|
/// change or it is explicitly cleared.
|
||||||
pub type Cache<Renderer = crate::Renderer> = geometry::Cache<Renderer>;
|
pub type Cache<Renderer = crate::Renderer> = geometry::Cache<Renderer>;
|
||||||
|
|
||||||
|
/// The geometry supported by a renderer.
|
||||||
|
pub type Geometry<Renderer = crate::Renderer> =
|
||||||
|
<Renderer as geometry::Renderer>::Geometry;
|
||||||
|
|
||||||
/// A widget capable of drawing 2D graphics.
|
/// A widget capable of drawing 2D graphics.
|
||||||
///
|
///
|
||||||
/// ## Drawing a simple circle
|
/// ## Drawing a simple circle
|
||||||
/// 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
|
||||||
/// # use iced_widget::canvas::{self, frame, Canvas, Fill, Frame, Path, Program};
|
/// # use iced_widget::canvas::{self, frame, Canvas, Fill, Frame, Geometry, Path, Program};
|
||||||
/// # use iced_widget::core::{Color, Rectangle};
|
/// # use iced_widget::core::{Color, Rectangle};
|
||||||
/// # use iced_widget::core::mouse;
|
/// # use iced_widget::core::mouse;
|
||||||
/// # use iced_widget::{Renderer, Theme};
|
/// # use iced_widget::{Renderer, Theme};
|
||||||
|
|
@ -47,7 +51,7 @@ pub type Cache<Renderer = crate::Renderer> = geometry::Cache<Renderer>;
|
||||||
/// impl Program<()> for Circle {
|
/// impl Program<()> for Circle {
|
||||||
/// type State = ();
|
/// type State = ();
|
||||||
///
|
///
|
||||||
/// fn draw(&self, _state: &(), renderer: &mut Renderer, _theme: &Theme, bounds: Rectangle, _cursor: mouse::Cursor) {
|
/// fn draw(&self, _state: &(), renderer: &Renderer, _theme: &Theme, bounds: Rectangle, _cursor: mouse::Cursor) -> Vec<Geometry> {
|
||||||
/// // We prepare a new `Frame`
|
/// // We prepare a new `Frame`
|
||||||
/// let mut frame = frame(renderer, bounds.size());
|
/// let mut frame = frame(renderer, bounds.size());
|
||||||
///
|
///
|
||||||
|
|
@ -58,7 +62,7 @@ pub type Cache<Renderer = crate::Renderer> = geometry::Cache<Renderer>;
|
||||||
/// frame.fill(&circle, Color::BLACK);
|
/// frame.fill(&circle, Color::BLACK);
|
||||||
///
|
///
|
||||||
/// // Finally, we produce the geometry
|
/// // Finally, we produce the geometry
|
||||||
/// renderer.draw_geometry([frame]);
|
/// vec![frame.into()]
|
||||||
/// }
|
/// }
|
||||||
/// }
|
/// }
|
||||||
///
|
///
|
||||||
|
|
@ -215,7 +219,12 @@ where
|
||||||
renderer.with_transformation(
|
renderer.with_transformation(
|
||||||
Transformation::translate(bounds.x, bounds.y),
|
Transformation::translate(bounds.x, bounds.y),
|
||||||
|renderer| {
|
|renderer| {
|
||||||
self.program.draw(state, renderer, theme, bounds, cursor);
|
let layers =
|
||||||
|
self.program.draw(state, renderer, theme, bounds, cursor);
|
||||||
|
|
||||||
|
for layer in layers {
|
||||||
|
renderer.draw_geometry(layer);
|
||||||
|
}
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
use crate::canvas::event::{self, Event};
|
use crate::canvas::event::{self, Event};
|
||||||
use crate::canvas::mouse;
|
use crate::canvas::mouse;
|
||||||
|
use crate::canvas::Geometry;
|
||||||
use crate::core::Rectangle;
|
use crate::core::Rectangle;
|
||||||
use crate::graphics::geometry;
|
use crate::graphics::geometry;
|
||||||
|
|
||||||
|
|
@ -41,11 +42,11 @@ where
|
||||||
fn draw(
|
fn draw(
|
||||||
&self,
|
&self,
|
||||||
state: &Self::State,
|
state: &Self::State,
|
||||||
renderer: &mut Renderer,
|
renderer: &Renderer,
|
||||||
theme: &Theme,
|
theme: &Theme,
|
||||||
bounds: Rectangle,
|
bounds: Rectangle,
|
||||||
cursor: mouse::Cursor,
|
cursor: mouse::Cursor,
|
||||||
);
|
) -> Vec<Geometry<Renderer>>;
|
||||||
|
|
||||||
/// Returns the current mouse interaction of the [`Program`].
|
/// Returns the current mouse interaction of the [`Program`].
|
||||||
///
|
///
|
||||||
|
|
@ -83,12 +84,12 @@ where
|
||||||
fn draw(
|
fn draw(
|
||||||
&self,
|
&self,
|
||||||
state: &Self::State,
|
state: &Self::State,
|
||||||
renderer: &mut Renderer,
|
renderer: &Renderer,
|
||||||
theme: &Theme,
|
theme: &Theme,
|
||||||
bounds: Rectangle,
|
bounds: Rectangle,
|
||||||
cursor: mouse::Cursor,
|
cursor: mouse::Cursor,
|
||||||
) {
|
) -> Vec<Geometry<Renderer>> {
|
||||||
T::draw(self, state, renderer, theme, bounds, cursor);
|
T::draw(self, state, renderer, theme, bounds, cursor)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn mouse_interaction(
|
fn mouse_interaction(
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue