micro-gui 0.1.0

A smol GUI for embedded systems
Documentation
//! ugui example application
//!
//! Copyright 2017 Ryan Kurte


extern crate micro_gui;

use micro_gui::prelude::*;
use micro_gui::types::pixel::*;
use micro_gui::native::Renderer;


use micro_gui::widgets::demo::DemoWidget;

const WIDTH: usize = 640;
const HEIGHT: usize = 480; 
const SIZE: usize = WIDTH * HEIGHT * 3;

type Pixel = PixelRGB24;

#[cfg(feature = "sdl")]
fn main() {

    // Create backing data
    let mut data: [u8; SIZE] = [0xff; SIZE];
    let data_slice = &mut data[..];

    // Create buffer to wrap data
    let mut buffer = Buffer::<Pixel>::new(WIDTH, HEIGHT, 0, 0, data_slice);

    let mut demo = DemoWidget::new();
    let mut window = Window::<Pixel>::new(WIDTH, HEIGHT, Some(&mut demo));

    // Create gui instance that consumes buffer
    let mut gui = Gui::new(WIDTH, HEIGHT);

    gui.push_window(&mut window);

    // Native renderer allows local display
    let mut native = Renderer::<Pixel>::new(&"Rust microgui example", WIDTH as u32, HEIGHT as u32);

    println!("Rust microgui running!");

    loop {
        buffer.clear(&Pixel::white());
        gui.render(&mut buffer);
        native.render(buffer.data);

        let running = native.update();
        for e in native.event_rx.try_iter() {
            gui.event(&e);
            println!("Event: {:?}", e);
        }

        if !running { break; }
    }
}