Emulation Tables

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:

L_VOID Tables_Convert_CMYKToRGB(L_UCHAR *pInput, L_UCHAR *pOutput, L_INT nWidth) 
{ 
   HANDLE ClrHandle /*Color Handle*/; 
   CONVERSION_PARAMS params  /*Conversion options*/; 
   /* 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, /*pixel's width*/ 
   nHeight, /*pixel's height*/ 
   0, /* 0 bytes align*/ 
   0); /*0 bytes align*/ 
   /* free the conversion */ 
   L_ClrFree(ClrHandle); 
} 

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

L_VOID Tables_Convert_CMYKToRGB(L_UCHAR *pInput, L_UCHAR *pOutput, L_INT nWidth) 
{ 
   HANDLE ClrHandle /*Color Handle*/; 
   CONVERSION_PARAMS params  /*Conversion options*/; 
   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 custom emulation tables */ 
   params.nMethod = USE_CUSTOM_ET; 
   /* set the active conversion method */ 
   params.nActiveMethod = USE_CUSTOM_ET; 
   /* set the emulation tables */ 
   lstrcpy(params.sDstInputTable, TEXT("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, /*pixel's width*/ 
   nHeight, /*pixel's height*/ 
   0, /* 0 bytes align*/ 
   0); /*0 bytes align*/ 
   /* free the conversion */ 
   L_ClrFree(ClrHandle); 
} 

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

LEADTOOLS Color Conversion C API Help