summaryrefslogtreecommitdiffstats
path: root/debian/lcms/lcms-1.19.dfsg2/Delphi/Samples/testfrm.pas
diff options
context:
space:
mode:
Diffstat (limited to 'debian/lcms/lcms-1.19.dfsg2/Delphi/Samples/testfrm.pas')
-rwxr-xr-xdebian/lcms/lcms-1.19.dfsg2/Delphi/Samples/testfrm.pas95
1 files changed, 95 insertions, 0 deletions
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.
+