/[public]/psiconv/trunk/program/psiconv/gen_image.c
ViewVC logotype

Diff of /psiconv/trunk/program/psiconv/gen_image.c

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

Revision 192 Revision 343
1/* 1/*
2 * gen_image.c - Part of psiconv, a PSION 5 file formats converter 2 * gen_image.c - Part of psiconv, a PSION 5 file formats converter
3 * Copyright (c) 1999 Frodo Looijaard <frodol@dds.nl> 3 * Copyright (c) 1999-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.
24#include <string.h> 24#include <string.h>
25#include <stdlib.h> 25#include <stdlib.h>
26 26
27#ifdef IMAGEMAGICK 27#ifdef IMAGEMAGICK
28#include "magick-aux.h" 28#include "magick-aux.h"
29#include <magick/magick.h>
30#endif 29#endif
31 30
32#ifdef DMALLOC 31#ifdef DMALLOC
33#include "dmalloc.h" 32#include "dmalloc.h"
34#endif 33#endif
35 34
35#ifdef IMAGEMAGICK
36static Image *get_paint_data_section(psiconv_paint_data_section sec); 36static Image *get_paint_data_section(psiconv_paint_data_section sec);
37static void image_to_list(psiconv_list list,Image *image,const char *dest); 37static void image_to_list(psiconv_list list,Image *image,const char *dest);
38static void gen_image_list(const psiconv_config config,psiconv_list list, 38static void gen_image_list(const psiconv_config config,psiconv_list list,
39 const psiconv_list sections, const char *dest); 39 const psiconv_list sections, const char *dest);
40static void gen_clipart(const psiconv_config config,psiconv_list list, 40static void gen_clipart(const psiconv_config config,psiconv_list list,
41 const psiconv_clipart_f f, const char *dest); 41 const psiconv_clipart_f f, const char *dest);
42static void gen_mbm(const psiconv_config config,psiconv_list list, 42static void gen_mbm(const psiconv_config config,psiconv_list list,
43 const psiconv_mbm_f f, const char *dest); 43 const psiconv_mbm_f f, const char *dest);
44static void gen_sketch(const psiconv_config config,psiconv_list list, 44static void gen_sketch(const psiconv_config config,psiconv_list list,
45 const psiconv_sketch_f f, const char *dest); 45 const psiconv_sketch_f f, const char *dest);
46static int gen_image(psiconv_config config, psiconv_list list,
47 const psiconv_file file, const char *dest,
48 const encoding encoding_type);
46 49
47/* This is ridiculously simple using ImageMagick. Without it, it would 50/* This is ridiculously simple using ImageMagick. Without it, it would
48 be quite somewhat harder - it will be left for later on. 51 be quite somewhat harder - it will be left for later on.
49 Note that we ignore any errors. Dangerous... */ 52 Note that we ignore any errors. Dangerous... */
50 53
86 ImageInfo *image_info; 89 ImageInfo *image_info;
87 ExceptionInfo exc; 90 ExceptionInfo exc;
88 size_t length; 91 size_t length;
89 char *data; 92 char *data;
90 int i; 93 int i;
91 94
92 strcpy(image->magick,dest); 95 strcpy(image->magick,dest);
93 image_info = CloneImageInfo(NULL); 96 image_info = CloneImageInfo(NULL);
94 GetExceptionInfo(&exc); 97 GetExceptionInfo(&exc);
95 data = ImageToBlob(image_info,image,&length,&exc); 98 data = ImageToBlob(image_info,image,&length,&exc);
96 if (!data || (exc.severity != UndefinedException)) { 99 if (!data || (exc.severity != UndefinedException)) {
207 image_to_list(list,image,dest); 210 image_to_list(list,image,dest);
208 DestroyImage(image); 211 DestroyImage(image);
209} 212}
210 213
211 214
212static int gen_image(psiconv_config config, psiconv_list list, 215int gen_image(psiconv_config config, psiconv_list list,
213 const psiconv_file file, const char *dest, 216 const psiconv_file file, const char *dest,
214 const encoding encoding_type) 217 const encoding encoding_type)
215{ 218{
216 if (file->type == psiconv_mbm_file) 219 if (file->type == psiconv_mbm_file)
217 gen_mbm(config,list,(psiconv_mbm_f) file->file,dest); 220 gen_mbm(config,list,(psiconv_mbm_f) file->file,dest);
224 } else 227 } else
225 return -1; 228 return -1;
226 return 0; 229 return 0;
227} 230}
228 231
232#endif
233
229void init_image(void) 234void init_image(void)
230{ 235{
231 struct fileformat_s ff; 236 struct fileformat_s ff;
232#if IMAGEMAGICK 237#if IMAGEMAGICK
233 const MagickInfo *mi; 238 const MagickInfo **mi;
239 int i;
240#if IMAGEMAGICK_API == 100
241 InitializeMagick(NULL);
242#endif
234 ff.output = gen_image; 243 ff.output = gen_image;
235 for (mi = GetMagickFileList(); mi ; mi = mi->next) { 244 mi = GetMagickFileList();
245 i = 0;
246 while (mi[i]) {
236 if (mi->encoder) { 247 if (mi[i]->encoder) {
237 ff.name = strdup(mi->name); 248 ff.name = strdup(mi[i]->name);
238 ff.description = strdup(mi->description); 249 ff.description = strdup(mi[i]->description);
239 ff.supported_format = FORMAT_CLIPART_SINGLE | FORMAT_MBM_SINGLE | 250 ff.supported_format = FORMAT_CLIPART_SINGLE | FORMAT_MBM_SINGLE |
240 FORMAT_SKETCH; 251 FORMAT_SKETCH;
241 if (mi->adjoin) 252 if (mi[i]->adjoin)
242 ff.supported_format |= FORMAT_MBM_MULTIPLE | FORMAT_CLIPART_MULTIPLE; 253 ff.supported_format |= FORMAT_MBM_MULTIPLE | FORMAT_CLIPART_MULTIPLE;
243 psiconv_list_add(fileformat_list,&ff); 254 psiconv_list_add(fileformat_list,&ff);
244 } 255 }
256 i++;
245 } 257 }
246#endif 258#endif
247} 259}
248 260

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

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