dagger 0.1.0

A rust UI library.
Documentation
use super::Element;

use winit::{
	event_loop::EventLoop,
	window::{
		Window as WinitWindow,
		WindowBuilder as WinitWindowBuilder,
	},
};

use glium::{
	backend::glutin::SimpleWindowBuilder,
	index::{
		NoIndices,
		PrimitiveType,
	},
	Display, Program,
};

#[derive(Debug)]
pub struct Window {
	pub winit_window: WinitWindow,
	pub glium_display: Display<glutin::surface::WindowSurface>,
	pub opengl_indices: NoIndices,
	pub opengl_program: Program,

	pub elements: Vec<Element>,
}

impl Window {
	pub fn from_builder_and_loop(window_builder: WinitWindowBuilder, event_loop: &EventLoop<()>) -> Self {
		let (winit_window, glium_display) = SimpleWindowBuilder::new()
			.set_window_builder(window_builder)
			.build(event_loop);
		
		let indices = NoIndices(PrimitiveType::TrianglesList);
		let program = Program::from_source(&glium_display, VERTEX_SHADER, FRAGMENT_SHADER, None).unwrap();

		Self {
			winit_window,
			glium_display,

			opengl_indices: indices,
			opengl_program: program,

			elements: vec![],
		}
	}
}

const VERTEX_SHADER: &str = r#"
	#version 140

	in vec2 position;
	in vec4 color;
	out vec4 vertex_color;
	
	void main() {
		vertex_color = color;
		gl_Position = vec4(position, 0.0, 1.0);
	}
"#;

const FRAGMENT_SHADER: &str = r#"
	#version 140

	in vec4 vertex_color;
	out vec4 color;

	void main() {
		color = vertex_color;
	}
"#;