nanoquad 0.1.2

Vector anti-aliased graphics renderer for Android, WebGL, iOS, Windows, Linux, and Mac using miniquad.
Documentation
use miniquad::*;
use nona::{Align, Color, Gradient, Paint, Point};

mod lib;
use lib::nvgimpl;
use nvgimpl::Renderer;

struct Stage {
    renderer: nvgimpl::Renderer,
    nona: nona::Context,
}
impl EventHandler for Stage {
    fn update(&mut self, _ctx: &mut Context) {}

    fn draw(&mut self, ctx: &mut Context) {
        self.nona
            .attach_renderer(&mut self.renderer.with_context(ctx), |canvas| {
                canvas
                    .begin_frame(Some(Color::rgb_i(128, 128, 255)))
                    .unwrap();

                canvas.begin_path();
                canvas.rect((100.0, 100.0, 300.0, 300.0));
                canvas.fill_paint(nona::Gradient::Linear {
                    start: (100, 100).into(),
                    end: (400, 400).into(),
                    start_color: nona::Color::rgb_i(0xAA, 0x6C, 0x39),
                    end_color: nona::Color::rgb_i(0x88, 0x2D, 0x60),
                });
                canvas.fill().unwrap();
                
                let origin = (150.0, 140.0);
                canvas.begin_path();
                canvas.circle(origin, 64.0);
                canvas.move_to(origin);
                canvas.line_to((origin.0 + 300.0, origin.1 - 50.0));
                canvas.stroke_paint(nona::Color::rgba(1.0, 1.0, 0.0, 1.0));
                canvas.stroke_width(3.0);
                canvas.stroke().unwrap();

                
                
                canvas.end_frame().unwrap();
            });
        ctx.commit_frame();
    }
}

impl Stage {
    fn new(ctx: &mut Context) -> Self {
        let mut renderer = nvgimpl::Renderer::create(ctx).unwrap();
        let mut nona = nona::Context::create(&mut renderer.with_context(ctx)).unwrap();
        Stage {
            renderer, nona
        }
    }
}

fn main() {
    miniquad::start(
        conf::Conf {
            window_title: "Miniquad".to_string(),
            window_width: 500,
            window_height: 500,
            fullscreen: false,
            high_dpi: true,
            ..Default::default()
        },
        |mut ctx| Box::new(Stage::new(&mut ctx)),
    );
}