glifparser 2.0.1

A parser and writer for UFO `.glif` files
Documentation
#![cfg(feature = "glifimage")]
use glifparser;
use glifparser::{Image, Color, image::DataOrBitmap};
use integer_or_float::IntegerOrFloat;
use log;
use test_log::test;

use std::fs;
use std::path;

#[test]
fn test_load_image() {
    let gliffn = "test_data/TT2020Base.ufo/glyphs/N_U_L_L_.glif";
    let glif_outxml;
    // Read
    {
        let glifxml = fs::read_to_string(gliffn).unwrap();
        let mut glif: glifparser::Glif<()> = glifparser::glif::read(&glifxml).unwrap();
        glif.filename = Some(path::PathBuf::from(gliffn));
        let im = glif.images[0].to_image_of(&glif).unwrap();
        assert_eq!(im.codec, glifparser::ImageCodec::WebP);
        assert_eq!(im.data().unwrap().len(), 44370);
        // Write
        glif_outxml = glifparser::write(&glif).unwrap();
    }
    // Test read back
    let mut glif_roundtrip: glifparser::Glif<()> = glifparser::read(&glif_outxml).unwrap();
    glif_roundtrip.filename = Some(path::PathBuf::from(gliffn));
    let im = glif_roundtrip.images[0].to_image_of(&glif_roundtrip).unwrap();
    assert_eq!(im.codec, glifparser::ImageCodec::WebP);
    assert_eq!(im.data().unwrap().len(), 44370);
}

#[test]
fn test_image_png() {
    let mut image = Image::from_filename("test_data/logo.png").unwrap();
    image.color = Some( Color{ r: IntegerOrFloat::Integer(0), g: IntegerOrFloat::Integer(0), b: IntegerOrFloat::Integer(1), a: IntegerOrFloat::Integer(1) } );
    image.decode().unwrap();
    match image.data.data {
        //DataOrBitmap::Bitmap { pixels, width, height } => eprintln!("{:?} {}x{}", pixels, width, height),
        DataOrBitmap::Bitmap { width, height, .. } => log::info!("{}x{}", width, height),
        _ => panic!("Decode failed")
    }
}