if (image->iterations != 1)
(void) FormatLocaleFile(file," Iterations: %.20g\n",(double)
image->iterations);
+ if (image->duration != 0)
+ (void) FormatLocaleFile(file," Duration: %.20g\n",(double)
+ image->duration);
if ((image->next != (Image *) NULL) || (image->previous != (Image *) NULL))
(void) FormatLocaleFile(file," Scene: %.20g of %.20g\n",(double)
image->scene,(double) GetImageListLength(image));
size_t
scene, /* index of image in multi-image file */
- delay; /* Animation delay time */
+ delay, /* Animation delay time */
+ duration; /* Total animation duration sum(delay*iterations) */
ssize_t
ticks_per_second; /* units for delay time, default 100 for GIF */
size_t
delay,
dispose,
+ duration,
global_colors,
image_count,
iterations,
count=ReadBlob(image,(size_t) (3*global_colors),global_colormap);
delay=0;
dispose=0;
+ duration=0;
iterations=1;
opacity=(-1);
image_count=0;
image->alpha_trait=opacity >= 0 ? BlendPixelTrait : UndefinedPixelTrait;
delay=0;
dispose=0;
- iterations=1;
if ((image->columns == 0) || (image->rows == 0))
{
global_colormap=(unsigned char *) RelinquishMagickMemory(
global_colormap);
ThrowReaderException(CorruptImageError,"CorruptImage");
}
+ duration += image->delay * image->iterations;
if (image_info->number_scenes != 0)
if (image->scene >= (image_info->scene+image_info->number_scenes-1))
break;
if (status == MagickFalse)
break;
}
+ image->duration=duration;
meta_image=DestroyImage(meta_image);
global_colormap=(unsigned char *) RelinquishMagickMemory(global_colormap);
if ((image->columns == 0) || (image->rows == 0))