// The plug-in registration. User can add new intents or override default routines cmsBool _cmsRegisterRenderingIntentPlugin(cmsContext id, cmsPluginBase* Data) { cmsPluginRenderingIntent* Plugin = (cmsPluginRenderingIntent*) Data; cmsIntentsList* fl; // Do we have to reset the intents? if (Data == NULL) { Intents = DefaultIntents; return TRUE; } fl = SearchIntent(Plugin ->Intent); if (fl == NULL) { fl = (cmsIntentsList*) _cmsPluginMalloc(id, sizeof(cmsIntentsList)); if (fl == NULL) return FALSE; } fl ->Intent = Plugin ->Intent; strncpy(fl ->Description, Plugin ->Description, 255); fl ->Description[255] = 0; fl ->Link = Plugin ->Link; fl ->Next = Intents; Intents = fl; return TRUE; }
// The plug-in registration. User can add new intents or override default routines cmsBool _cmsRegisterRenderingIntentPlugin(cmsContext id, cmsPluginBase* Data) { _cmsIntentsPluginChunkType* ctx = ( _cmsIntentsPluginChunkType*) _cmsContextGetClientChunk(id, IntentPlugin); cmsPluginRenderingIntent* Plugin = (cmsPluginRenderingIntent*) Data; cmsIntentsList* fl; // Do we have to reset the custom intents? if (Data == NULL) { ctx->Intents = NULL; return TRUE; } fl = (cmsIntentsList*) _cmsPluginMalloc(id, sizeof(cmsIntentsList)); if (fl == NULL) return FALSE; fl ->Intent = Plugin ->Intent; strncpy(fl ->Description, Plugin ->Description, sizeof(fl ->Description)-1); fl ->Description[sizeof(fl ->Description)-1] = 0; fl ->Link = Plugin ->Link; fl ->Next = ctx ->Intents; ctx ->Intents = fl; return TRUE; }
// Register new ways to transform cmsBool _cmsRegisterTransformPlugin(cmsContext ContextID, cmsPluginBase* Data) { cmsPluginTransform* Plugin = (cmsPluginTransform*) Data; _cmsTransformCollection* fl; _cmsTransformPluginChunkType* ctx = ( _cmsTransformPluginChunkType*) _cmsContextGetClientChunk(ContextID,TransformPlugin); if (Data == NULL) { // Free the chain. Memory is safely freed at exit ctx->TransformCollection = NULL; return TRUE; } // Factory callback is required if (Plugin ->Factory == NULL) return FALSE; fl = (_cmsTransformCollection*) _cmsPluginMalloc(ContextID, sizeof(_cmsTransformCollection)); if (fl == NULL) return FALSE; // Copy the parameters fl ->Factory = Plugin ->Factory; // Keep linked list fl ->Next = ctx->TransformCollection; ctx->TransformCollection = fl; // All is ok return TRUE; }
// As a way to install new parametric curves cmsBool _cmsRegisterParametricCurvesPlugin(cmsPluginBase* Data) { cmsPluginParametricCurves* Plugin = (cmsPluginParametricCurves*) Data; _cmsParametricCurvesCollection* fl; if (Data == NULL) { ParametricCurves = &DefaultCurves; return TRUE; } fl = (_cmsParametricCurvesCollection*) _cmsPluginMalloc(sizeof(_cmsParametricCurvesCollection)); if (fl == NULL) return FALSE; // Copy the parameters fl ->Evaluator = Plugin ->Evaluator; fl ->nFunctions = Plugin ->nFunctions; // Make sure no mem overwrites if (fl ->nFunctions > MAX_TYPES_IN_LCMS_PLUGIN) fl ->nFunctions = MAX_TYPES_IN_LCMS_PLUGIN; // Copy the data memmove(fl->FunctionTypes, Plugin ->FunctionTypes, fl->nFunctions * sizeof(cmsUInt32Number)); memmove(fl->ParameterCount, Plugin ->ParameterCount, fl->nFunctions * sizeof(cmsUInt32Number)); // Keep linked list fl ->Next = ParametricCurves; ParametricCurves = fl; // All is ok return TRUE; }
// Register new ways to transform cmsBool _cmsRegisterTransformPlugin(cmsPluginBase* Data) { cmsPluginTransform* Plugin = (cmsPluginTransform*) Data; _cmsTransformCollection* fl; if (Data == NULL) { // Free the chain. Memory is safely freed at exit TransformCollection = NULL; return TRUE; } // Factory callback is required if (Plugin ->Factory == NULL) return FALSE; fl = (_cmsTransformCollection*) _cmsPluginMalloc(sizeof(_cmsTransformCollection)); if (fl == NULL) return FALSE; // Copy the parameters fl ->Factory = Plugin ->Factory; // Keep linked list fl ->Next = TransformCollection; TransformCollection = fl; // All is ok return TRUE; }
// Register new ways to transform cmsBool _cmsRegisterTransformPlugin(cmsContext ContextID, cmsPluginBase* Data) { cmsPluginTransform* Plugin = (cmsPluginTransform*) Data; _cmsTransformCollection* fl; _cmsTransformPluginChunkType* ctx = ( _cmsTransformPluginChunkType*) _cmsContextGetClientChunk(ContextID,TransformPlugin); if (Data == NULL) { // Free the chain. Memory is safely freed at exit ctx->TransformCollection = NULL; return TRUE; } // Factory callback is required if (Plugin->factories.xform == NULL) return FALSE; fl = (_cmsTransformCollection*) _cmsPluginMalloc(ContextID, sizeof(_cmsTransformCollection)); if (fl == NULL) return FALSE; // Check for full xform plug-ins previous to 2.8, we would need an adapter in that case if (Plugin->base.ExpectedVersion < 2080) { fl->OldXform = TRUE; } else fl->OldXform = FALSE; // Copy the parameters fl->Factory = Plugin->factories.xform; // Keep linked list fl ->Next = ctx->TransformCollection; ctx->TransformCollection = fl; // All is ok return TRUE; }