diff options
author | 2021-10-30 20:42:09 +0700 | |
---|---|---|
committer | 2021-10-30 20:42:09 +0700 | |
commit | e5e477aa692e33eb639e4d3acbc073fdb47f9c9a (patch) | |
tree | 916215356a969f4e9c5b66c61dea3ab5d330626c /examples/geometry | |
parent | 77bab6beeecb148225ee6081e087aa30c0e80c26 (diff) | |
download | iced-e5e477aa692e33eb639e4d3acbc073fdb47f9c9a.tar.gz iced-e5e477aa692e33eb639e4d3acbc073fdb47f9c9a.tar.bz2 iced-e5e477aa692e33eb639e4d3acbc073fdb47f9c9a.zip |
Migrate `geometry` example to new `Renderer` API
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); + }); } } |