% January 2006 %
% %
% %
-% Copyright 1999-2014 ImageMagick Studio LLC, a non-profit organization %
+% Copyright 1999-2015 ImageMagick Studio LLC, a non-profit organization %
% dedicated to making software imaging solutions freely available. %
% %
% You may not use this file except in compliance with the License. You may %
if (bounds->x < 0)
return;
- if (image->alpha_trait != BlendPixelTrait)
+ if (image->alpha_trait == UndefinedPixelTrait)
(void) SetImageAlphaChannel(image,OpaqueAlphaChannel,exception);
for (y=0; y < (ssize_t) bounds->height; y++)
{
Coalesce the image sequence.
*/
assert(image != (Image *) NULL);
- assert(image->signature == MagickSignature);
+ assert(image->signature == MagickCoreSignature);
if (image->debug != MagickFalse)
(void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",image->filename);
assert(exception != (ExceptionInfo *) NULL);
- assert(exception->signature == MagickSignature);
+ assert(exception->signature == MagickCoreSignature);
next=GetFirstImageInList(image);
bounds=next->page;
if (bounds.width == 0)
exception);
if (coalesce_image == (Image *) NULL)
return((Image *) NULL);
+ coalesce_image->background_color.alpha=(Quantum) TransparentAlpha;
(void) SetImageBackgroundColor(coalesce_image,exception);
coalesce_image->alpha_trait=next->alpha_trait;
coalesce_image->page=bounds;
previous=coalesce_image;
coalesce_image=GetNextImageInList(coalesce_image);
(void) CompositeImage(coalesce_image,next,
- next->alpha_trait == BlendPixelTrait ? OverCompositeOp : CopyCompositeOp,
+ next->alpha_trait != UndefinedPixelTrait ? OverCompositeOp : CopyCompositeOp,
MagickTrue,next->page.x,next->page.y,exception);
(void) CloneImageProfiles(coalesce_image,next);
(void) CloneImageProperties(coalesce_image,next);
Run the image through the animation sequence
*/
assert(images != (Image *) NULL);
- assert(images->signature == MagickSignature);
+ assert(images->signature == MagickCoreSignature);
if (images->debug != MagickFalse)
(void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",images->filename);
assert(exception != (ExceptionInfo *) NULL);
- assert(exception->signature == MagickSignature);
+ assert(exception->signature == MagickCoreSignature);
image=GetFirstImageInList(images);
dispose_image=CloneImage(image,image->page.width,image->page.height,
MagickTrue,exception);
return((Image *) NULL);
}
(void) CompositeImage(current_image,next,
- next->alpha_trait == BlendPixelTrait ? OverCompositeOp : CopyCompositeOp,
+ next->alpha_trait != UndefinedPixelTrait ? OverCompositeOp : CopyCompositeOp,
MagickTrue,next->page.x,next->page.y,exception);
/*
Handle Background dispose: image is displayed for the delay period.
if (method == CompareAnyLayer)
return((MagickBooleanType)(IsFuzzyEquivalencePixelInfo(p,q) == MagickFalse));
- o1 = (p->alpha_trait == BlendPixelTrait) ? p->alpha : OpaqueAlpha;
- o2 = (q->alpha_trait == BlendPixelTrait) ? q->alpha : OpaqueAlpha;
+ o1 = (p->alpha_trait != UndefinedPixelTrait) ? p->alpha : OpaqueAlpha;
+ o2 = (q->alpha_trait != UndefinedPixelTrait) ? q->alpha : OpaqueAlpha;
/*
Pixel goes from opaque to transprency.
*/
i;
assert(image != (const Image *) NULL);
- assert(image->signature == MagickSignature);
+ assert(image->signature == MagickCoreSignature);
if (image->debug != MagickFalse)
(void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",image->filename);
assert(exception != (ExceptionInfo *) NULL);
- assert(exception->signature == MagickSignature);
+ assert(exception->signature == MagickCoreSignature);
assert((method == CompareAnyLayer) ||
(method == CompareClearLayer) ||
(method == CompareOverlayLayer));
next=GetNextImageInList(next);
for ( ; next != (const Image *) NULL; next=GetNextImageInList(next))
{
+ if ((bounds[i].x == -1) && (bounds[i].y == -1) &&
+ (bounds[i].width == 1) && (bounds[i].height == 1))
+ {
+ /*
+ An empty frame is returned from CompareImageBounds(), which means the
+ current frame is identical to the previous frame.
+ */
+ i++;
+ continue;
+ }
image_a=CloneImage(next,0,0,MagickTrue,exception);
if (image_a == (Image *) NULL)
break;
i;
assert(image != (const Image *) NULL);
- assert(image->signature == MagickSignature);
+ assert(image->signature == MagickCoreSignature);
if (image->debug != MagickFalse)
(void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",image->filename);
assert(exception != (ExceptionInfo *) NULL);
- assert(exception->signature == MagickSignature);
+ assert(exception->signature == MagickCoreSignature);
assert(method == OptimizeLayer ||
method == OptimizeImageLayer ||
method == OptimizePlusLayer);
Compute the bounding box of changes for each pair of images.
*/
i=1;
- bgnd_image=(Image *)NULL;
- dup_image=(Image *)NULL;
+ bgnd_image=(Image *) NULL;
+ dup_image=(Image *) NULL;
dup_bounds.width=0;
dup_bounds.height=0;
dup_bounds.x=0;
if ( disposals[i-1] != PreviousDispose )
prev_image=DestroyImage(prev_image);
if ( disposals[i-1] == BackgroundDispose )
- prev_image=bgnd_image, bgnd_image=(Image *)NULL;
+ prev_image=bgnd_image, bgnd_image=(Image *) NULL;
if (bgnd_image != (Image *) NULL)
bgnd_image=DestroyImage(bgnd_image);
if ( disposals[i-1] == NoneDispose )
Run the image through the animation sequence
*/
assert(image != (Image *) NULL);
- assert(image->signature == MagickSignature);
+ assert(image->signature == MagickCoreSignature);
if (image->debug != MagickFalse)
(void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",image->filename);
assert(exception != (ExceptionInfo *) NULL);
- assert(exception->signature == MagickSignature);
+ assert(exception->signature == MagickCoreSignature);
next=GetFirstImageInList(image);
dispose_image=CloneImage(next,next->page.width,next->page.height,
MagickTrue,exception);
dispose_image=DestroyImage(dispose_image);
return;
}
- (void) CompositeImage(current_image,next,next->alpha_trait == BlendPixelTrait ?
+ (void) CompositeImage(current_image,next,next->alpha_trait != UndefinedPixelTrait ?
OverCompositeOp : CopyCompositeOp,MagickTrue,next->page.x,next->page.y,
exception);
/*
bounds;
assert((*images) != (const Image *) NULL);
- assert((*images)->signature == MagickSignature);
+ assert((*images)->signature == MagickCoreSignature);
if ((*images)->debug != MagickFalse)
(void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",(*images)->filename);
assert(exception != (ExceptionInfo *) NULL);
- assert(exception->signature == MagickSignature);
+ assert(exception->signature == MagickCoreSignature);
curr=GetFirstImageInList(*images);
for (; (next=GetNextImageInList(curr)) != (Image *) NULL; curr=next)
*i;
assert((*images) != (const Image *) NULL);
- assert((*images)->signature == MagickSignature);
+ assert((*images)->signature == MagickCoreSignature);
if ((*images)->debug != MagickFalse)
(void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",(*images)->filename);
assert(exception != (ExceptionInfo *) NULL);
- assert(exception->signature == MagickSignature);
+ assert(exception->signature == MagickCoreSignature);
i=GetFirstImageInList(*images);
for ( ; i != (Image *) NULL; i=GetNextImageInList(i))
const ssize_t y_offset,ExceptionInfo *exception)
{
assert(destination != (Image *) NULL);
- assert(destination->signature == MagickSignature);
+ assert(destination->signature == MagickCoreSignature);
assert(source != (Image *) NULL);
- assert(source->signature == MagickSignature);
+ assert(source->signature == MagickCoreSignature);
assert(exception != (ExceptionInfo *) NULL);
- assert(exception->signature == MagickSignature);
+ assert(exception->signature == MagickCoreSignature);
if (source->debug != MagickFalse || destination->debug != MagickFalse)
(void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s - %s",
source->filename, destination->filename);
scene;
assert(image != (Image *) NULL);
- assert(image->signature == MagickSignature);
+ assert(image->signature == MagickCoreSignature);
if (image->debug != MagickFalse)
(void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",image->filename);
assert(exception != (ExceptionInfo *) NULL);
- assert(exception->signature == MagickSignature);
+ assert(exception->signature == MagickCoreSignature);
/*
Determine canvas image size, and its virtual canvas size and offset
*/