size_t
signature;
};
+
+typedef struct _CMSExceptionInfo
+{
+ Image
+ *image;
+
+ ExceptionInfo
+ *exception;
+} CMSExceptionInfo;
\f
/*
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
}
#endif
+#if defined(MAGICKCORE_LCMS_DELEGATE)
+#if defined(LCMS_VERSION) && (LCMS_VERSION >= 2000)
+static void CMSExceptionHandler(cmsContext context,cmsUInt32Number severity,
+ const char *message)
+{
+ CMSExceptionInfo
+ *cms_exception;
+
+ ExceptionInfo
+ *exception;
+
+ Image
+ *image;
+
+ cms_exception=(CMSExceptionInfo *) context;
+ image=cms_exception->image;
+ exception=cms_exception->exception;
+ if (image == (Image *) NULL)
+ {
+ (void) ThrowMagickException(exception,GetMagickModule(),ImageWarning,
+ "UnableToTransformColorspace","`%s'","unknown context");
+ return;
+ }
+ if (image->debug != MagickFalse)
+ (void) LogMagickEvent(TransformEvent,GetMagickModule(),"lcms: #%u, %s",
+ severity,message != (char *) NULL ? message : "no message");
+ (void) ThrowMagickException(exception,GetMagickModule(),ImageWarning,
+ "UnableToTransformColorspace","`%s'",image->filename);
+}
+#else
+static int CMSExceptionHandler(int severity,const char *message)
+{
+ (void) LogMagickEvent(TransformEvent,GetMagickModule(),"lcms: #%d, %s",
+ severity,message != (char *) NULL ? message : "no message");
+ return(1);
+}
+#endif
+#endif
+
static MagickBooleanType SetAdobeRGB1998ImageProfile(Image *image,
ExceptionInfo *exception)
{
profile=DestroyStringInfo(profile);
return(status);
}
-#if defined(MAGICKCORE_LCMS_DELEGATE)
-#if defined(LCMS_VERSION) && (LCMS_VERSION >= 2000)
-static void LCMSExceptionHandler(cmsContext context,cmsUInt32Number severity,
- const char *message)
-{
- Image
- *image;
-
- (void) LogMagickEvent(TransformEvent,GetMagickModule(),"lcms: #%u, %s",
- severity,message != (char *) NULL ? message : "no message");
- image=(Image *) context;
- if (image != (Image *) NULL)
- (void) ThrowMagickException(&image->exception,GetMagickModule(),
- ImageWarning,"UnableToTransformColorspace","`%s'",image->filename);
-
-}
-#else
-static int LCMSExceptionHandler(int severity,const char *message)
-{
- (void) LogMagickEvent(TransformEvent,GetMagickModule(),"lcms: #%d, %s",
- severity,message != (char *) NULL ? message : "no message");
- return(1);
-}
-#endif
-#endif
MagickExport MagickBooleanType ProfileImage(Image *image,const char *name,
const void *datum,const size_t length,ExceptionInfo *exception)
cmsHPROFILE
source_profile;
+ CMSExceptionInfo
+ cms_exception;
+
/*
Transform pixel colors as defined by the color profiles.
*/
- cmsSetLogErrorHandler(LCMSExceptionHandler);
- source_profile=cmsOpenProfileFromMemTHR(image,
+ cmsSetLogErrorHandler(CMSExceptionHandler);
+ cms_exception.image=image;
+ cms_exception.exception=exception;
+ source_profile=cmsOpenProfileFromMemTHR(&cms_exception,
GetStringInfoDatum(profile),(cmsUInt32Number)
GetStringInfoLength(profile));
if (source_profile == (cmsHPROFILE) NULL)
if (icc_profile != (StringInfo *) NULL)
{
target_profile=source_profile;
- source_profile=cmsOpenProfileFromMemTHR(image,
+ source_profile=cmsOpenProfileFromMemTHR(&cms_exception,
GetStringInfoDatum(icc_profile),(cmsUInt32Number)
GetStringInfoLength(icc_profile));
if (source_profile == (cmsHPROFILE) NULL)