public ProfileDescription(byte[] iccData, int index, ICCHeader header) { DeviceManufacturer = HighEndianReader.GetUint32(iccData, index); //Device model signature (4 bytes) DeviceModel = HighEndianReader.GetUint32(iccData, index + 4); //Device attributes (8 bytes) DeviceAttributes = new DeviceAttribute(iccData, index + 8); //Device technology information (4 bytes) TechnologyInformation = (TagSignature)HighEndianReader.GetUint32(iccData, index + 16); //Displayable description of device manufacturer (profile's deviceMfgDescTag) DeviceManufacturerInfo = new MultiLocalizedUnicodeTag() { IsPlaceHolder = header.DeviceManufacturer == 0 }; DeviceManufacturerInfo.GetTagData(iccData, index + 20, header); //Displayable description of device model (profile's deviceModelDescTag) DeviceModelInfo = new MultiLocalizedUnicodeTag() { IsPlaceHolder = header.DeviceModel == 0 }; DeviceModelInfo.GetTagData(iccData, DeviceManufacturerInfo.LengthInByte + index + 20, header); //end = DeviceModelInfo.end; }
private static ICCTagData ReadTagData(TypeSignature type, byte[] iccData, int index, ICCHeader header) { ICCTagData t = null; switch (type) { case TypeSignature.chromaticity: t = new ChromaticityTag(); break; case TypeSignature.colorantOrder: t = new ColorantOrderTag(); break; case TypeSignature.colorantTable: t = new ColorantTableTag(); break; case TypeSignature.curve: t = new CurveTag(); break; case TypeSignature.data: t = new DataTag(); break; case TypeSignature.dateTime: t = new DateTimeTag(); break; case TypeSignature.lut16: t = new Lut16Tag(); break; case TypeSignature.lut8: t = new Lut8Tag(); break; case TypeSignature.lutAToB: t = new LutAToBTag(); break; case TypeSignature.lutBToA: t = new LutBToATag(); break; case TypeSignature.measurement: t = new MeasurementTag(); break; case TypeSignature.multiLocalizedUnicode: t = new MultiLocalizedUnicodeTag() { IsPlaceHolder = false }; break; case TypeSignature.multiProcessElements: t = new MultiProcessElementsTag(); break; case TypeSignature.namedColor2: t = new NamedColor2Tag(); break; case TypeSignature.parametricCurve: t = new ParametricCurveTag(); break; case TypeSignature.profileSequenceDesc: t = new ProfileSequenceDescTag(); break; case TypeSignature.profileSequenceIdentifier: t = new ProfileSequenceIdentifierTag(); break; case TypeSignature.responseCurveSet16: t = new ResponseCurveSet16Tag(); break; case TypeSignature.s15Fixed16Array: t = new s15Fixed16ArrayTag(); break; case TypeSignature.signature: t = new SignatureTag(); break; case TypeSignature.text: t = new TextTag(); break; case TypeSignature.u16Fixed16Array: t = new u16Fixed16ArrayTag(); break; case TypeSignature.uInt16Array: t = new uInt16ArrayTag(); break; case TypeSignature.uInt32Array: t = new uInt32ArrayTag(); break; case TypeSignature.uInt64Array: t = new uInt64ArrayTag(); break; case TypeSignature.uInt8Array: t = new uInt8ArrayTag(); break; case TypeSignature.viewingConditions: t = new ViewingConditionTag(); break; case TypeSignature.XYZ: t = new XYZTag(); break; } t.GetTagData(iccData, index, header); return(t); }