X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=synfig-core%2Ftrunk%2Fsrc%2Fmodules%2Fmod_magickpp%2Ftrgt_magickpp.cpp;h=bcfd31a229532e607ba53ee1e522df43ed2b61f5;hb=756c0d29ac1742f231e6615f9a577e574e35a4af;hp=01925cde660aa4d7ea89d627410a5112d672dd15;hpb=e6956d92691bf2d8d962318f9763b21b854144c9;p=synfig.git diff --git a/synfig-core/trunk/src/modules/mod_magickpp/trgt_magickpp.cpp b/synfig-core/trunk/src/modules/mod_magickpp/trgt_magickpp.cpp index 01925cd..bcfd31a 100644 --- a/synfig-core/trunk/src/modules/mod_magickpp/trgt_magickpp.cpp +++ b/synfig-core/trunk/src/modules/mod_magickpp/trgt_magickpp.cpp @@ -5,7 +5,7 @@ ** $Id$ ** ** \legal -** Copyright 2007 Chris Moore +** Copyright (c) 2007, 2008 Chris Moore ** ** This package is free software; you can redistribute it and/or ** modify it under the terms of the GNU General Public License as @@ -69,18 +69,18 @@ MagickLib::Image* copy_image_list(Container& container) try { current = CloneImage(iter->image(), 0, 0, Magick::MagickTrue, &exceptionInfo); + + if (!first) first = current; + + current->previous = previous; + current->next = 0; + + if ( previous != 0) previous->next = current; + previous = current; } catch(Magick::Warning warning) { synfig::warning("exception '%s'", warning.what()); } - - if (!first) first = current; - - current->previous = previous; - current->next = 0; - - if ( previous != 0) previous->next = current; - previous = current; } return first; @@ -93,20 +93,27 @@ magickpp_trgt::~magickpp_trgt() try { - // check whether this file format supports multiple-image files - Magick::Image image(*(images.begin())); - image.fileName(filename); - try + bool multiple_images = images.size() != 1; + bool can_adjoin = false; + + if (multiple_images) { - SetImageInfo(image.imageInfo(),Magick::MagickTrue,&exceptionInfo); - } - catch(Magick::Warning warning) { - synfig::warning("exception '%s'", warning.what()); + // check whether this file format supports multiple-image files + Magick::Image image(*(images.begin())); + image.fileName(filename); + try + { + SetImageInfo(image.imageInfo(),Magick::MagickTrue,&exceptionInfo); + can_adjoin = image.adjoin(); + } + catch(Magick::Warning warning) { + synfig::warning("exception '%s'", warning.what()); + } } // the file type is now in image.imageInfo()->magick and // image.adjoin() tells us whether we can write to a single file - if (image.adjoin()) + if (can_adjoin) { synfig::info("joining images"); unsigned int delay = round_to_int(100.0 / desc.get_frame_rate()); @@ -177,7 +184,7 @@ magickpp_trgt::~magickpp_trgt() // insertImages(&images, new_images); #endif } - else + else if (multiple_images) { // if we can't write multiple images to a file of this type, // include '%04d' in the filename, so the files will be numbered @@ -186,7 +193,7 @@ magickpp_trgt::~magickpp_trgt() filename = (filename_sans_extension(filename) + ".%04d" + filename_extension(filename)); } - synfig::info("writing %d images to %s", images.size(), filename.c_str()); + synfig::info("writing %d image%s to %s", images.size(), images.size() == 1 ? "" : "s", filename.c_str()); try { Magick::writeImages(images.begin(), images.end(), filename); @@ -257,7 +264,7 @@ magickpp_trgt::end_frame() } bool -magickpp_trgt::start_frame(synfig::ProgressCallback *callback) +magickpp_trgt::start_frame(synfig::ProgressCallback *callback __attribute__ ((unused))) { previous_buffer_pointer = start_pointer; @@ -271,7 +278,7 @@ magickpp_trgt::start_frame(synfig::ProgressCallback *callback) } Color* -magickpp_trgt::start_scanline(int scanline) +magickpp_trgt::start_scanline(int scanline __attribute__ ((unused))) { return color_buffer; }