⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ielcms.pas

📁 ·ImageEn 2.3.0 ImageEn一组用于图像处理、查看和分析的Delphi控件。能够保存几种图像格式
💻 PAS
📖 第 1 页 / 共 5 页
字号:
//
//  Little cms
//  Copyright (C) 1998-2004 Marti Maria
//
// Permission is hereby granted, free of charge, to any person obtaining
// a copy of this software and associated documentation files (the "Software"),
// to deal in the Software without restriction, including without limitation
// the rights to use, copy, modify, merge, publish, distribute, sublicense,
// and/or sell copies of the Software, and to permit persons to whom the Software
// is furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO
// THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

// Version 1.13

// September 2004: Converted to Delphi by Fabrizio Di Vittorio (fdivitto@tiscali.it)

unit ielcms;

{$I ie.inc}

interface

{$IFDEF IEINCLUDECMS}

uses Windows, Classes, SysUtils, hyieutils, imageenproc, hyiedefs;

type

  LCMSHANDLE = pointer;
  cmsHPROFILE = LCMSHANDLE;
  cmsHTRANSFORM = LCMSHANDLE;
  PcmsHTRANSFORM = ^cmsHTRANSFORM;

const
  // Pixel types

  PT_ANY = 0;
  PT_GRAY = 3;
  PT_RGB = 4;
  PT_CMY = 5;
  PT_CMYK = 6;
  PT_YCbCr = 7;
  PT_YUV = 8; // Lu'v'
  PT_XYZ = 9;
  PT_Lab = 10;
  PT_YUVK = 11; // Lu'v'K
  PT_HSV = 12;
  PT_HLS = 13;
  PT_Yxy = 14;
  PT_HiFi = 15;
  PT_HiFi7 = 16;
  PT_HiFi8 = 17;

  TYPE_GRAY_8 = ((PT_GRAY shl 16) or (1 shl 3) or (1));
  TYPE_GRAY_8_REV = ((PT_GRAY shl 16) or (1 shl 3) or (1) or (1 shl 13));
  TYPE_GRAY_16 = ((PT_GRAY shl 16) or (1 shl 3) or (2));
  TYPE_GRAY_16_REV = ((PT_GRAY shl 16) or (1 shl 3) or (2) or (1 shl 13));
  TYPE_GRAY_16_SE = ((PT_GRAY shl 16) or (1 shl 3) or (2) or (1 shl 11));
  TYPE_GRAYA_8 = ((PT_GRAY shl 16) or (1 shl 7) or (1 shl 3) or (1));
  TYPE_GRAYA_16 = ((PT_GRAY shl 16) or (1 shl 7) or (1 shl 3) or (2));
  TYPE_GRAYA_16_SE = ((PT_GRAY shl 16) or (1 shl 7) or (1 shl 3) or (2) or (1 shl 11));
  TYPE_GRAYA_8_PLANAR = ((PT_GRAY shl 16) or (1 shl 7) or (1 shl 3) or (1) or (1 shl 12));
  TYPE_GRAYA_16_PLANAR = ((PT_GRAY shl 16) or (1 shl 7) or (1 shl 3) or (2) or (1 shl 12));

  TYPE_RGB_8 = ((PT_RGB shl 16) or (3 shl 3) or (1));
  TYPE_RGB_8_PLANAR = ((PT_RGB shl 16) or (3 shl 3) or (1) or (1 shl 12));
  TYPE_BGR_8 = ((PT_RGB shl 16) or (3 shl 3) or (1) or (1 shl 10));
  TYPE_BGR_8_PLANAR = ((PT_RGB shl 16) or (3 shl 3) or (1) or (1 shl 10) or (1 shl 12));
  TYPE_RGB_16 = ((PT_RGB shl 16) or (3 shl 3) or (2));
  TYPE_RGB_16_PLANAR = ((PT_RGB shl 16) or (3 shl 3) or (2) or (1 shl 12));
  TYPE_RGB_16_SE = ((PT_RGB shl 16) or (3 shl 3) or (2) or (1 shl 11));
  TYPE_BGR_16 = ((PT_RGB shl 16) or (3 shl 3) or (2) or (1 shl 10));
  TYPE_BGR_16_PLANAR = ((PT_RGB shl 16) or (3 shl 3) or (2) or (1 shl 10) or (1 shl 12));
  TYPE_BGR_16_SE = ((PT_RGB shl 16) or (3 shl 3) or (2) or (1 shl 10) or (1 shl 11));

  TYPE_RGBA_8 = ((PT_RGB shl 16) or (1 shl 7) or (3 shl 3) or (1));
  TYPE_RGBA_8_PLANAR = ((PT_RGB shl 16) or (1 shl 7) or (3 shl 3) or (1) or (1 shl 12));
  TYPE_RGBA_16 = ((PT_RGB shl 16) or (1 shl 7) or (3 shl 3) or (2));
  TYPE_RGBA_16_PLANAR = ((PT_RGB shl 16) or (1 shl 7) or (3 shl 3) or (2) or (1 shl 12));
  TYPE_RGBA_16_SE = ((PT_RGB shl 16) or (1 shl 7) or (3 shl 3) or (2) or (1 shl 11));

  TYPE_ARGB_8 = ((PT_RGB shl 16) or (1 shl 7) or (3 shl 3) or (1) or (1 shl 14));
  TYPE_ARGB_16 = ((PT_RGB shl 16) or (1 shl 7) or (3 shl 3) or (2) or (1 shl 14));

  TYPE_ABGR_8 = ((PT_RGB shl 16) or (1 shl 7) or (3 shl 3) or (1) or (1 shl 10));
  TYPE_ABGR_16 = ((PT_RGB shl 16) or (1 shl 7) or (3 shl 3) or (2) or (1 shl 10));
  TYPE_ABGR_16_PLANAR = ((PT_RGB shl 16) or (1 shl 7) or (3 shl 3) or (2) or (1 shl 10) or (1 shl 12));
  TYPE_ABGR_16_SE = ((PT_RGB shl 16) or (1 shl 7) or (3 shl 3) or (2) or (1 shl 10) or (1 shl 11));

  TYPE_BGRA_8 = ((PT_RGB shl 16) or (1 shl 7) or (3 shl 3) or (1) or (1 shl 10) or (1 shl 14));
  TYPE_BGRA_16 = ((PT_RGB shl 16) or (1 shl 7) or (3 shl 3) or (2) or (1 shl 10) or (1 shl 14));
  TYPE_BGRA_16_SE = ((PT_RGB shl 16) or (1 shl 7) or (3 shl 3) or (2) or (1 shl 11) or (1 shl 14));

  TYPE_CMY_8 = ((PT_CMY shl 16) or (3 shl 3) or (1));
  TYPE_CMY_8_PLANAR = ((PT_CMY shl 16) or (3 shl 3) or (1) or (1 shl 12));
  TYPE_CMY_16 = ((PT_CMY shl 16) or (3 shl 3) or (2));
  TYPE_CMY_16_PLANAR = ((PT_CMY shl 16) or (3 shl 3) or (2) or (1 shl 12));
  TYPE_CMY_16_SE = ((PT_CMY shl 16) or (3 shl 3) or (2) or (1 shl 11));

  TYPE_CMYK_8 = ((PT_CMYK shl 16) or (4 shl 3) or (1));
  TYPE_CMYK_8_REV = ((PT_CMYK shl 16) or (4 shl 3) or (1) or (1 shl 13));
  TYPE_YUVK_8 = TYPE_CMYK_8_REV;
  TYPE_CMYK_8_PLANAR = ((PT_CMYK shl 16) or (4 shl 3) or (1) or (1 shl 12));
  TYPE_CMYK_16 = ((PT_CMYK shl 16) or (4 shl 3) or (2));
  TYPE_CMYK_16_REV = ((PT_CMYK shl 16) or (4 shl 3) or (2) or (1 shl 13));
  TYPE_YUVK_16 = TYPE_CMYK_16_REV;
  TYPE_CMYK_16_PLANAR = ((PT_CMYK shl 16) or (4 shl 3) or (2) or (1 shl 12));
  TYPE_CMYK_16_SE = ((PT_CMYK shl 16) or (4 shl 3) or (2) or (1 shl 11));

  TYPE_KYMC_8 = ((PT_CMYK shl 16) or (4 shl 3) or (1) or (1 shl 10));
  TYPE_KYMC_16 = ((PT_CMYK shl 16) or (4 shl 3) or (2) or (1 shl 10));
  TYPE_KYMC_16_SE = ((PT_CMYK shl 16) or (4 shl 3) or (2) or (1 shl 10) or (1 shl 11));

  TYPE_KCMY_8 = ((PT_CMYK shl 16) or (4 shl 3) or (1) or (1 shl 14));
  TYPE_KCMY_8_REV = ((PT_CMYK shl 16) or (4 shl 3) or (1) or (1 shl 13) or (1 shl 14));
  TYPE_KCMY_16 = ((PT_CMYK shl 16) or (4 shl 3) or (2) or (1 shl 14));
  TYPE_KCMY_16_REV = ((PT_CMYK shl 16) or (4 shl 3) or (2) or (1 shl 13) or (1 shl 14));
  TYPE_KCMY_16_SE = ((PT_CMYK shl 16) or (4 shl 3) or (2) or (1 shl 11) or (1 shl 14));

  TYPE_CMYK5_8 = ((5 shl 3) or (1));
  TYPE_CMYK5_16 = ((5 shl 3) or (2));
  TYPE_CMYK5_16_SE = ((5 shl 3) or (2) or (1 shl 11));
  TYPE_KYMC5_8 = ((5 shl 3) or (1) or (1 shl 10));
  TYPE_KYMC5_16 = ((5 shl 3) or (2) or (1 shl 10));
  TYPE_KYMC5_16_SE = ((5 shl 3) or (2) or (1 shl 10) or (1 shl 11));

  TYPE_CMYKcm_8 = ((6 shl 3) or (1));
  TYPE_CMYKcm_8_PLANAR = ((6 shl 3) or (1) or (1 shl 12));
  TYPE_CMYKcm_16 = ((6 shl 3) or (2));
  TYPE_CMYKcm_16_PLANAR = ((6 shl 3) or (2) or (1 shl 12));
  TYPE_CMYKcm_16_SE = ((6 shl 3) or (2) or (1 shl 11));

  TYPE_CMYK7_8 = ((7 shl 3) or (1));
  TYPE_CMYK7_16 = ((7 shl 3) or (2));
  TYPE_CMYK7_16_SE = ((7 shl 3) or (2) or (1 shl 11));
  TYPE_KYMC7_8 = ((7 shl 3) or (1) or (1 shl 10));
  TYPE_KYMC7_16 = ((7 shl 3) or (2) or (1 shl 10));
  TYPE_KYMC7_16_SE = ((7 shl 3) or (2) or (1 shl 10) or (1 shl 11));
  TYPE_CMYK8_8 = ((8 shl 3) or (1));
  TYPE_CMYK8_16 = ((8 shl 3) or (2));
  TYPE_CMYK8_16_SE = ((8 shl 3) or (2) or (1 shl 11));
  TYPE_KYMC8_8 = ((8 shl 3) or (1) or (1 shl 10));
  TYPE_KYMC8_16 = ((8 shl 3) or (2) or (1 shl 10));
  TYPE_KYMC8_16_SE = ((8 shl 3) or (2) or (1 shl 10) or (1 shl 11));
  TYPE_CMYK9_8 = ((9 shl 3) or (1));
  TYPE_CMYK9_16 = ((9 shl 3) or (2));
  TYPE_CMYK9_16_SE = ((9 shl 3) or (2) or (1 shl 11));
  TYPE_KYMC9_8 = ((9 shl 3) or (1) or (1 shl 10));
  TYPE_KYMC9_16 = ((9 shl 3) or (2) or (1 shl 10));
  TYPE_KYMC9_16_SE = ((9 shl 3) or (2) or (1 shl 10) or (1 shl 11));
  TYPE_CMYK10_8 = ((10 shl 3) or (1));
  TYPE_CMYK10_16 = ((10 shl 3) or (2));
  TYPE_CMYK10_16_SE = ((10 shl 3) or (2) or (1 shl 11));
  TYPE_KYMC10_8 = ((10 shl 3) or (1) or (1 shl 10));
  TYPE_KYMC10_16 = ((10 shl 3) or (2) or (1 shl 10));
  TYPE_KYMC10_16_SE = ((10 shl 3) or (2) or (1 shl 10) or (1 shl 11));
  TYPE_CMYK11_8 = ((11 shl 3) or (1));
  TYPE_CMYK11_16 = ((11 shl 3) or (2));
  TYPE_CMYK11_16_SE = ((11 shl 3) or (2) or (1 shl 11));
  TYPE_KYMC11_8 = ((11 shl 3) or (1) or (1 shl 10));
  TYPE_KYMC11_16 = ((11 shl 3) or (2) or (1 shl 10));
  TYPE_KYMC11_16_SE = ((11 shl 3) or (2) or (1 shl 10) or (1 shl 11));
  TYPE_CMYK12_8 = ((12 shl 3) or (1));
  TYPE_CMYK12_16 = ((12 shl 3) or (2));
  TYPE_CMYK12_16_SE = ((12 shl 3) or (2) or (1 shl 11));
  TYPE_KYMC12_8 = ((12 shl 3) or (1) or (1 shl 10));
  TYPE_KYMC12_16 = ((12 shl 3) or (2) or (1 shl 10));
  TYPE_KYMC12_16_SE = ((12 shl 3) or (2) or (1 shl 10) or (1 shl 11));

  TYPE_XYZ_16 = ((PT_XYZ shl 16) or (3 shl 3) or (2));
  TYPE_Lab_8 = ((PT_Lab shl 16) or (3 shl 3) or (1));
  TYPE_ALab_8 = ((PT_Lab shl 16) or (3 shl 3) or (1) or (1 shl 7) or (1 shl 10));
  TYPE_Lab_16 = ((PT_Lab shl 16) or (3 shl 3) or (2));
  TYPE_Yxy_16 = ((PT_Yxy shl 16) or (3 shl 3) or (2));

  TYPE_YCbCr_8 = ((PT_YCbCr shl 16) or (3 shl 3) or (1));
  TYPE_YCbCr_8_PLANAR = ((PT_YCbCr shl 16) or (3 shl 3) or (1) or (1 shl 12));
  TYPE_YCbCr_16 = ((PT_YCbCr shl 16) or (3 shl 3) or (2));
  TYPE_YCbCr_16_PLANAR = ((PT_YCbCr shl 16) or (3 shl 3) or (2) or (1 shl 12));
  TYPE_YCbCr_16_SE = ((PT_YCbCr shl 16) or (3 shl 3) or (2) or (1 shl 11));

  TYPE_YUV_8 = ((PT_YUV shl 16) or (3 shl 3) or (1));
  TYPE_YUV_8_PLANAR = ((PT_YUV shl 16) or (3 shl 3) or (1) or (1 shl 12));
  TYPE_YUV_16 = ((PT_YUV shl 16) or (3 shl 3) or (2));
  TYPE_YUV_16_PLANAR = ((PT_YUV shl 16) or (3 shl 3) or (2) or (1 shl 12));
  TYPE_YUV_16_SE = ((PT_YUV shl 16) or (3 shl 3) or (2) or (1 shl 11));

  TYPE_HLS_8 = ((PT_HLS shl 16) or (3 shl 3) or (1));
  TYPE_HLS_8_PLANAR = ((PT_HLS shl 16) or (3 shl 3) or (1) or (1 shl 12));
  TYPE_HLS_16 = ((PT_HLS shl 16) or (3 shl 3) or (2));
  TYPE_HLS_16_PLANAR = ((PT_HLS shl 16) or (3 shl 3) or (2) or (1 shl 12));
  TYPE_HLS_16_SE = ((PT_HLS shl 16) or (3 shl 3) or (2) or (1 shl 11));

  TYPE_HSV_8 = ((PT_HSV shl 16) or (3 shl 3) or (1));
  TYPE_HSV_8_PLANAR = ((PT_HSV shl 16) or (3 shl 3) or (1) or (1 shl 12));
  TYPE_HSV_16 = ((PT_HSV shl 16) or (3 shl 3) or (2));
  TYPE_HSV_16_PLANAR = ((PT_HSV shl 16) or (3 shl 3) or (2) or (1 shl 12));
  TYPE_HSV_16_SE = ((PT_HSV shl 16) or (3 shl 3) or (2) or (1 shl 11));

  TYPE_NAMED_COLOR_INDEX = ((1 shl 3) or (2));

  TYPE_XYZ_DBL = ((PT_XYZ shl 16) or (3 shl 3) or (0));
  TYPE_Lab_DBL = ((PT_Lab shl 16) or (3 shl 3) or (0));
  TYPE_GRAY_DBL = ((PT_GRAY shl 16) or (1 shl 3) or (0));
  TYPE_RGB_DBL = ((PT_RGB shl 16) or (3 shl 3) or (0));
  TYPE_CMYK_DBL = ((PT_CMYK shl 16) or (4 shl 3) or (0));

  // Intents

  INTENT_PERCEPTUAL = 0;
  INTENT_RELATIVE_COLORIMETRIC = 1;
  INTENT_SATURATION = 2;
  INTENT_ABSOLUTE_COLORIMETRIC = 3;

  cmsFLAGS_NOTPRECALC = $0100;
  cmsFLAGS_NULLTRANSFORM = $0200; // Don't transform anyway
  cmsFLAGS_HIGHRESPRECALC = $0400; // Use more memory to give better accurancy
  cmsFLAGS_LOWRESPRECALC = $0800; // Use less memory to minimize resouces

