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