--- psiconv/trunk/program/psiconv/gen_image.c 2000/12/10 15:44:40 56 +++ psiconv/trunk/program/psiconv/gen_image.c 2002/01/22 21:22:55 138 @@ -18,7 +18,7 @@ */ #include "config.h" -#include "data.h" +#include "psiconv/data.h" #include "gen.h" #include #include "psiconv.h" @@ -59,9 +59,10 @@ *p++ = *blue++; } } + image = ConstituteImage(sec->xsize,sec->ysize,"RGB",FloatPixel,pixel,&exc); if (! image) { - MagickError(exc.severity,exc.message,exc.qualifier); + MagickError(exc.severity,exc.reason,exc.description); } free(pixel); @@ -75,7 +76,7 @@ { #if IMAGEMAGICK psiconv_clipart_section section; - MagickInfo *mi = GetMagickInfo(dest); + const MagickInfo *mi; ImageInfo *image_info; Image *image = NULL; Image *last_image = NULL; @@ -83,6 +84,10 @@ ExceptionInfo exc; int i; unsigned int status; + + GetExceptionInfo(&exc); + if (!(mi = GetMagickInfo(dest,&exc))) + return -1; if ((psiconv_list_length(f->sections) < 1) || ((psiconv_list_length(f->sections)) > 1 && ! (mi->adjoin))) @@ -101,10 +106,12 @@ last_image = this_image; } - GetExceptionInfo(&exc); image_info = CloneImageInfo(NULL); set_filename(image->filename,dest,filename); - images = CoalesceImages(image,&exc); + if (image->next) + images = CoalesceImages(image,&exc); + else + images = image; if (! images) CatchImageException(image); @@ -112,7 +119,8 @@ if (!status) CatchImageException(images); DestroyImageInfo(image_info); - DestroyImages(image); + if (image != images) + DestroyImages(image); DestroyImages(images); return 0; #endif @@ -121,9 +129,10 @@ static int psiconv_gen_image_mbm(const char *filename, psiconv_mbm_f f, const char *dest) { + #if IMAGEMAGICK psiconv_paint_data_section section; - MagickInfo *mi = GetMagickInfo(dest); + const MagickInfo *mi; ImageInfo *image_info; Image *image = NULL; Image *last_image = NULL; @@ -131,18 +140,22 @@ ExceptionInfo exc; int i; unsigned int status; - + + GetExceptionInfo(&exc); + if (!(mi = GetMagickInfo(dest,&exc))) + return -1; + if ((psiconv_list_length(f->sections) < 1) || ((psiconv_list_length(f->sections)) > 1 && ! (mi->adjoin))) #endif return -1; #if IMAGEMAGICK + for (i = 0; i < psiconv_list_length(f->sections); i++) { section = psiconv_list_get(f->sections,i); this_image = get_paint_data_section(section); if (! image) { image = this_image; - this_image->scene=1; } else { last_image->next=this_image; this_image->previous=last_image; @@ -150,10 +163,12 @@ last_image = this_image; } - GetExceptionInfo(&exc); image_info = CloneImageInfo(NULL); set_filename(image->filename,dest,filename); - images = CoalesceImages(image,&exc); + if (image->next) + images = CoalesceImages(image,&exc); + else + images = image; if (! images) CatchImageException(image); @@ -161,7 +176,8 @@ if (!status) CatchImageException(images); DestroyImageInfo(image_info); - DestroyImages(image); + if (image != images) + DestroyImages(image); DestroyImages(images); return 0; #endif @@ -188,7 +204,7 @@ { if (file->type == psiconv_mbm_file) psiconv_gen_image_mbm(filename,(psiconv_mbm_f) file->file,dest); - if (file->type == psiconv_clipart_file) + else if (file->type == psiconv_clipart_file) psiconv_gen_image_clipart(filename,(psiconv_clipart_f) file->file,dest); else if (file->type == psiconv_sketch_file) { psiconv_gen_image_sketch(filename,(psiconv_sketch_f) file->file,dest); @@ -201,11 +217,11 @@ { struct psiconv_fileformat_s ff; #if IMAGEMAGICK - MagickInfo *mi; + const MagickInfo *mi; ff.output = psiconv_gen_image; for (mi = GetMagickFileList(); mi ; mi = mi->next) { if (mi->encoder) { - ff.name = strdup(mi->tag); + ff.name = strdup(mi->name); ff.description = strdup(mi->description); psiconv_list_add(fileformat_list,&ff); }