ktx2 0.5.0

Parser for the ktx2 texture container format
Documentation
use ktx2::{Format, Header, Reader};

fn main() {
    let file = include_bytes!("../data/test_tex.ktx2");
    let reader = Reader::new(file).expect("Can't create reader");
    let header = reader.header();
    println!("Header: {:#?}", header);
    assert_head(header);

    let key_value_pairs = reader.key_value_data().collect::<Vec<_>>();
    assert_eq!(key_value_pairs.len(), 2);

    for (k, v) in key_value_pairs {
        println!("Key '{}': {}", k, String::from_utf8_lossy(v));
    }

    let levels = reader.levels().map(|level| level.data).collect::<Vec<_>>();
    assert_eq!(levels.len(), header.level_count.max(1) as usize);

    let data = reader.data();
    println!("Data len: {:?}", data.len());
    test_data(&levels);
}

fn test_data(info: &[&[u8]]) {
    for (i, region) in info.iter().enumerate() {
        println!("Bytes for level {:?}: {:?}", i, &region[..4]);
    }
}

fn assert_head(header: Header) {
    assert_eq!(header.format, Some(Format::R8G8B8A8_UINT));
    assert_eq!(header.type_size, 1);
    assert_eq!(header.pixel_width, 1024);
    assert_eq!(header.pixel_height, 512);
    assert_eq!(header.pixel_depth, 0);
    assert_eq!(header.layer_count, 0);
    assert_eq!(header.face_count, 1);
    assert_eq!(header.level_count, 11);
    assert_eq!(header.supercompression_scheme, None);
}