Emulation Tables (Delphi 4.0)

Note: At the beginning of the Unit1 file, add LTDLLUNT, LTDLLTYP, and LTDLLDEF to the uses section.

The LEAD Color Conversion toolkit provides emulation tables as one of its conversion methods. This method however is provided only for the following conversions:

The Emulation tables' method supports both built-in and custom options. For built-in emulation tables, use the USE_ET option. The custom emulation tables' option, USE_CUSTOM_ET, provides custom conversion using user-supplied images converted from the source images distributed with the library by any tool, as follows:

Conversion Source Convert to
CMYK to RGB src_cmyk_image.tif RGB image (i.e. dst_cmyk2rgb_image.tif)
RGB to Lab src_rgb_image.tif Lab image ( i.e. dst_rgb2lab_image.tif)
Lab to RGB src_lab_image.tif RGB image (i.e. dst_lab2rgb_image.tif)

A set of images, already converted and ready for use (dst_cmyk2rgb_image.tif, dst_rgb2lab_image.tif, and dst_lab2rgb_image.tif), is provided. However, using the provided set of converted images will produce the same results as the built-in emulation tables.

The code below shows how a conversion can be done using the built-in tables:

procedure Tables_Convert_CMYKToRGB({in}pInput: Pointer; {out}pOutput: Pointer; {in}nWidth: Integer; {in}nHeight: Integer); 
var 
ClrHandle : THandle (*Color Handle*); 
params : CONVERSION_PARAMS (*Conversion options*); 
begin 
(* Zero initialize, this step is important*) 
ZeroMemory (@params, SizeOf (CONVERSION_PARAMS)); 
(* 
* Conversion with options. 
* The conversion will be done with the options specified in the 
* params variable. 
*) 
(* Set the params size *) 
params.uStructSize := SizeOf (CONVERSION_PARAMS); 
(* We want to use built-in emulation tables *) 
params.nMethod := USE_ET; 
(* set the active conversion method *) 
params.nActiveMethod := USE_ET; 
(* initialize the color conversion *) 
L_ClrInit (@ClrHandle, (* pointer to color handle to be returned*) 
CCS_CMYK,    (* input color space *) 
CCS_RGB,     (* output color space *) 
@params      (* pointer to the initialization options *) 
); 
(* Convert the image buffer *) 
L_ClrConvert (ClrHandle, (* conversion handle *) 
pInput,    (* input buffer *) 
pOutput,   (* output buffer *) 
nWidth,     (* pixels width *) 
nHeight,   (* pixels height *) 
0,         (* 0 bytes align *) 
0);        (* 0 bytes align *) 
(* free the conversion *) 
L_ClrFree (ClrHandle); 
end; 

The code below shows how a conversion can be done using user-defined tables:

procedure Tables_Convert_CMYKToRGB({in}pInput: Pointer; {out}pOutput: Pointer; {in}nWidth: Integer; {in}nHeight: Integer); 
var 
ClrHandle : THandle (*Color Handle*); 
params : CONVERSION_PARAMS (*Conversion options*); 
begin 
(* Zero initialize, this step is important*) 
ZeroMemory (@params, SizeOf (CONVERSION_PARAMS)); 
(* 
* Conversion with options. 
* The conversion will be done with the options specified in the 
* params variable. 
*) 
(* Set the params size *) 
params.uStructSize := SizeOf (CONVERSION_PARAMS); 
(* We want to use built-in emulation tables *) 
params.nMethod := USE_CUSTOM_ET; 
(* set the active conversion method *) 
params.nActiveMethod := USE_CUSTOM_ET; 
(* set the emulation tables *) 
StrCopy(params.sInputProfile, 'C:\RGBImage.tif'); 
(* initialize the color conversion *) 
L_ClrInit (@ClrHandle, (* pointer to color handle to be returned*) 
CCS_CMYK,    (* input color space *) 
CCS_RGB,     (* output color space *) 
@params      (* pointer to the initialization options *) 
); 
(* Convert the image buffer *) 
L_ClrConvert (ClrHandle, (* conversion handle *) 
pInput,    (* input buffer *) 
pOutput,   (* output buffer *) 
nWidth,     (* pixels width *) 
nHeight,   (* pixels height *) 
0,         (* 0 bytes align *) 
0);        (* 0 bytes align *) 
(* free the conversion *) 
L_ClrFree (ClrHandle); 
end; 

Help Version 21.0.2021.4.7
Products | Support | Contact Us | Intellectual Property Notices
© 1991-2021 LEAD Technologies, Inc. All Rights Reserved.

LEADTOOLS Color Conversion C API Help