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