From 2b40ae7b37cf23dcce1561c33e254e6d60d03ad5 Mon Sep 17 00:00:00 2001 From: Bernie Innocenti Date: Sun, 2 Jul 2017 11:55:51 -0400 Subject: [PATCH] Load the c64 font as a raw bitmap without using the image crate. Shaves 170KB from the stripped binary. --- gentextures.sh | 3 +++ lib.rs | 2 +- text.rs | 26 +++++++++++++++++++------- 3 files changed, 23 insertions(+), 8 deletions(-) create mode 100644 gentextures.sh diff --git a/gentextures.sh b/gentextures.sh new file mode 100644 index 0000000..bbfb111 --- /dev/null +++ b/gentextures.sh @@ -0,0 +1,3 @@ +#!/bin/sh +set -e +convert c64-font.png -format GRAY -depth 8 c64-font.gray diff --git a/lib.rs b/lib.rs index eba89b1..a15ea2b 100644 --- a/lib.rs +++ b/lib.rs @@ -31,5 +31,5 @@ pub fn screenshot(display : &glium::Display) { } #[cfg(not(feature = "image"))] -pub fn screenshot(display : &glium::Display) { +pub fn screenshot(_ : &glium::Display) { } diff --git a/text.rs b/text.rs index abcd9b4..14b2633 100644 --- a/text.rs +++ b/text.rs @@ -2,7 +2,6 @@ use cgmath::conv::array4x4; use cgmath::{Matrix4, Vector3}; use glium; use glium::{Surface, texture}; -use image; use std; fn gamma(x: T) -> f32 @@ -21,6 +20,23 @@ where [gamma(c[0]), gamma(c[1]), gamma(c[2]), 0.0] } +#[cfg(feature = "image")] +fn c64_font() -> (u32, u32, Vec) { + use image; + let image = + image::load_from_memory_with_format(&include_bytes!("c64-font.png")[..], image::PNG) + .unwrap() + .to_luma(); + let (w, h) = image.dimensions(); + (w, h, image.into_raw()) +} + +#[cfg(not(feature = "image"))] +fn c64_font() -> (u32, u32, Vec) { + let pixels = &include_bytes!("c64-font.gray")[..]; + (128, 128, Vec::from(pixels)) +} + #[derive(Copy, Clone)] struct Vertex { position: [f32; 2], @@ -39,13 +55,9 @@ pub struct Text<'a> { impl<'a> Text<'a> { pub fn new(display: &glium::Display) -> Text { - let image = - image::load_from_memory_with_format(&include_bytes!("c64-font.png")[..], image::PNG) - .unwrap() - .to_luma(); - let (w, h) = image.dimensions(); + let (w, h, pixels) = c64_font(); let image = glium::texture::RawImage2d { - data: std::borrow::Cow::from(image.into_raw()), + data: std::borrow::Cow::from(pixels), width: w, height: h, format: glium::texture::ClientFormat::U8, -- 2.25.1