/*
- Copyright 1999-2012 ImageMagick Studio LLC, a non-profit organization
+ Copyright 1999-2014 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.
#ifndef _MAGICKCORE_COMPOSITE_PRIVATE_H
#define _MAGICKCORE_COMPOSITE_PRIVATE_H
-#if defined(__cplusplus) || defined(c_plusplus)
-extern "C" {
-#endif
-
-/*
- ImageMagick Alpha Composite Inline Methods (special export)
-*/
#include "MagickCore/color.h"
#include "MagickCore/image.h"
#include "MagickCore/pixel-accessor.h"
#include "MagickCore/pixel-private.h"
+#if defined(__cplusplus) || defined(c_plusplus)
+extern "C" {
+#endif
+
+/*
+ ImageMagick Alpha Composite Inline Methods (special export)
+*/
static inline double MagickOver_(const double p,
const double alpha,const double q,const double beta)
{
traits=GetPixelChannelTraits(image,channel);
if (traits == UndefinedPixelTrait)
continue;
+ if (fabs(alpha-TransparentAlpha) < MagickEpsilon)
+ {
+ composite[i]=q[i];
+ continue;
+ }
switch (channel)
{
case RedPixelChannel:
{
- composite[i]=ClampToQuantum(gamma*MagickOver_((double) p->red,
- alpha,(double) q[i],beta));
+ composite[i]=ClampToQuantum(gamma*MagickOver_((double) p->red,alpha,
+ (double) q[i],beta));
break;
}
case GreenPixelChannel:
{
- composite[i]=ClampToQuantum(gamma*MagickOver_((double) p->green,
- alpha,(double) q[i],beta));
+ composite[i]=ClampToQuantum(gamma*MagickOver_((double) p->green,alpha,
+ (double) q[i],beta));
break;
}
case BluePixelChannel:
{
- composite[i]=ClampToQuantum(gamma*MagickOver_((double) p->blue,
- alpha,(double) q[i],beta));
+ composite[i]=ClampToQuantum(gamma*MagickOver_((double) p->blue,alpha,
+ (double) q[i],beta));
break;
}
case BlackPixelChannel:
{
- composite[i]=ClampToQuantum(gamma*MagickOver_((double) p->black,
- alpha,(double) q[i],beta));
+ composite[i]=ClampToQuantum(gamma*MagickOver_((double) p->black,alpha,
+ (double) q[i],beta));
break;
}
case AlphaPixelChannel:
break;
}
default:
+ {
+ composite[i]=q[i];
break;
+ }
}
}
}
/*
Compose pixel p over pixel q with the given opacities.
*/
- if (fabs(alpha-OpaqueAlpha) < MagickEpsilon)
+ if (fabs(alpha-TransparentAlpha) < MagickEpsilon)
{
*composite=(*p);
return;