X-Git-Url: https://codewiz.org/gitweb?p=mandelwow.git;a=blobdiff_plain;f=text.rs;h=e020156cd08956f226d9c36c0117dcaa24069452;hp=4e1fcdfc10579f3ed5813005795bc11bb3a7bfc4;hb=HEAD;hpb=e758b0d67cbb0fdb0bc316b9b4037511e492c0d5 diff --git a/text.rs b/text.rs index 4e1fcdf..e020156 100644 --- a/text.rs +++ b/text.rs @@ -1,7 +1,7 @@ use cgmath::conv::array4x4; -use cgmath::{Matrix4, Vector3}; +use cgmath::Matrix4; use glium; -use glium::{Display, Program, Surface, texture}; +use glium::{Display, Program, Surface, implement_vertex, texture, uniform}; use std; fn gamma(x: T) -> f32 @@ -22,7 +22,6 @@ where #[cfg(feature = "image")] fn c64_font() -> (u32, u32, Vec) { - use image; let image = image::load_from_memory_with_format( &include_bytes!("textures/c64-font.png")[..], image::PNG, @@ -52,18 +51,16 @@ struct Vertex { } implement_vertex!(Vertex, position, tex_coords); -pub struct Text<'a> { +pub struct Text { tex: texture::Texture2d, vertex_buffer: glium::VertexBuffer, index_buffer: glium::IndexBuffer, program: glium::Program, - params: glium::DrawParameters<'a>, - pub model: Matrix4, - pub character: char, + params: glium::DrawParameters<'static>, } -impl<'a> Text<'a> { - pub fn new(display: &Display, character: char) -> Text { +impl Text { + pub fn new(display: &Display) -> Text { let (w, h, pixels) = c64_font(); let image = glium::texture::RawImage2d { data: std::borrow::Cow::from(pixels), @@ -125,19 +122,17 @@ impl<'a> Text<'a> { index_buffer: index_buffer, program: text_program(display), params: params, - model: Matrix4::from_translation(Vector3::unit_z() * (-1.0)), - character: character, } } - pub fn draw(&self, frame: &mut glium::Frame, perspview: &[[f32; 4]; 4]) { + pub fn draw(&self, frame: &mut glium::Frame, c: char, model: &Matrix4, perspview: &[[f32; 4]; 4]) { let uniforms = uniform! { - model: array4x4(self.model), + model: array4x4(*model), perspview: *perspview, tex: self.tex.sampled() .magnify_filter(glium::uniforms::MagnifySamplerFilter::Nearest), - index: self.character as i32, + index: c as i32, // RGB values from http://unusedino.de/ec64/technical/misc/vic656x/colors/ bgcolor: srgb([ 64, 50, 133u8]), // 6 - blue fgcolor: srgb([120, 106, 189u8]), // 14 - light blue