You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

96 lines
2.3 KiB

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.