public override void GetTagData(byte[] iccData, int index, ICCHeader header)
        {
            int dataLength = (int)(dataSize - 8) / 4;

            Data = new double[dataLength];
            for (int i = 0; i < dataLength; i++)
            {
                int dataIndex = index + i * 4;
                Data[i] = HighEndianReader.GetU16Fixed16NumberToDouble(iccData, dataIndex, IsLittleEndian);
            }
        }
 public override void GetTagData(byte[] iccData, int index, ICCHeader header)
 {
     Observer = (StandardObserver)HighEndianReader.GetUint32(iccData, index, IsLittleEndian);
     //nCIEXYZ tristimulus values for measurement backing
     XYZBacking = new XYZNumber(iccData, index + 4, IsLittleEndian);
     //Measurement geometry (4 bytes)
     Geometry = (MeasurementGeometry)HighEndianReader.GetUint32(iccData, index, IsLittleEndian);
     //Measurement flare (4 bytes)
     Flare = HighEndianReader.GetU16Fixed16NumberToDouble(iccData, index + 24, IsLittleEndian);
     //Standard illuminant (4 bytes)
     Illuminant = (StandardIlluminant)HighEndianReader.GetUint32(iccData, index + 24, IsLittleEndian);
 }
 public override void GetTagData(byte[] iccData, int index, ICCHeader header = null)
 {
     ChannelCount = HighEndianReader.GetUInt16(iccData, index, IsLittleEndian);
     ColorantType = (EnumConst.ColorantEncoding)HighEndianReader.GetUInt16(iccData, index + 2, IsLittleEndian);
     if (ColorantType == EnumConst.ColorantEncoding.Unknown)
     {
         ChannelValues = new double[ChannelCount][];
         for (int i = 0; i < ChannelCount; i++)
         {
             ChannelValues[i] = new double[2];
             int startIndex = (index + 4) + i * 8;
             ChannelValues[i][0] = HighEndianReader.GetU16Fixed16NumberToDouble(iccData, startIndex, IsLittleEndian);
             ChannelValues[i][1] = HighEndianReader.GetU16Fixed16NumberToDouble(iccData, startIndex + 4, IsLittleEndian);
         }
     }
     else
     {
         ChannelValues = GetChannelValueByEncoding(ColorantType);
     }
 }