diff options
Diffstat (limited to 'examples/geometry')
| -rw-r--r-- | examples/geometry/src/main.rs | 190 | 
1 files changed, 95 insertions, 95 deletions
diff --git a/examples/geometry/src/main.rs b/examples/geometry/src/main.rs index de157267..6ef12013 100644 --- a/examples/geometry/src/main.rs +++ b/examples/geometry/src/main.rs @@ -11,10 +11,11 @@ mod rainbow {      // if you wish to, by creating your own `Renderer` trait, which could be      // implemented by `iced_wgpu` and other renderers.      use iced_graphics::renderer::{self, Renderer}; -    use iced_graphics::Backend; +    use iced_graphics::{Backend, Primitive};      use iced_native::{ -        layout, Element, Hasher, Layout, Length, Point, Rectangle, Size, Widget, +        layout, Element, Hasher, Layout, Length, Point, Rectangle, Size, +        Vector, Widget,      };      pub struct Rainbow; @@ -51,102 +52,101 @@ mod rainbow {          fn draw(              &self, -            _renderer: &mut Renderer<B>, +            renderer: &mut Renderer<B>,              _style: &renderer::Style, -            _layout: Layout<'_>, -            _cursor_position: Point, +            layout: Layout<'_>, +            cursor_position: Point,              _viewport: &Rectangle,          ) { -            // use iced_graphics::triangle::{Mesh2D, Vertex2D}; -            // let b = layout.bounds(); - -            // // R O Y G B I V -            // let color_r = [1.0, 0.0, 0.0, 1.0]; -            // let color_o = [1.0, 0.5, 0.0, 1.0]; -            // let color_y = [1.0, 1.0, 0.0, 1.0]; -            // let color_g = [0.0, 1.0, 0.0, 1.0]; -            // let color_gb = [0.0, 1.0, 0.5, 1.0]; -            // let color_b = [0.0, 0.2, 1.0, 1.0]; -            // let color_i = [0.5, 0.0, 1.0, 1.0]; -            // let color_v = [0.75, 0.0, 0.5, 1.0]; - -            // let posn_center = { -            //     if b.contains(cursor_position) { -            //         [cursor_position.x - b.x, cursor_position.y - b.y] -            //     } else { -            //         [b.width / 2.0, b.height / 2.0] -            //     } -            // }; - -            // let posn_tl = [0.0, 0.0]; -            // let posn_t = [b.width / 2.0, 0.0]; -            // let posn_tr = [b.width, 0.0]; -            // let posn_r = [b.width, b.height / 2.0]; -            // let posn_br = [b.width, b.height]; -            // let posn_b = [(b.width / 2.0), b.height]; -            // let posn_bl = [0.0, b.height]; -            // let posn_l = [0.0, b.height / 2.0]; - -            // ( -            //     Primitive::Translate { -            //         translation: Vector::new(b.x, b.y), -            //         content: Box::new(Primitive::Mesh2D { -            //             size: b.size(), -            //             buffers: 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 -            //                 ], -            //             }, -            //         }), -            //     }, -            //     mouse::Interaction::default(), -            // ) -            // TODO +            use iced_graphics::triangle::{Mesh2D, Vertex2D}; +            use iced_native::Renderer as _; + +            let b = layout.bounds(); + +            // R O Y G B I V +            let color_r = [1.0, 0.0, 0.0, 1.0]; +            let color_o = [1.0, 0.5, 0.0, 1.0]; +            let color_y = [1.0, 1.0, 0.0, 1.0]; +            let color_g = [0.0, 1.0, 0.0, 1.0]; +            let color_gb = [0.0, 1.0, 0.5, 1.0]; +            let color_b = [0.0, 0.2, 1.0, 1.0]; +            let color_i = [0.5, 0.0, 1.0, 1.0]; +            let color_v = [0.75, 0.0, 0.5, 1.0]; + +            let posn_center = { +                if b.contains(cursor_position) { +                    [cursor_position.x - b.x, cursor_position.y - b.y] +                } else { +                    [b.width / 2.0, b.height / 2.0] +                } +            }; + +            let posn_tl = [0.0, 0.0]; +            let posn_t = [b.width / 2.0, 0.0]; +            let posn_tr = [b.width, 0.0]; +            let posn_r = [b.width, b.height / 2.0]; +            let posn_br = [b.width, b.height]; +            let posn_b = [(b.width / 2.0), b.height]; +            let posn_bl = [0.0, b.height]; +            let posn_l = [0.0, b.height / 2.0]; + +            let mesh = Primitive::Mesh2D { +                size: b.size(), +                buffers: 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 +                    ], +                }, +            }; + +            renderer.with_translation(Vector::new(b.x, b.y), |renderer| { +                renderer.draw_primitive(mesh); +            });          }      }  | 
