MagickCore  6.7.7
static.c
Go to the documentation of this file.
00001 /*
00002 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
00003 %                                                                             %
00004 %                                                                             %
00005 %                                                                             %
00006 %                  SSSSS  TTTTT   AAA   TTTTT  IIIII   CCCC                   %
00007 %                  SS       T    A   A    T      I    C                       %
00008 %                   SSS     T    AAAAA    T      I    C                       %
00009 %                     SS    T    A   A    T      I    C                       %
00010 %                  SSSSS    T    A   A    T    IIIII   CCCC                   %
00011 %                                                                             %
00012 %                                                                             %
00013 %                          MagickCore Static Methods                          %
00014 %                                                                             %
00015 %                              Software Design                                %
00016 %                                John Cristy                                  %
00017 %                                 March 2000                                  %
00018 %                                                                             %
00019 %                                                                             %
00020 %  Copyright 1999-2012 ImageMagick Studio LLC, a non-profit organization      %
00021 %  dedicated to making software imaging solutions freely available.           %
00022 %                                                                             %
00023 %  You may not use this file except in compliance with the License.  You may  %
00024 %  obtain a copy of the License at                                            %
00025 %                                                                             %
00026 %    http://www.imagemagick.org/script/license.php                            %
00027 %                                                                             %
00028 %  Unless required by applicable law or agreed to in writing, software        %
00029 %  distributed under the License is distributed on an "AS IS" BASIS,          %
00030 %  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.   %
00031 %  See the License for the specific language governing permissions and        %
00032 %  limitations under the License.                                             %
00033 %                                                                             %
00034 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
00035 %
00036 %
00037 %
00038 */
00039 
00040 /*
00041   Include declarations.
00042 */
00043 #include "MagickCore/studio.h"
00044 #include "MagickCore/exception-private.h"
00045 #include "MagickCore/image.h"
00046 #include "MagickCore/module.h"
00047 #include "MagickCore/policy.h"
00048 #include "MagickCore/static.h"
00049 #include "MagickCore/string_.h"
00050 
00051 /*
00052 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
00053 %                                                                             %
00054 %                                                                             %
00055 %                                                                             %
00056 %   I n v o k e S t a t i c I m a g e F i l t e r                             %
00057 %                                                                             %
00058 %                                                                             %
00059 %                                                                             %
00060 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
00061 %
00062 %  InvokeStaticImageFilter() invokes a static image filter.
00063 %
00064 %  The format of the InvokeStaticImageFilter method is:
00065 %
00066 %      MagickBooleanType InvokeStaticImageFilter(const char *tag,Image **image,
00067 %        const int argc,const char **argv)
00068 %
00069 %  A description of each parameter follows:
00070 %
00071 %    o tag: the module tag.
00072 %
00073 %    o image: the image.
00074 %
00075 %    o argc: the number of elements in the argument vector.
00076 %
00077 %    o argv: A text array containing the command line arguments.
00078 %
00079 %    o argv: A text array containing the command line arguments.
00080 %
00081 %    o exception: return any errors or warnings in this structure.
00082 %
00083 */
00084 #if defined(MAGICKCORE_MODULES_SUPPORT)
00085 MagickExport MagickBooleanType InvokeStaticImageFilter(const char *tag,
00086   Image **image,const int argc,const char **argv,ExceptionInfo *exception)
00087 {
00088   PolicyRights
00089     rights;
00090 
00091   assert(image != (Image **) NULL);
00092   assert((*image)->signature == MagickSignature);
00093   if ((*image)->debug != MagickFalse)
00094     (void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",(*image)->filename);
00095   rights=ReadPolicyRights;
00096   if (IsRightsAuthorized(FilterPolicyDomain,rights,tag) == MagickFalse)
00097     {
00098       errno=EPERM;
00099       (void) ThrowMagickException(exception,GetMagickModule(),PolicyError,
00100         "NotAuthorized","'%s'",tag);
00101       return(MagickFalse);
00102     }
00103 #if defined(MAGICKCORE_BUILD_MODULES)
00104   (void) tag;
00105   (void) argc;
00106   (void) argv;
00107   (void) exception;
00108 #else
00109   {
00110     extern size_t
00111       analyzeImage(Image **,const int,char **,ExceptionInfo *);
00112 
00113     ImageFilterHandler
00114       *image_filter;
00115 
00116     image_filter=(ImageFilterHandler *) NULL;
00117     if (LocaleCompare("analyze",tag) == 0)
00118       image_filter=(ImageFilterHandler *) analyzeImage;
00119     if (image_filter == (ImageFilterHandler *) NULL)
00120       (void) ThrowMagickException(exception,GetMagickModule(),ModuleError,
00121         "UnableToLoadModule","'%s'",tag);
00122     else
00123       {
00124         size_t
00125           signature;
00126 
00127         if ((*image)->debug != MagickFalse)
00128           (void) LogMagickEvent(CoderEvent,GetMagickModule(),
00129             "Invoking \"%s\" static image filter",tag);
00130         signature=image_filter(image,argc,argv,exception);
00131         if ((*image)->debug != MagickFalse)
00132           (void) LogMagickEvent(CoderEvent,GetMagickModule(),"\"%s\" completes",
00133             tag);
00134         if (signature != MagickImageFilterSignature)
00135           {
00136             (void) ThrowMagickException(exception,GetMagickModule(),ModuleError,
00137               "ImageFilterSignatureMismatch","'%s': %8lx != %8lx",tag,
00138               (unsigned long) signature,(unsigned long)
00139               MagickImageFilterSignature);
00140             return(MagickFalse);
00141           }
00142       }
00143   }
00144 #endif
00145   return(MagickTrue);
00146 }
00147 #endif
00148 
00149 /*
00150 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
00151 %                                                                             %
00152 %                                                                             %
00153 %                                                                             %
00154 %   R e g i s t e r S t a t i c M o d u l e s                                 %
00155 %                                                                             %
00156 %                                                                             %
00157 %                                                                             %
00158 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
00159 %
00160 %  (void) RegisterStaticModules() statically registers all the available module
00161 %  handlers.
00162 %
00163 %  The format of the RegisterStaticModules method is:
00164 %
00165 %      (void) RegisterStaticModules(void)
00166 %
00167 */
00168 MagickExport void RegisterStaticModules(void)
00169 {
00170 #if !defined(MAGICKCORE_BUILD_MODULES)
00171   (void) RegisterAAIImage();
00172   (void) RegisterARTImage();
00173   (void) RegisterAVSImage();
00174   (void) RegisterBMPImage();
00175   (void) RegisterCALSImage();
00176   (void) RegisterCAPTIONImage();
00177   (void) RegisterCINImage();
00178   (void) RegisterCIPImage();
00179   (void) RegisterCLIPImage();
00180 #if defined(MAGICKCORE_WINGDI32_DELEGATE)
00181   (void) RegisterCLIPBOARDImage();
00182 #endif
00183   (void) RegisterCMYKImage();
00184   (void) RegisterCUTImage();
00185   (void) RegisterDCMImage();
00186   (void) RegisterDDSImage();
00187   (void) RegisterDEBUGImage();
00188   (void) RegisterDIBImage();
00189 #if defined(MAGICKCORE_DJVU_DELEGATE)
00190   (void) RegisterDJVUImage();
00191 #endif
00192   (void) RegisterDNGImage();
00193 #if defined(MAGICKCORE_DPS_DELEGATE)
00194   (void) RegisterDPSImage();
00195 #endif
00196   (void) RegisterDPXImage();
00197 #if defined(MAGICKCORE_WINGDI32_DELEGATE)
00198   (void) RegisterEMFImage();
00199 #endif
00200 #if defined(MAGICKCORE_TIFF_DELEGATE)
00201   (void) RegisterEPTImage();
00202 #endif
00203 #if defined(MAGICKCORE_OPENEXR_DELEGATE)
00204   (void) RegisterEXRImage();
00205 #endif
00206   (void) RegisterFAXImage();
00207   (void) RegisterFDImage();
00208   (void) RegisterFITSImage();
00209 #if defined(MAGICKCORE_FPX_DELEGATE)
00210   (void) RegisterFPXImage();
00211 #endif
00212   (void) RegisterGIFImage();
00213   (void) RegisterGRAYImage();
00214   (void) RegisterGRADIENTImage();
00215   (void) RegisterHALDImage();
00216   (void) RegisterHDRImage();
00217   (void) RegisterHISTOGRAMImage();
00218   (void) RegisterHRZImage();
00219   (void) RegisterHTMLImage();
00220   (void) RegisterICONImage();
00221   (void) RegisterINFOImage();
00222   (void) RegisterINLINEImage();
00223   (void) RegisterIPLImage();
00224 #if defined(MAGICKCORE_JBIG_DELEGATE)
00225   (void) RegisterJBIGImage();
00226 #endif
00227 #if defined(MAGICKCORE_JPEG_DELEGATE)
00228   (void) RegisterJPEGImage();
00229 #endif
00230 #if defined(MAGICKCORE_JP2_DELEGATE)
00231   (void) RegisterJP2Image();
00232 #endif
00233   (void) RegisterLABELImage();
00234   (void) RegisterMACImage();
00235   (void) RegisterMAGICKImage();
00236   (void) RegisterMAPImage();
00237   (void) RegisterMATImage();
00238   (void) RegisterMATTEImage();
00239   (void) RegisterMETAImage();
00240   (void) RegisterMIFFImage();
00241   (void) RegisterMONOImage();
00242   (void) RegisterMPCImage();
00243   (void) RegisterMPEGImage();
00244   (void) RegisterMPRImage();
00245   (void) RegisterMSLImage();
00246   (void) RegisterMTVImage();
00247   (void) RegisterMVGImage();
00248   (void) RegisterNULLImage();
00249   (void) RegisterOTBImage();
00250   (void) RegisterPALMImage();
00251   (void) RegisterPANGOImage();
00252   (void) RegisterPATTERNImage();
00253   (void) RegisterPCDImage();
00254   (void) RegisterPCLImage();
00255   (void) RegisterPCXImage();
00256   (void) RegisterPDBImage();
00257   (void) RegisterPDFImage();
00258   (void) RegisterPESImage();
00259   (void) RegisterPICTImage();
00260   (void) RegisterPIXImage();
00261   (void) RegisterPLASMAImage();
00262 #if defined(MAGICKCORE_PNG_DELEGATE)
00263   (void) RegisterPNGImage();
00264 #endif
00265   (void) RegisterPNMImage();
00266   (void) RegisterPREVIEWImage();
00267   (void) RegisterPSImage();
00268   (void) RegisterPS2Image();
00269   (void) RegisterPS3Image();
00270   (void) RegisterPSDImage();
00271   (void) RegisterPWPImage();
00272   (void) RegisterRAWImage();
00273   (void) RegisterRGBImage();
00274   (void) RegisterRLAImage();
00275   (void) RegisterRLEImage();
00276   (void) RegisterSCRImage();
00277   (void) RegisterSCTImage();
00278   (void) RegisterSFWImage();
00279   (void) RegisterSGIImage();
00280   (void) RegisterSTEGANOImage();
00281   (void) RegisterSUNImage();
00282   (void) RegisterSVGImage();
00283   (void) RegisterTGAImage();
00284   (void) RegisterTHUMBNAILImage();
00285 #if defined(MAGICKCORE_TIFF_DELEGATE)
00286   (void) RegisterTIFFImage();
00287 #endif
00288   (void) RegisterTILEImage();
00289   (void) RegisterTIMImage();
00290   (void) RegisterTTFImage();
00291   (void) RegisterTXTImage();
00292   (void) RegisterUILImage();
00293   (void) RegisterURLImage();
00294   (void) RegisterUYVYImage();
00295   (void) RegisterVICARImage();
00296   (void) RegisterVIDImage();
00297   (void) RegisterVIFFImage();
00298   (void) RegisterWBMPImage();
00299 #if defined(MAGICKCORE_WEBP_DELEGATE)
00300   (void) RegisterWEBPImage();
00301 #endif
00302 #if defined(MAGICKCORE_WMF_DELEGATE) || defined(MAGICKCORE_WMFLITE_DELEGATE)
00303   (void) RegisterWMFImage();
00304 #endif
00305   (void) RegisterWPGImage();
00306 #if defined(MAGICKCORE_X11_DELEGATE)
00307   (void) RegisterXImage();
00308 #endif
00309   (void) RegisterXBMImage();
00310   (void) RegisterXCImage();
00311   (void) RegisterXCFImage();
00312   (void) RegisterXPMImage();
00313   (void) RegisterXPSImage();
00314 #if defined(_VISUALC_)
00315   (void) RegisterXTRNImage();
00316 #endif
00317 #if defined(MAGICKCORE_X11_DELEGATE)
00318   (void) RegisterXWDImage();
00319 #endif
00320   (void) RegisterYCBCRImage();
00321   (void) RegisterYUVImage();
00322 #endif
00323 }
00324 
00325 /*
00326 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
00327 %                                                                             %
00328 %                                                                             %
00329 %                                                                             %
00330 %   U n r e g i s t e r S t a t i c M o d u l e s                             %
00331 %                                                                             %
00332 %                                                                             %
00333 %                                                                             %
00334 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
00335 %
00336 %  UnregisterStaticModules() statically unregisters all the available module
00337 %  handlers.
00338 %
00339 %  The format of the UnregisterStaticModules method is:
00340 %
00341 %      UnregisterStaticModules(void)
00342 %
00343 */
00344 MagickExport void UnregisterStaticModules(void)
00345 {
00346 #if !defined(MAGICKCORE_BUILD_MODULES)
00347   UnregisterAAIImage();
00348   UnregisterARTImage();
00349   UnregisterAVSImage();
00350   UnregisterBMPImage();
00351   UnregisterBRAILLEImage();
00352   UnregisterCALSImage();
00353   UnregisterCAPTIONImage();
00354   UnregisterCINImage();
00355   UnregisterCIPImage();
00356   UnregisterCLIPImage();
00357 #if defined(MAGICKCORE_WINGDI32_DELEGATE)
00358   UnregisterCLIPBOARDImage();
00359 #endif
00360   UnregisterCMYKImage();
00361   UnregisterCUTImage();
00362   UnregisterDCMImage();
00363   UnregisterDDSImage();
00364   UnregisterDEBUGImage();
00365   UnregisterDIBImage();
00366 #if defined(MAGICKCORE_DJVU_DELEGATE)
00367   UnregisterDJVUImage();
00368 #endif
00369   UnregisterDNGImage();
00370 #if defined(MAGICKCORE_DPS_DELEGATE)
00371   UnregisterDPSImage();
00372 #endif
00373   UnregisterDPXImage();
00374 #if defined(MAGICKCORE_WINGDI32_DELEGATE)
00375   UnregisterEMFImage();
00376 #endif
00377 #if defined(MAGICKCORE_TIFF_DELEGATE)
00378   UnregisterEPTImage();
00379 #endif
00380 #if defined(MAGICKCORE_OPENEXR_DELEGATE)
00381   UnregisterEXRImage();
00382 #endif
00383   UnregisterFAXImage();
00384   UnregisterFDImage();
00385   UnregisterFITSImage();
00386 #if defined(MAGICKCORE_FPX_DELEGATE)
00387   UnregisterFPXImage();
00388 #endif
00389   UnregisterGIFImage();
00390   UnregisterGRAYImage();
00391   UnregisterGRADIENTImage();
00392   UnregisterHALDImage();
00393   UnregisterHDRImage();
00394   UnregisterHISTOGRAMImage();
00395   UnregisterHRZImage();
00396   UnregisterHTMLImage();
00397   UnregisterICONImage();
00398   UnregisterINFOImage();
00399   UnregisterINLINEImage();
00400   UnregisterIPLImage();
00401 #if defined(MAGICKCORE_JBIG_DELEGATE)
00402   UnregisterJBIGImage();
00403 #endif
00404 #if defined(MAGICKCORE_JPEG_DELEGATE)
00405   UnregisterJPEGImage();
00406 #endif
00407 #if defined(MAGICKCORE_JP2_DELEGATE)
00408   UnregisterJP2Image();
00409 #endif
00410   UnregisterLABELImage();
00411   UnregisterMACImage();
00412   UnregisterMAGICKImage();
00413   UnregisterMAPImage();
00414   UnregisterMATImage();
00415   UnregisterMATTEImage();
00416   UnregisterMETAImage();
00417   UnregisterMIFFImage();
00418   UnregisterMONOImage();
00419   UnregisterMPCImage();
00420   UnregisterMPEGImage();
00421   UnregisterMPRImage();
00422   UnregisterMSLImage();
00423   UnregisterMTVImage();
00424   UnregisterMVGImage();
00425   UnregisterNULLImage();
00426   UnregisterOTBImage();
00427   UnregisterPALMImage();
00428   UnregisterPANGOImage();
00429   UnregisterPATTERNImage();
00430   UnregisterPCDImage();
00431   UnregisterPCLImage();
00432   UnregisterPCXImage();
00433   UnregisterPDBImage();
00434   UnregisterPDFImage();
00435   UnregisterPESImage();
00436   UnregisterPICTImage();
00437   UnregisterPIXImage();
00438   UnregisterPLASMAImage();
00439 #if defined(MAGICKCORE_PNG_DELEGATE)
00440   UnregisterPNGImage();
00441 #endif
00442   UnregisterPNMImage();
00443   UnregisterPREVIEWImage();
00444   UnregisterPSImage();
00445   UnregisterPS2Image();
00446   UnregisterPS3Image();
00447   UnregisterPSDImage();
00448   UnregisterPWPImage();
00449   UnregisterRAWImage();
00450   UnregisterRGBImage();
00451   UnregisterRLAImage();
00452   UnregisterRLEImage();
00453   UnregisterSCRImage();
00454   UnregisterSCTImage();
00455   UnregisterSFWImage();
00456   UnregisterSGIImage();
00457   UnregisterSTEGANOImage();
00458   UnregisterSUNImage();
00459   UnregisterSVGImage();
00460   UnregisterTGAImage();
00461   UnregisterTHUMBNAILImage();
00462 #if defined(MAGICKCORE_TIFF_DELEGATE)
00463   UnregisterTIFFImage();
00464 #endif
00465   UnregisterTILEImage();
00466   UnregisterTIMImage();
00467   UnregisterTTFImage();
00468   UnregisterTXTImage();
00469   UnregisterUILImage();
00470   UnregisterURLImage();
00471   UnregisterUYVYImage();
00472   UnregisterVICARImage();
00473   UnregisterVIDImage();
00474   UnregisterVIFFImage();
00475   UnregisterWBMPImage();
00476 #if defined(MAGICKCORE_WEBP_DELEGATE)
00477   UnregisterWEBPImage();
00478 #endif
00479 #if defined(MAGICKCORE_WMF_DELEGATE) || defined(MAGICKCORE_WMFLITE_DELEGATE)
00480   UnregisterWMFImage();
00481 #endif
00482   UnregisterWPGImage();
00483 #if defined(MAGICKCORE_X11_DELEGATE)
00484   UnregisterXImage();
00485 #endif
00486   UnregisterXBMImage();
00487   UnregisterXCImage();
00488   UnregisterXCFImage();
00489   UnregisterXPMImage();
00490   UnregisterXPSImage();
00491 #if defined(_VISUALC_)
00492   UnregisterXTRNImage();
00493 #endif
00494 #if defined(MAGICKCORE_X11_DELEGATE)
00495   UnregisterXWDImage();
00496 #endif
00497   UnregisterYCBCRImage();
00498   UnregisterYUVImage();
00499 #endif
00500 }