function IEcmsOpenProfileFromFile(stream: TStream; save: boolean; save8bit: boolean): cmsHPROFILE;
function IEcmsCreateTransform(Input: cmsHPROFILE; InputFormat: DWORD; Output: cmsHPROFILE; OutputFormat: DWORD; Intent: integer; dwFlags: DWORD): cmsHTRANSFORM;
function IEcmsCloseProfile(hProfile: cmsHPROFILE): longbool;
procedure IEcmsDeleteTransform(hTransform: cmsHTRANSFORM);
procedure IEcmsDoTransform(Transform: cmsHTRANSFORM; InputBuffer: pointer; OutputBuffer: pointer; Size: dword);
function IEcmsCreate_sRGBProfile: cmsHPROFILE;
function IEcmsCreateLabProfile(WhitePoint_x, WhitePoint_y, WhitePoint_Y_: double): cmsHPROFILE;
function IEcmsCreateLabProfileD50: cmsHPROFILE;
function IEcmsCreateXYZProfile: cmsHPROFILE;
function IEcmsWhitePointFromTemp(TempK: integer; var WhitePoint_x, WhitePoint_y, WhitePoint_Y_: double): boolean;

implementation

{$WARNINGS OFF}

var
  UsedSpace: integer;

const
  MAX_TABLE_TAG = 50;

  D50X = (0.9642);
  D50Y = (1.0);
  D50Z = (0.8249);

  icMagicNumber = $61637370; // 'acsp' */
  icVersionNumber = $02100000; // 2.1.0, BCD */

  icSigChromaticAdaptationTag = $63686164; // 'chad'

  VX = 0;
  VY = 1;
  VZ = 2;

  MAXCHANNELS = 16;

  LUT_V4_OUTPUT_EMULATE_V2 = $10000; // Is a V4 output LUT, emulating V2
  LUT_V4_INPUT_EMULATE_V2 = $20000; // Is a V4 input LUT, emulating V2
  LUT_V2_OUTPUT_EMULATE_V4 = $40000; // Is a V2 output LUT, emulating V4
  LUT_V2_INPUT_EMULATE_V4 = $80000; // Is a V2 input LUT, emulating V4

  // LUT handling

  LUT_HASMATRIX = $0001;
  LUT_HASTL1 = $0002;
  LUT_HASTL2 = $0008;
  LUT_HAS3DGRID = $0010;

  LUT_HASMATRIX3 = $0020; // Matrix + offset for LutAToB
  LUT_HASMATRIX4 = $0040; // Matrix + offset for LutBToA

  LUT_HASTL3 = $0100; // '3' curves for LutAToB
  LUT_HASTL4 = $0200; // '4' curves for LutBToA

  AlarmR: WORD = $8FFF;
  AlarmG: WORD = $8FFF;
  AlarmB: WORD = $8FFF;

  icSigLuvKData = $4C75764B; // 'LuvK'
  icSigHexachromeData = $4D434836; // MCH6
  icSigHeptachromeData = $4D434837; // MCH7
  icSigOctachromeData = $4D434838; // MCH8

  icSiglutAtoBType = $6D414220; // mAB
  icSiglutBtoAType = $6D424120; // mBA

  icSigParametricCurveType = $70617261; // parametric (ICC 4.0)

  cmsFLAGS_NOTCACHE = $0040; // Inhibit 1-pixel cache

  XYZRel = 0;
  LabRel = 1;

  cmsFLAGS_GAMUTCHECK = $1000; // Out of Gamut alarm
  cmsFLAGS_SOFTPROOFING = $4000; // Do softproofing

  icSigChromaticityTag = $6368726D; // As per Addendum 2 to Spec. ICC.1:1998-09

  lcmsSignature = $6C636D73;

  icSigChromaticityType = $6368726D;

  SAMPLER_HASTL1 = LUT_HASTL1;

  SAMPLER_HASTL2 = LUT_HASTL2;

  SAMPLER_INSPECT = $01000000;

  ERR_THERESHOLD = 5;

  cmsFLAGS_MATRIXINPUT = $0001;
  cmsFLAGS_MATRIXOUTPUT = $0002;
  MATSHAPER_INPUT = $0004;

  MATSHAPER_OUTPUT = $0008;
  MATSHAPER_HASINPSHAPER = $0010;

  MATSHAPER_ALLSMELTED = (MATSHAPER_INPUT or MATSHAPER_OUTPUT);

  MATSHAPER_HASMATRIX = $0001;

  MATSHAPER_HASSHAPER = $0002;

  icReflective = $00000000; // Bit pos 0 */
  icTransparency = $00000001; // Bit pos 0 */
  icGlossy = $00000000; // Bit pos 1 */
  icMatte = $00000002; // Bit pos 1 */

  LCMS_BPFLAGS_D50_ADAPTED = $0001;

  PERCEPTUAL_BLACK_X = (0.00336);
  PERCEPTUAL_BLACK_Y = (0.0034731);
  PERCEPTUAL_BLACK_Z = (0.00287);

  LCMS_USED_AS_INPUT = 0;
  LCMS_USED_AS_OUTPUT = 1;
  LCMS_USED_AS_PROOF = 2;

  cmsFLAGS_WHITEBLACKCOMPENSATION = $2000;
  cmsFLAGS_BLACKPOINTCOMPENSATION = cmsFLAGS_WHITEBLACKCOMPENSATION;

  cmsFLAGS_NOPRELINEARIZATION = $0010;

