MagickCore  6.7.5
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) RegisterFITSImage();
00208 #if defined(MAGICKCORE_FPX_DELEGATE)
00209   (void) RegisterFPXImage();
00210 #endif
00211   (void) RegisterGIFImage();
00212   (void) RegisterGRAYImage();
00213   (void) RegisterGRADIENTImage();
00214   (void) RegisterHALDImage();
00215   (void) RegisterHDRImage();
00216   (void) RegisterHISTOGRAMImage();
00217   (void) RegisterHRZImage();
00218   (void) RegisterHTMLImage();
00219   (void) RegisterICONImage();
00220   (void) RegisterINFOImage();
00221   (void) RegisterINLINEImage();
00222   (void) RegisterIPLImage();
00223 #if defined(MAGICKCORE_JBIG_DELEGATE)
00224   (void) RegisterJBIGImage();
00225 #endif
00226 #if defined(MAGICKCORE_JPEG_DELEGATE)
00227   (void) RegisterJPEGImage();
00228 #endif
00229 #if defined(MAGICKCORE_JP2_DELEGATE)
00230   (void) RegisterJP2Image();
00231 #endif
00232   (void) RegisterLABELImage();
00233   (void) RegisterMACImage();
00234   (void) RegisterMAGICKImage();
00235   (void) RegisterMAPImage();
00236   (void) RegisterMATImage();
00237   (void) RegisterMATTEImage();
00238   (void) RegisterMETAImage();
00239   (void) RegisterMIFFImage();
00240   (void) RegisterMONOImage();
00241   (void) RegisterMPCImage();
00242   (void) RegisterMPEGImage();
00243   (void) RegisterMPRImage();
00244   (void) RegisterMSLImage();
00245   (void) RegisterMTVImage();
00246   (void) RegisterMVGImage();
00247   (void) RegisterNULLImage();
00248   (void) RegisterOTBImage();
00249   (void) RegisterPALMImage();
00250   (void) RegisterPATTERNImage();
00251   (void) RegisterPCDImage();
00252   (void) RegisterPCLImage();
00253   (void) RegisterPCXImage();
00254   (void) RegisterPDBImage();
00255   (void) RegisterPDFImage();
00256   (void) RegisterPESImage();
00257   (void) RegisterPICTImage();
00258   (void) RegisterPIXImage();
00259   (void) RegisterPLASMAImage();
00260 #if defined(MAGICKCORE_PNG_DELEGATE)
00261   (void) RegisterPNGImage();
00262 #endif
00263   (void) RegisterPNMImage();
00264   (void) RegisterPREVIEWImage();
00265   (void) RegisterPSImage();
00266   (void) RegisterPS2Image();
00267   (void) RegisterPS3Image();
00268   (void) RegisterPSDImage();
00269   (void) RegisterPWPImage();
00270   (void) RegisterRAWImage();
00271   (void) RegisterRGBImage();
00272   (void) RegisterRLAImage();
00273   (void) RegisterRLEImage();
00274   (void) RegisterSCRImage();
00275   (void) RegisterSCTImage();
00276   (void) RegisterSFWImage();
00277   (void) RegisterSGIImage();
00278   (void) RegisterSTEGANOImage();
00279   (void) RegisterSUNImage();
00280   (void) RegisterSVGImage();
00281   (void) RegisterTGAImage();
00282   (void) RegisterTHUMBNAILImage();
00283 #if defined(MAGICKCORE_TIFF_DELEGATE)
00284   (void) RegisterTIFFImage();
00285 #endif
00286   (void) RegisterTILEImage();
00287   (void) RegisterTIMImage();
00288   (void) RegisterTTFImage();
00289   (void) RegisterTXTImage();
00290   (void) RegisterUILImage();
00291   (void) RegisterURLImage();
00292   (void) RegisterUYVYImage();
00293   (void) RegisterVICARImage();
00294   (void) RegisterVIDImage();
00295   (void) RegisterVIFFImage();
00296   (void) RegisterWBMPImage();
00297 #if defined(MAGICKCORE_WEBP_DELEGATE)
00298   (void) RegisterWEBPImage();
00299 #endif
00300 #if defined(MAGICKCORE_WMF_DELEGATE) || defined(MAGICKCORE_WMFLITE_DELEGATE)
00301   (void) RegisterWMFImage();
00302 #endif
00303   (void) RegisterWPGImage();
00304 #if defined(MAGICKCORE_X11_DELEGATE)
00305   (void) RegisterXImage();
00306 #endif
00307   (void) RegisterXBMImage();
00308   (void) RegisterXCImage();
00309   (void) RegisterXCFImage();
00310   (void) RegisterXPMImage();
00311   (void) RegisterXPSImage();
00312 #if defined(_VISUALC_)
00313   (void) RegisterXTRNImage();
00314 #endif
00315 #if defined(MAGICKCORE_X11_DELEGATE)
00316   (void) RegisterXWDImage();
00317 #endif
00318   (void) RegisterYCBCRImage();
00319   (void) RegisterYUVImage();
00320 #endif
00321 }
00322 
00323 /*
00324 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
00325 %                                                                             %
00326 %                                                                             %
00327 %                                                                             %
00328 %   U n r e g i s t e r S t a t i c M o d u l e s                             %
00329 %                                                                             %
00330 %                                                                             %
00331 %                                                                             %
00332 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
00333 %
00334 %  UnregisterStaticModules() statically unregisters all the available module
00335 %  handlers.
00336 %
00337 %  The format of the UnregisterStaticModules method is:
00338 %
00339 %      UnregisterStaticModules(void)
00340 %
00341 */
00342 MagickExport void UnregisterStaticModules(void)
00343 {
00344 #if !defined(MAGICKCORE_BUILD_MODULES)
00345   UnregisterAAIImage();
00346   UnregisterARTImage();
00347   UnregisterAVSImage();
00348   UnregisterBMPImage();
00349   UnregisterBRAILLEImage();
00350   UnregisterCALSImage();
00351   UnregisterCAPTIONImage();
00352   UnregisterCINImage();
00353   UnregisterCIPImage();
00354   UnregisterCLIPImage();
00355 #if defined(MAGICKCORE_WINGDI32_DELEGATE)
00356   UnregisterCLIPBOARDImage();
00357 #endif
00358   UnregisterCMYKImage();
00359   UnregisterCUTImage();
00360   UnregisterDCMImage();
00361   UnregisterDDSImage();
00362   UnregisterDEBUGImage();
00363   UnregisterDIBImage();
00364 #if defined(MAGICKCORE_DJVU_DELEGATE)
00365   UnregisterDJVUImage();
00366 #endif
00367   UnregisterDNGImage();
00368 #if defined(MAGICKCORE_DPS_DELEGATE)
00369   UnregisterDPSImage();
00370 #endif
00371   UnregisterDPXImage();
00372 #if defined(MAGICKCORE_WINGDI32_DELEGATE)
00373   UnregisterEMFImage();
00374 #endif
00375 #if defined(MAGICKCORE_TIFF_DELEGATE)
00376   UnregisterEPTImage();
00377 #endif
00378 #if defined(MAGICKCORE_OPENEXR_DELEGATE)
00379   UnregisterEXRImage();
00380 #endif
00381   UnregisterFAXImage();
00382   UnregisterFITSImage();
00383 #if defined(MAGICKCORE_FPX_DELEGATE)
00384   UnregisterFPXImage();
00385 #endif
00386   UnregisterGIFImage();
00387   UnregisterGRAYImage();
00388   UnregisterGRADIENTImage();
00389   UnregisterHALDImage();
00390   UnregisterHDRImage();
00391   UnregisterHISTOGRAMImage();
00392   UnregisterHRZImage();
00393   UnregisterHTMLImage();
00394   UnregisterICONImage();
00395   UnregisterINFOImage();
00396   UnregisterINLINEImage();
00397   UnregisterIPLImage();
00398 #if defined(MAGICKCORE_JBIG_DELEGATE)
00399   UnregisterJBIGImage();
00400 #endif
00401 #if defined(MAGICKCORE_JPEG_DELEGATE)
00402   UnregisterJPEGImage();
00403 #endif
00404 #if defined(MAGICKCORE_JP2_DELEGATE)
00405   UnregisterJP2Image();
00406 #endif
00407   UnregisterLABELImage();
00408   UnregisterMACImage();
00409   UnregisterMAGICKImage();
00410   UnregisterMAPImage();
00411   UnregisterMATImage();
00412   UnregisterMATTEImage();
00413   UnregisterMETAImage();
00414   UnregisterMIFFImage();
00415   UnregisterMONOImage();
00416   UnregisterMPCImage();
00417   UnregisterMPEGImage();
00418   UnregisterMPRImage();
00419   UnregisterMSLImage();
00420   UnregisterMTVImage();
00421   UnregisterMVGImage();
00422   UnregisterNULLImage();
00423   UnregisterOTBImage();
00424   UnregisterPALMImage();
00425   UnregisterPATTERNImage();
00426   UnregisterPCDImage();
00427   UnregisterPCLImage();
00428   UnregisterPCXImage();
00429   UnregisterPDBImage();
00430   UnregisterPDFImage();
00431   UnregisterPESImage();
00432   UnregisterPICTImage();
00433   UnregisterPIXImage();
00434   UnregisterPLASMAImage();
00435 #if defined(MAGICKCORE_PNG_DELEGATE)
00436   UnregisterPNGImage();
00437 #endif
00438   UnregisterPNMImage();
00439   UnregisterPREVIEWImage();
00440   UnregisterPSImage();
00441   UnregisterPS2Image();
00442   UnregisterPS3Image();
00443   UnregisterPSDImage();
00444   UnregisterPWPImage();
00445   UnregisterRAWImage();
00446   UnregisterRGBImage();
00447   UnregisterRLAImage();
00448   UnregisterRLEImage();
00449   UnregisterSCRImage();
00450   UnregisterSCTImage();
00451   UnregisterSFWImage();
00452   UnregisterSGIImage();
00453   UnregisterSTEGANOImage();
00454   UnregisterSUNImage();
00455   UnregisterSVGImage();
00456   UnregisterTGAImage();
00457   UnregisterTHUMBNAILImage();
00458 #if defined(MAGICKCORE_TIFF_DELEGATE)
00459   UnregisterTIFFImage();
00460 #endif
00461   UnregisterTILEImage();
00462   UnregisterTIMImage();
00463   UnregisterTTFImage();
00464   UnregisterTXTImage();
00465   UnregisterUILImage();
00466   UnregisterURLImage();
00467   UnregisterUYVYImage();
00468   UnregisterVICARImage();
00469   UnregisterVIDImage();
00470   UnregisterVIFFImage();
00471   UnregisterWBMPImage();
00472 #if defined(MAGICKCORE_WEBP_DELEGATE)
00473   UnregisterWEBPImage();
00474 #endif
00475 #if defined(MAGICKCORE_WMF_DELEGATE) || defined(MAGICKCORE_WMFLITE_DELEGATE)
00476   UnregisterWMFImage();
00477 #endif
00478   UnregisterWPGImage();
00479 #if defined(MAGICKCORE_X11_DELEGATE)
00480   UnregisterXImage();
00481 #endif
00482   UnregisterXBMImage();
00483   UnregisterXCImage();
00484   UnregisterXCFImage();
00485   UnregisterXPMImage();
00486   UnregisterXPSImage();
00487 #if defined(_VISUALC_)
00488   UnregisterXTRNImage();
00489 #endif
00490 #if defined(MAGICKCORE_X11_DELEGATE)
00491   UnregisterXWDImage();
00492 #endif
00493   UnregisterYCBCRImage();
00494   UnregisterYUVImage();
00495 #endif
00496 }