L_ClrSetConversionParams

#include "ltkrn.h"
#include "ltclr.h"

L_LTCLR_API L_INT L_ClrSetConversionParams(ClrHandle, pParams)

L_HANDLE ClrHandle;

/* handle to the color conversion */

LPCONVERSION_PARAMS pParams;

/* pointer to a structure */

Sets new conversion parameters.

Parameter

Description

ClrHandle

Handle to an existing color conversion. This handle is obtained by calling the L_ClrInit function.

pParams

Pointer to a CONVERSION_PARAMS structure, this structure will describe the conversion properties.

Returns

SUCCESS

The function was successful.

< 1

An error occurred. Refer to Return Codes.

Comments

If pParams is NULL, this function will fail. A valid color conversion handle is needed. To check the handle validity, use L_ClrIsValid.

Required DLLs and Libraries

LTCLR

For a listing of the exact DLLs and Libraries needed, based on the toolkit version, refer to Files To Be Included With Your Application

See Also

Functions:

L_ClrConvert, L_ClrFree, L_ClrInit

Topics:

Conversion Process

 

Color Conversion C DLL Function Groups

Example

L_INT ClrSetConversionParamsExample(
   L_UCHAR* pInput,
   L_UCHAR* pOutput,
   L_INT nWidth,
   L_INT nHeight)
{
   L_INT nRet;
   HANDLE ClrHandle;         /* color Handle       */
   CONVERSION_PARAMS convparams; /* conversion options */

   /* Conversion with options:
      The conversion will be done with the options specified in the convparams variable*/
   /* set the convparams size */
   convparams.uStructSize = sizeof(CONVERSION_PARAMS);
   
   /* we want to use the built in ICC conversion method and built in conversion */
   /* use built in conversion and LEAD ICC Engine*/
   convparams.nMethod = USE_BUILTIN | USE_ICC;
   
   /* set the active conversion method */
   convparams.nActiveMethod = USE_BUILTIN;
   
   /* allocate a D50 white point option */
   convparams.pWpoint = (LPWHITEPOINT)malloc(sizeof(WHITEPOINT));
   
   /* D50 white point */
   convparams.pWpoint->nWhitePoint = CIELAB_D50;
   
   /* allocate a cmyk option */
   convparams.pCmykParams = (LPCMYK_PARAMS)malloc(sizeof(CMYK_PARAMS));
   convparams.pCmykParams->uStructSize = sizeof(CMYK_PARAMS);
   convparams.pCmykParams->nMask = CMYK_GCR;
   
   /* 17.5 % GCR value */
   convparams.pCmykParams->nGcr_level = 175;
   
   /* initialize the color conversion */
   nRet = L_ClrInit(&ClrHandle, CCS_CMYK, CCS_RGB, &convparams);
   if(nRet != SUCCESS)
      return nRet;
   
   /* convert the image buffer */
   nRet = 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     */
   if(nRet != SUCCESS)
      return nRet;
   
   /* change the active method for conversion */
   convparams.nMethod = CHANGE_ACTIVE_METHOD;
   
   /* switch to ICC conversion method */
   convparams.nActiveMethod = USE_ICC;
   
   /* update the conversion state */
   nRet = L_ClrSetConversionParams(ClrHandle, &convparams);
   if(nRet != SUCCESS)
      return nRet;
   
   /* convert the image buffer */
   nRet = 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     */
   if(nRet != SUCCESS)
      return nRet;

   /* free the conversion */
   nRet = L_ClrFree (ClrHandle);

   /* save the image */
   /*...*/
   
   free(convparams.pWpoint);
   free(convparams.pCmykParams);

   return nRet;
}