diff options
| author | 2020-01-02 19:25:00 +0100 | |
|---|---|---|
| committer | 2020-01-02 19:25:00 +0100 | |
| commit | 5ca98b113e49bfb2372b245a985f957611a0a1ac (patch) | |
| tree | 9ea3df7f17b02e9e63914c7d7788082edae3f883 /examples/geometry | |
| parent | 0d620b7701f427ed0091f3640ab9ca0e116eb412 (diff) | |
| download | iced-5ca98b113e49bfb2372b245a985f957611a0a1ac.tar.gz iced-5ca98b113e49bfb2372b245a985f957611a0a1ac.tar.bz2 iced-5ca98b113e49bfb2372b245a985f957611a0a1ac.zip | |
Rename `Geometry2D` to `Mesh2D` and move it to `iced_wgpu`
Diffstat (limited to '')
| -rw-r--r-- | examples/geometry.rs | 194 | 
1 files changed, 88 insertions, 106 deletions
| diff --git a/examples/geometry.rs b/examples/geometry.rs index feb7684e..ae6c9ca0 100644 --- a/examples/geometry.rs +++ b/examples/geometry.rs @@ -11,24 +11,25 @@ mod rainbow {      // if you wish to, by creating your own `Renderer` trait, which could be      // implemented by `iced_wgpu` and other renderers.      use iced_native::{ -        layout,  Element, Geometry2D, Hasher, Layout, Length, -        MouseCursor, Point, Size, Vertex2D, Widget, +        layout, Element, Hasher, Layout, Length, MouseCursor, Point, Size, +        Widget, +    }; +    use iced_wgpu::{ +        triangle::{Mesh2D, Vertex2D}, +        Primitive, Renderer,      }; -    use iced_wgpu::{Primitive, Renderer}; -    pub struct Rainbow { -        dimen: u16, -    } +    pub struct Rainbow;      impl Rainbow { -        pub fn new(dimen: u16) -> Self { -            Self { dimen } +        pub fn new() -> Self { +            Self          }      }      impl<Message> Widget<Message, Renderer> for Rainbow {          fn width(&self) -> Length { -            Length::Shrink +            Length::Fill          }          fn height(&self) -> Length { @@ -38,20 +39,15 @@ mod rainbow {          fn layout(              &self,              _renderer: &Renderer, -            _limits: &layout::Limits, +            limits: &layout::Limits,          ) -> layout::Node { -            layout::Node::new(Size::new( -                f32::from(self.dimen), -                f32::from(self.dimen), -            )) -        } - -        fn hash_layout(&self, state: &mut Hasher) { -            use std::hash::Hash; +            let size = limits.width(Length::Fill).resolve(Size::ZERO); -            self.dimen.hash(state); +            layout::Node::new(Size::new(size.width, size.width))          } +        fn hash_layout(&self, _state: &mut Hasher) {} +          fn draw(              &self,              _renderer: &mut Renderer, @@ -88,58 +84,56 @@ mod rainbow {              let posn_l = [b.x, b.y + (b.height / 2.0)];              ( -                Primitive::Geometry2D { -                    geometry: Geometry2D { -                        vertices: vec![ -                            Vertex2D { -                                position: posn_center, -                                color: [1.0, 1.0, 1.0, 1.0], -                            }, -                            Vertex2D { -                                position: posn_tl, -                                color: color_r, -                            }, -                            Vertex2D { -                                position: posn_t, -                                color: color_o, -                            }, -                            Vertex2D { -                                position: posn_tr, -                                color: color_y, -                            }, -                            Vertex2D { -                                position: posn_r, -                                color: color_g, -                            }, -                            Vertex2D { -                                position: posn_br, -                                color: color_gb, -                            }, -                            Vertex2D { -                                position: posn_b, -                                color: color_b, -                            }, -                            Vertex2D { -                                position: posn_bl, -                                color: color_i, -                            }, -                            Vertex2D { -                                position: posn_l, -                                color: color_v, -                            }, -                        ], -                        indices: vec![ -                            0, 1, 2, // TL -                            0, 2, 3, // T -                            0, 3, 4, // TR -                            0, 4, 5, // R -                            0, 5, 6, // BR -                            0, 6, 7, // B -                            0, 7, 8, // BL -                            0, 8, 1, // L -                        ], -                    }, -                }, +                Primitive::Mesh2D(std::sync::Arc::new(Mesh2D { +                    vertices: vec![ +                        Vertex2D { +                            position: posn_center, +                            color: [1.0, 1.0, 1.0, 1.0], +                        }, +                        Vertex2D { +                            position: posn_tl, +                            color: color_r, +                        }, +                        Vertex2D { +                            position: posn_t, +                            color: color_o, +                        }, +                        Vertex2D { +                            position: posn_tr, +                            color: color_y, +                        }, +                        Vertex2D { +                            position: posn_r, +                            color: color_g, +                        }, +                        Vertex2D { +                            position: posn_br, +                            color: color_gb, +                        }, +                        Vertex2D { +                            position: posn_b, +                            color: color_b, +                        }, +                        Vertex2D { +                            position: posn_bl, +                            color: color_i, +                        }, +                        Vertex2D { +                            position: posn_l, +                            color: color_v, +                        }, +                    ], +                    indices: vec![ +                        0, 1, 2, // TL +                        0, 2, 3, // T +                        0, 3, 4, // TR +                        0, 4, 5, // R +                        0, 5, 6, // BR +                        0, 6, 7, // B +                        0, 7, 8, // BL +                        0, 8, 1, // L +                    ], +                })),                  MouseCursor::OutOfBounds,              )          } @@ -153,35 +147,24 @@ mod rainbow {  }  use iced::{ -    scrollable, settings::Window,  Align, Column, Container, Element, -    Length, Sandbox, Scrollable, Settings,  Text, +    scrollable, Align, Column, Container, Element, Length, Sandbox, Scrollable, +    Settings, Text,  };  use rainbow::Rainbow;  pub fn main() { -    Example::run(Settings { -        window: Window { -            size: (660, 660), -            resizable: true, -            decorations: true, -        }, -    }) +    Example::run(Settings::default())  }  struct Example { -    dimen: u16,      scroll: scrollable::State,  } -#[derive(Debug, Clone, Copy)] -enum Message {} -  impl Sandbox for Example { -    type Message = Message; +    type Message = ();      fn new() -> Self {          Example { -            dimen: 500,              scroll: scrollable::State::new(),          }      } @@ -190,37 +173,36 @@ impl Sandbox for Example {          String::from("Custom 2D geometry - Iced")      } -    fn update(&mut self, _: Message) {} +    fn update(&mut self, _: ()) {} -    fn view(&mut self) -> Element<Message> { +    fn view(&mut self) -> Element<()> {          let content = Column::new()              .padding(20)              .spacing(20)              .max_width(500)              .align_items(Align::Start) -            .push(Rainbow::new(self.dimen)) -            .push( -                Text::new(String::from("In this example we draw a custom widget Rainbow, using the \ -                Geometry2D primitive. This primitive supplies a list of triangles, expressed as vertices and indices.")) -                    .width(Length::Shrink), -            ) -            .push( -                Text::new(String::from("Move your cursor over it, and see the center vertex follow you!")) -                    .width(Length::Shrink), -            ) -            .push( -                Text::new(String::from("Every Vertex2D defines its own color. You could use the \ -                Geometry2D primitive to render virtually any two-dimensional geometry for your widget.")) -                    .width(Length::Shrink), -            ); +            .push(Rainbow::new()) +            .push(Text::new( +                "In this example we draw a custom widget Rainbow, using \ +                 the Mesh2D primitive. This primitive supplies a list of \ +                 triangles, expressed as vertices and indices.", +            )) +            .push(Text::new( +                "Move your cursor over it, and see the center vertex \ +                 follow you!", +            )) +            .push(Text::new( +                "Every Vertex2D defines its own color. You could use the \ +                 Mesh2D primitive to render virtually any two-dimensional \ +                 geometry for your widget.", +            )); -        let scrollable = -            Scrollable::new(&mut self.scroll).push(Container::new(content)); +        let scrollable = Scrollable::new(&mut self.scroll) +            .push(Container::new(content).width(Length::Fill).center_x());          Container::new(scrollable)              .width(Length::Fill)              .height(Length::Fill) -            .center_x()              .center_y()              .into()      } | 
