Sets new conversion parameters.
#include "ltkrn.h"
#include "ltclr.h"
L_LTCLR_API L_INT L_ClrSetConversionParams(ClrHandle, pParams)
Handle to an existing color conversion. This handle is obtained by calling the L_ClrInit function.
Pointer to a CONVERSION_PARAMS structure, this structure will describe the conversion properties.
Value | Meaning |
---|---|
SUCCESS | The function was successful. |
< 1 | An error occurred. Refer to Return Codes. |
If pParams is NULL, this function will fail. A valid color conversion handle is needed. To check the handle validity, use L_ClrIsValid.
Win32, x64.
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;
}