blob: 1df178433f85d25f9e9504d0e8b972e66ae4217d [file] [log] [blame]
/*
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
% %
% %
% SSSSS TTTTT AAA TTTTT IIIII CCCC %
% SS T A A T I C %
% SSS T AAAAA T I C %
% SS T A A T I C %
% SSSSS T A A T IIIII CCCC %
% %
% %
% MagickCore Static Methods %
% %
% Software Design %
% Cristy %
% March 2000 %
% %
% %
% Copyright 1999-2017 ImageMagick Studio LLC, a non-profit organization %
% dedicated to making software imaging solutions freely available. %
% %
% You may not use this file except in compliance with the License. You may %
% obtain a copy of the License at %
% %
% http://www.imagemagick.org/script/license.php %
% %
% Unless required by applicable law or agreed to in writing, software %
% distributed under the License is distributed on an "AS IS" BASIS, %
% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. %
% See the License for the specific language governing permissions and %
% limitations under the License. %
% %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
%
%
*/
/*
Include declarations.
*/
#include "MagickCore/studio.h"
#include "MagickCore/exception-private.h"
#include "MagickCore/image.h"
#include "MagickCore/module.h"
#include "MagickCore/policy.h"
#include "MagickCore/static.h"
#include "MagickCore/string_.h"
/*
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
% %
% %
% I n v o k e S t a t i c I m a g e F i l t e r %
% %
% %
% %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% InvokeStaticImageFilter() invokes a static image filter.
%
% The format of the InvokeStaticImageFilter method is:
%
% MagickBooleanType InvokeStaticImageFilter(const char *tag,Image **image,
% const int argc,const char **argv)
%
% A description of each parameter follows:
%
% o tag: the module tag.
%
% o image: the image.
%
% o argc: the number of elements in the argument vector.
%
% o argv: A text array containing the command line arguments.
%
% o argv: A text array containing the command line arguments.
%
% o exception: return any errors or warnings in this structure.
%
*/
#if defined(MAGICKCORE_MODULES_SUPPORT)
MagickExport MagickBooleanType InvokeStaticImageFilter(const char *tag,
Image **image,const int argc,const char **argv,ExceptionInfo *exception)
{
PolicyRights
rights;
assert(image != (Image **) NULL);
assert((*image)->signature == MagickCoreSignature);
if ((*image)->debug != MagickFalse)
(void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",(*image)->filename);
rights=ReadPolicyRights;
if (IsRightsAuthorized(FilterPolicyDomain,rights,tag) == MagickFalse)
{
errno=EPERM;
(void) ThrowMagickException(exception,GetMagickModule(),PolicyError,
"NotAuthorized","`%s'",tag);
return(MagickFalse);
}
#if defined(MAGICKCORE_BUILD_MODULES)
(void) tag;
(void) argc;
(void) argv;
(void) exception;
#else
{
extern size_t
analyzeImage(Image **,const int,char **,ExceptionInfo *);
ImageFilterHandler
*image_filter;
image_filter=(ImageFilterHandler *) NULL;
if (LocaleCompare("analyze",tag) == 0)
image_filter=(ImageFilterHandler *) analyzeImage;
if (image_filter == (ImageFilterHandler *) NULL)
(void) ThrowMagickException(exception,GetMagickModule(),ModuleError,
"UnableToLoadModule","`%s'",tag);
else
{
size_t
signature;
if ((*image)->debug != MagickFalse)
(void) LogMagickEvent(CoderEvent,GetMagickModule(),
"Invoking \"%s\" static image filter",tag);
signature=image_filter(image,argc,argv,exception);
if ((*image)->debug != MagickFalse)
(void) LogMagickEvent(CoderEvent,GetMagickModule(),"\"%s\" completes",
tag);
if (signature != MagickImageFilterSignature)
{
(void) ThrowMagickException(exception,GetMagickModule(),ModuleError,
"ImageFilterSignatureMismatch","'%s': %8lx != %8lx",tag,
(unsigned long) signature,(unsigned long)
MagickImageFilterSignature);
return(MagickFalse);
}
}
}
#endif
return(MagickTrue);
}
#endif
/*
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
% %
% %
% R e g i s t e r S t a t i c M o d u l e s %
% %
% %
% %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% (void) RegisterStaticModules() statically registers all the available module
% handlers.
%
% The format of the RegisterStaticModules method is:
%
% (void) RegisterStaticModules(void)
%
*/
MagickExport void RegisterStaticModules(void)
{
#if !defined(MAGICKCORE_BUILD_MODULES)
(void) RegisterAAIImage();
(void) RegisterARTImage();
(void) RegisterAVSImage();
(void) RegisterBGRImage();
(void) RegisterBMPImage();
(void) RegisterBRAILLEImage();
(void) RegisterCALSImage();
(void) RegisterCAPTIONImage();
(void) RegisterCINImage();
(void) RegisterCIPImage();
(void) RegisterCLIPImage();
#if defined(MAGICKCORE_WINGDI32_DELEGATE)
(void) RegisterCLIPBOARDImage();
#endif
(void) RegisterCMYKImage();
(void) RegisterCUTImage();
(void) RegisterDCMImage();
(void) RegisterDDSImage();
(void) RegisterDEBUGImage();
(void) RegisterDIBImage();
#if defined(MAGICKCORE_DJVU_DELEGATE)
(void) RegisterDJVUImage();
#endif
(void) RegisterDNGImage();
#if defined(MAGICKCORE_DPS_DELEGATE)
(void) RegisterDPSImage();
#endif
(void) RegisterDPXImage();
#if defined(MAGICKCORE_WINGDI32_DELEGATE)
(void) RegisterEMFImage();
#endif
#if defined(MAGICKCORE_TIFF_DELEGATE)
(void) RegisterEPTImage();
#endif
#if defined(MAGICKCORE_OPENEXR_DELEGATE)
(void) RegisterEXRImage();
#endif
(void) RegisterFAXImage();
(void) RegisterFDImage();
(void) RegisterFITSImage();
#if defined(MAGICKCORE_FLIF_DELEGATE)
(void) RegisterFLIFImage();
#endif
#if defined(MAGICKCORE_FPX_DELEGATE)
(void) RegisterFPXImage();
#endif
(void) RegisterGIFImage();
(void) RegisterGRAYImage();
(void) RegisterGRADIENTImage();
(void) RegisterHALDImage();
(void) RegisterHDRImage();
(void) RegisterHISTOGRAMImage();
(void) RegisterHRZImage();
(void) RegisterHTMLImage();
(void) RegisterICONImage();
(void) RegisterINFOImage();
(void) RegisterINLINEImage();
(void) RegisterIPLImage();
#if defined(MAGICKCORE_JBIG_DELEGATE)
(void) RegisterJBIGImage();
#endif
(void) RegisterJNXImage();
#if defined(MAGICKCORE_JPEG_DELEGATE)
(void) RegisterJPEGImage();
#endif
#if defined(MAGICKCORE_LIBOPENJP2_DELEGATE)
(void) RegisterJP2Image();
#endif
(void) RegisterJSONImage();
(void) RegisterLABELImage();
(void) RegisterMACImage();
(void) RegisterMAGICKImage();
(void) RegisterMAPImage();
(void) RegisterMATImage();
(void) RegisterMATTEImage();
(void) RegisterMASKImage();
(void) RegisterMETAImage();
(void) RegisterMIFFImage();
(void) RegisterMONOImage();
(void) RegisterMPCImage();
(void) RegisterMPEGImage();
(void) RegisterMPRImage();
(void) RegisterMSLImage();
(void) RegisterMTVImage();
(void) RegisterMVGImage();
(void) RegisterNULLImage();
(void) RegisterOTBImage();
(void) RegisterPALMImage();
(void) RegisterPANGOImage();
(void) RegisterPATTERNImage();
(void) RegisterPCDImage();
(void) RegisterPCLImage();
(void) RegisterPCXImage();
(void) RegisterPDBImage();
(void) RegisterPDFImage();
(void) RegisterPESImage();
(void) RegisterPICTImage();
(void) RegisterPIXImage();
(void) RegisterPLASMAImage();
#if defined(MAGICKCORE_PNG_DELEGATE)
(void) RegisterPNGImage();
#endif
(void) RegisterPNMImage();
(void) RegisterPSImage();
(void) RegisterPS2Image();
(void) RegisterPS3Image();
(void) RegisterPSDImage();
(void) RegisterPWPImage();
(void) RegisterRAWImage();
(void) RegisterRGBImage();
(void) RegisterRGFImage();
(void) RegisterRLAImage();
(void) RegisterRLEImage();
(void) RegisterSCRImage();
(void) RegisterSCREENSHOTImage();
(void) RegisterSCTImage();
(void) RegisterSFWImage();
(void) RegisterSGIImage();
(void) RegisterSIXELImage();
(void) RegisterSTEGANOImage();
(void) RegisterSUNImage();
(void) RegisterSVGImage();
(void) RegisterTGAImage();
(void) RegisterTHUMBNAILImage();
#if defined(MAGICKCORE_TIFF_DELEGATE)
(void) RegisterTIFFImage();
#endif
(void) RegisterTILEImage();
(void) RegisterTIMImage();
(void) RegisterTTFImage();
(void) RegisterTXTImage();
(void) RegisterUILImage();
(void) RegisterURLImage();
(void) RegisterUYVYImage();
(void) RegisterVICARImage();
(void) RegisterVIDImage();
(void) RegisterVIFFImage();
(void) RegisterVIPSImage();
(void) RegisterWBMPImage();
#if defined(MAGICKCORE_WEBP_DELEGATE)
(void) RegisterWEBPImage();
#endif
#if defined(MAGICKCORE_WMF_DELEGATE) || defined(MAGICKCORE_WMFLITE_DELEGATE)
(void) RegisterWMFImage();
#endif
(void) RegisterWPGImage();
#if defined(MAGICKCORE_X11_DELEGATE)
(void) RegisterXImage();
#endif
(void) RegisterXBMImage();
(void) RegisterXCImage();
(void) RegisterXCFImage();
(void) RegisterXPMImage();
(void) RegisterXPSImage();
#if defined(MAGICKCORE_WINDOWS_SUPPORT)
(void) RegisterXTRNImage();
#endif
#if defined(MAGICKCORE_X11_DELEGATE)
(void) RegisterXWDImage();
#endif
(void) RegisterYCBCRImage();
(void) RegisterYUVImage();
#endif
}
/*
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
% %
% %
% U n r e g i s t e r S t a t i c M o d u l e s %
% %
% %
% %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% UnregisterStaticModules() statically unregisters all the available module
% handlers.
%
% The format of the UnregisterStaticModules method is:
%
% UnregisterStaticModules(void)
%
*/
MagickExport void UnregisterStaticModules(void)
{
#if !defined(MAGICKCORE_BUILD_MODULES)
UnregisterAAIImage();
UnregisterARTImage();
UnregisterAVSImage();
UnregisterBGRImage();
UnregisterBMPImage();
UnregisterBRAILLEImage();
UnregisterCALSImage();
UnregisterCAPTIONImage();
UnregisterCINImage();
UnregisterCIPImage();
UnregisterCLIPImage();
#if defined(MAGICKCORE_WINGDI32_DELEGATE)
UnregisterCLIPBOARDImage();
#endif
UnregisterCMYKImage();
UnregisterCUTImage();
UnregisterDCMImage();
UnregisterDDSImage();
UnregisterDEBUGImage();
UnregisterDIBImage();
#if defined(MAGICKCORE_DJVU_DELEGATE)
UnregisterDJVUImage();
#endif
UnregisterDNGImage();
#if defined(MAGICKCORE_DPS_DELEGATE)
UnregisterDPSImage();
#endif
UnregisterDPXImage();
#if defined(MAGICKCORE_WINGDI32_DELEGATE)
UnregisterEMFImage();
#endif
#if defined(MAGICKCORE_TIFF_DELEGATE)
UnregisterEPTImage();
#endif
#if defined(MAGICKCORE_OPENEXR_DELEGATE)
UnregisterEXRImage();
#endif
UnregisterFAXImage();
UnregisterFDImage();
UnregisterFITSImage();
#if defined(MAGICKCORE_FLIF_DELEGATE)
UnregisterFLIFImage();
#endif
#if defined(MAGICKCORE_FPX_DELEGATE)
UnregisterFPXImage();
#endif
UnregisterGIFImage();
UnregisterGRAYImage();
UnregisterGRADIENTImage();
UnregisterHALDImage();
UnregisterHDRImage();
UnregisterHISTOGRAMImage();
UnregisterHRZImage();
UnregisterHTMLImage();
UnregisterICONImage();
UnregisterINFOImage();
UnregisterINLINEImage();
UnregisterIPLImage();
#if defined(MAGICKCORE_JBIG_DELEGATE)
UnregisterJBIGImage();
#endif
UnregisterJNXImage();
#if defined(MAGICKCORE_JPEG_DELEGATE)
UnregisterJPEGImage();
#endif
#if defined(MAGICKCORE_LIBOPENJP2_DELEGATE)
UnregisterJP2Image();
#endif
UnregisterJSONImage();
UnregisterLABELImage();
UnregisterMACImage();
UnregisterMAGICKImage();
UnregisterMAPImage();
UnregisterMASKImage();
UnregisterMATImage();
UnregisterMATTEImage();
UnregisterMETAImage();
UnregisterMIFFImage();
UnregisterMONOImage();
UnregisterMPCImage();
UnregisterMPEGImage();
UnregisterMPRImage();
UnregisterMSLImage();
UnregisterMTVImage();
UnregisterMVGImage();
UnregisterNULLImage();
UnregisterOTBImage();
UnregisterPALMImage();
UnregisterPANGOImage();
UnregisterPATTERNImage();
UnregisterPCDImage();
UnregisterPCLImage();
UnregisterPCXImage();
UnregisterPDBImage();
UnregisterPDFImage();
UnregisterPESImage();
UnregisterPICTImage();
UnregisterPIXImage();
UnregisterPLASMAImage();
#if defined(MAGICKCORE_PNG_DELEGATE)
UnregisterPNGImage();
#endif
UnregisterPNMImage();
UnregisterPSImage();
UnregisterPS2Image();
UnregisterPS3Image();
UnregisterPSDImage();
UnregisterPWPImage();
UnregisterRAWImage();
UnregisterRGBImage();
UnregisterRGFImage();
UnregisterRLAImage();
UnregisterRLEImage();
UnregisterSCRImage();
UnregisterSCREENSHOTImage();
UnregisterSCTImage();
UnregisterSFWImage();
UnregisterSGIImage();
UnregisterSIXELImage();
UnregisterSTEGANOImage();
UnregisterSUNImage();
UnregisterSVGImage();
UnregisterTGAImage();
UnregisterTHUMBNAILImage();
#if defined(MAGICKCORE_TIFF_DELEGATE)
UnregisterTIFFImage();
#endif
UnregisterTILEImage();
UnregisterTIMImage();
UnregisterTTFImage();
UnregisterTXTImage();
UnregisterUILImage();
UnregisterURLImage();
UnregisterUYVYImage();
UnregisterVICARImage();
UnregisterVIDImage();
UnregisterVIFFImage();
UnregisterVIPSImage();
UnregisterWBMPImage();
#if defined(MAGICKCORE_WEBP_DELEGATE)
UnregisterWEBPImage();
#endif
#if defined(MAGICKCORE_WMF_DELEGATE) || defined(MAGICKCORE_WMFLITE_DELEGATE)
UnregisterWMFImage();
#endif
UnregisterWPGImage();
#if defined(MAGICKCORE_X11_DELEGATE)
UnregisterXImage();
#endif
UnregisterXBMImage();
UnregisterXCImage();
UnregisterXCFImage();
UnregisterXPMImage();
UnregisterXPSImage();
#if defined(MAGICKCORE_WINDOWS_SUPPORT)
UnregisterXTRNImage();
#endif
#if defined(MAGICKCORE_X11_DELEGATE)
UnregisterXWDImage();
#endif
UnregisterYCBCRImage();
UnregisterYUVImage();
#endif
}