Unify web and ggez tour examples 🎉
This commit is contained in:
parent
dd093c79d7
commit
f9de39ddaa
40 changed files with 166 additions and 669 deletions
19
src/color.rs
Normal file
19
src/color.rs
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
/// A color in the sRGB color space.
|
||||
#[derive(Debug, Clone, Copy, PartialEq)]
|
||||
#[allow(missing_docs)]
|
||||
pub struct Color {
|
||||
pub r: f32,
|
||||
pub g: f32,
|
||||
pub b: f32,
|
||||
pub a: f32,
|
||||
}
|
||||
|
||||
impl Color {
|
||||
/// The black color.
|
||||
pub const BLACK: Color = Color {
|
||||
r: 0.0,
|
||||
g: 0.0,
|
||||
b: 0.0,
|
||||
a: 1.0,
|
||||
};
|
||||
}
|
||||
|
|
@ -223,7 +223,10 @@ impl<'a, Message, Renderer> Element<'a, Message, Renderer> {
|
|||
}
|
||||
}
|
||||
|
||||
pub(crate) fn compute_layout(&self, renderer: &Renderer) -> result::Layout {
|
||||
pub(crate) fn compute_layout(
|
||||
&self,
|
||||
renderer: &mut Renderer,
|
||||
) -> result::Layout {
|
||||
let node = self.widget.node(renderer);
|
||||
|
||||
node.0.compute_layout(geometry::Size::undefined()).unwrap()
|
||||
|
|
@ -264,7 +267,7 @@ impl<'a, A, B, Renderer> Widget<B, Renderer> for Map<'a, A, B, Renderer>
|
|||
where
|
||||
A: Copy,
|
||||
{
|
||||
fn node(&self, renderer: &Renderer) -> Node {
|
||||
fn node(&self, renderer: &mut Renderer) -> Node {
|
||||
self.widget.node(renderer)
|
||||
}
|
||||
|
||||
|
|
@ -337,7 +340,7 @@ impl<'a, Message, Renderer> Widget<Message, Renderer>
|
|||
where
|
||||
Renderer: renderer::Debugger,
|
||||
{
|
||||
fn node(&self, renderer: &Renderer) -> Node {
|
||||
fn node(&self, renderer: &mut Renderer) -> Node {
|
||||
self.element.widget.node(renderer)
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -200,6 +200,7 @@ pub mod input;
|
|||
pub mod renderer;
|
||||
pub mod widget;
|
||||
|
||||
mod color;
|
||||
mod element;
|
||||
mod event;
|
||||
mod hasher;
|
||||
|
|
@ -215,6 +216,7 @@ mod vector;
|
|||
#[doc(no_inline)]
|
||||
pub use stretch::{geometry::Size, number::Number};
|
||||
|
||||
pub use color::Color;
|
||||
pub use element::Element;
|
||||
pub use event::Event;
|
||||
pub use hasher::Hasher;
|
||||
|
|
|
|||
|
|
@ -69,7 +69,7 @@ impl<'a, Message, Renderer> UserInterface<'a, Message, Renderer> {
|
|||
/// let user_interface = UserInterface::build(
|
||||
/// counter.view(),
|
||||
/// cache,
|
||||
/// &renderer,
|
||||
/// &mut renderer,
|
||||
/// );
|
||||
///
|
||||
/// // Update and draw the user interface here...
|
||||
|
|
@ -82,7 +82,7 @@ impl<'a, Message, Renderer> UserInterface<'a, Message, Renderer> {
|
|||
pub fn build<E: Into<Element<'a, Message, Renderer>>>(
|
||||
root: E,
|
||||
cache: Cache,
|
||||
renderer: &Renderer,
|
||||
renderer: &mut Renderer,
|
||||
) -> Self {
|
||||
let root = root.into();
|
||||
|
||||
|
|
@ -153,7 +153,7 @@ impl<'a, Message, Renderer> UserInterface<'a, Message, Renderer> {
|
|||
/// let mut user_interface = UserInterface::build(
|
||||
/// counter.view(),
|
||||
/// cache,
|
||||
/// &renderer,
|
||||
/// &mut renderer,
|
||||
/// );
|
||||
///
|
||||
/// // Update the user interface
|
||||
|
|
@ -236,7 +236,7 @@ impl<'a, Message, Renderer> UserInterface<'a, Message, Renderer> {
|
|||
/// let mut user_interface = UserInterface::build(
|
||||
/// counter.view(),
|
||||
/// cache,
|
||||
/// &renderer,
|
||||
/// &mut renderer,
|
||||
/// );
|
||||
///
|
||||
/// let messages = user_interface.update(events.drain(..));
|
||||
|
|
@ -302,7 +302,7 @@ impl Cache {
|
|||
|
||||
Cache {
|
||||
hash: hasher.finish(),
|
||||
layout: root.compute_layout(&()),
|
||||
layout: root.compute_layout(&mut ()),
|
||||
cursor_position: Point::new(0.0, 0.0),
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -59,7 +59,7 @@ pub trait Widget<Message, Renderer>: std::fmt::Debug {
|
|||
/// [`Node`]: ../struct.Node.html
|
||||
/// [`Widget`]: trait.Widget.html
|
||||
/// [`Layout`]: ../struct.Layout.html
|
||||
fn node(&self, renderer: &Renderer) -> Node;
|
||||
fn node(&self, renderer: &mut Renderer) -> Node;
|
||||
|
||||
/// Draws the [`Widget`] using the associated `Renderer`.
|
||||
///
|
||||
|
|
|
|||
|
|
@ -133,7 +133,7 @@ where
|
|||
Renderer: self::Renderer,
|
||||
Message: Copy + std::fmt::Debug,
|
||||
{
|
||||
fn node(&self, _renderer: &Renderer) -> Node {
|
||||
fn node(&self, _renderer: &mut Renderer) -> Node {
|
||||
Node::new(self.style.height(50))
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -98,7 +98,7 @@ where
|
|||
Color: 'static + Copy + std::fmt::Debug,
|
||||
Renderer: self::Renderer + text::Renderer<Color>,
|
||||
{
|
||||
fn node(&self, renderer: &Renderer) -> Node {
|
||||
fn node(&self, renderer: &mut Renderer) -> Node {
|
||||
Row::<(), Renderer>::new()
|
||||
.spacing(15)
|
||||
.align_items(Align::Center)
|
||||
|
|
|
|||
|
|
@ -136,7 +136,7 @@ impl<'a, Message, Renderer> Column<'a, Message, Renderer> {
|
|||
impl<'a, Message, Renderer> Widget<Message, Renderer>
|
||||
for Column<'a, Message, Renderer>
|
||||
{
|
||||
fn node(&self, renderer: &Renderer) -> Node {
|
||||
fn node(&self, renderer: &mut Renderer) -> Node {
|
||||
let mut children: Vec<Node> = self
|
||||
.children
|
||||
.iter()
|
||||
|
|
|
|||
|
|
@ -99,7 +99,7 @@ where
|
|||
Renderer: self::Renderer<I>,
|
||||
I: Clone,
|
||||
{
|
||||
fn node(&self, renderer: &Renderer) -> Node {
|
||||
fn node(&self, renderer: &mut Renderer) -> Node {
|
||||
renderer.node(
|
||||
self.style,
|
||||
&self.image,
|
||||
|
|
@ -144,7 +144,7 @@ pub trait Renderer<I> {
|
|||
/// [`Style`]: ../../struct.Style.html
|
||||
/// [`Image`]: struct.Image.html
|
||||
fn node(
|
||||
&self,
|
||||
&mut self,
|
||||
style: Style,
|
||||
image: &I,
|
||||
width: Option<u16>,
|
||||
|
|
|
|||
|
|
@ -111,7 +111,7 @@ where
|
|||
Renderer: self::Renderer + text::Renderer<Color>,
|
||||
Message: Copy + std::fmt::Debug,
|
||||
{
|
||||
fn node(&self, renderer: &Renderer) -> Node {
|
||||
fn node(&self, renderer: &mut Renderer) -> Node {
|
||||
Row::<(), Renderer>::new()
|
||||
.spacing(15)
|
||||
.align_items(Align::Center)
|
||||
|
|
|
|||
|
|
@ -133,7 +133,7 @@ impl<'a, Message, Renderer> Row<'a, Message, Renderer> {
|
|||
impl<'a, Message, Renderer> Widget<Message, Renderer>
|
||||
for Row<'a, Message, Renderer>
|
||||
{
|
||||
fn node(&self, renderer: &Renderer) -> Node {
|
||||
fn node(&self, renderer: &mut Renderer) -> Node {
|
||||
let mut children: Vec<Node> = self
|
||||
.children
|
||||
.iter()
|
||||
|
|
|
|||
|
|
@ -107,7 +107,7 @@ impl<'a, Message, Renderer> Widget<Message, Renderer> for Slider<'a, Message>
|
|||
where
|
||||
Renderer: self::Renderer,
|
||||
{
|
||||
fn node(&self, _renderer: &Renderer) -> Node {
|
||||
fn node(&self, _renderer: &mut Renderer) -> Node {
|
||||
Node::new(self.style.height(25))
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -113,7 +113,7 @@ where
|
|||
Color: Copy + std::fmt::Debug,
|
||||
Renderer: self::Renderer<Color>,
|
||||
{
|
||||
fn node(&self, renderer: &Renderer) -> Node {
|
||||
fn node(&self, renderer: &mut Renderer) -> Node {
|
||||
renderer.node(self.style, &self.content, self.size)
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue