diff options
author | Michele Calgaro <[email protected]> | 2020-09-11 14:38:47 +0900 |
---|---|---|
committer | Michele Calgaro <[email protected]> | 2020-09-11 14:38:47 +0900 |
commit | 884c8093d63402a1ad0b502244b791e3c6782be3 (patch) | |
tree | a600d4ab0d431a2bdfe4c15b70df43c14fbd8dd0 /debian/lcms/lcms-1.19.dfsg2/Delphi | |
parent | 14e1aa2006796f147f3f4811fb908a6b01e79253 (diff) | |
download | extra-dependencies-884c8093d63402a1ad0b502244b791e3c6782be3.tar.gz extra-dependencies-884c8093d63402a1ad0b502244b791e3c6782be3.zip |
Added debian extra dependency packages.
Signed-off-by: Michele Calgaro <[email protected]>
Diffstat (limited to 'debian/lcms/lcms-1.19.dfsg2/Delphi')
16 files changed, 1852 insertions, 0 deletions
diff --git a/debian/lcms/lcms-1.19.dfsg2/Delphi/Samples/MAKETEST.BAT b/debian/lcms/lcms-1.19.dfsg2/Delphi/Samples/MAKETEST.BAT new file mode 100755 index 00000000..5a8fc9d1 --- /dev/null +++ b/debian/lcms/lcms-1.19.dfsg2/Delphi/Samples/MAKETEST.BAT @@ -0,0 +1,3 @@ +dcc32 -CC test
+if errorlevel 0 dcc32 -CC testwp
+
\ No newline at end of file diff --git a/debian/lcms/lcms-1.19.dfsg2/Delphi/Samples/TEST.PAS b/debian/lcms/lcms-1.19.dfsg2/Delphi/Samples/TEST.PAS new file mode 100755 index 00000000..5530c1a6 --- /dev/null +++ b/debian/lcms/lcms-1.19.dfsg2/Delphi/Samples/TEST.PAS @@ -0,0 +1,71 @@ +
+
+
+PROGRAM LcmsTest;
+USES lcmsdll, Windows;
+
+TYPE
+ ScanLineType = Array[0..255] OF PACKED RECORD
+ b, g, r: Byte;
+ END;
+
+VAR
+ hInProfile, hOutProfile: cmsHPROFILE;
+ hTransform: cmsHTRANSFORM;
+
+ ScanLine, ScanLineTranslated: ScanLineType;
+ r, g, b: Integer;
+
+
+BEGIN
+
+
+ hInProfile := cmsOpenProfileFromFile('HPSJTW.ICM', 'r');
+ hOutProfile := cmsOpenProfileFromFile('sRGB Color Space Profile.ICM', 'r');
+
+
+ WriteLn('Input profile : ', cmsTakeProductName(hInProfile));
+ WriteLn('Output profile : ', cmsTakeProductName(hOutProfile));
+
+
+ hTransform := cmsCreateTransform(hInProfile,
+ TYPE_BGR_8,
+ hOutProfile,
+ TYPE_BGR_8,
+ INTENT_PERCEPTUAL, 0);
+
+ WriteLn('As speed test, I will transform all spectrum...');
+ WriteLn('This implies an image of 255x255x255x3 = 47 MB!!!');
+ WriteLn('Each number represents a chunk 255x255x3 = 190.5 Kb! processed');
+
+ FOR r := 0 TO 255 DO
+ BEGIN
+ FOR g := 0 TO 255 DO
+ BEGIN
+ FOR b := 0 TO 255 DO
+ BEGIN
+
+ ScanLine[b].r := r;
+ ScanLine[b].g := g;
+ ScanLine[b].b := b;
+ END;
+
+ cmsDoTransform(hTransform,
+ @ScanLine,
+ @ScanLineTranslated,
+ 255)
+
+ END;
+
+ Write(r:4, #$0d)
+ END;
+ WriteLn; WriteLn('Done!!!');
+
+
+
+ cmsDeleteTransform(hTransform);
+ cmsCloseProfile(hInProfile);
+ cmsCloseProfile(hOutProfile);
+
+END.
+
diff --git a/debian/lcms/lcms-1.19.dfsg2/Delphi/Samples/create.pas b/debian/lcms/lcms-1.19.dfsg2/Delphi/Samples/create.pas new file mode 100755 index 00000000..72914ddd --- /dev/null +++ b/debian/lcms/lcms-1.19.dfsg2/Delphi/Samples/create.pas @@ -0,0 +1,73 @@ +
+PROGRAM CreateProfile;
+USES lcmsdll, Windows;
+
+
+VAR
+ Primaries: cmsCIExyYTRIPLE;
+ WhitePoint: cmsCIExyY;
+ GammaTables: ARRAY [1..3] OF LPGAMMATABLE;
+ TheProfile: cmsHPROFILE;
+
+
+BEGIN
+
+ WriteLn('Creation of profile TEST.ICM...');
+
+ {Fill in primaries (Rec709 as example) }
+
+ Primaries.Red.x := 0.6400;
+ Primaries.Red.y := 0.3300;
+ Primaries.Red.YY := 1.0;
+
+ Primaries.Green.x := 0.3000;
+ Primaries.Green.y := 0.6000;
+ Primaries.Green.YY := 1.0;
+
+ Primaries.Blue.x := 0.1500;
+ Primaries.Blue.y := 0.0600;
+ Primaries.Blue.YY := 1.0;
+
+
+ {Calculates white point from temperature}
+ {That is, 6504�K = D65 }
+
+ cmsWhitePointFromTemp(6504, @WhitePoint);
+
+
+
+ { Compute gamma tables of 2.2 }
+
+ GammaTables[1] := cmsBuildGamma(256, 2.2);
+ GammaTables[2] := cmsBuildGamma(256, 2.2);
+ GammaTables[3] := cmsBuildGamma(256, 2.2);
+
+
+ { Does create the profile }
+
+ TheProfile := cmsCreateRGBProfile(@WhitePoint, @Primaries, GammaTables);
+
+
+
+ _cmsAddTextTag(TheProfile, $63707274, 'copyright (c) you');
+ _cmsAddTextTag(TheProfile, $646D6E64, 'Manufacturer');
+ _cmsAddTextTag(TheProfile, $646D6464, 'Model');
+
+
+ { Save the profile to a file }
+
+ _cmsSaveProfile(TheProfile, 'TEST.ICM');
+
+ WriteLn('Profile saved');
+
+ { Free the gamma tables }
+
+ cmsFreeGamma(GammaTables[1]);
+ cmsFreeGamma(GammaTables[2]);
+ cmsFreeGamma(GammaTables[3]);
+
+ { And close the handle }
+
+ cmsCloseProfile(TheProfile)
+END.
+
diff --git a/debian/lcms/lcms-1.19.dfsg2/Delphi/Samples/gamutchk.pas b/debian/lcms/lcms-1.19.dfsg2/Delphi/Samples/gamutchk.pas new file mode 100755 index 00000000..e2975bfa --- /dev/null +++ b/debian/lcms/lcms-1.19.dfsg2/Delphi/Samples/gamutchk.pas @@ -0,0 +1,51 @@ +PROGRAM GamutChk;
+
+USES lcmsdll, Windows;
+
+
+VAR
+ hLabProfile, hDisplayProfile, hProof: cmsHPROFILE;
+ ProofTransform : cmsHTRANSFORM;
+ Lab: cmsCIELab;
+ wRGB: ARRAY [0..2] OF Byte;
+
+BEGIN
+ WriteLn('Gamut check test');
+
+ hLabProfile := cmsCreateLabProfile(NIL);
+ hDisplayProfile := cmsCreate_sRGBProfile();
+ hProof := cmsOpenProfileFromFile('test.icm', 'r');
+
+
+ ProofTransform:=cmsCreateProofingTransform(hLabProfile,
+ TYPE_Lab_DBL,
+ hDisplayProfile,
+ TYPE_RGB_8,
+ hProof,
+ INTENT_RELATIVE_COLORIMETRIC,
+ INTENT_ABSOLUTE_COLORIMETRIC,
+ cmsFLAGS_SOFTPROOFING OR cmsFLAGS_GAMUTCHECK OR cmsFLAGS_NOTPRECALC);
+
+
+ cmsSetAlarmCodes(255,255,255);
+
+
+ Write('L=?'); ReadLn(Lab.L);
+ Write('a=?'); ReadLn(Lab.a);
+ Write('b=?'); ReadLn(Lab.b);
+
+
+ cmsDoTransform(ProofTransform, @Lab, @wRGB, 1);
+
+ WriteLn('R=', wRGB[0], ' G=', wRGB[1], ' B=', wRGB[2]);
+
+ cmsCloseProfile(hLabProfile);
+ cmsCloseProfile(hDisplayProfile);
+ cmsCloseProfile(hProof);
+ cmsDeleteTransform(ProofTransform);
+
+END.
+
+
+
+
\ No newline at end of file diff --git a/debian/lcms/lcms-1.19.dfsg2/Delphi/Samples/getxyz.pas b/debian/lcms/lcms-1.19.dfsg2/Delphi/Samples/getxyz.pas new file mode 100755 index 00000000..f8eeffe5 --- /dev/null +++ b/debian/lcms/lcms-1.19.dfsg2/Delphi/Samples/getxyz.pas @@ -0,0 +1,62 @@ +program TestXYZ;
+uses lcmsdll;
+
+
+type
+ TRGB8 = Packed record
+ r, g, b : Byte
+ END;
+
+var
+
+ InputProfile, OutputProfile : cmsHPROFILE;
+ Transform: cmsHTRANSFORM;
+ RGB8: TRGB8;
+ XYZ: cmsCIEXYZ;
+
+begin
+ InputProfile := cmsOpenProfileFromFile('profile.icm','r');
+ OutputProfile := cmsCreateXYZProfile();
+
+ Transform := cmsCreateTransform(InputProfile,
+ TYPE_RGB_8,
+ OutputProfile,
+ TYPE_XYZ_DBL,
+ INTENT_ABSOLUTE_COLORIMETRIC, cmsFLAGS_NOTPRECALC);
+
+ WriteLn('Enter RGB (0-255) or all 0 to end');
+ REPEAT
+
+ Write('R?'); ReadLn(RGB8.r);
+ Write('G?'); ReadLn(RGB8.g);
+ Write('B?'); ReadLn(RGB8.b);
+
+
+ cmsDoTransform(Transform,
+ @RGB8,
+ @XYZ,
+ 1);
+
+
+ {Transport to radiance}
+
+ XYZ.X := XYZ.X * 100.;
+ XYZ.Y := XYZ.Y * 100.;
+ XYZ.Z := XYZ.Z * 100.;
+
+
+ WriteLn; WriteLn('XYZ (as viewed on D50 box)');
+
+ Write('X='); WriteLn(XYZ.X:3:2);
+ Write('Y='); WriteLn(XYZ.Y:3:2);
+ Write('Z='); WriteLn(XYZ.Z:3:2);
+
+ UNTIL ((RGB8.r = 0) and (RGB8.g = 0) and (RGB8.b = 0));
+
+
+ cmsDeleteTransform(Transform);
+ cmsCloseProfile(InputProfile);
+ cmsCloseProfile(OutputProfile)
+
+END.
+
diff --git a/debian/lcms/lcms-1.19.dfsg2/Delphi/Samples/testfrm.pas b/debian/lcms/lcms-1.19.dfsg2/Delphi/Samples/testfrm.pas new file mode 100755 index 00000000..b0311e2a --- /dev/null +++ b/debian/lcms/lcms-1.19.dfsg2/Delphi/Samples/testfrm.pas @@ -0,0 +1,95 @@ +program TestFormatting;
+uses lcmsdll;
+
+type
+ RGB16 = Packed record
+ r, g, b : Word
+ END;
+
+var
+ InputProfile, OutputProfile : cmsHPROFILE;
+ Transform1, Transform2: cmsHTRANSFORM;
+ InRGB16, OutRGB16: RGB16;
+ OutLab: cmsCIELab;
+
+
+procedure Mult257(var n: Word);
+ begin
+ n := n * 257
+ end;
+
+
+function Div257(n: Word) : Real;
+begin
+ Div257 := n / 257.
+end;
+
+
+begin
+
+ InputProfile := cmsCreate_sRGBProfile();
+ OutputProfile := cmsCreateLabProfile(NIL);
+
+
+ Transform1 := cmsCreateTransform(InputProfile,
+ TYPE_RGB_16,
+ OutputProfile,
+ TYPE_Lab_DBL,
+ INTENT_PERCEPTUAL, cmsFLAGS_NOTPRECALC);
+
+ Transform2 := cmsCreateTransform(OutputProfile,
+ TYPE_Lab_DBL,
+ InputProfile,
+ TYPE_RGB_16,
+ INTENT_PERCEPTUAL, cmsFLAGS_NOTPRECALC);
+
+ REPEAT
+
+ Write('R?'); ReadLn(InRGB16.r);
+ Write('G?'); ReadLn(InRGB16.g);
+ Write('B?'); ReadLn(InRGB16.b);
+
+
+ { Expand to 16 bits }
+
+ Mult257(InRGB16.r);
+ Mult257(InRGB16.g);
+ Mult257(InRGB16.b);
+
+
+ { Forward }
+
+ cmsDoTransform(Transform1,
+ @InRGB16,
+ @OutLab,
+ 1);
+
+
+ Write('L*='); WriteLn(OutLab.L:3:2);
+ Write('a*='); WriteLn(OutLab.a:3:2);
+ Write('b*='); WriteLn(OutLab.b:3:2);
+
+
+ { Backwards }
+
+
+ cmsDoTransform(Transform2,
+ @OutLab,
+ @OutRGB16,
+ 1);
+
+ Write('R='); WriteLn(Div257(OutRGB16.R) :3:2);
+ Write('G='); WriteLn(Div257(OutRGB16.G) :3:2);
+ Write('B='); WriteLn(Div257(OutRGB16.B) :3:2);
+
+
+
+ UNTIL ((InRGB16.r = 0) and (InRGB16.g = 0) and (InRGB16.b = 0));
+
+
+ cmsDeleteTransform(Transform1);
+ cmsDeleteTransform(Transform2);
+ cmsCloseProfile(InputProfile);
+ cmsCloseProfile(OutputProfile)
+END.
+
diff --git a/debian/lcms/lcms-1.19.dfsg2/Delphi/Samples/testwp.pas b/debian/lcms/lcms-1.19.dfsg2/Delphi/Samples/testwp.pas new file mode 100755 index 00000000..3804033e --- /dev/null +++ b/debian/lcms/lcms-1.19.dfsg2/Delphi/Samples/testwp.pas @@ -0,0 +1,78 @@ +program TestWhitePoint;
+uses lcmsdll;
+
+type
+ RGB8 = Packed record
+ r, g, b : Byte
+ END;
+
+ CMYK8 = Packed record
+ c, m, y, k: Byte
+ end;
+var
+ WhitePoint: cmsCIExyY;
+ Primaries: cmsCIExyYTRIPLE;
+ Gamma: Array [1..3] OF LPGAMMATABLE;
+ InputProfile, OutputProfile : cmsHPROFILE;
+ Transform: cmsHTRANSFORM;
+ InRGB8: RGB8;
+ OutCMYK8: CMYK8;
+
+
+begin
+
+ cmsWhitePointFromTemp(9300, @WhitePoint);
+
+ Primaries.Red.x := 0.67;
+ Primaries.Red.y := 0.33;
+ Primaries.Red.YY := 1.0;
+ Primaries.Green.x := 0.21;
+ Primaries.Green.y := 0.71;
+ Primaries.Green.YY := 1.0;
+ Primaries.Blue.x := 0.14;
+ Primaries.Blue.y := 0.08;
+ Primaries.Blue.YY := 1.0;
+
+
+
+ Gamma[1] := cmsBuildGamma(256, 2.0);
+ Gamma[2] := cmsBuildGamma(256, 2.0);
+ Gamma[3] := cmsBuildGamma(256, 2.0);
+
+ InputProfile := cmsCreateRGBProfile(@WhitePoint, @Primaries, Gamma);
+ OutputProfile := cmsOpenProfileFromFile('CMYK.icm', 'r');
+
+
+ WriteLn('Input profile : ', cmsTakeProductName(InputProfile));
+ WriteLn('Output profile : ', cmsTakeProductName(OutputProfile));
+
+ Transform := cmsCreateTransform(InputProfile,
+ TYPE_RGB_8,
+ OutputProfile,
+ TYPE_CMYK_8,
+ INTENT_PERCEPTUAL, 0);
+
+ REPEAT
+
+ Write('R?'); ReadLn(InRGB8.r);
+ Write('G?'); ReadLn(InRGB8.g);
+ Write('B?'); ReadLn(InRGB8.b);
+
+ cmsDoTransform(Transform,
+ @InRGB8,
+ @OutCMYK8,
+ 1);
+
+ Write('C='); WriteLn(OutCMYK8.c);
+ Write('M='); WriteLn(OutCMYK8.m);
+ Write('Y='); WriteLn(OutCMYK8.y);
+ Write('K='); WriteLn(OutCMYK8.k);
+
+ UNTIL ((InRGB8.r = 0) and (InRGB8.g = 0) and (InRGB8.b = 0));
+
+
+ cmsDeleteTransform(Transform);
+ cmsCloseProfile(InputProfile);
+ cmsCloseProfile(OutputProfile)
+END.
+
diff --git a/debian/lcms/lcms-1.19.dfsg2/Delphi/delphidemo.cfg b/debian/lcms/lcms-1.19.dfsg2/Delphi/delphidemo.cfg new file mode 100755 index 00000000..08c593d8 --- /dev/null +++ b/debian/lcms/lcms-1.19.dfsg2/Delphi/delphidemo.cfg @@ -0,0 +1,38 @@ +-$A8
+-$B-
+-$C+
+-$D+
+-$E-
+-$F-
+-$G+
+-$H+
+-$I+
+-$J-
+-$K-
+-$L+
+-$M-
+-$N+
+-$O+
+-$P+
+-$Q-
+-$R-
+-$S-
+-$T-
+-$U-
+-$V+
+-$W-
+-$X+
+-$YD
+-$Z1
+-cg
+-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
+-H+
+-W+
+-M
+-$M16384,1048576
+-K$00400000
+-LE"c:\archivos de programa\borland\delphi7\Projects\Bpl"
+-LN"c:\archivos de programa\borland\delphi7\Projects\Bpl"
+-w-UNSAFE_TYPE
+-w-UNSAFE_CODE
+-w-UNSAFE_CAST
diff --git a/debian/lcms/lcms-1.19.dfsg2/Delphi/delphidemo.dof b/debian/lcms/lcms-1.19.dfsg2/Delphi/delphidemo.dof new file mode 100755 index 00000000..34c454b0 --- /dev/null +++ b/debian/lcms/lcms-1.19.dfsg2/Delphi/delphidemo.dof @@ -0,0 +1,136 @@ +[FileVersion]
+Version=7.0
+[Compiler]
+A=8
+B=0
+C=1
+D=1
+E=0
+F=0
+G=1
+H=1
+I=1
+J=0
+K=0
+L=1
+M=0
+N=1
+O=1
+P=1
+Q=0
+R=0
+S=0
+T=0
+U=0
+V=1
+W=0
+X=1
+Y=1
+Z=1
+ShowHints=1
+ShowWarnings=1
+UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
+NamespacePrefix=
+SymbolDeprecated=1
+SymbolLibrary=1
+SymbolPlatform=1
+UnitLibrary=1
+UnitPlatform=1
+UnitDeprecated=1
+HResultCompat=1
+HidingMember=1
+HiddenVirtual=1
+Garbage=1
+BoundsError=1
+ZeroNilCompat=1
+StringConstTruncated=1
+ForLoopVarVarPar=1
+TypedConstVarPar=1
+AsgToTypedConst=1
+CaseLabelRange=1
+ForVariable=1
+ConstructingAbstract=1
+ComparisonFalse=1
+ComparisonTrue=1
+ComparingSignedUnsigned=1
+CombiningSignedUnsigned=1
+UnsupportedConstruct=1
+FileOpen=1
+FileOpenUnitSrc=1
+BadGlobalSymbol=1
+DuplicateConstructorDestructor=1
+InvalidDirective=1
+PackageNoLink=1
+PackageThreadVar=1
+ImplicitImport=1
+HPPEMITIgnored=1
+NoRetVal=1
+UseBeforeDef=1
+ForLoopVarUndef=1
+UnitNameMismatch=1
+NoCFGFileFound=1
+MessageDirective=1
+ImplicitVariants=1
+UnicodeToLocale=1
+LocaleToUnicode=1
+ImagebaseMultiple=1
+SuspiciousTypecast=1
+PrivatePropAccessor=1
+UnsafeType=0
+UnsafeCode=0
+UnsafeCast=0
+[Linker]
+MapFile=0
+OutputObjs=0
+ConsoleApp=1
+DebugInfo=0
+RemoteSymbols=0
+MinStackSize=16384
+MaxStackSize=1048576
+ImageBase=4194304
+ExeDescription=
+[Directories]
+OutputDir=
+UnitOutputDir=
+PackageDLLOutputDir=
+PackageDCPOutputDir=
+SearchPath=
+Packages=
+Conditionals=
+DebugSourceDirs=
+UsePackages=0
+[Parameters]
+RunParams=
+HostApplication=
+Launcher=
+UseLauncher=0
+DebugCWD=d:\lcms-1.13\delphi
+[Language]
+ActiveLang=
+ProjectLang=
+RootDir=
+[Version Info]
+IncludeVerInfo=0
+AutoIncBuild=0
+MajorVer=1
+MinorVer=0
+Release=0
+Build=0
+Debug=0
+PreRelease=0
+Special=0
+Private=0
+DLL=0
+Locale=3082
+CodePage=1252
+[Version Info Keys]
+CompanyName=
+FileDescription=
+FileVersion=1.0.0.0
+InternalName=
+LegalCopyright=
+LegalTrademarks=
+OriginalFilename=
+ProductName=
+ProductVersion=1.0.0.0
+Comments=
diff --git a/debian/lcms/lcms-1.19.dfsg2/Delphi/delphidemo.dpr b/debian/lcms/lcms-1.19.dfsg2/Delphi/delphidemo.dpr new file mode 100755 index 00000000..a78d56ce --- /dev/null +++ b/debian/lcms/lcms-1.19.dfsg2/Delphi/delphidemo.dpr @@ -0,0 +1,13 @@ +program delphidemo;
+
+uses
+ Forms,
+ demo1 in 'demo1.pas' {Form1};
+
+{$R *.RES}
+
+begin
+ Application.Initialize;
+ Application.CreateForm(TForm1, Form1);
+ Application.Run;
+end.
diff --git a/debian/lcms/lcms-1.19.dfsg2/Delphi/delphidemo.res b/debian/lcms/lcms-1.19.dfsg2/Delphi/delphidemo.res Binary files differnew file mode 100755 index 00000000..ca4824f8 --- /dev/null +++ b/debian/lcms/lcms-1.19.dfsg2/Delphi/delphidemo.res diff --git a/debian/lcms/lcms-1.19.dfsg2/Delphi/demo1.dcu b/debian/lcms/lcms-1.19.dfsg2/Delphi/demo1.dcu Binary files differnew file mode 100755 index 00000000..af795904 --- /dev/null +++ b/debian/lcms/lcms-1.19.dfsg2/Delphi/demo1.dcu diff --git a/debian/lcms/lcms-1.19.dfsg2/Delphi/demo1.ddp b/debian/lcms/lcms-1.19.dfsg2/Delphi/demo1.ddp Binary files differnew file mode 100755 index 00000000..4370276c --- /dev/null +++ b/debian/lcms/lcms-1.19.dfsg2/Delphi/demo1.ddp diff --git a/debian/lcms/lcms-1.19.dfsg2/Delphi/demo1.dfm b/debian/lcms/lcms-1.19.dfsg2/Delphi/demo1.dfm Binary files differnew file mode 100755 index 00000000..c56466b3 --- /dev/null +++ b/debian/lcms/lcms-1.19.dfsg2/Delphi/demo1.dfm diff --git a/debian/lcms/lcms-1.19.dfsg2/Delphi/demo1.pas b/debian/lcms/lcms-1.19.dfsg2/Delphi/demo1.pas new file mode 100755 index 00000000..3b474cf8 --- /dev/null +++ b/debian/lcms/lcms-1.19.dfsg2/Delphi/demo1.pas @@ -0,0 +1,241 @@ +unit demo1;
+
+interface
+
+uses
+ Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
+ ExtCtrls, StdCtrls, ExtDlgs, lcmsdll, ComCtrls;
+
+type
+ TForm1 = class(TForm)
+
+ Image1: TImage;
+ Image2: TImage;
+ Panel1: TPanel;
+ Splitter1: TSplitter;
+ Button2: TButton;
+ ComboBoxInput: TComboBox;
+ ComboBoxOutput: TComboBox;
+ Label1: TLabel;
+ Label2: TLabel;
+ WBCompensation: TCheckBox;
+ NoTransform: TCheckBox;
+ RadioGroup1: TRadioGroup;
+ OpenPictureDialog1: TOpenPictureDialog;
+ Button1: TButton;
+ ProgressBar1: TProgressBar;
+ ComboBoxIntent: TComboBox;
+ Label3: TLabel;
+ Button3: TButton;
+ Button4: TButton;
+ OpenDialog1: TOpenDialog;
+
+ procedure Button2Click(Sender: TObject);
+ procedure Button1Click(Sender: TObject);
+ procedure Button3Click(Sender: TObject);
+ procedure Button4Click(Sender: TObject);
+ private
+ { Private declarations }
+ function ComputeFlags: DWORD;
+
+ public
+ constructor Create(Owner: TComponent); Override;
+ { Public declarations }
+ end;
+
+var
+ Form1: TForm1;
+
+implementation
+
+{$R *.DFM}
+
+CONST
+IS_INPUT = $1;
+IS_DISPLAY = $2;
+IS_COLORSPACE = $4;
+IS_OUTPUT = $8;
+IS_ABSTRACT = $10;
+
+
+FUNCTION InSignatures(Signature:icProfileClassSignature; dwFlags: DWORD): Boolean;
+BEGIN
+
+ if (((dwFlags AND IS_DISPLAY) <> 0) AND (Signature = icSigDisplayClass)) then InSignatures := TRUE
+ else
+ if (((dwFlags AND IS_OUTPUT) <> 0) AND (Signature = icSigOutputClass)) then InSignatures := TRUE
+ else
+ if (((dwFlags AND IS_INPUT) <> 0) AND (Signature = icSigInputClass)) then InSignatures := TRUE
+ else
+ if (((dwFlags AND IS_COLORSPACE) <> 0) AND (Signature = icSigColorSpaceClass)) then InSignatures := TRUE
+ else
+ if (((dwFlags AND IS_ABSTRACT) <> 0) AND (Signature = icSigAbstractClass)) then InSignatures := TRUE
+ else
+ InSignatures := FALSE
+END;
+
+PROCEDURE FillCombo(var Combo: TComboBox; Signatures: DWORD);
+var
+ Files, Descriptions : TStringList;
+ Found: Integer;
+ SearchRec: TSearchRec;
+ Path, Profile: String;
+ Dir: ARRAY[0..1024] OF Char;
+ hProfile : cmsHPROFILE;
+begin
+ Files := TStringList.Create;
+ Descriptions := TStringList.Create;
+ GetSystemDirectory(Dir, 1023);
+ Path := String(Dir) + '\SPOOL\DRIVERS\COLOR\';
+ Found := FindFirst(Path + '*.icm', faAnyFile, SearchRec);
+ while Found = 0 do
+ begin
+ Profile := Path + SearchRec.Name;
+ hProfile := cmsOpenProfileFromFile(PChar(Profile), 'r');
+ if (hProfile <> NIL) THEN
+ begin
+
+ if ((cmsGetColorSpace(hProfile) = icSigRgbData) AND
+ InSignatures(cmsGetDeviceClass(hProfile), Signatures)) then
+ begin
+ Descriptions.Add(cmsTakeProductDesc(hProfile));
+ Files.Add(Profile);
+ end;
+ cmsCloseProfile(hProfile);
+ end;
+
+ Found := FindNext(SearchRec);
+
+ end;
+ FindClose(SearchRec);
+ Combo.Items := Descriptions;
+ Combo.Tag := Integer(Files);
+end;
+
+
+constructor TForm1.Create(Owner: TComponent);
+begin
+ inherited Create(Owner);
+ FillCombo(ComboBoxInput, IS_INPUT OR IS_COLORSPACE OR IS_DISPLAY);
+ FillCombo(ComboBoxOutput, $FFFF {IS_DISPLAY} );
+ ComboBoxIntent.ItemIndex := INTENT_PERCEPTUAL;
+end;
+
+procedure TForm1.Button2Click(Sender: TObject);
+begin
+ if OpenPictureDialog1.Execute then begin
+ Image1.Picture.LoadFromFile(OpenPictureDialog1.FileName);
+ Image1.Picture.Bitmap.PixelFormat := pf24bit;
+ Image2.Picture.Bitmap := TBitmap.Create;
+ Image2.Picture.Bitmap.PixelFormat := pf24bit;
+ Image2.Picture.Bitmap.Dormant;
+ Image2.Picture.Bitmap.width := Image1.Picture.Bitmap.width;
+ Image2.Picture.Bitmap.height := Image1.Picture.Bitmap.height;
+ end
+end;
+
+function SelectedFile(var Combo: TComboBox):string;
+var List: TStringList;
+ n: Integer;
+begin
+
+ List := TStringList(Combo.Tag);
+ n := Combo.ItemIndex;
+ if (n >= 0) then
+ SelectedFile := List.Strings[n]
+ else
+ SelectedFile := Combo.Text;
+end;
+
+
+function TForm1.ComputeFlags: DWORD;
+var dwFlags: DWORD;
+begin
+ dwFlags := 0;
+ if (WBCompensation.Checked) then
+ begin
+ dwFlags := dwFlags OR cmsFLAGS_WHITEBLACKCOMPENSATION
+ end;
+
+ if (NoTransform.Checked) then
+ begin
+ dwFlags := dwFlags OR cmsFLAGS_NULLTRANSFORM
+ end;
+
+
+ case RadioGroup1.ItemIndex of
+ 0: dwFlags := dwFlags OR cmsFLAGS_NOTPRECALC;
+ 2: dwFlags := dwFlags OR cmsFLAGS_HIGHRESPRECALC;
+ 3: dwFlags := dwFlags OR cmsFLAGS_LOWRESPRECALC;
+ end;
+
+ ComputeFlags := dwFlags
+end;
+
+procedure TForm1.Button1Click(Sender: TObject);
+var
+ Source, Dest: String;
+ hSrc, hDest : cmsHPROFILE;
+ xform: cmsHTRANSFORM;
+ i, PicW, PicH: Integer;
+ Intent: Integer;
+ dwFlags : DWORD;
+begin
+
+
+ Source := SelectedFile(ComboBoxInput);
+ Dest := SelectedFile(ComboBoxOutput);
+
+ dwFlags := ComputeFlags;
+
+ Intent := ComboBoxIntent.ItemIndex;
+
+ if (Source <> '') AND (Dest <> '') then
+ begin
+ hSrc := cmsOpenProfileFromFile(PChar(Source), 'r');
+ hDest:= cmsOpenProfileFromFile(PChar(Dest), 'r');
+
+ xform := cmsCreateTransform(hSrc, TYPE_BGR_8, hDest, TYPE_BGR_8,
+ Intent, dwFlags);
+
+
+ PicW := Image2.Picture.Width;
+ PicH := Image2.Picture.Height;
+ ProgressBar1.Min := 0;
+ ProgressBar1.Max := PicH;
+ ProgressBar1.Step := 1;
+
+ for i:= 0 TO (PicH -1) do
+ begin
+ if ((i MOD 100) = 0) then
+ ProgressBar1.Position := i;
+
+ cmsDoTransform(xform,
+ Image1.Picture.Bitmap.Scanline[i],
+ Image2.Picture.Bitmap.Scanline[i],
+ PicW);
+
+ end;
+ ProgressBar1.Position := PicH;
+
+ cmsDeleteTransform(xform);
+ cmsCloseProfile(hSrc);
+ cmsCloseProfile(hDest);
+ Image2.Repaint;
+ ProgressBar1.Position := 0;
+ end
+end;
+
+procedure TForm1.Button3Click(Sender: TObject);
+begin
+ if OpenDialog1.Execute then
+ ComboBoxInput.Text:=OpenDialog1.FileName;
+end;
+
+procedure TForm1.Button4Click(Sender: TObject);
+begin
+ if OpenDialog1.Execute then
+ ComboBoxOutput.Text:=OpenDialog1.FileName;
+end;
+
+end.
diff --git a/debian/lcms/lcms-1.19.dfsg2/Delphi/lcmsdll.pas b/debian/lcms/lcms-1.19.dfsg2/Delphi/lcmsdll.pas new file mode 100755 index 00000000..f17ad6bd --- /dev/null +++ b/debian/lcms/lcms-1.19.dfsg2/Delphi/lcmsdll.pas @@ -0,0 +1,991 @@ +//
+// Little cms DELPHI wrapper
+// Copyright (C) 1998-2005 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.
+
+// ver 1.15
+
+UNIT lcmsdll;
+
+INTERFACE
+
+USES Windows;
+
+ CONST
+
+ // Intents
+
+ INTENT_PERCEPTUAL = 0;
+ INTENT_RELATIVE_COLORIMETRIC = 1;
+ INTENT_SATURATION = 2;
+ INTENT_ABSOLUTE_COLORIMETRIC = 3;
+
+ // Flags
+
+ cmsFLAGS_MATRIXINPUT = $0001;
+ cmsFLAGS_MATRIXOUTPUT = $0002;
+ cmsFLAGS_MATRIXONLY = (cmsFLAGS_MATRIXINPUT OR cmsFLAGS_MATRIXOUTPUT);
+
+ cmsFLAGS_NOPRELINEARIZATION = $0010; // Don't create prelinearization tables
+ // on precalculated transforms (internal use)
+
+ 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
+
+
+ cmsFLAGS_GAMUTCHECK = $1000; // Mark Out of Gamut as alarm color (on proofing transform)
+ cmsFLAGS_SOFTPROOFING = $4000; // Softproof of proofing profile
+
+ cmsFLAGS_WHITEBLACKCOMPENSATION = $2000;
+ cmsFLAGS_BLACKPOINTCOMPENSATION = $2000;
+
+ cmsFLAGS_NODEFAULTRESOURCEDEF = $10000; // PostScript
+
+ // Format descriptors
+
+
+ TYPE_GRAY_8 = $30009;
+ TYPE_GRAY_8_REV = $32009;
+ TYPE_GRAY_16 = $3000A;
+ TYPE_GRAY_16_REV = $3200A;
+ TYPE_GRAY_16_SE = $3080A;
+ TYPE_GRAYA_8 = $30089;
+ TYPE_GRAYA_16 = $3008A;
+ TYPE_GRAYA_16_SE = $3088A;
+ TYPE_GRAYA_8_PLANAR = $31089;
+ TYPE_GRAYA_16_PLANAR = $3108A;
+ TYPE_RGB_8 = $40019;
+ TYPE_RGB_8_PLANAR = $41019;
+ TYPE_BGR_8 = $40419;
+ TYPE_BGR_8_PLANAR = $41419;
+ TYPE_RGB_16 = $4001A;
+ TYPE_RGB_16_PLANAR = $4101A;
+ TYPE_RGB_16_SE = $4081A;
+ TYPE_BGR_16 = $4041A;
+ TYPE_BGR_16_PLANAR = $4141A;
+ TYPE_BGR_16_SE = $40C1A;
+ TYPE_RGBA_8 = $40099;
+ TYPE_RGBA_8_PLANAR = $41099;
+ TYPE_RGBA_16 = $4009A;
+ TYPE_RGBA_16_PLANAR = $4109A;
+ TYPE_RGBA_16_SE = $4089A;
+ TYPE_ARGB_8 = $44099;
+ TYPE_ARGB_16 = $4409A;
+ TYPE_ABGR_8 = $40499;
+ TYPE_ABGR_16 = $4049A;
+ TYPE_ABGR_16_PLANAR = $4149A;
+ TYPE_ABGR_16_SE = $40C9A;
+ TYPE_BGRA_8 = $44499;
+ TYPE_BGRA_16 = $4449A;
+ TYPE_BGRA_16_SE = $4489A;
+ TYPE_CMY_8 = $50019;
+ TYPE_CMY_8_PLANAR = $51019;
+ TYPE_CMY_16 = $5001A;
+ TYPE_CMY_16_PLANAR = $5101A;
+ TYPE_CMY_16_SE = $5081A;
+ TYPE_CMYK_8 = $60021;
+ TYPE_CMYK_8_REV = $62021;
+ TYPE_YUVK_8 = $62021;
+ TYPE_CMYK_8_PLANAR = $61021;
+ TYPE_CMYK_16 = $60022;
+ TYPE_CMYK_16_REV = $62022;
+ TYPE_YUVK_16 = $62022;
+ TYPE_CMYK_16_PLANAR = $61022;
+ TYPE_CMYK_16_SE = $60822;
+ TYPE_KYMC_8 = $60421;
+ TYPE_KYMC_16 = $60422;
+ TYPE_KYMC_16_SE = $60C22;
+ TYPE_KCMY_8 = $64021;
+ TYPE_KCMY_8_REV = $66021;
+ TYPE_KCMY_16 = $64022;
+ TYPE_KCMY_16_REV = $66022;
+ TYPE_KCMY_16_SE = $64822;
+ TYPE_CMYKcm_8 = $0031;
+ TYPE_CMYKcm_8_PLANAR = $1031;
+ TYPE_CMYKcm_16 = $0032;
+ TYPE_CMYKcm_16_PLANAR = $1032;
+ TYPE_CMYKcm_16_SE = $0832;
+ TYPE_CMYK7_8 = $0039;
+ TYPE_CMYK7_16 = $003A;
+ TYPE_CMYK7_16_SE = $083A;
+ TYPE_KYMC7_8 = $0439;
+ TYPE_KYMC7_16 = $043A;
+ TYPE_KYMC7_16_SE = $0C3A;
+ TYPE_CMYK8_8 = $0041;
+ TYPE_CMYK8_16 = $0042;
+ TYPE_CMYK8_16_SE = $0842;
+ TYPE_KYMC8_8 = $0441;
+ TYPE_KYMC8_16 = $0442;
+ TYPE_KYMC8_16_SE = $0C42;
+ TYPE_CMYK9_8 = $0049;
+ TYPE_CMYK9_16 = $004A;
+ TYPE_CMYK9_16_SE = $084A;
+ TYPE_KYMC9_8 = $0449;
+ TYPE_KYMC9_16 = $044A;
+ TYPE_KYMC9_16_SE = $0C4A;
+ TYPE_CMYK10_8 = $0051;
+ TYPE_CMYK10_16 = $0052;
+ TYPE_CMYK10_16_SE = $0852;
+ TYPE_KYMC10_8 = $0451;
+ TYPE_KYMC10_16 = $0452;
+ TYPE_KYMC10_16_SE = $0C52;
+ TYPE_CMYK11_8 = $0059;
+ TYPE_CMYK11_16 = $005A;
+ TYPE_CMYK11_16_SE = $085A;
+ TYPE_KYMC11_8 = $0459;
+ TYPE_KYMC11_16 = $045A;
+ TYPE_KYMC11_16_SE = $0C5A;
+ TYPE_CMYK12_8 = $0061;
+ TYPE_CMYK12_16 = $0062;
+ TYPE_CMYK12_16_SE = $0862;
+ TYPE_KYMC12_8 = $0461;
+ TYPE_KYMC12_16 = $0462;
+ TYPE_KYMC12_16_SE = $0C62;
+
+ TYPE_XYZ_16 = $9001A;
+ TYPE_Lab_8 = $A0019;
+ TYPE_LabA_8 = $A0099;
+ TYPE_Lab_16 = $A001A;
+ TYPE_Yxy_16 = $E001A;
+ TYPE_YCbCr_8 = $70019;
+ TYPE_YCbCr_8_PLANAR = $71019;
+ TYPE_YCbCr_16 = $7001A;
+ TYPE_YCbCr_16_PLANAR = $7101A;
+ TYPE_YCbCr_16_SE = $7081A;
+ TYPE_YUV_8 = $80019;
+ TYPE_YUV_8_PLANAR = $81019;
+ TYPE_YUV_16 = $8001A;
+ TYPE_YUV_16_PLANAR = $8101A;
+ TYPE_YUV_16_SE = $8081A;
+ TYPE_HLS_8 = $D0019;
+ TYPE_HLS_8_PLANAR = $D1019;
+ TYPE_HLS_16 = $D001A;
+ TYPE_HLS_16_PLANAR = $D101A;
+ TYPE_HLS_16_SE = $D081A;
+ TYPE_HSV_8 = $C0019;
+ TYPE_HSV_8_PLANAR = $C1019;
+ TYPE_HSV_16 = $C001A;
+ TYPE_HSV_16_PLANAR = $C101A;
+ TYPE_HSV_16_SE = $C081A;
+ TYPE_NAMED_COLOR_INDEX = $000A;
+
+ TYPE_XYZ_DBL = $90018;
+ TYPE_Lab_DBL = $A0018;
+ TYPE_GRAY_DBL = $30008;
+ TYPE_RGB_DBL = $40018;
+ TYPE_CMYK_DBL = $60020;
+
+
+ // Some utility functions to compute new descriptors
+
+
+ FUNCTION COLORSPACE_SH(e: Integer):Integer;
+ FUNCTION SWAPFIRST_SH(e: Integer):Integer;
+ FUNCTION FLAVOR_SH(e: Integer):Integer;
+ FUNCTION PLANAR_SH(e: Integer):Integer;
+ FUNCTION ENDIAN16_SH(e: Integer):Integer;
+ FUNCTION DOSWAP_SH(e: Integer):Integer;
+ FUNCTION EXTRA_SH(e: Integer):Integer;
+ FUNCTION CHANNELS_SH(c: Integer):Integer;
+ FUNCTION BYTES_SH(b: Integer):Integer;
+
+
+ TYPE
+
+ DWord = Cardinal;
+
+ icTagSignature = DWord;
+ icColorSpaceSignature = DWord;
+ icProfileClassSignature= DWord;
+
+ CONST
+
+ // icc color space signatures
+
+ icSigXYZData = $58595A20;
+ icSigLabData = $4C616220;
+ icSigLuvData = $4C757620;
+ icSigYCbCrData = $59436272;
+ icSigYxyData = $59787920;
+ icSigRgbData = $52474220;
+ icSigGrayData = $47524159;
+ icSigHsvData = $48535620;
+ icSigHlsData = $484C5320;
+ icSigCmykData = $434D594B;
+ icSigCmyData = $434D5920;
+
+ // icc Profile class signatures
+
+ icSigInputClass = $73636E72;
+ icSigDisplayClass = $6D6E7472;
+ icSigOutputClass = $70727472;
+ icSigLinkClass = $6C696E6B;
+ icSigAbstractClass = $61627374;
+ icSigColorSpaceClass = $73706163;
+ icSigNamedColorClass = $6e6d636c;
+
+
+ // Added by lcms
+
+ lcmsSignature = $6c636d73;
+ icSigLuvKData = $4C75764B; {'LuvK'}
+ icSigChromaticityTag = $6368726d; { As per Addendum 2 to Spec. ICC.1:1998-09 }
+ icSigChromaticAdaptationTag = $63686164;
+
+
+
+ TYPE
+
+ cmsHPROFILE = Pointer;
+ cmsHTRANSFORM = Pointer;
+ LCMSHANDLE = Pointer;
+
+ LCMSGAMMAPARAMS = PACKED RECORD
+ Crc32 : DWord;
+ TheType : Integer;
+ Params : ARRAY [0..9] OF Double;
+ END;
+
+ GAMMATABLE = PACKED RECORD
+ Birth : LCMSGAMMAPARAMS;
+ nEntries : DWord;
+ GammaTable : ARRAY [0..1] OF Word;
+ END;
+
+ LPGAMMATABLE = ^GAMMATABLE;
+
+
+ // Colorimetric spaces
+
+ cmsCIEXYZ = PACKED RECORD
+ X, Y, Z : Double;
+ END;
+
+ LPcmsCIEXYZ = ^cmsCIEXYZ;
+
+ cmsCIEXYZTRIPLE = PACKED RECORD
+ Red, Green, Blue : cmsCIEXYZ
+ END;
+
+ LPcmsCIEXYZTRIPLE = ^cmsCIEXYZTRIPLE;
+
+ cmsCIExyY = PACKED RECORD
+ x, y, YY : Double
+ END;
+
+ LPcmsCIExyY = ^cmsCIExyY;
+
+
+ cmsCIExyYTRIPLE = PACKED RECORD
+ Red, Green, Blue : cmsCIExyY
+ END;
+
+ LPcmsCIExyYTRIPLE = ^cmsCIExyYTRIPLE;
+
+
+ cmsCIELab = PACKED RECORD
+ L, a, b: Double
+ END;
+
+ LPcmsCIELab = ^cmsCIELab;
+
+ cmsCIELCh = PACKED RECORD
+ L, C, h : Double
+ END;
+
+ LPcmsCIELCh = ^cmsCIELCh;
+
+ // CIECAM97s
+
+ cmsJCh = PACKED RECORD
+ J, C, h : Double
+ END;
+
+ LPcmsJCh = ^cmsJCh;
+
+ LPLUT = Pointer;
+
+ CONST
+
+ AVG_SURROUND_4 = 0;
+ AVG_SURROUND = 1;
+ DIM_SURROUND = 2;
+ DARK_SURROUND = 3;
+ CUTSHEET_SURROUND = 4;
+
+ D_CALCULATE = -1;
+ D_CALCULATE_DISCOUNT = -2;
+
+
+ TYPE
+
+ cmsViewingConditions = PACKED RECORD
+
+ WhitePoint: cmsCIEXYZ;
+ Yb : Double;
+ La : Double;
+ surround : Integer;
+ D_value : Double
+ END;
+
+
+ LPcmsViewingConditions = ^cmsViewingConditions;
+
+ cmsErrorHandler = FUNCTION (Severity: Integer; Msg:PChar): Integer; cdecl;
+
+ LCMSARRAYOFPCHAR = ARRAY OF PChar;
+
+// Input/Output
+
+FUNCTION cmsOpenProfileFromFile(ICCProfile: PChar; sAccess: PChar) : cmsHPROFILE; StdCall;
+FUNCTION cmsOpenProfileFromMem(MemPtr: Pointer; dwSize: DWord) : cmsHPROFILE; StdCall;
+FUNCTION cmsCloseProfile(hProfile : cmsHPROFILE) : Boolean; StdCall;
+
+FUNCTION cmsCreateRGBProfile(WhitePoint : LPcmsCIExyY;
+ Primaries: LPcmsCIExyYTRIPLE;
+ TransferFunction: ARRAY OF LPGAMMATABLE) : cmsHPROFILE; StdCall;
+
+
+FUNCTION cmsCreateGrayProfile(WhitePoint: LPcmsCIExyY;
+ TransferFunction: LPGAMMATABLE) : cmsHPROFILE; StdCall;
+
+
+FUNCTION cmsCreateLinearizationDeviceLink(ColorSpace: icColorSpaceSignature;
+ TransferFunction: ARRAY OF LPGAMMATABLE) : cmsHPROFILE; StdCall;
+
+FUNCTION cmsCreateInkLimitingDeviceLink(ColorSpace: icColorSpaceSignature;
+ Limit: Double) : cmsHPROFILE; StdCall;
+
+
+FUNCTION cmsCreateNULLProfile : cmsHPROFILE; StdCall;
+FUNCTION cmsCreateLabProfile(WhitePoint: LPcmsCIExyY): cmsHPROFILE; StdCall;
+FUNCTION cmsCreateLab4Profile(WhitePoint: LPcmsCIExyY): cmsHPROFILE; StdCall;
+FUNCTION cmsCreateXYZProfile:cmsHPROFILE; StdCall;
+FUNCTION cmsCreate_sRGBProfile:cmsHPROFILE; StdCall;
+FUNCTION cmsCreateBCHSWabstractProfile(nLUTPoints: Integer;
+ Bright, Contrast, Hue, Saturation: Double;
+ TempSrc, TempDest: Integer): cmsHPROFILE; StdCall;
+
+
+// Utils
+
+PROCEDURE cmsXYZ2xyY(Dest: LPcmsCIExyY; Source: LPcmsCIEXYZ); StdCall;
+PROCEDURE cmsxyY2XYZ(Dest: LPcmsCIEXYZ; Source: LPcmsCIExyY); StdCall;
+PROCEDURE cmsXYZ2Lab(WhitePoint: LPcmsCIEXYZ; xyz: LPcmsCIEXYZ; Lab: LPcmsCIELab); StdCall;
+PROCEDURE cmsLab2XYZ(WhitePoint: LPcmsCIEXYZ; Lab: LPcmsCIELab; xyz: LPcmsCIEXYZ); StdCall;
+PROCEDURE cmsLab2LCh(LCh: LPcmsCIELCh; Lab: LPcmsCIELab); StdCall;
+PROCEDURE cmsLCh2Lab(Lab: LPcmsCIELab; LCh: LPcmsCIELCh); StdCall;
+
+// CIELab handling
+
+FUNCTION cmsDeltaE(Lab1, Lab2: LPcmsCIELab): Double; StdCall;
+FUNCTION cmsCIE94DeltaE(Lab1, Lab2: LPcmsCIELab): Double; StdCall;
+FUNCTION cmsBFDdeltaE(Lab1, Lab2: LPcmsCIELab): Double; StdCall;
+FUNCTION cmsCMCdeltaE(Lab1, Lab2: LPcmsCIELab): Double; StdCall;
+FUNCTION cmsCIE2000DeltaE(Lab1, Lab2: LPcmsCIELab; Kl, Kc, Kh: Double): Double; StdCall;
+
+PROCEDURE cmsClampLab(Lab: LPcmsCIELab; amax, amin, bmax, bmin: Double); StdCall;
+
+// White point
+
+FUNCTION cmsWhitePointFromTemp(TempK: Integer; WhitePoint: LPcmsCIExyY) : Boolean; StdCall;
+
+
+// CIECAM97s
+
+FUNCTION cmsCIECAM97sInit(pVC : LPcmsViewingConditions ) : Pointer; StdCall;
+PROCEDURE cmsCIECAM97sDone(hModel : Pointer); StdCall;
+
+PROCEDURE cmsCIECAM97sForward(hModel: Pointer; pIn: LPcmsCIEXYZ; pOut: LPcmsJCh ); StdCall;
+PROCEDURE cmsCIECAM97sReverse(hModel: Pointer; pIn: LPcmsJCh; pOut: LPcmsCIEXYZ ); StdCall;
+
+// CIECAM02
+
+FUNCTION cmsCIECAM02Init(pVC : LPcmsViewingConditions ) : Pointer; StdCall;
+PROCEDURE cmsCIECAM02Done(hModel : Pointer); StdCall;
+
+PROCEDURE cmsCIECAM02Forward(hModel: Pointer; pIn: LPcmsCIEXYZ; pOut: LPcmsJCh ); StdCall;
+PROCEDURE cmsCIECAM02Reverse(hModel: Pointer; pIn: LPcmsJCh; pOut: LPcmsCIEXYZ ); StdCall;
+
+
+// Gamma curves
+
+FUNCTION cmsBuildGamma(nEntries : Integer; Gamma: Double) : LPGAMMATABLE; StdCall;
+FUNCTION cmsAllocGamma(nEntries : Integer): LPGAMMATABLE; StdCall;
+PROCEDURE cmsFreeGamma(Gamma: LPGAMMATABLE); StdCall;
+PROCEDURE cmsFreeGammaTriple(Gamma: ARRAY OF LPGAMMATABLE); StdCall;
+FUNCTION cmsReverseGamma(nResultSamples: Integer; InGamma : LPGAMMATABLE): LPGAMMATABLE; StdCall;
+FUNCTION cmsJoinGamma(InGamma, OutGamma: LPGAMMATABLE): LPGAMMATABLE; StdCall;
+FUNCTION cmsJoinGammaEx(InGamma, OutGamma: LPGAMMATABLE; nPoints: Integer): LPGAMMATABLE; StdCall;
+FUNCTION cmsSmoothGamma(Gamma: LPGAMMATABLE; SmoothingLambda: Double): Boolean; StdCall;
+FUNCTION cmsDupGamma(Src: LPGAMMATABLE): LPGAMMATABLE; StdCall;
+FUNCTION cmsEstimateGamma(Src: LPGAMMATABLE): Double; StdCall;
+FUNCTION cmsEstimateGammaEx(Src: LPGAMMATABLE; Thereshold: Double): Double; StdCall;
+FUNCTION cmsReadICCGamma(hProfile: cmsHPROFILE; Sig: icTagSignature): LPGAMMATABLE; StdCall;
+FUNCTION cmsReadICCGammaReversed(hProfile: cmsHPROFILE; Sig: icTagSignature): LPGAMMATABLE; StdCall;
+
+CONST
+
+ lcmsParametricCurveExp = 0;
+ lcmsParametricCurveCIE_122_1966 = 1;
+ lcmsParametricCurveIEC_61966_3 = 2;
+ lcmsParametricCurveIEC_61966_2_1= 3;
+
+FUNCTION cmsBuildParametricGamma(nEntries: Integer; TheType: Integer; Params: array of Double) : LPGAMMATABLE; StdCall;
+
+
+// Access to Profile data.
+
+PROCEDURE cmsSetLanguage(LanguageCode: Integer; CountryCode: Integer); StdCall;
+
+FUNCTION cmsTakeMediaWhitePoint(Dest: LPcmsCIEXYZ; hProfile: cmsHPROFILE): Boolean; StdCall;
+FUNCTION cmsTakeMediaBlackPoint(Dest: LPcmsCIEXYZ; hProfile: cmsHPROFILE): Boolean; StdCall;
+FUNCTION cmsTakeIluminant(Dest: LPcmsCIEXYZ; hProfile: cmsHPROFILE): Boolean; StdCall;
+FUNCTION cmsTakeColorants(Dest: LPcmsCIEXYZTRIPLE; hProfile: cmsHPROFILE): Boolean; StdCall;
+FUNCTION cmsTakeHeaderFlags(hProfile: cmsHPROFILE): DWord; StdCall;
+
+FUNCTION cmsTakeProductName(hProfile: cmsHPROFILE): PChar; StdCall;
+FUNCTION cmsTakeProductDesc(hProfile: cmsHPROFILE): PChar; StdCall;
+
+FUNCTION cmsTakeManufacturer(hProfile: cmsHPROFILE): PChar; StdCall;
+FUNCTION cmsTakeModel(hProfile: cmsHPROFILE): PChar; StdCall;
+FUNCTION cmsTakeCopyright(hProfile: cmsHPROFILE): PChar; StdCall;
+FUNCTION cmsTakeProfileID(hProfile: cmsHPROFILE): PByte; StdCall;
+
+
+
+FUNCTION cmsIsTag(hProfile: cmsHPROFILE; sig: icTagSignature): Boolean; StdCall;
+FUNCTION cmsTakeRenderingIntent(hProfile: cmsHPROFILE): Integer; StdCall;
+FUNCTION cmsIsIntentSupported(hProfile: cmsHPROFILE; Intent, UsedDirection : Integer): Integer; StdCall;
+FUNCTION cmsTakeCharTargetData(hProfile: cmsHPROFILE; var Data : PChar; var len: Cardinal): Boolean; StdCall;
+
+FUNCTION _cmsICCcolorSpace(OurNotation: Integer) : icColorSpaceSignature; StdCall;
+FUNCTION _cmsLCMScolorSpace(ProfileSpace: icColorSpaceSignature): Integer; StdCall;
+FUNCTION _cmsChannelsOf(ColorSpace: icColorSpaceSignature): Integer; StdCall;
+
+
+FUNCTION cmsGetPCS(hProfile: cmsHPROFILE): icColorSpaceSignature; StdCall;
+FUNCTION cmsGetColorSpace(hProfile: cmsHPROFILE): icColorSpaceSignature; StdCall;
+FUNCTION cmsGetDeviceClass( hProfile: cmsHPROFILE): icProfileClassSignature; StdCall;
+FUNCTION cmsGetProfileICCversion( hProfile: cmsHPROFILE): DWord; StdCall;
+
+// Profile creation
+
+PROCEDURE cmsSetDeviceClass(hProfile: cmsHPROFILE; sig: icProfileClassSignature ); StdCall;
+PROCEDURE cmsSetColorSpace(hProfile: cmsHPROFILE; sig: icProfileClassSignature ); StdCall;
+PROCEDURE cmsSetPCS(hProfile: cmsHPROFILE; pcs: icColorSpaceSignature); StdCall;
+PROCEDURE cmsSetRenderingIntent(hProfile: cmsHPROFILE; Intent: Integer); StdCall;
+PROCEDURE cmsSetHeaderFlags(hProfile: cmsHPROFILE; dwFlags: DWord); StdCall;
+PROCEDURE cmsSetProfileID(hProfile: cmsHPROFILE; ProfileID: PByte); StdCall;
+
+
+
+FUNCTION cmsAddTag(hProfile: cmsHPROFILE; Sig: icTagSignature; Data: Pointer): Boolean; StdCall;
+FUNCTION _cmsSaveProfile(hProfile: cmsHPROFILE; FileName: PChar): Boolean; StdCall;
+FUNCTION _cmsSaveProfileToMem(hProfile: cmsHPROFILE; MemPtr: Pointer;
+ var BytesNeeded: DWord): Boolean; StdCall;
+
+
+
+CONST
+ LCMS_USED_AS_INPUT = 0;
+ LCMS_USED_AS_OUTPUT = 1;
+ LCMS_USED_AS_PROOF = 2;
+
+
+
+// Transforms
+
+FUNCTION cmsCreateTransform(Input: cmsHPROFILE;
+ InputFormat: DWORD;
+ Output: cmsHPROFILE;
+ OutputFormat: DWORD;
+ Intent: Integer;
+ dwFlags: DWord): cmsHTRANSFORM; StdCall;
+
+FUNCTION cmsCreateProofingTransform(Input: cmsHPROFILE;
+ InputFormat: DWORD;
+ Output: cmsHPROFILE;
+ OutputFormat: DWORD;
+ Proofing: cmsHPROFILE;
+ Intent: Integer;
+ ProofingIntent: Integer;
+ dwFlags: DWord): cmsHTRANSFORM; StdCall;
+
+
+FUNCTION cmsCreateMultiprofileTransform(hProfiles : ARRAY OF cmsHPROFILE;
+ nProfiles : Integer;
+ InputFormat: DWord;
+ OutputFormat: DWord;
+ Intent: Integer;
+ dwFlags: DWord): cmsHTRANSFORM; StdCall;
+
+
+PROCEDURE cmsDeleteTransform( hTransform: cmsHTRANSFORM); StdCall;
+
+PROCEDURE cmsDoTransform( Transform: cmsHTRANSFORM;
+ InputBuffer: Pointer;
+ OutputBuffer: Pointer;
+ Size: LongInt); StdCall;
+
+PROCEDURE cmsChangeBuffersFormat(hTransform: cmsHTRANSFORM;
+ dwInputFormat, dwOutputFormat: DWord); StdCall;
+
+// Devicelink generation
+
+FUNCTION cmsTransform2DeviceLink(hTransform: cmsHTRANSFORM;
+ dwFlags: DWord): cmsHPROFILE; StdCall;
+
+PROCEDURE _cmsSetLUTdepth(hProfile: cmsHPROFILE; depth: Integer); StdCall;
+
+// Named color support
+
+FUNCTION cmsNamedColorCount(xform: cmsHTRANSFORM): Integer; StdCall;
+FUNCTION cmsNamedColorInfo(xform: cmsHTRANSFORM; nColor: Integer;
+ Name, Prefix, Suffix: PChar) : Boolean; StdCall;
+
+FUNCTION cmsNamedColorIndex(xform: cmsHTRANSFORM; Name: PChar): Integer; StdCall;
+
+
+// PostScript ColorRenderingDictionary and ColorSpaceArray
+
+FUNCTION cmsGetPostScriptCSA(hProfile: cmsHPROFILE ;
+ Intent: Integer;
+ Buffer: Pointer;
+ dwBufferLen: DWord): DWord; StdCall;
+
+FUNCTION cmsGetPostScriptCRD(hProfile: cmsHPROFILE ;
+ Intent: Integer;
+ Buffer: Pointer;
+ dwBufferLen: DWord): DWord; StdCall;
+
+FUNCTION cmsGetPostScriptCRDEx(hProfile: cmsHPROFILE ;
+ Intent: Integer;
+ dwFlags: DWord;
+ Buffer: Pointer;
+ dwBufferLen: DWord): DWord; StdCall;
+
+
+
+
+// Gamut check
+
+PROCEDURE cmsSetAlarmCodes(r, g, b: Integer); StdCall;
+PROCEDURE cmsGetAlarmCodes(VAR r, g, b: Integer); StdCall;
+
+// Error handling
+CONST
+
+ LCMS_ERROR_ABORT = 0;
+ LCMS_ERROR_SHOW = 1;
+ LCMS_ERROR_IGNORE = 2;
+
+PROCEDURE cmsErrorAction(nAction: Integer); StdCall;
+
+PROCEDURE cmsSetErrorHandler(ErrorHandler: cmsErrorHandler); StdCall;
+
+
+// CGATS.13 parser
+
+FUNCTION cmsIT8Alloc: LCMSHANDLE; StdCall;
+PROCEDURE cmsIT8Free(hIT8: LCMSHANDLE); StdCall;
+
+// Tables
+
+FUNCTION cmsIT8TableCount(hIT8: LCMSHANDLE): Integer; StdCall;
+FUNCTION cmsIT8SetTable(hIT8: LCMSHANDLE; nTable: Integer): Integer; StdCall;
+
+// Persistence
+FUNCTION cmsIT8LoadFromFile(cFileName: PChar): LCMSHANDLE; StdCall;
+FUNCTION cmsIT8LoadFromMem(Ptr: Pointer; size :DWord): LCMSHANDLE; StdCall;
+
+FUNCTION cmsIT8SaveToFile(hIT8: LCMSHANDLE; cFileName: PChar): Boolean; StdCall;
+
+// Properties
+
+FUNCTION cmsIT8GetSheetType(hIT8: LCMSHANDLE): PChar; StdCall;
+FUNCTION cmsIT8SetSheetType(hIT8: LCMSHANDLE; TheType: PChar): Boolean; StdCall;
+
+FUNCTION cmsIT8SetComment(hIT8: LCMSHANDLE; cComment: PChar): Boolean; StdCall;
+
+FUNCTION cmsIT8SetPropertyStr(hIT8: LCMSHANDLE; cProp, Str: PChar): Boolean; StdCall;
+FUNCTION cmsIT8SetPropertyDbl(hIT8: LCMSHANDLE; cProp: PChar; Val: Double): Boolean; StdCall;
+FUNCTION cmsIT8SetPropertyHex(hIT8: LCMSHANDLE; cProp: PChar; Val: Integer): Boolean; StdCall;
+FUNCTION cmsIT8SetPropertyUncooked(hIT8: LCMSHANDLE; Key, Buffer: PChar): Boolean; StdCall;
+
+
+FUNCTION cmsIT8GetProperty(hIT8: LCMSHANDLE; cProp: PChar): PChar; StdCall;
+FUNCTION cmsIT8GetPropertyDbl(hIT8: LCMSHANDLE; cProp: PChar): Double; StdCall;
+FUNCTION cmsIT8EnumProperties(hIT8: LCMSHANDLE; var PropertyNames: LCMSARRAYOFPCHAR): Integer; StdCall;
+
+// Datasets
+
+FUNCTION cmsIT8GetDataRowCol(hIT8: LCMSHANDLE; row, col: Integer): PChar; StdCall;
+FUNCTION cmsIT8GetDataRowColDbl(hIT8: LCMSHANDLE; row, col: Integer): Double; StdCall;
+
+FUNCTION cmsIT8SetDataRowCol(hIT8: LCMSHANDLE; row, col: Integer; Val: PChar): Boolean; StdCall;
+FUNCTION cmsIT8SetDataRowColDbl(hIT8: LCMSHANDLE; row, col: Integer; Val: Double): Boolean; StdCall;
+
+FUNCTION cmsIT8GetData(hIT8: LCMSHANDLE; cPatch, cSample: PChar): PChar; StdCall;
+
+FUNCTION cmsIT8GetDataDbl(hIT8: LCMSHANDLE;cPatch, cSample: PChar): Double; StdCall;
+
+FUNCTION cmsIT8SetData(hIT8: LCMSHANDLE; cPatch, cSample, Val: PChar): Boolean; StdCall;
+
+FUNCTION cmsIT8SetDataDbl(hIT8: LCMSHANDLE; cPatch, cSample: PChar; Val: Double): Boolean; StdCall;
+
+FUNCTION cmsIT8SetDataFormat(hIT8: LCMSHANDLE; n: Integer; Sample: PChar): Boolean; StdCall;
+FUNCTION cmsIT8EnumDataFormat(hIT8: LCMSHANDLE; var SampleNames: LCMSARRAYOFPCHAR): Integer; StdCall;
+FUNCTION cmsIT8GetPatchName(hIT8: LCMSHANDLE; nPatch: Integer; Buffer: PChar): PChar; StdCall;
+
+// The LABEL extension
+
+FUNCTION cmsIT8SetTableByLabel(hIT8: LCMSHANDLE; cSet, cField, ExpectedType: PChar): Integer; StdCall;
+
+
+
+
+
+
+
+
+// Provided for compatibility with anterior revisions
+
+PROCEDURE cmsLabEncoded2Float(Lab: LPcmsCIELab; wLab: Pointer); StdCall;
+PROCEDURE cmsFloat2LabEncoded(wLab: Pointer; Lab: LPcmsCIELab); StdCall;
+PROCEDURE cmsXYZEncoded2Float(fxyz : LPcmsCIEXYZ; XYZ: Pointer); StdCall;
+PROCEDURE cmsFloat2XYZEncoded(XYZ: Pointer; fXYZ: LPcmsCIEXYZ); StdCall;
+
+FUNCTION _cmsAddTextTag(hProfile: cmsHPROFILE; sig: icTagSignature; Text: PChar): Boolean; StdCall;
+FUNCTION _cmsAddXYZTag(hProfile: cmsHPROFILE; sig: icTagSignature; XYZ: LPcmsCIEXYZ): Boolean; StdCall;
+FUNCTION _cmsAddLUTTag(hProfile: cmsHPROFILE; sig: icTagSignature; lut: PByte): Boolean; StdCall;
+
+
+IMPLEMENTATION
+
+
+// Helping functions to build format descriptors (C uses them as macros)
+
+FUNCTION COLORSPACE_SH(e: Integer):Integer; BEGIN COLORSPACE_SH := ((e) shl 16) END;
+FUNCTION SWAPFIRST_SH(e: Integer):Integer; BEGIN SWAPFIRST_SH := ((e) shl 13) END;
+FUNCTION FLAVOR_SH(e: Integer):Integer; BEGIN FLAVOR_SH := ((e) shl 13) END;
+FUNCTION PLANAR_SH(e: Integer):Integer; BEGIN PLANAR_SH := ((e) shl 12) END;
+FUNCTION ENDIAN16_SH(e: Integer):Integer; BEGIN ENDIAN16_SH := ((e) shl 11) END;
+FUNCTION DOSWAP_SH(e: Integer):Integer; BEGIN DOSWAP_SH := ((e) shl 10) END;
+FUNCTION EXTRA_SH(e: Integer):Integer; BEGIN EXTRA_SH := ((e) shl 7) END;
+FUNCTION CHANNELS_SH(c: Integer):Integer; BEGIN CHANNELS_SH := ((c) shl 3) END;
+FUNCTION BYTES_SH(b: Integer):Integer; BEGIN BYTES_SH := (b) END;
+
+CONST
+ PT_ANY = 0; // Don't check colorspace
+ // 1 & 2 are reserved
+ 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;
+
+
+FUNCTION cmsOpenProfileFromFile(ICCProfile : PChar; sAccess: PChar) : cmsHPROFILE; EXTERNAL 'lcms.dll';
+FUNCTION cmsOpenProfileFromMem(MemPtr: Pointer; dwSize: DWord) : cmsHPROFILE; EXTERNAL 'lcms.dll';
+FUNCTION cmsWhitePointFromTemp(TempK: Integer; WhitePoint: LPcmsCIExyY) : Boolean; EXTERNAL 'lcms.dll';
+
+FUNCTION cmsBuildGamma(nEntries : Integer; Gamma: Double) : LPGAMMATABLE; EXTERNAL 'lcms.dll';
+FUNCTION cmsAllocGamma(nEntries : Integer): LPGAMMATABLE; EXTERNAL 'lcms.dll';
+PROCEDURE cmsFreeGamma(Gamma: LPGAMMATABLE); EXTERNAL 'lcms.dll';
+PROCEDURE cmsFreeGammaTriple(Gamma: ARRAY OF LPGAMMATABLE); EXTERNAL 'lcms.dll';
+
+FUNCTION cmsReverseGamma(nResultSamples : Integer; InGamma : LPGAMMATABLE): LPGAMMATABLE; EXTERNAL 'lcms.dll';
+FUNCTION cmsBuildParametricGamma(nEntries: Integer; TheType: Integer; Params: array of Double) : LPGAMMATABLE; EXTERNAL 'lcms.dll';
+
+FUNCTION cmsJoinGamma(InGamma, OutGamma : LPGAMMATABLE): LPGAMMATABLE; EXTERNAL 'lcms.dll';
+FUNCTION cmsJoinGammaEx(InGamma, OutGamma: LPGAMMATABLE; nPoints: Integer): LPGAMMATABLE; EXTERNAL 'lcms.dll';
+
+FUNCTION cmsSmoothGamma(Gamma: LPGAMMATABLE; SmoothingLambda: Double): Boolean; EXTERNAL 'lcms.dll';
+
+FUNCTION cmsDupGamma(Src: LPGAMMATABLE): LPGAMMATABLE; EXTERNAL 'lcms.dll';
+FUNCTION cmsEstimateGamma(Src: LPGAMMATABLE): Double; EXTERNAL 'lcms.dll';
+FUNCTION cmsEstimateGammaEx(Src: LPGAMMATABLE; Thereshold: Double): Double; EXTERNAL 'lcms.dll';
+FUNCTION cmsReadICCGamma(hProfile: cmsHPROFILE; Sig: icTagSignature): LPGAMMATABLE; EXTERNAL 'lcms.dll';
+FUNCTION cmsReadICCGammaReversed(hProfile: cmsHPROFILE; Sig: icTagSignature): LPGAMMATABLE; EXTERNAL 'lcms.dll';
+
+
+FUNCTION cmsCreateRGBProfile( WhitePoint : LPcmsCIExyY;
+ Primaries: LPcmsCIExyYTRIPLE;
+ TransferFunction: ARRAY OF LPGAMMATABLE) : cmsHPROFILE; EXTERNAL 'lcms.dll';
+
+FUNCTION cmsCreateGrayProfile(WhitePoint: LPcmsCIExyY;
+ TransferFunction: LPGAMMATABLE) : cmsHPROFILE; EXTERNAL 'lcms.dll';
+
+FUNCTION cmsCreateLinearizationDeviceLink(ColorSpace: icColorSpaceSignature;
+ TransferFunction: ARRAY OF LPGAMMATABLE) : cmsHPROFILE; EXTERNAL 'lcms.dll';
+
+FUNCTION cmsCreateInkLimitingDeviceLink(ColorSpace: icColorSpaceSignature;
+ Limit: Double) : cmsHPROFILE; EXTERNAL 'lcms.dll';
+
+
+FUNCTION cmsCreateNULLProfile : cmsHPROFILE; EXTERNAL 'lcms.dll';
+FUNCTION cmsCreateLabProfile(WhitePoint: LPcmsCIExyY): cmsHPROFILE; EXTERNAL 'lcms.dll';
+FUNCTION cmsCreateLab4Profile(WhitePoint: LPcmsCIExyY): cmsHPROFILE; EXTERNAL 'lcms.dll';
+
+FUNCTION cmsCreateXYZProfile: cmsHPROFILE; EXTERNAL 'lcms.dll';
+FUNCTION cmsCreate_sRGBProfile: cmsHPROFILE; EXTERNAL 'lcms.dll';
+FUNCTION cmsCreateBCHSWabstractProfile(nLUTPoints: Integer;
+ Bright, Contrast, Hue, Saturation: Double;
+ TempSrc, TempDest: Integer): cmsHPROFILE; EXTERNAL 'lcms.dll';
+
+
+FUNCTION cmsCloseProfile( hProfile : cmsHPROFILE) : Boolean; EXTERNAL 'lcms.dll';
+
+
+PROCEDURE cmsSetLanguage(LanguageCode: Integer; CountryCode: Integer); EXTERNAL 'lcms.dll';
+
+FUNCTION cmsTakeMediaWhitePoint(Dest: LPcmsCIEXYZ; hProfile: cmsHPROFILE): Boolean; EXTERNAL 'lcms.dll';
+FUNCTION cmsTakeMediaBlackPoint(Dest: LPcmsCIEXYZ; hProfile: cmsHPROFILE): Boolean; EXTERNAL 'lcms.dll';
+
+FUNCTION cmsTakeIluminant(Dest: LPcmsCIEXYZ; hProfile: cmsHPROFILE): Boolean; EXTERNAL 'lcms.dll';
+FUNCTION cmsTakeColorants(Dest: LPcmsCIEXYZTRIPLE; hProfile: cmsHPROFILE): Boolean; EXTERNAL 'lcms.dll';
+FUNCTION cmsTakeHeaderFlags(hProfile: cmsHPROFILE): DWord; EXTERNAL 'lcms.dll';
+
+FUNCTION cmsTakeProductName(hProfile: cmsHPROFILE): PChar; EXTERNAL 'lcms.dll';
+FUNCTION cmsTakeProductDesc(hProfile: cmsHPROFILE): PChar; EXTERNAL 'lcms.dll';
+FUNCTION cmsTakeManufacturer(hProfile: cmsHPROFILE): PChar; EXTERNAL 'lcms.dll';
+FUNCTION cmsTakeModel(hProfile: cmsHPROFILE): PChar; EXTERNAL 'lcms.dll';
+FUNCTION cmsTakeCopyright(hProfile: cmsHPROFILE): PChar; EXTERNAL 'lcms.dll';
+FUNCTION cmsTakeProfileID(hProfile: cmsHPROFILE): PByte; EXTERNAL 'lcms.dll';
+
+
+FUNCTION cmsIsTag(hProfile: cmsHPROFILE; sig: icTagSignature): Boolean; EXTERNAL 'lcms.dll';
+FUNCTION cmsTakeRenderingIntent( hProfile: cmsHPROFILE): Integer; EXTERNAL 'lcms.dll';
+FUNCTION cmsGetPCS(hProfile: cmsHPROFILE): icColorSpaceSignature; EXTERNAL 'lcms.dll';
+FUNCTION cmsGetColorSpace(hProfile: cmsHPROFILE): icColorSpaceSignature; EXTERNAL 'lcms.dll';
+FUNCTION cmsGetDeviceClass( hProfile: cmsHPROFILE): icProfileClassSignature; EXTERNAL 'lcms.dll';
+FUNCTION cmsGetProfileICCversion( hProfile: cmsHPROFILE): DWord; EXTERNAL 'lcms.dll';
+FUNCTION cmsTakeCharTargetData(hProfile: cmsHPROFILE; var Data: PChar; var len: Cardinal): Boolean; EXTERNAL 'lcms.dll';
+
+FUNCTION _cmsICCcolorSpace(OurNotation: Integer) : icColorSpaceSignature; EXTERNAL 'lcms.dll';
+FUNCTION _cmsLCMScolorSpace(ProfileSpace: icColorSpaceSignature): Integer; EXTERNAL 'lcms.dll';
+FUNCTION _cmsChannelsOf(ColorSpace: icColorSpaceSignature): Integer; EXTERNAL 'lcms.dll';
+
+
+
+
+PROCEDURE cmsSetDeviceClass(hProfile: cmsHPROFILE; sig: icProfileClassSignature ); EXTERNAL 'lcms.dll';
+PROCEDURE cmsSetColorSpace(hProfile: cmsHPROFILE; sig: icProfileClassSignature ); EXTERNAL 'lcms.dll';
+PROCEDURE cmsSetPCS(hProfile: cmsHPROFILE; pcs: icColorSpaceSignature); EXTERNAL 'lcms.dll';
+PROCEDURE cmsSetRenderingIntent(hProfile: cmsHPROFILE; Intent: Integer); EXTERNAL 'lcms.dll';
+PROCEDURE cmsSetHeaderFlags(hProfile: cmsHPROFILE; dwFlags: DWord); EXTERNAL 'lcms.dll';
+PROCEDURE cmsSetProfileID(hProfile: cmsHPROFILE; ProfileID: PByte); EXTERNAL 'lcms.dll';
+
+FUNCTION cmsAddTag(hProfile: cmsHPROFILE; Sig: icTagSignature; Data: Pointer): Boolean; EXTERNAL 'lcms.dll';
+
+
+FUNCTION _cmsSaveProfile(hProfile: cmsHPROFILE; FileName: PChar): Boolean; EXTERNAL 'lcms.dll';
+FUNCTION _cmsSaveProfileToMem(hProfile: cmsHPROFILE; MemPtr: Pointer;
+ var BytesNeeded: DWord): Boolean; EXTERNAL 'lcms.dll';
+
+
+FUNCTION cmsIsIntentSupported(hProfile: cmsHPROFILE; Intent, UsedDirection : Integer): Integer; EXTERNAL 'lcms.dll';
+
+FUNCTION cmsCreateTransform(Input: cmsHPROFILE;
+ InputFormat: DWORD;
+ Output: cmsHPROFILE;
+ OutputFormat: DWORD;
+ Intent: Integer;
+ dwFlags: DWord): cmsHTRANSFORM; EXTERNAL 'lcms.dll';
+
+FUNCTION cmsCreateProofingTransform(Input: cmsHPROFILE;
+ InputFormat: DWORD;
+ Output: cmsHPROFILE;
+ OutputFormat: DWORD;
+ Proofing: cmsHPROFILE;
+ Intent: Integer;
+ ProofingIntent: Integer;
+ dwFlags: DWord): cmsHTRANSFORM; EXTERNAL 'lcms.dll';
+
+FUNCTION cmsCreateMultiprofileTransform(hProfiles : ARRAY OF cmsHPROFILE;
+ nProfiles : Integer;
+ InputFormat: DWord;
+ OutputFormat: DWord;
+ Intent: Integer;
+ dwFlags: DWord): cmsHTRANSFORM; EXTERNAL 'lcms.dll';
+
+
+PROCEDURE cmsDeleteTransform( hTransform: cmsHTRANSFORM); EXTERNAL 'lcms.dll';
+
+PROCEDURE cmsDoTransform( Transform: cmsHTRANSFORM;
+ InputBuffer: Pointer;
+ OutputBuffer: Pointer;
+ Size: LongInt); EXTERNAL 'lcms.dll';
+
+PROCEDURE cmsChangeBuffersFormat(hTransform: cmsHTRANSFORM;
+ dwInputFormat, dwOutputFormat: DWord); EXTERNAL 'lcms.dll';
+
+
+FUNCTION cmsTransform2DeviceLink(hTransform: cmsHTRANSFORM; dwFlags: DWord): cmsHPROFILE; EXTERNAL 'lcms.dll';
+
+PROCEDURE _cmsSetLUTdepth(hProfile: cmsHPROFILE; depth: Integer); EXTERNAL 'lcms.dll';
+
+FUNCTION cmsNamedColorCount(xform: cmsHTRANSFORM): Integer; EXTERNAL 'lcms.dll';
+FUNCTION cmsNamedColorInfo(xform: cmsHTRANSFORM; nColor: Integer;
+ Name, Prefix, Suffix: PChar) : Boolean; EXTERNAL 'lcms.dll';
+
+FUNCTION cmsNamedColorIndex(xform: cmsHTRANSFORM; Name: PChar): Integer; EXTERNAL 'lcms.dll';
+
+
+FUNCTION cmsGetPostScriptCSA(hProfile: cmsHPROFILE ;
+ Intent: Integer;
+ Buffer: Pointer;
+ dwBufferLen: DWord): DWord; EXTERNAL 'lcms.dll';
+
+FUNCTION cmsGetPostScriptCRD(hProfile: cmsHPROFILE ;
+ Intent: Integer;
+ Buffer: Pointer;
+ dwBufferLen: DWord): DWord; EXTERNAL 'lcms.dll';
+
+FUNCTION cmsGetPostScriptCRDEx(hProfile: cmsHPROFILE ;
+ Intent: Integer;
+ dwFlags: DWord;
+ Buffer: Pointer;
+ dwBufferLen: DWord): DWord; EXTERNAL 'lcms.dll';
+
+FUNCTION cmsCIECAM97sInit(pVC : LPcmsViewingConditions ) : Pointer; EXTERNAL 'lcms.dll';
+PROCEDURE cmsCIECAM97sDone(hModel : Pointer); EXTERNAL 'lcms.dll';
+
+PROCEDURE cmsCIECAM97sForward(hModel: Pointer; pIn: LPcmsCIEXYZ; pOut: LPcmsJCh ); EXTERNAL 'lcms.dll';
+PROCEDURE cmsCIECAM97sReverse(hModel: Pointer; pIn: LPcmsJCh; pOut: LPcmsCIEXYZ ); EXTERNAL 'lcms.dll';
+
+// CIECAM02
+
+FUNCTION cmsCIECAM02Init(pVC : LPcmsViewingConditions ) : Pointer; EXTERNAL 'lcms.dll';
+PROCEDURE cmsCIECAM02Done(hModel : Pointer); EXTERNAL 'lcms.dll';
+
+PROCEDURE cmsCIECAM02Forward(hModel: Pointer; pIn: LPcmsCIEXYZ; pOut: LPcmsJCh ); EXTERNAL 'lcms.dll';
+PROCEDURE cmsCIECAM02Reverse(hModel: Pointer; pIn: LPcmsJCh; pOut: LPcmsCIEXYZ ); EXTERNAL 'lcms.dll';
+
+// Utils
+
+PROCEDURE cmsXYZ2xyY(Dest: LPcmsCIExyY; Source: LPcmsCIEXYZ); EXTERNAL 'lcms.dll';
+PROCEDURE cmsxyY2XYZ(Dest: LPcmsCIEXYZ; Source: LPcmsCIExyY); EXTERNAL 'lcms.dll';
+
+PROCEDURE cmsXYZ2Lab(WhitePoint: LPcmsCIEXYZ; xyz: LPcmsCIEXYZ; Lab: LPcmsCIELab); EXTERNAL 'lcms.dll';
+PROCEDURE cmsLab2XYZ(WhitePoint: LPcmsCIEXYZ; Lab: LPcmsCIELab; xyz: LPcmsCIEXYZ); EXTERNAL 'lcms.dll';
+PROCEDURE cmsLab2LCh(LCh: LPcmsCIELCh; Lab: LPcmsCIELab); EXTERNAL 'lcms.dll';
+PROCEDURE cmsLCh2Lab(Lab: LPcmsCIELab; LCh: LPcmsCIELCh); EXTERNAL 'lcms.dll';
+
+
+// CIELab handling
+
+FUNCTION cmsDeltaE(Lab1, Lab2: LPcmsCIELab): Double; EXTERNAL 'lcms.dll';
+FUNCTION cmsCIE94DeltaE(Lab1, Lab2: LPcmsCIELab): Double; EXTERNAL 'lcms.dll';
+FUNCTION cmsBFDdeltaE(Lab1, Lab2: LPcmsCIELab): Double; EXTERNAL 'lcms.dll';
+FUNCTION cmsCMCdeltaE(Lab1, Lab2: LPcmsCIELab): Double; EXTERNAL 'lcms.dll';
+FUNCTION cmsCIE2000DeltaE(Lab1, Lab2: LPcmsCIELab; Kl, Kc, Kh: Double): Double; StdCall; EXTERNAL 'lcms.dll';
+
+PROCEDURE cmsClampLab(Lab: LPcmsCIELab; amax, amin, bmax, bmin: Double); EXTERNAL 'lcms.dll';
+
+PROCEDURE cmsSetAlarmCodes(r, g, b: Integer); EXTERNAL 'lcms.dll';
+PROCEDURE cmsGetAlarmCodes(VAR r, g, b: Integer); EXTERNAL 'lcms.dll';
+
+PROCEDURE cmsErrorAction(nAction: Integer); EXTERNAL 'lcms.dll';
+
+PROCEDURE cmsSetErrorHandler(ErrorHandler: cmsErrorHandler); EXTERNAL 'lcms.dll';
+
+
+
+FUNCTION cmsIT8Alloc: LCMSHANDLE; EXTERNAL 'lcms.dll';
+PROCEDURE cmsIT8Free(hIT8: LCMSHANDLE); EXTERNAL 'lcms.dll';
+
+// Tables
+
+FUNCTION cmsIT8TableCount(hIT8: LCMSHANDLE): Integer; EXTERNAL 'lcms.dll';
+FUNCTION cmsIT8SetTable(hIT8: LCMSHANDLE; nTable: Integer): Integer; EXTERNAL 'lcms.dll';
+
+// Persistence
+FUNCTION cmsIT8LoadFromFile(cFileName: PChar): LCMSHANDLE; EXTERNAL 'lcms.dll';
+FUNCTION cmsIT8LoadFromMem(Ptr: Pointer; size :DWord): LCMSHANDLE; EXTERNAL 'lcms.dll';
+
+FUNCTION cmsIT8SaveToFile(hIT8: LCMSHANDLE; cFileName: PChar): Boolean; EXTERNAL 'lcms.dll';
+
+// Properties
+
+FUNCTION cmsIT8GetSheetType(hIT8: LCMSHANDLE): PChar; EXTERNAL 'lcms.dll';
+FUNCTION cmsIT8SetSheetType(hIT8: LCMSHANDLE; TheType: PChar): Boolean; EXTERNAL 'lcms.dll';
+
+FUNCTION cmsIT8SetComment(hIT8: LCMSHANDLE; cComment: PChar): Boolean; EXTERNAL 'lcms.dll';
+
+FUNCTION cmsIT8SetPropertyStr(hIT8: LCMSHANDLE; cProp, Str: PChar): Boolean; EXTERNAL 'lcms.dll';
+FUNCTION cmsIT8SetPropertyDbl(hIT8: LCMSHANDLE; cProp: PChar; Val: Double): Boolean; EXTERNAL 'lcms.dll';
+FUNCTION cmsIT8SetPropertyHex(hIT8: LCMSHANDLE; cProp: PChar; Val: Integer): Boolean; EXTERNAL 'lcms.dll';
+FUNCTION cmsIT8SetPropertyUncooked(hIT8: LCMSHANDLE; Key, Buffer: PChar): Boolean; EXTERNAL 'lcms.dll';
+
+
+FUNCTION cmsIT8GetProperty(hIT8: LCMSHANDLE; cProp: PChar): PChar; EXTERNAL 'lcms.dll';
+FUNCTION cmsIT8GetPropertyDbl(hIT8: LCMSHANDLE; cProp: PChar): Double; EXTERNAL 'lcms.dll';
+FUNCTION cmsIT8EnumProperties(hIT8: LCMSHANDLE; var PropertyNames: LCMSARRAYOFPCHAR): Integer; EXTERNAL 'lcms.dll';
+
+// Datasets
+
+FUNCTION cmsIT8GetDataRowCol(hIT8: LCMSHANDLE; row, col: Integer): PChar; EXTERNAL 'lcms.dll';
+FUNCTION cmsIT8GetDataRowColDbl(hIT8: LCMSHANDLE; row, col: Integer): Double; EXTERNAL 'lcms.dll';
+
+FUNCTION cmsIT8SetDataRowCol(hIT8: LCMSHANDLE; row, col: Integer; Val: PChar): Boolean; EXTERNAL 'lcms.dll';
+FUNCTION cmsIT8SetDataRowColDbl(hIT8: LCMSHANDLE; row, col: Integer; Val: Double): Boolean; EXTERNAL 'lcms.dll';
+
+FUNCTION cmsIT8GetData(hIT8: LCMSHANDLE; cPatch, cSample: PChar): PChar; EXTERNAL 'lcms.dll';
+
+FUNCTION cmsIT8GetDataDbl(hIT8: LCMSHANDLE;cPatch, cSample: PChar): Double; EXTERNAL 'lcms.dll';
+
+FUNCTION cmsIT8SetData(hIT8: LCMSHANDLE; cPatch, cSample, Val: PChar): Boolean; EXTERNAL 'lcms.dll';
+
+FUNCTION cmsIT8SetDataDbl(hIT8: LCMSHANDLE; cPatch, cSample: PChar; Val: Double): Boolean; EXTERNAL 'lcms.dll';
+
+FUNCTION cmsIT8SetDataFormat(hIT8: LCMSHANDLE; n: Integer; Sample: PChar): Boolean; EXTERNAL 'lcms.dll';
+FUNCTION cmsIT8EnumDataFormat(hIT8: LCMSHANDLE; var SampleNames: LCMSARRAYOFPCHAR): Integer; EXTERNAL 'lcms.dll';
+FUNCTION cmsIT8GetPatchName(hIT8: LCMSHANDLE; nPatch: Integer; Buffer: PChar): PChar; EXTERNAL 'lcms.dll';
+
+// The LABEL extension
+
+FUNCTION cmsIT8SetTableByLabel(hIT8: LCMSHANDLE; cSet, cField, ExpectedType: PChar): Integer; EXTERNAL 'lcms.dll';
+
+
+
+
+PROCEDURE cmsLabEncoded2Float(Lab: LPcmsCIELab; wLab: Pointer); EXTERNAL 'lcms.dll';
+PROCEDURE cmsFloat2LabEncoded(wLab: Pointer; Lab: LPcmsCIELab); EXTERNAL 'lcms.dll';
+PROCEDURE cmsXYZEncoded2Float(fxyz : LPcmsCIEXYZ; XYZ: Pointer); EXTERNAL 'lcms.dll';
+PROCEDURE cmsFloat2XYZEncoded(XYZ: Pointer; fXYZ: LPcmsCIEXYZ); EXTERNAL 'lcms.dll';
+
+FUNCTION _cmsAddTextTag(hProfile: cmsHPROFILE; sig: icTagSignature; Text: PChar): Boolean; EXTERNAL 'lcms.dll';
+FUNCTION _cmsAddXYZTag(hProfile: cmsHPROFILE; sig: icTagSignature; XYZ: LPcmsCIEXYZ): Boolean; EXTERNAL 'lcms.dll';
+FUNCTION _cmsAddLUTTag(hProfile: cmsHPROFILE; sig: icTagSignature; lut: PByte): Boolean; EXTERNAL 'lcms.dll';
+
+
+
+END.
|