]> granicus.if.org Git - imagemagick/blob - magick/static.c
(no commit message)
[imagemagick] / magick / static.c
1 /*
2 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3 %                                                                             %
4 %                                                                             %
5 %                                                                             %
6 %                  SSSSS  TTTTT   AAA   TTTTT  IIIII   CCCC                   %
7 %                  SS       T    A   A    T      I    C                       %
8 %                   SSS     T    AAAAA    T      I    C                       %
9 %                     SS    T    A   A    T      I    C                       %
10 %                  SSSSS    T    A   A    T    IIIII   CCCC                   %
11 %                                                                             %
12 %                                                                             %
13 %                          MagickCore Static Methods                          %
14 %                                                                             %
15 %                              Software Design                                %
16 %                                John Cristy                                  %
17 %                                 March 2000                                  %
18 %                                                                             %
19 %                                                                             %
20 %  Copyright 1999-2011 ImageMagick Studio LLC, a non-profit organization      %
21 %  dedicated to making software imaging solutions freely available.           %
22 %                                                                             %
23 %  You may not use this file except in compliance with the License.  You may  %
24 %  obtain a copy of the License at                                            %
25 %                                                                             %
26 %    http://www.imagemagick.org/script/license.php                            %
27 %                                                                             %
28 %  Unless required by applicable law or agreed to in writing, software        %
29 %  distributed under the License is distributed on an "AS IS" BASIS,          %
30 %  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.   %
31 %  See the License for the specific language governing permissions and        %
32 %  limitations under the License.                                             %
33 %                                                                             %
34 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
35 %
36 %
37 %
38 */
39 \f
40 /*
41   Include declarations.
42 */
43 #include "magick/studio.h"
44 #include "magick/exception-private.h"
45 #include "magick/image.h"
46 #include "magick/module.h"
47 #include "magick/policy.h"
48 #include "magick/static.h"
49 #include "magick/string_.h"
50 \f
51 /*
52 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
53 %                                                                             %
54 %                                                                             %
55 %                                                                             %
56 %   I n v o k e S t a t i c I m a g e F i l t e r                             %
57 %                                                                             %
58 %                                                                             %
59 %                                                                             %
60 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
61 %
62 %  InvokeStaticImageFilter() invokes a static image filter.
63 %
64 %  The format of the InvokeStaticImageFilter method is:
65 %
66 %      MagickBooleanType InvokeStaticImageFilter(const char *tag,Image **image,
67 %        const int argc,const char **argv)
68 %
69 %  A description of each parameter follows:
70 %
71 %    o tag: the module tag.
72 %
73 %    o image: the image.
74 %
75 %    o argc: the number of elements in the argument vector.
76 %
77 %    o argv: A text array containing the command line arguments.
78 %
79 %    o argv: A text array containing the command line arguments.
80 %
81 %    o exception: return any errors or warnings in this structure.
82 %
83 */
84 #if defined(MAGICKCORE_MODULES_SUPPORT)
85 MagickExport MagickBooleanType InvokeStaticImageFilter(const char *tag,
86   Image **image,const int argc,const char **argv,ExceptionInfo *exception)
87 {
88   PolicyRights
89     rights;
90
91   assert(image != (Image **) NULL);
92   assert((*image)->signature == MagickSignature);
93   if ((*image)->debug != MagickFalse)
94     (void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",(*image)->filename);
95   rights=ReadPolicyRights;
96   if (IsRightsAuthorized(FilterPolicyDomain,rights,tag) == MagickFalse)
97     {
98       errno=EPERM;
99       (void) ThrowMagickException(exception,GetMagickModule(),PolicyError,
100         "NotAuthorized","`%s'",tag);
101       return(MagickFalse);
102     }
103 #if defined(MAGICKCORE_BUILD_MODULES)
104   (void) tag;
105   (void) argc;
106   (void) argv;
107   (void) exception;
108 #else
109   {
110     extern size_t
111       analyzeImage(Image **,const int,char **,ExceptionInfo *);
112
113     ImageFilterHandler
114       *image_filter;
115
116     image_filter=(ImageFilterHandler *) NULL;
117     if (LocaleCompare("analyze",tag) == 0)
118       image_filter=(ImageFilterHandler *) analyzeImage;
119     if (image_filter == (ImageFilterHandler *) NULL)
120       (void) ThrowMagickException(exception,GetMagickModule(),ModuleError,
121         "UnableToLoadModule","`%s'",tag);
122     else
123       {
124         size_t
125           signature;
126
127         if ((*image)->debug != MagickFalse)
128           (void) LogMagickEvent(CoderEvent,GetMagickModule(),
129             "Invoking \"%s\" static image filter",tag);
130         signature=image_filter(image,argc,argv,exception);
131         if ((*image)->debug != MagickFalse)
132           (void) LogMagickEvent(CoderEvent,GetMagickModule(),"\"%s\" completes",
133             tag);
134         if (signature != MagickImageFilterSignature)
135           {
136             (void) ThrowMagickException(exception,GetMagickModule(),ModuleError,
137               "ImageFilterSignatureMismatch","`%s': %8lx != %8lx",tag,
138               (unsigned long) signature,(unsigned long)
139               MagickImageFilterSignature);
140             return(MagickFalse);
141           }
142       }
143   }
144 #endif
145   return(MagickTrue);
146 }
147 #endif
148 \f
149 /*
150 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
151 %                                                                             %
152 %                                                                             %
153 %                                                                             %
154 %   R e g i s t e r S t a t i c M o d u l e s                                 %
155 %                                                                             %
156 %                                                                             %
157 %                                                                             %
158 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
159 %
160 %  (void) RegisterStaticModules() statically registers all the available module
161 %  handlers.
162 %
163 %  The format of the RegisterStaticModules method is:
164 %
165 %      (void) RegisterStaticModules(void)
166 %
167 */
168 MagickExport void RegisterStaticModules(void)
169 {
170 #if !defined(MAGICKCORE_BUILD_MODULES)
171   (void) RegisterARTImage();
172   (void) RegisterAVSImage();
173   (void) RegisterBMPImage();
174   (void) RegisterCALSImage();
175   (void) RegisterCAPTIONImage();
176   (void) RegisterCINImage();
177   (void) RegisterCIPImage();
178   (void) RegisterCLIPImage();
179 #if defined(MAGICKCORE_WINGDI32_DELEGATE)
180   (void) RegisterCLIPBOARDImage();
181 #endif
182   (void) RegisterCMYKImage();
183   (void) RegisterCUTImage();
184   (void) RegisterDCMImage();
185   (void) RegisterDDSImage();
186   (void) RegisterDEBUGImage();
187   (void) RegisterDIBImage();
188 #if defined(MAGICKCORE_DJVU_DELEGATE)
189   (void) RegisterDJVUImage();
190 #endif
191   (void) RegisterDNGImage();
192 #if defined(MAGICKCORE_DPS_DELEGATE)
193   (void) RegisterDPSImage();
194 #endif
195   (void) RegisterDPXImage();
196 #if defined(MAGICKCORE_WINGDI32_DELEGATE)
197   (void) RegisterEMFImage();
198 #endif
199 #if defined(MAGICKCORE_TIFF_DELEGATE)
200   (void) RegisterEPTImage();
201 #endif
202 #if defined(MAGICKCORE_OPENEXR_DELEGATE)
203   (void) RegisterEXRImage();
204 #endif
205   (void) RegisterFAXImage();
206   (void) RegisterFITSImage();
207 #if defined(MAGICKCORE_FPX_DELEGATE)
208   (void) RegisterFPXImage();
209 #endif
210   (void) RegisterGIFImage();
211   (void) RegisterGRAYImage();
212   (void) RegisterGRADIENTImage();
213   (void) RegisterHISTOGRAMImage();
214   (void) RegisterHRZImage();
215   (void) RegisterHTMLImage();
216   (void) RegisterICONImage();
217   (void) RegisterINFOImage();
218   (void) RegisterINLINEImage();
219   (void) RegisterIPLImage();
220 #if defined(MAGICKCORE_JBIG_DELEGATE)
221   (void) RegisterJBIGImage();
222 #endif
223 #if defined(MAGICKCORE_JPEG_DELEGATE)
224   (void) RegisterJPEGImage();
225 #endif
226 #if defined(MAGICKCORE_JP2_DELEGATE)
227   (void) RegisterJP2Image();
228 #endif
229   (void) RegisterLABELImage();
230   (void) RegisterMAGICKImage();
231   (void) RegisterMAPImage();
232   (void) RegisterMATImage();
233   (void) RegisterMATTEImage();
234   (void) RegisterMETAImage();
235   (void) RegisterMIFFImage();
236   (void) RegisterMONOImage();
237   (void) RegisterMPCImage();
238   (void) RegisterMPEGImage();
239   (void) RegisterMPRImage();
240   (void) RegisterMSLImage();
241   (void) RegisterMTVImage();
242   (void) RegisterMVGImage();
243   (void) RegisterNULLImage();
244   (void) RegisterOTBImage();
245   (void) RegisterPALMImage();
246   (void) RegisterPATTERNImage();
247   (void) RegisterPCDImage();
248   (void) RegisterPCLImage();
249   (void) RegisterPCXImage();
250   (void) RegisterPDBImage();
251   (void) RegisterPDFImage();
252   (void) RegisterPESImage();
253   (void) RegisterPICTImage();
254   (void) RegisterPIXImage();
255   (void) RegisterPLASMAImage();
256 #if defined(MAGICKCORE_PNG_DELEGATE)
257   (void) RegisterPNGImage();
258 #endif
259   (void) RegisterPNMImage();
260   (void) RegisterPREVIEWImage();
261   (void) RegisterPSImage();
262   (void) RegisterPS2Image();
263   (void) RegisterPS3Image();
264   (void) RegisterPSDImage();
265   (void) RegisterPWPImage();
266   (void) RegisterRAWImage();
267   (void) RegisterRGBImage();
268   (void) RegisterRLAImage();
269   (void) RegisterRLEImage();
270   (void) RegisterSCRImage();
271   (void) RegisterSCTImage();
272   (void) RegisterSFWImage();
273   (void) RegisterSGIImage();
274   (void) RegisterSTEGANOImage();
275   (void) RegisterSUNImage();
276   (void) RegisterSVGImage();
277   (void) RegisterTGAImage();
278   (void) RegisterTHUMBNAILImage();
279 #if defined(MAGICKCORE_TIFF_DELEGATE)
280   (void) RegisterTIFFImage();
281 #endif
282   (void) RegisterTILEImage();
283   (void) RegisterTIMImage();
284   (void) RegisterTTFImage();
285   (void) RegisterTXTImage();
286   (void) RegisterUILImage();
287   (void) RegisterURLImage();
288   (void) RegisterUYVYImage();
289   (void) RegisterVICARImage();
290   (void) RegisterVIDImage();
291   (void) RegisterVIFFImage();
292   (void) RegisterWBMPImage();
293 #if defined(MAGICKCORE_WMF_DELEGATE) || defined(MAGICKCORE_WMFLITE_DELEGATE)
294   (void) RegisterWMFImage();
295 #endif
296   (void) RegisterWPGImage();
297 #if defined(MAGICKCORE_X11_DELEGATE)
298   (void) RegisterXImage();
299 #endif
300   (void) RegisterXBMImage();
301   (void) RegisterXCImage();
302   (void) RegisterXCFImage();
303   (void) RegisterXPMImage();
304   (void) RegisterXPSImage();
305 #if defined(_VISUALC_)
306   (void) RegisterXTRNImage();
307 #endif
308 #if defined(MAGICKCORE_X11_DELEGATE)
309   (void) RegisterXWDImage();
310 #endif
311   (void) RegisterYCBCRImage();
312   (void) RegisterYUVImage();
313 #endif
314 }
315 \f
316 /*
317 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
318 %                                                                             %
319 %                                                                             %
320 %                                                                             %
321 %   U n r e g i s t e r S t a t i c M o d u l e s                             %
322 %                                                                             %
323 %                                                                             %
324 %                                                                             %
325 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
326 %
327 %  UnregisterStaticModules() statically unregisters all the available module
328 %  handlers.
329 %
330 %  The format of the UnregisterStaticModules method is:
331 %
332 %      UnregisterStaticModules(void)
333 %
334 */
335 MagickExport void UnregisterStaticModules(void)
336 {
337 #if !defined(MAGICKCORE_BUILD_MODULES)
338   UnregisterARTImage();
339   UnregisterAVSImage();
340   UnregisterBMPImage();
341   UnregisterBRAILLEImage();
342   UnregisterCALSImage();
343   UnregisterCAPTIONImage();
344   UnregisterCINImage();
345   UnregisterCIPImage();
346   UnregisterCLIPImage();
347 #if defined(MAGICKCORE_WINGDI32_DELEGATE)
348   UnregisterCLIPBOARDImage();
349 #endif
350   UnregisterCMYKImage();
351   UnregisterCUTImage();
352   UnregisterDCMImage();
353   UnregisterDDSImage();
354   UnregisterDEBUGImage();
355   UnregisterDIBImage();
356 #if defined(MAGICKCORE_DJVU_DELEGATE)
357   UnregisterDJVUImage();
358 #endif
359   UnregisterDNGImage();
360 #if defined(MAGICKCORE_DPS_DELEGATE)
361   UnregisterDPSImage();
362 #endif
363   UnregisterDPXImage();
364 #if defined(MAGICKCORE_WINGDI32_DELEGATE)
365   UnregisterEMFImage();
366 #endif
367 #if defined(MAGICKCORE_TIFF_DELEGATE)
368   UnregisterEPTImage();
369 #endif
370 #if defined(MAGICKCORE_OPENEXR_DELEGATE)
371   UnregisterEXRImage();
372 #endif
373   UnregisterFAXImage();
374   UnregisterFITSImage();
375 #if defined(MAGICKCORE_FPX_DELEGATE)
376   UnregisterFPXImage();
377 #endif
378   UnregisterGIFImage();
379   UnregisterGRAYImage();
380   UnregisterGRADIENTImage();
381   UnregisterHISTOGRAMImage();
382   UnregisterHRZImage();
383   UnregisterHTMLImage();
384   UnregisterICONImage();
385   UnregisterINFOImage();
386   UnregisterINLINEImage();
387   UnregisterIPLImage();
388 #if defined(MAGICKCORE_JBIG_DELEGATE)
389   UnregisterJBIGImage();
390 #endif
391 #if defined(MAGICKCORE_JPEG_DELEGATE)
392   UnregisterJPEGImage();
393 #endif
394 #if defined(MAGICKCORE_JP2_DELEGATE)
395   UnregisterJP2Image();
396 #endif
397   UnregisterLABELImage();
398   UnregisterMAGICKImage();
399   UnregisterMAPImage();
400   UnregisterMATImage();
401   UnregisterMATTEImage();
402   UnregisterMETAImage();
403   UnregisterMIFFImage();
404   UnregisterMONOImage();
405   UnregisterMPCImage();
406   UnregisterMPEGImage();
407   UnregisterMPRImage();
408   UnregisterMSLImage();
409   UnregisterMTVImage();
410   UnregisterMVGImage();
411   UnregisterNULLImage();
412   UnregisterOTBImage();
413   UnregisterPALMImage();
414   UnregisterPATTERNImage();
415   UnregisterPCDImage();
416   UnregisterPCLImage();
417   UnregisterPCXImage();
418   UnregisterPDBImage();
419   UnregisterPDFImage();
420   UnregisterPESImage();
421   UnregisterPICTImage();
422   UnregisterPIXImage();
423   UnregisterPLASMAImage();
424 #if defined(MAGICKCORE_PNG_DELEGATE)
425   UnregisterPNGImage();
426 #endif
427   UnregisterPNMImage();
428   UnregisterPREVIEWImage();
429   UnregisterPSImage();
430   UnregisterPS2Image();
431   UnregisterPS3Image();
432   UnregisterPSDImage();
433   UnregisterPWPImage();
434   UnregisterRAWImage();
435   UnregisterRGBImage();
436   UnregisterRLAImage();
437   UnregisterRLEImage();
438   UnregisterSCRImage();
439   UnregisterSCTImage();
440   UnregisterSFWImage();
441   UnregisterSGIImage();
442   UnregisterSTEGANOImage();
443   UnregisterSUNImage();
444   UnregisterSVGImage();
445   UnregisterTGAImage();
446   UnregisterTHUMBNAILImage();
447 #if defined(MAGICKCORE_TIFF_DELEGATE)
448   UnregisterTIFFImage();
449 #endif
450   UnregisterTILEImage();
451   UnregisterTIMImage();
452   UnregisterTTFImage();
453   UnregisterTXTImage();
454   UnregisterUILImage();
455   UnregisterURLImage();
456   UnregisterUYVYImage();
457   UnregisterVICARImage();
458   UnregisterVIDImage();
459   UnregisterVIFFImage();
460   UnregisterWBMPImage();
461 #if defined(MAGICKCORE_WMF_DELEGATE) || defined(MAGICKCORE_WMFLITE_DELEGATE)
462   UnregisterWMFImage();
463 #endif
464   UnregisterWPGImage();
465 #if defined(MAGICKCORE_X11_DELEGATE)
466   UnregisterXImage();
467 #endif
468   UnregisterXBMImage();
469   UnregisterXCImage();
470   UnregisterXCFImage();
471   UnregisterXPMImage();
472   UnregisterXPSImage();
473 #if defined(_VISUALC_)
474   UnregisterXTRNImage();
475 #endif
476 #if defined(MAGICKCORE_X11_DELEGATE)
477   UnregisterXWDImage();
478 #endif
479   UnregisterYCBCRImage();
480   UnregisterYUVImage();
481 #endif
482 }