type

  icUInt32Number = dword;
  icInt32Number = integer;
  icSignature = integer;
  icUInt16Number = word;
  icInt8Number = shortint;
  icUInt8Number = byte;

  icUInt64Number = array[0..1] of dword;
  icS15Fixed16Number = icInt32Number;

  Fixed32 = icInt32Number;

type
  icProfileClassSignature = integer;
const
  icSigInputClass = $73636E72; (* 'scnr' *)
  icSigDisplayClass = $6D6E7472; (* 'mntr' *)
  icSigOutputClass = $70727472; (* 'prtr' *)
  icSigLinkClass = $6C696E6B; (* 'link' *)
  icSigAbstractClass = $61627374; (* 'abst' *)
  icSigColorSpaceClass = $73706163; (* 'spac' *)
  icSigNamedColorClass = $6E6D636C; (* 'nmcl' *)
  icMaxEnumClass = $FFFFFFFF;

type
  icColorSpaceSignature = integer;
const
  icSigXYZData = $58595A20; (* 'XYZ ' *)
  icSigLabData = $4C616220; (* 'Lab ' *)
  icSigLuvData = $4C757620; (* 'Luv ' *)
  icSigYCbCrData = $59436272; (* 'YCbr' *)
  icSigYxyData = $59787920; (* 'Yxy ' *)
  icSigRgbData = $52474220; (* 'RGB ' *)
  icSigGrayData = $47524159; (* 'GRAY' *)
  icSigHsvData = $48535620; (* 'HSV ' *)
  icSigHlsData = $484C5320; (* 'HLS ' *)
  icSigCmykData = $434D594B; (* 'CMYK' *)
  icSigCmyData = $434D5920; (* 'CMY ' *)
  icSig2colorData = $32434C52; (* '2CLR' *)
  icSig3colorData = $33434C52; (* '3CLR' *)
  icSig4colorData = $34434C52; (* '4CLR' *)
  icSig5colorData = $35434C52; (* '5CLR' *)
  icSig6colorData = $36434C52; (* '6CLR' *)
  icSig7colorData = $37434C52; (* '7CLR' *)
  icSig8colorData = $38434C52; (* '8CLR' *)
  icSig9colorData = $39434C52; (* '9CLR' *)
  icSig10colorData = $41434C52; (* 'ACLR' *)
  icSig11colorData = $42434C52; (* 'BCLR' *)
  icSig12colorData = $43434C52; (* 'CCLR' *)
  icSig13colorData = $44434C52; (* 'DCLR' *)
  icSig14colorData = $45434C52; (* 'ECLR' *)
  icSig15colorData = $46434C52; (* 'FCLR' *)
  icMaxEnumData = $FFFFFFFF;

