lcms2 1.1.1

ICC color profile handling. Rusty wrapper Little CMS
Documentation
use super::*;

extern crate lcms2_sys as ffi;

use std::mem;

impl<'a> Tag<'a> {
    pub fn is_none(&self) -> bool {
        match *self {
            Tag::None => true,
            _ => false,
        }
    }

    pub unsafe fn new(sig: TagSignature, data: *const u8) -> Self {
        if data.is_null() {
            return Tag::None;
        }
        match sig {
            TagSignature::SigBlueColorantTag => Tag::CIEXYZ(mem::transmute(data)),
            TagSignature::SigGreenColorantTag => Tag::CIEXYZ(mem::transmute(data)),
            TagSignature::SigLuminanceTag => Tag::CIEXYZ(mem::transmute(data)),
            TagSignature::SigMediaBlackPointTag => Tag::CIEXYZ(mem::transmute(data)),
            TagSignature::SigMediaWhitePointTag => Tag::CIEXYZ(mem::transmute(data)),
            TagSignature::SigRedColorantTag => Tag::CIEXYZ(mem::transmute(data)),
            TagSignature::SigCharTargetTag => Tag::MLU(mem::transmute(data)),
            TagSignature::SigCopyrightTag => Tag::MLU(mem::transmute(data)),
            TagSignature::SigDeviceMfgDescTag => Tag::MLU(mem::transmute(data)),
            TagSignature::SigDeviceModelDescTag => Tag::MLU(mem::transmute(data)),
            TagSignature::SigProfileDescriptionTag => Tag::MLU(mem::transmute(data)),
            TagSignature::SigScreeningDescTag => Tag::MLU(mem::transmute(data)),
            TagSignature::SigViewingCondDescTag => Tag::MLU(mem::transmute(data)),
            TagSignature::SigChromaticityTag => Tag::CIExyYTRIPLE(mem::transmute(data)),
            TagSignature::SigColorantTableTag => Tag::NAMEDCOLORLIST(mem::transmute(data)),
            TagSignature::SigColorantTableOutTag => Tag::NAMEDCOLORLIST(mem::transmute(data)),
            TagSignature::SigCrdInfoTag => Tag::NAMEDCOLORLIST(mem::transmute(data)),
            TagSignature::SigNamedColor2Tag => Tag::NAMEDCOLORLIST(mem::transmute(data)),
            TagSignature::SigDataTag => Tag::ICCData(mem::transmute(data)),
            TagSignature::SigPs2CRD0Tag => Tag::ICCData(mem::transmute(data)),
            TagSignature::SigPs2CRD1Tag => Tag::ICCData(mem::transmute(data)),
            TagSignature::SigPs2CRD2Tag => Tag::ICCData(mem::transmute(data)),
            TagSignature::SigPs2CRD3Tag => Tag::ICCData(mem::transmute(data)),
            TagSignature::SigPs2CSATag => Tag::ICCData(mem::transmute(data)),
            TagSignature::SigPs2RenderingIntentTag => Tag::ICCData(mem::transmute(data)),
            TagSignature::SigAToB0Tag => Tag::Pipeline(mem::transmute(data)),
            TagSignature::SigAToB1Tag => Tag::Pipeline(mem::transmute(data)),
            TagSignature::SigAToB2Tag => Tag::Pipeline(mem::transmute(data)),
            TagSignature::SigBToA0Tag => Tag::Pipeline(mem::transmute(data)),
            TagSignature::SigBToA1Tag => Tag::Pipeline(mem::transmute(data)),
            TagSignature::SigBToA2Tag => Tag::Pipeline(mem::transmute(data)),
            TagSignature::SigDToB0Tag => Tag::Pipeline(mem::transmute(data)),
            TagSignature::SigDToB1Tag => Tag::Pipeline(mem::transmute(data)),
            TagSignature::SigDToB2Tag => Tag::Pipeline(mem::transmute(data)),
            TagSignature::SigDToB3Tag => Tag::Pipeline(mem::transmute(data)),
            TagSignature::SigBToD0Tag => Tag::Pipeline(mem::transmute(data)),
            TagSignature::SigBToD1Tag => Tag::Pipeline(mem::transmute(data)),
            TagSignature::SigBToD2Tag => Tag::Pipeline(mem::transmute(data)),
            TagSignature::SigBToD3Tag => Tag::Pipeline(mem::transmute(data)),
            TagSignature::SigGamutTag => Tag::Pipeline(mem::transmute(data)),
            TagSignature::SigPreview0Tag => Tag::Pipeline(mem::transmute(data)),
            TagSignature::SigPreview1Tag => Tag::Pipeline(mem::transmute(data)),
            TagSignature::SigPreview2Tag => Tag::Pipeline(mem::transmute(data)),
            TagSignature::SigBlueTRCTag => Tag::ToneCurve(mem::transmute(data)),
            TagSignature::SigGrayTRCTag => Tag::ToneCurve(mem::transmute(data)),
            TagSignature::SigGreenTRCTag => Tag::ToneCurve(mem::transmute(data)),
            TagSignature::SigRedTRCTag => Tag::ToneCurve(mem::transmute(data)),
            TagSignature::SigColorimetricIntentImageStateTag => {
                Tag::Signature(mem::transmute(data))
            }
            TagSignature::SigPerceptualRenderingIntentGamutTag => {
                Tag::Signature(mem::transmute(data))
            }
            TagSignature::SigSaturationRenderingIntentGamutTag => {
                Tag::Signature(mem::transmute(data))
            }
            TagSignature::SigTechnologyTag => Tag::Signature(mem::transmute(data)),
            TagSignature::SigMeasurementTag => Tag::ICCMeasurementConditions(mem::transmute(data)),
            TagSignature::SigProfileSequenceDescTag => Tag::SEQ(mem::transmute(data)),
            TagSignature::SigProfileSequenceIdTag => Tag::SEQ(mem::transmute(data)),
            TagSignature::SigScreeningTag => Tag::Screening(mem::transmute(data)),
            TagSignature::SigUcrBgTag => Tag::UcrBg(mem::transmute(data)),
            TagSignature::SigViewingConditionsTag => {
                Tag::ICCViewingConditions(mem::transmute(data))
            }
            _ => Tag::None,
        }
    }
}