2693N/A * or visit www.oracle.com if you need additional information or have any
2693N/A#ifndef _lcms_plugin_H
2693N/A# ifndef _CRT_SECURE_NO_DEPRECATE
2693N/A# ifndef _CRT_SECURE_NO_WARNINGS
2693N/A#ifndef CMS_USE_CPP_API
2693N/A# ifdef __cplusplus
2693N/A// Vector & Matrix operations -----------------------------------------------------------------------
2693N/ACMSAPI void CMSEXPORT _cmsVEC3init(cmsVEC3* r, cmsFloat64Number x, cmsFloat64Number y, cmsFloat64Number z);
2693N/A// Error logging -------------------------------------------------------------------------------------
2693N/ACMSAPI void CMSEXPORT cmsSignalError(cmsContext ContextID, cmsUInt32Number ErrorCode, const char *ErrorText, ...);
2693N/A// Memory management ----------------------------------------------------------------------------------
2693N/ACMSAPI void* CMSEXPORT _cmsCalloc(cmsContext ContextID, cmsUInt32Number num, cmsUInt32Number size);
2693N/ACMSAPI void* CMSEXPORT _cmsRealloc(cmsContext ContextID, void* Ptr, cmsUInt32Number NewSize);
2693N/ACMSAPI void* CMSEXPORT _cmsDupMem(cmsContext ContextID, const void* Org, cmsUInt32Number size);
2693N/A// I/O handler ----------------------------------------------------------------------------------
6271N/ACMSAPI void CMSEXPORT _cmsAdjustEndianess64(cmsUInt64Number* Result, cmsUInt64Number* QWord);
2693N/ACMSAPI cmsBool CMSEXPORT _cmsReadUInt16Array(cmsIOHANDLER* io, cmsUInt32Number n, cmsUInt16Number* Array);
2693N/ACMSAPI cmsBool CMSEXPORT _cmsWriteUInt16Array(cmsIOHANDLER* io, cmsUInt32Number n, const cmsUInt16Number* Array);
2693N/ACMSAPI void CMSEXPORT _cmsEncodeDateTimeNumber(cmsDateTimeNumber *Dest, const struct tm *Source);
2693N/ACMSAPI void CMSEXPORT _cmsDecodeDateTimeNumber(const cmsDateTimeNumber *Source, struct tm *Dest);
6271N/A//----------------------------------------------------------------------------------------------------------
2693N/A//----------------------------------------------------------------------------------------------------------
2693N/A//----------------------------------------------------------------------------------------------------------
2693N/A// ------------------------------------------------------------------------------------------------------------------
2693N/Astruct _cms_interp_struc;
2693N/A// 16 bits forward interpolation. This function performs precision-limited linear interpolation
2693N/A// and is supposed to be quite fast. Implementation may be tetrahedral or trilinear, and plug-ins may
2693N/A register const struct _cms_interp_struc* p);
2693N/A// Floating point forward interpolation. Full precision interpolation using floats. This is not a
2693N/A const struct _cms_interp_struc* p);
2693N/Atypedef struct _cms_interp_struc { // Used on all interpolations. Supplied by lcms2 when calling the interpolation function
2693N/A cmsUInt32Number opta[MAX_INPUT_DIMENSIONS]; // Optimization for 3D CLUT. This is the number of nodes premultiplied for each
2693N/Atypedef cmsInterpFunction (* cmsInterpFnFactory)(cmsUInt32Number nInputChannels, cmsUInt32Number nOutputChannels, cmsUInt32Number dwFlags);
2693N/A//----------------------------------------------------------------------------------------------------------
2693N/A// Parametric curves. A negative type means same function but analytically inverted. Max. number of params is 10
2693N/Atypedef cmsFloat64Number (* cmsParametricCurveEvaluator)(cmsInt32Number Type, const cmsFloat64Number Params[10], cmsFloat64Number R);
2693N/A cmsUInt32Number ParameterCount[MAX_TYPES_IN_LCMS_PLUGIN]; // Number of parameters for each function
2693N/A//----------------------------------------------------------------------------------------------------------
2693N/A// Formatters. This plug-in adds new handlers, replacing them if they already exist. Formatters dealing with
2693N/A// cmsFloat32Number (bps = 4) or double (bps = 0) types are requested via FormatterFloat callback. Others come across
2693N/Astruct _cmstransform_struct;
2693N/Atypedef cmsFormatter (* cmsFormatterFactory)(cmsUInt32Number Type, // Specific type, i.e. TYPE_RGB_8
2693N/A//----------------------------------------------------------------------------------------------------------
2693N/A// Tag type handler. Each type is free to return anything it wants, and it is up to the caller to
2693N/A//----------------------------------------------------------------------------------------------------------
2693N/A// This is the tag plugin, which identifies tags. For writing, a pointer to function is provided.
2693N/A cmsUInt32Number nSupportedTypes; // In how many types this tag can come (MAX_TYPES_IN_LCMS_PLUGIN maximum)
2693N/A//----------------------------------------------------------------------------------------------------------
2693N/A// one custom intent is found, the one located first is invoked. Usually users should use only one
2693N/A//----------------------------------------------------------------------------------------------------------
2693N/Atypedef void (* _cmsStageEvalFn) (const cmsFloat32Number In[], cmsFloat32Number Out[], const cmsStage* mpe);
2693N/A _cmsStageEvalFn EvalPtr, // Points to fn that evaluates the element (always in floating point)
2693N/A//----------------------------------------------------------------------------------------------------------
2693N/A// This function may be used to set the optional evaluator and a block of private data. If private data is being used, an optional
2693N/A// duplicator and free functions should also be specified in order to duplicate the LUT construct. Use NULL to inhibit such functionality.
2693N/A void* PrivateData,
2693N/A//----------------------------------------------------------------------------------------------------------
6271N/A const void* InputBuffer,
6271N/A void* OutputBuffer,
6271N/ACMSAPI void CMSEXPORT _cmsSetTransformUserData(struct _cmstransform_struct *CMMcargo, void* ptr, _cmsFreeUserDataFn FreePrivateDataFn);
6271N/ACMSAPI void CMSEXPORT _cmsGetTransformFormatters16 (struct _cmstransform_struct *CMMcargo, cmsFormatter16* FromInput, cmsFormatter16* ToOutput);
6271N/ACMSAPI void CMSEXPORT _cmsGetTransformFormattersFloat(struct _cmstransform_struct *CMMcargo, cmsFormatterFloat* FromInput, cmsFormatterFloat* ToOutput);
2693N/A#ifndef CMS_USE_CPP_API
2693N/A# ifdef __cplusplus