type
  icTagSignature = integer;
const
  icSigAToB0Tag = $41324230; (* 'A2B0' *)
  icSigAToB1Tag = $41324231; (* 'A2B1' *)
  icSigAToB2Tag = $41324232; (* 'A2B2' *)
  icSigBlueColorantTag = $6258595A; (* 'bXYZ' *)
  icSigBlueTRCTag = $62545243; (* 'bTRC' *)
  icSigBToA0Tag = $42324130; (* 'B2A0' *)
  icSigBToA1Tag = $42324131; (* 'B2A1' *)
  icSigBToA2Tag = $42324132; (* 'B2A2' *)
  icSigCalibrationDateTimeTag = $63616C74; (* 'calt' *)
  icSigCharTargetTag = $74617267; (* 'targ' *)
  icSigCopyrightTag = $63707274; (* 'cprt' *)
  icSigCrdInfoTag = $63726469; (* 'crdi' *)
  icSigDeviceMfgDescTag = $646D6E64; (* 'dmnd' *)
  icSigDeviceModelDescTag = $646D6464; (* 'dmdd' *)
  icSigGamutTag = $67616D74; (* 'gamt ' *)
  icSigGrayTRCTag = $6B545243; (* 'kTRC' *)
  icSigGreenColorantTag = $6758595A; (* 'gXYZ' *)
  icSigGreenTRCTag = $67545243; (* 'gTRC' *)
  icSigLuminanceTag = $6C756D69; (* 'lumi' *)
  icSigMeasurementTag = $6D656173; (* 'meas' *)
  icSigMediaBlackPointTag = $626B7074; (* 'bkpt' *)
  icSigMediaWhitePointTag = $77747074; (* 'wtpt' *)
  icSigNamedColorTag = $6E636F6C; (* 'ncol'
  * OBSOLETE, use ncl2 *)
  icSigNamedColor2Tag = $6E636C32; (* 'ncl2' *)
  icSigPreview0Tag = $70726530; (* 'pre0' *)
  icSigPreview1Tag = $70726531; (* 'pre1' *)
  icSigPreview2Tag = $70726532; (* 'pre2' *)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -