iris-cv 0.0.0

A fast computer vision library framework in Rust.
Documentation
/// A simple 5x7 bitmap font for rendering ASCII text.
/// Each character is represented by 5 columns of 7 pixels each.
pub const FONT_5X7: [[u8; 5]; 128] = {
    let mut font = [[0u8; 5]; 128];

    // Space (0x20)
    font[32] = [0, 0, 0, 0, 0];
    // !
    font[33] = [0x00, 0x00, 0x5f, 0x00, 0x00];
    // "
    font[34] = [0x00, 0x07, 0x00, 0x07, 0x00];
    // #
    font[35] = [0x14, 0x7f, 0x14, 0x7f, 0x14];
    // $
    font[36] = [0x24, 0x2a, 0x7f, 0x2a, 0x12];
    // %
    font[37] = [0x23, 0x13, 0x08, 0x64, 0x62];
    // &
    font[38] = [0x36, 0x49, 0x55, 0x22, 0x50];
    // '
    font[39] = [0x00, 0x05, 0x03, 0x00, 0x00];
    // (
    font[40] = [0x00, 0x1c, 0x22, 0x41, 0x00];
    // )
    font[41] = [0x00, 0x41, 0x22, 0x1c, 0x00];
    // *
    font[42] = [0x14, 0x08, 0x3e, 0x08, 0x14];
    // +
    font[43] = [0x08, 0x08, 0x3e, 0x08, 0x08];
    // ,
    font[44] = [0x00, 0x50, 0x30, 0x00, 0x00];
    // -
    font[45] = [0x08, 0x08, 0x08, 0x08, 0x08];
    // .
    font[46] = [0x00, 0x60, 0x60, 0x00, 0x00];
    // /
    font[47] = [0x20, 0x10, 0x08, 0x04, 0x02];

    // 0
    font[48] = [0x3e, 0x51, 0x49, 0x45, 0x3e];
    // 1
    font[49] = [0x00, 0x42, 0x7f, 0x40, 0x00];
    // 2
    font[50] = [0x42, 0x61, 0x51, 0x49, 0x46];
    // 3
    font[51] = [0x21, 0x41, 0x45, 0x4b, 0x31];
    // 4
    font[52] = [0x18, 0x14, 0x12, 0x7f, 0x10];
    // 5
    font[53] = [0x27, 0x45, 0x45, 0x45, 0x39];
    // 6
    font[54] = [0x3c, 0x4a, 0x49, 0x49, 0x30];
    // 7
    font[55] = [0x01, 0x71, 0x09, 0x05, 0x03];
    // 8
    font[56] = [0x36, 0x49, 0x49, 0x49, 0x36];
    // 9
    font[57] = [0x06, 0x49, 0x49, 0x29, 0x1e];

    // :
    font[58] = [0x00, 0x36, 0x36, 0x00, 0x00];
    // ;
    font[59] = [0x00, 0x56, 0x36, 0x00, 0x00];
    // <
    font[60] = [0x08, 0x14, 0x22, 0x41, 0x00];
    // =
    font[61] = [0x24, 0x24, 0x24, 0x24, 0x24];
    // >
    font[62] = [0x00, 0x41, 0x22, 0x14, 0x08];
    // ?
    font[63] = [0x02, 0x01, 0x51, 0x09, 0x06];
    // @
    font[64] = [0x32, 0x49, 0x79, 0x41, 0x3e];

    // A-Z
    font[65] = [0x7e, 0x11, 0x11, 0x11, 0x7e];
    font[66] = [0x7f, 0x49, 0x49, 0x49, 0x36];
    font[67] = [0x3e, 0x41, 0x41, 0x41, 0x22];
    font[68] = [0x7f, 0x41, 0x41, 0x22, 0x1c];
    font[69] = [0x7f, 0x49, 0x49, 0x49, 0x41];
    font[70] = [0x7f, 0x09, 0x09, 0x09, 0x01];
    font[71] = [0x3e, 0x41, 0x49, 0x49, 0x7a];
    font[72] = [0x7f, 0x08, 0x08, 0x08, 0x7f];
    font[73] = [0x00, 0x41, 0x7f, 0x41, 0x00];
    font[74] = [0x20, 0x40, 0x41, 0x3f, 0x01];
    font[75] = [0x7f, 0x08, 0x14, 0x22, 0x41];
    font[76] = [0x7f, 0x40, 0x40, 0x40, 0x40];
    font[77] = [0x7f, 0x02, 0x0c, 0x02, 0x7f];
    font[78] = [0x7f, 0x04, 0x08, 0x10, 0x7f];
    font[79] = [0x3e, 0x41, 0x41, 0x41, 0x3e];
    font[80] = [0x7f, 0x09, 0x09, 0x09, 0x06];
    font[81] = [0x3e, 0x41, 0x51, 0x21, 0x5e];
    font[82] = [0x7f, 0x09, 0x19, 0x29, 0x46];
    font[83] = [0x46, 0x49, 0x49, 0x49, 0x31];
    font[84] = [0x01, 0x01, 0x7f, 0x01, 0x01];
    font[85] = [0x3f, 0x40, 0x40, 0x40, 0x3f];
    font[86] = [0x1f, 0x20, 0x40, 0x20, 0x1f];
    font[87] = [0x3f, 0x40, 0x38, 0x40, 0x3f];
    font[88] = [0x63, 0x14, 0x08, 0x14, 0x63];
    font[89] = [0x07, 0x08, 0x70, 0x08, 0x07];
    font[90] = [0x61, 0x51, 0x49, 0x45, 0x43];

    // [ \ ] ^ _ `
    font[91] = [0x00, 0x7f, 0x41, 0x41, 0x00];
    font[92] = [0x02, 0x04, 0x08, 0x10, 0x20];
    font[93] = [0x00, 0x41, 0x41, 0x7f, 0x00];
    font[94] = [0x04, 0x02, 0x01, 0x02, 0x04];
    font[95] = [0x40, 0x40, 0x40, 0x40, 0x40];
    font[96] = [0x00, 0x01, 0x02, 0x04, 0x00];

    // a-z
    font[97] = [0x20, 0x54, 0x54, 0x54, 0x78];
    font[98] = [0x7f, 0x48, 0x44, 0x44, 0x38];
    font[99] = [0x38, 0x44, 0x44, 0x44, 0x20];
    font[100] = [0x38, 0x44, 0x44, 0x48, 0x7f];
    font[101] = [0x38, 0x54, 0x54, 0x54, 0x18];
    font[102] = [0x08, 0x7e, 0x09, 0x01, 0x02];
    font[103] = [0x0c, 0x52, 0x52, 0x52, 0x3e];
    font[104] = [0x7f, 0x08, 0x04, 0x04, 0x78];
    font[105] = [0x00, 0x44, 0x7d, 0x40, 0x00];
    font[106] = [0x20, 0x40, 0x44, 0x3d, 0x00];
    font[107] = [0x7f, 0x10, 0x28, 0x44, 0x00];
    font[108] = [0x00, 0x41, 0x7f, 0x40, 0x00];
    font[109] = [0x7c, 0x04, 0x18, 0x04, 0x78];
    font[110] = [0x7c, 0x08, 0x04, 0x04, 0x78];
    font[111] = [0x38, 0x44, 0x44, 0x44, 0x38];
    font[112] = [0x7c, 0x14, 0x14, 0x14, 0x08];
    font[113] = [0x08, 0x14, 0x14, 0x18, 0x7c];
    font[114] = [0x7c, 0x08, 0x04, 0x04, 0x08];
    font[115] = [0x48, 0x54, 0x54, 0x54, 0x20];
    font[116] = [0x04, 0x3f, 0x44, 0x40, 0x20];
    font[117] = [0x3c, 0x40, 0x40, 0x20, 0x7c];
    font[118] = [0x1c, 0x20, 0x40, 0x20, 0x1c];
    font[119] = [0x3c, 0x40, 0x30, 0x40, 0x3c];
    font[120] = [0x44, 0x28, 0x10, 0x28, 0x44];
    font[121] = [0x0c, 0x50, 0x50, 0x50, 0x3c];
    font[122] = [0x44, 0x64, 0x54, 0x4c, 0x44];

    // { | } ~ DEL
    font[123] = [0x00, 0x08, 0x36, 0x41, 0x00];
    font[124] = [0x00, 0x00, 0x7f, 0x00, 0x00];
    font[125] = [0x00, 0x41, 0x36, 0x08, 0x00];
    font[126] = [0x08, 0x04, 0x08, 0x10, 0x08];

    font
};

#[cfg(test)]
mod tests {
    use super::*;

    #[test]
    fn test_font_invariants() {
        assert_eq!(FONT_5X7.len(), 128);
        // Space character
        assert_eq!(FONT_5X7[32], [0, 0, 0, 0, 0]);
        // exclamation point
        assert_eq!(FONT_5X7[33][2], 0x5f);
    }
}