/[public]/psiconv/trunk/program/psiconv/magick-aux.c
ViewVC logotype

Diff of /psiconv/trunk/program/psiconv/magick-aux.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

Revision 58 Revision 343
1/* 1/*
2 magick-aux.c - Part of psiconv, a PSION 5 file formats converter 2 magick-aux.c - Part of psiconv, a PSION 5 file formats converter
3 Copyright (c) 2000 Frodo Looijaard <frodol@dds.nl> 3 Copyright (c) 2000-2005 Frodo Looijaard <frodo@frodo.looijaard.name>
4 4
5 This program is free software; you can redistribute it and/or modify 5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by 6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 2 of the License, or 7 the Free Software Foundation; either version 2 of the License, or
8 (at your option) any later version. 8 (at your option) any later version.
20#include "config.h" 20#include "config.h"
21 21
22#if IMAGEMAGICK 22#if IMAGEMAGICK
23 23
24#include "magick-aux.h" 24#include "magick-aux.h"
25#include <magick/magick.h>
26#include <magick/config.h>
27 25
28/* This is so ugly, but it is the only way to make ImageMagick 5 behave 26#endif
29 * properly. It really needs a better interface.
30 * OpenModules makes sure all needed modules are loaded. But it may not
31 * be called until some things are initialized, hence the extra
32 * GetMagickInfo call. Ugh.
33 */
34 27
35extern void OpenModules(void); 28#ifdef DMALLOC
29#include "dmalloc.h"
30#endif
36 31
32#if IMAGEMAGICK
33
34/* This used to be very ugly, but nowadays it is much better */
35
36#if IMAGEMAGICK_API == 1 || IMAGEMAGICK_API == 2
37MagickInfo * GetMagickFileList(void) 37const MagickInfo ** GetMagickFileList(void)
38{ 38{
39 GetMagickInfo(NULL); 39 int len,i;
40#if defined(HasLTDL) 40 const MagickInfo *ptr;
41 const MagickInfo *mi_ptr;
42 const MagickInfo **copy;
43 ExceptionInfo exc;
44 GetExceptionInfo(&exc);
41 OpenModules(); 45 OpenModules(&exc);
42#endif 46
43 return GetMagickInfo(NULL); 47 mi_ptr = GetMagickInfo(NULL,&exc);
48 for (len = 0, ptr=mi_ptr; ptr != NULL; len++, ptr = ptr->next);
49 copy = malloc((len+1) * sizeof(*copy));
50 for (i=0, ptr=mi_ptr; ptr != NULL; i++, ptr = ptr->next)
51 copy[i] = ptr;
52 copy[len] = NULL;
53 return copy;
44} 54}
45 55
56#elif IMAGEMAGICK_API == 3
57
58const MagickInfo ** GetMagickFileList(void)
59{
60 MagickInfo **mi;
61 const MagickInfo **copy;
62 unsigned long len;
63 int i;
64 ExceptionInfo exc;
65 GetExceptionInfo(&exc);
66 OpenModules(&exc);
67 mi = GetMagickInfoList("*",&len);
68 copy = malloc((len+1) * sizeof(*copy));
69 for (i = 0; i < len; i++) {
70 copy[i] = mi[i];
71 }
72 copy[len] = NULL;
73 return copy;
74}
75
76#elif IMAGEMAGICK_API == 4
77
78const MagickInfo ** GetMagickFileList(void)
79{
80 MagickInfo **mi;
81 const MagickInfo **copy;
82 unsigned long len;
83 int i;
84 ExceptionInfo exc;
85 GetExceptionInfo(&exc);
86 OpenModules(&exc);
87 mi = GetMagickInfoList("*",&len,&exc);
88 copy = malloc((len+1) * sizeof(*copy));
89 for (i = 0; i < len; i++) {
90 copy[i] = mi[i];
91 }
92 copy[len] = NULL;
93 return copy;
94}
95
96#elif IMAGEMAGICK_API == 100
97/* GraphicsMagick library */
98const MagickInfo ** GetMagickFileList(void)
99{
100 int i,len;
101 MagickInfo **mi;
102 const MagickInfo **copy;
103 ExceptionInfo exception;
104 GetExceptionInfo(&exception);
105 mi = GetMagickInfoArray(&exception);
106 for (len = 0; mi[len]; len++);
107 copy = malloc((len+1) * sizeof(*copy));
108 for (i = 0; i <= len; i++) {
109 copy[i] = mi[i];
110 }
111 return copy;
112}
113
114#endif
115
46#endif /* IMAGEMAGICK */ 116#endif /* IMAGEMAGICK */

Legend:
Removed from v.58  
changed lines
  Added in v.343

frodo@frodo.looijaard.name
ViewVC Help
Powered by ViewVC 1.1.26