public static ICCTag createInstance(int signature, byte[] data, int offset, int count)
{
int type = ICCProfile.getInt(data, offset);
if (type == kdwTextDescType)
return new ICCTextDescriptionType(signature, data, offset, count);
else if (type == kdwTextType)
return new ICCTextType(signature, data, offset, count);
else if (type == kdwXYZType)
return new ICCXYZType(signature, data, offset, count);
else if (type == kdwXYZTypeReverse)
return new ICCXYZTypeReverse(signature, data, offset, count);
else if (type == kdwCurveType)
return new ICCCurveType(signature, data, offset, count);
else if (type == kdwCurveTypeReverse)
return new ICCCurveTypeReverse(signature, data, offset, count);
else if (type == kdwMeasurementType)
return new ICCMeasurementType(signature, data, offset, count);
else if (type == kdwSignatureType)
return new ICCSignatureType(signature, data, offset, count);
else if (type == kdwViewType)
return new ICCViewType(signature, data, offset, count);
else if (type == kdwDataType)
return new ICCDataType(signature, data, offset, count);
else
{
var bytes = BitConverter.GetBytes(type);
throw new System.ArgumentException("bad tag type: " + System.Text.Encoding.UTF8.GetString(bytes, 0, bytes.Length) +
"(" + type + ")");
}
}