openexr 0.11.0

High-level bindings to OpenEXR 3.0.5
use half::f16;
use imath_traits::Zero;
use openexr_sys as sys;
pub use sys::RgbaChannels;

#[derive(Copy, Clone, Debug, PartialEq, Default)]
pub struct Rgba {
    pub r: f16,
    pub g: f16,
    pub b: f16,
    pub a: f16,
}

impl Rgba {
    pub fn from_f32(r: f32, g: f32, b: f32, a: f32) -> Rgba {
        Rgba {
            r: f16::from_f32(r),
            g: f16::from_f32(g),
            b: f16::from_f32(b),
            a: f16::from_f32(a),
        }
    }
}

impl Zero for Rgba {
    fn zero() -> Self {
        Rgba {
            r: f16::ZERO,
            g: f16::ZERO,
            b: f16::ZERO,
            a: f16::ZERO,
        }
    }
}