]> 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-2010 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       {
121         size_t
122           signature;
123
124         if ((*image)->debug != MagickFalse)
125           (void) LogMagickEvent(CoderEvent,GetMagickModule(),
126             "Invoking \"%s\" static image filter",tag);
127         signature=image_filter(image,argc,argv,exception);
128         if ((*image)->debug != MagickFalse)
129           (void) LogMagickEvent(CoderEvent,GetMagickModule(),"\"%s\" completes",
130             tag);
131         if (signature != MagickImageFilterSignature)
132           {
133             (void) ThrowMagickException(exception,GetMagickModule(),ModuleError,
134               "ImageFilterSignatureMismatch","`%s': %8lx != %8lx",tag,
135               (unsigned long) signature,(unsigned long)
136               MagickImageFilterSignature);
137             return(MagickFalse);
138           }
139       }
140   }
141 #endif
142   return(MagickTrue);
143 }
144 #endif
145 \f
146 /*
147 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
148 %                                                                             %
149 %                                                                             %
150 %                                                                             %
151 %   R e g i s t e r S t a t i c M o d u l e s                                 %
152 %                                                                             %
153 %                                                                             %
154 %                                                                             %
155 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
156 %
157 %  (void) RegisterStaticModules() statically registers all the available module
158 %  handlers.
159 %
160 %  The format of the RegisterStaticModules method is:
161 %
162 %      (void) RegisterStaticModules(void)
163 %
164 */
165 MagickExport void RegisterStaticModules(void)
166 {
167 #if !defined(MAGICKCORE_BUILD_MODULES)
168   (void) RegisterARTImage();
169   (void) RegisterAVSImage();
170   (void) RegisterBMPImage();
171   (void) RegisterCALSImage();
172   (void) RegisterCAPTIONImage();
173   (void) RegisterCINImage();
174   (void) RegisterCIPImage();
175   (void) RegisterCLIPImage();
176 #if defined(MAGICKCORE_WINGDI32_DELEGATE)
177   (void) RegisterCLIPBOARDImage();
178 #endif
179   (void) RegisterCMYKImage();
180   (void) RegisterCUTImage();
181   (void) RegisterDCMImage();
182   (void) RegisterDDSImage();
183   (void) RegisterDIBImage();
184 #if defined(MAGICKCORE_DJVU_DELEGATE)
185   (void) RegisterDJVUImage();
186 #endif
187   (void) RegisterDNGImage();
188 #if defined(MAGICKCORE_DPS_DELEGATE)
189   (void) RegisterDPSImage();
190 #endif
191   (void) RegisterDPXImage();
192 #if defined(MAGICKCORE_WINGDI32_DELEGATE)
193   (void) RegisterEMFImage();
194 #endif
195 #if defined(MAGICKCORE_TIFF_DELEGATE)
196   (void) RegisterEPTImage();
197 #endif
198 #if defined(MAGICKCORE_OPENEXR_DELEGATE)
199   (void) RegisterEXRImage();
200 #endif
201   (void) RegisterFAXImage();
202   (void) RegisterFITSImage();
203 #if defined(MAGICKCORE_FPX_DELEGATE)
204   (void) RegisterFPXImage();
205 #endif
206   (void) RegisterGIFImage();
207   (void) RegisterGRAYImage();
208   (void) RegisterGRADIENTImage();
209   (void) RegisterHISTOGRAMImage();
210   (void) RegisterHRZImage();
211   (void) RegisterHTMLImage();
212   (void) RegisterICONImage();
213   (void) RegisterINFOImage();
214   (void) RegisterINLINEImage();
215   (void) RegisterIPLImage();
216 #if defined(MAGICKCORE_JBIG_DELEGATE)
217   (void) RegisterJBIGImage();
218 #endif
219 #if defined(MAGICKCORE_JPEG_DELEGATE)
220   (void) RegisterJPEGImage();
221 #endif
222 #if defined(MAGICKCORE_JP2_DELEGATE)
223   (void) RegisterJP2Image();
224 #endif
225   (void) RegisterLABELImage();
226   (void) RegisterMAGICKImage();
227   (void) RegisterMAPImage();
228   (void) RegisterMATImage();
229   (void) RegisterMATTEImage();
230   (void) RegisterMETAImage();
231   (void) RegisterMIFFImage();
232   (void) RegisterMONOImage();
233   (void) RegisterMPCImage();
234   (void) RegisterMPEGImage();
235   (void) RegisterMPRImage();
236   (void) RegisterMSLImage();
237   (void) RegisterMTVImage();
238   (void) RegisterMVGImage();
239   (void) RegisterNULLImage();
240   (void) RegisterOTBImage();
241   (void) RegisterPALMImage();
242   (void) RegisterPATTERNImage();
243   (void) RegisterPCDImage();
244   (void) RegisterPCLImage();
245   (void) RegisterPCXImage();
246   (void) RegisterPDBImage();
247   (void) RegisterPDFImage();
248   (void) RegisterPESImage();
249   (void) RegisterPICTImage();
250   (void) RegisterPIXImage();
251   (void) RegisterPLASMAImage();
252 #if defined(MAGICKCORE_PNG_DELEGATE)
253   (void) RegisterPNGImage();
254 #endif
255   (void) RegisterPNMImage();
256   (void) RegisterPREVIEWImage();
257   (void) RegisterPSImage();
258   (void) RegisterPS2Image();
259   (void) RegisterPS3Image();
260   (void) RegisterPSDImage();
261   (void) RegisterPWPImage();
262   (void) RegisterRAWImage();
263   (void) RegisterRGBImage();
264   (void) RegisterRLAImage();
265   (void) RegisterRLEImage();
266   (void) RegisterSCRImage();
267   (void) RegisterSCTImage();
268   (void) RegisterSFWImage();
269   (void) RegisterSGIImage();
270   (void) RegisterSTEGANOImage();
271   (void) RegisterSUNImage();
272   (void) RegisterSVGImage();
273   (void) RegisterTGAImage();
274   (void) RegisterTHUMBNAILImage();
275 #if defined(MAGICKCORE_TIFF_DELEGATE)
276   (void) RegisterTIFFImage();
277 #endif
278   (void) RegisterTILEImage();
279   (void) RegisterTIMImage();
280   (void) RegisterTTFImage();
281   (void) RegisterTXTImage();
282   (void) RegisterUILImage();
283   (void) RegisterURLImage();
284   (void) RegisterUYVYImage();
285   (void) RegisterVICARImage();
286   (void) RegisterVIDImage();
287   (void) RegisterVIFFImage();
288   (void) RegisterWBMPImage();
289 #if defined(MAGICKCORE_WMF_DELEGATE) || defined(MAGICKCORE_WMFLITE_DELEGATE)
290   (void) RegisterWMFImage();
291 #endif
292   (void) RegisterWPGImage();
293 #if defined(MAGICKCORE_X11_DELEGATE)
294   (void) RegisterXImage();
295 #endif
296   (void) RegisterXBMImage();
297   (void) RegisterXCImage();
298   (void) RegisterXCFImage();
299   (void) RegisterXPMImage();
300   (void) RegisterXPSImage();
301 #if defined(_VISUALC_)
302   (void) RegisterXTRNImage();
303 #endif
304 #if defined(MAGICKCORE_X11_DELEGATE)
305   (void) RegisterXWDImage();
306 #endif
307   (void) RegisterYCBCRImage();
308   (void) RegisterYUVImage();
309 #endif
310 }
311 \f
312 /*
313 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
314 %                                                                             %
315 %                                                                             %
316 %                                                                             %
317 %   U n r e g i s t e r S t a t i c M o d u l e s                             %
318 %                                                                             %
319 %                                                                             %
320 %                                                                             %
321 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
322 %
323 %  UnregisterStaticModules() statically unregisters all the available module
324 %  handlers.
325 %
326 %  The format of the UnregisterStaticModules method is:
327 %
328 %      UnregisterStaticModules(void)
329 %
330 */
331 MagickExport void UnregisterStaticModules(void)
332 {
333 #if !defined(MAGICKCORE_BUILD_MODULES)
334   UnregisterARTImage();
335   UnregisterAVSImage();
336   UnregisterBMPImage();
337   UnregisterBRAILLEImage();
338   UnregisterCALSImage();
339   UnregisterCAPTIONImage();
340   UnregisterCINImage();
341   UnregisterCIPImage();
342   UnregisterCLIPImage();
343 #if defined(MAGICKCORE_WINGDI32_DELEGATE)
344   UnregisterCLIPBOARDImage();
345 #endif
346   UnregisterCMYKImage();
347   UnregisterCUTImage();
348   UnregisterDCMImage();
349   UnregisterDDSImage();
350   UnregisterDIBImage();
351 #if defined(MAGICKCORE_DJVU_DELEGATE)
352   UnregisterDJVUImage();
353 #endif
354   UnregisterDNGImage();
355 #if defined(MAGICKCORE_DPS_DELEGATE)
356   UnregisterDPSImage();
357 #endif
358   UnregisterDPXImage();
359 #if defined(MAGICKCORE_WINGDI32_DELEGATE)
360   UnregisterEMFImage();
361 #endif
362 #if defined(MAGICKCORE_TIFF_DELEGATE)
363   UnregisterEPTImage();
364 #endif
365 #if defined(MAGICKCORE_OPENEXR_DELEGATE)
366   UnregisterEXRImage();
367 #endif
368   UnregisterFAXImage();
369   UnregisterFITSImage();
370 #if defined(MAGICKCORE_FPX_DELEGATE)
371   UnregisterFPXImage();
372 #endif
373   UnregisterGIFImage();
374   UnregisterGRAYImage();
375   UnregisterGRADIENTImage();
376   UnregisterHISTOGRAMImage();
377   UnregisterHRZImage();
378   UnregisterHTMLImage();
379   UnregisterICONImage();
380   UnregisterINFOImage();
381   UnregisterINLINEImage();
382   UnregisterIPLImage();
383 #if defined(MAGICKCORE_JBIG_DELEGATE)
384   UnregisterJBIGImage();
385 #endif
386 #if defined(MAGICKCORE_JPEG_DELEGATE)
387   UnregisterJPEGImage();
388 #endif
389 #if defined(MAGICKCORE_JP2_DELEGATE)
390   UnregisterJP2Image();
391 #endif
392   UnregisterLABELImage();
393   UnregisterMAGICKImage();
394   UnregisterMAPImage();
395   UnregisterMATImage();
396   UnregisterMATTEImage();
397   UnregisterMETAImage();
398   UnregisterMIFFImage();
399   UnregisterMONOImage();
400   UnregisterMPCImage();
401   UnregisterMPEGImage();
402   UnregisterMPRImage();
403   UnregisterMSLImage();
404   UnregisterMTVImage();
405   UnregisterMVGImage();
406   UnregisterNULLImage();
407   UnregisterOTBImage();
408   UnregisterPALMImage();
409   UnregisterPATTERNImage();
410   UnregisterPCDImage();
411   UnregisterPCLImage();
412   UnregisterPCXImage();
413   UnregisterPDBImage();
414   UnregisterPDFImage();
415   UnregisterPESImage();
416   UnregisterPICTImage();
417   UnregisterPIXImage();
418   UnregisterPLASMAImage();
419 #if defined(MAGICKCORE_PNG_DELEGATE)
420   UnregisterPNGImage();
421 #endif
422   UnregisterPNMImage();
423   UnregisterPREVIEWImage();
424   UnregisterPSImage();
425   UnregisterPS2Image();
426   UnregisterPS3Image();
427   UnregisterPSDImage();
428   UnregisterPWPImage();
429   UnregisterRAWImage();
430   UnregisterRGBImage();
431   UnregisterRLAImage();
432   UnregisterRLEImage();
433   UnregisterSCRImage();
434   UnregisterSCTImage();
435   UnregisterSFWImage();
436   UnregisterSGIImage();
437   UnregisterSTEGANOImage();
438   UnregisterSUNImage();
439   UnregisterSVGImage();
440   UnregisterTGAImage();
441   UnregisterTHUMBNAILImage();
442 #if defined(MAGICKCORE_TIFF_DELEGATE)
443   UnregisterTIFFImage();
444 #endif
445   UnregisterTILEImage();
446   UnregisterTIMImage();
447   UnregisterTTFImage();
448   UnregisterTXTImage();
449   UnregisterUILImage();
450   UnregisterURLImage();
451   UnregisterUYVYImage();
452   UnregisterVICARImage();
453   UnregisterVIDImage();
454   UnregisterVIFFImage();
455   UnregisterWBMPImage();
456 #if defined(MAGICKCORE_WMF_DELEGATE) || defined(MAGICKCORE_WMFLITE_DELEGATE)
457   UnregisterWMFImage();
458 #endif
459   UnregisterWPGImage();
460 #if defined(MAGICKCORE_X11_DELEGATE)
461   UnregisterXImage();
462 #endif
463   UnregisterXBMImage();
464   UnregisterXCImage();
465   UnregisterXCFImage();
466   UnregisterXPMImage();
467   UnregisterXPSImage();
468 #if defined(_VISUALC_)
469   UnregisterXTRNImage();
470 #endif
471 #if defined(MAGICKCORE_X11_DELEGATE)
472   UnregisterXWDImage();
473 #endif
474   UnregisterYCBCRImage();
475   UnregisterYUVImage();
476 #endif
477 }