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.

72 lines
1.9 KiB

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.