am__magick_libMagickCore_la_SOURCES_DIST = magick/ImageMagick.h \
magick/MagickCore.h magick/animate.c magick/animate.h \
magick/animate-private.h magick/annotate.c magick/annotate.h \
- magick/api.h magick/artifact.c magick/artifact.h magick/blob.c \
+ magick/api.h magick/artifact.c magick/artifact.h \
+ magick/attribute.c magick/attribute.h magick/blob.c \
magick/blob.h magick/blob-private.h magick/cache.c \
magick/cache.h magick/cache-private.h magick/cache-view.c \
magick/cache-view.h magick/cipher.c magick/cipher.h \
am__objects_2 = magick/magick_libMagickCore_la-animate.lo \
magick/magick_libMagickCore_la-annotate.lo \
magick/magick_libMagickCore_la-artifact.lo \
+ magick/magick_libMagickCore_la-attribute.lo \
magick/magick_libMagickCore_la-blob.lo \
magick/magick_libMagickCore_la-cache.lo \
magick/magick_libMagickCore_la-cache-view.lo \
magick/api.h \
magick/artifact.c \
magick/artifact.h \
+ magick/attribute.c \
+ magick/attribute.h \
magick/blob.c \
magick/blob.h \
magick/blob-private.h \
magick/annotate.h \
magick/api.h \
magick/artifact.h \
+ magick/attribute.h \
magick/blob.h \
magick/cache.h \
magick/cache-view.h \
magick/$(DEPDIR)/$(am__dirstamp)
magick/magick_libMagickCore_la-artifact.lo: magick/$(am__dirstamp) \
magick/$(DEPDIR)/$(am__dirstamp)
+magick/magick_libMagickCore_la-attribute.lo: magick/$(am__dirstamp) \
+ magick/$(DEPDIR)/$(am__dirstamp)
magick/magick_libMagickCore_la-blob.lo: magick/$(am__dirstamp) \
magick/$(DEPDIR)/$(am__dirstamp)
magick/magick_libMagickCore_la-cache.lo: magick/$(am__dirstamp) \
-rm -f magick/magick_libMagickCore_la-annotate.lo
-rm -f magick/magick_libMagickCore_la-artifact.$(OBJEXT)
-rm -f magick/magick_libMagickCore_la-artifact.lo
+ -rm -f magick/magick_libMagickCore_la-attribute.$(OBJEXT)
+ -rm -f magick/magick_libMagickCore_la-attribute.lo
-rm -f magick/magick_libMagickCore_la-blob.$(OBJEXT)
-rm -f magick/magick_libMagickCore_la-blob.lo
-rm -f magick/magick_libMagickCore_la-cache-view.$(OBJEXT)
@AMDEP_TRUE@@am__include@ @am__quote@magick/$(DEPDIR)/magick_libMagickCore_la-animate.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@magick/$(DEPDIR)/magick_libMagickCore_la-annotate.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@magick/$(DEPDIR)/magick_libMagickCore_la-artifact.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@magick/$(DEPDIR)/magick_libMagickCore_la-attribute.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@magick/$(DEPDIR)/magick_libMagickCore_la-blob.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@magick/$(DEPDIR)/magick_libMagickCore_la-cache-view.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@magick/$(DEPDIR)/magick_libMagickCore_la-cache.Plo@am__quote@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(magick_libMagickCore_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o magick/magick_libMagickCore_la-artifact.lo `test -f 'magick/artifact.c' || echo '$(srcdir)/'`magick/artifact.c
+magick/magick_libMagickCore_la-attribute.lo: magick/attribute.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(magick_libMagickCore_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT magick/magick_libMagickCore_la-attribute.lo -MD -MP -MF magick/$(DEPDIR)/magick_libMagickCore_la-attribute.Tpo -c -o magick/magick_libMagickCore_la-attribute.lo `test -f 'magick/attribute.c' || echo '$(srcdir)/'`magick/attribute.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) magick/$(DEPDIR)/magick_libMagickCore_la-attribute.Tpo magick/$(DEPDIR)/magick_libMagickCore_la-attribute.Plo
+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='magick/attribute.c' object='magick/magick_libMagickCore_la-attribute.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(magick_libMagickCore_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o magick/magick_libMagickCore_la-attribute.lo `test -f 'magick/attribute.c' || echo '$(srcdir)/'`magick/attribute.c
+
magick/magick_libMagickCore_la-blob.lo: magick/blob.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(magick_libMagickCore_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT magick/magick_libMagickCore_la-blob.lo -MD -MP -MF magick/$(DEPDIR)/magick_libMagickCore_la-blob.Tpo -c -o magick/magick_libMagickCore_la-blob.lo `test -f 'magick/blob.c' || echo '$(srcdir)/'`magick/blob.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) magick/$(DEPDIR)/magick_libMagickCore_la-blob.Tpo magick/$(DEPDIR)/magick_libMagickCore_la-blob.Plo
Include declarations.
*/
#include "magick/studio.h"
-#include "magick/property.h"
+#include "magick/attribute.h"
#include "magick/blob.h"
#include "magick/blob-private.h"
#include "magick/cache.h"
#include "magick/monitor-private.h"
#include "magick/pixel-private.h"
#include "magick/pixel-private.h"
+#include "magick/property.h"
#include "magick/static.h"
#include "magick/statistic.h"
#include "magick/string_.h"
Include declarations.
*/
#include "magick/studio.h"
+#include "magick/attribute.h"
#include "magick/blob.h"
#include "magick/blob-private.h"
#include "magick/cache.h"
Include declarations.
*/
#include "magick/studio.h"
+#include "magick/attribute.h"
#include "magick/blob.h"
#include "magick/blob-private.h"
#include "magick/cache.h"
Include declarations.
*/
#include "magick/studio.h"
+#include "magick/attribute.h"
#include "magick/blob.h"
#include "magick/blob-private.h"
#include "magick/cache.h"
*/
#include "magick/studio.h"
#include "magick/artifact.h"
+#include "magick/attribute.h"
#include "magick/blob.h"
#include "magick/blob-private.h"
#include "magick/cache.h"
Include declarations.
*/
#include "magick/studio.h"
+#include "magick/attribute.h"
#include "magick/blob.h"
#include "magick/blob-private.h"
#include "magick/cache.h"
Include declarations.
*/
#include "magick/studio.h"
+#include "magick/attribute.h"
#include "magick/blob.h"
#include "magick/blob-private.h"
#include "magick/cache.h"
Include declarations.
*/
#include "magick/studio.h"
+#include "magick/attribute.h"
#include "magick/blob.h"
#include "magick/blob-private.h"
#include "magick/cache.h"
*/
#include "magick/studio.h"
#include "magick/annotate.h"
+#include "magick/attribute.h"
#include "magick/blob.h"
#include "magick/blob-private.h"
#include "magick/cache.h"
<configure name="NAME" value="ImageMagick"/>
<configure name="LIB_VERSION" value="0x657"/>
<configure name="LIB_VERSION_NUMBER" value="6,5,7,0"/>
- <configure name="RELEASE_DATE" value="2009-10-13"/>
+ <configure name="RELEASE_DATE" value="2009-10-14"/>
<configure name="CONFIGURE" value="./configure "/>
<configure name="PREFIX" value="/usr/local"/>
<configure name="EXEC-PREFIX" value="/usr/local"/>
#include "magick/animate.h"
#include "magick/annotate.h"
#include "magick/artifact.h"
+#include "magick/attribute.h"
#include "magick/blob.h"
#include "magick/cache.h"
#include "magick/cache-view.h"
$call Make animate.c
$call Make annotate.c
$call Make artifact.c
+$call Make attribute.c
$call Make blob.c
$call Make cache.c
$call Make cache-view.c
$ deass magick
$ deass wand
$library/create libMagick.olb -
- animate, annotate, artifact, blob, cache, cache-view, cipher, client, coder, -
- color, colormap, colorspace, compare, composite, compress, configure, -
- constitute, decorate, delegate, deprecate, display, distort, draw, -
- effect, enhance, exception, fx, gem, geometry, hashmap, histogram, identify, -
- image, layer, list, locale, log, magic, magick, matrix, memory, mime, -
- module, monitor, montage, option, paint, pixel, PreRvIcccm, profile, -
+ animate, annotate, artifact, attribute, blob, cache, cache-view, cipher, -
+ client, coder, color, colormap, colorspace, compare, composite, compress, -
+ configure, constitute, decorate, delegate, deprecate, display, distort, -
+ draw, effect, enhance, exception, fx, gem, geometry, hashmap, histogram, -
+ identify, image, layer, list, locale, log, magic, magick, matrix, memory, -
+ mime, module, monitor, montage, option, paint, pixel, PreRvIcccm, profile, -
quantize, quantum,quantum-export,quantum-import,random, registry, resample, -
resize, resource, segment, semaphore, -
shear, signature, splay-tree, static, stream, string, thread, timer, token, -
magick/api.h \
magick/artifact.c \
magick/artifact.h \
+ magick/attribute.c \
+ magick/attribute.h \
magick/blob.c \
magick/blob.h \
magick/blob-private.h \
magick/annotate.h \
magick/api.h \
magick/artifact.h \
+ magick/attribute.h \
magick/blob.h \
magick/cache.h \
magick/cache-view.h \
*/
#include "magick/studio.h"
#include "magick/annotate.h"
+#include "magick/attribute.h"
#include "magick/cache-view.h"
#include "magick/client.h"
#include "magick/color.h"
% %
% %
% %
-% I s G r a y I m a g e %
-% %
-% %
-% %
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-% IsGrayImage() returns MagickTrue if all the pixels in the image have the
-% same red, green, and blue intensities.
-%
-% The format of the IsGrayImage method is:
-%
-% MagickBooleanType IsGrayImage(const Image *image,
-% ExceptionInfo *exception)
-%
-% A description of each parameter follows:
-%
-% o image: the image.
-%
-% o exception: return any errors or warnings in this structure.
-%
-*/
-MagickExport MagickBooleanType IsGrayImage(const Image *image,
- ExceptionInfo *exception)
-{
- ImageType
- type;
-
- register const PixelPacket
- *p;
-
- assert(image != (Image *) NULL);
- assert(image->signature == MagickSignature);
- if (image->debug != MagickFalse)
- (void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",image->filename);
- if ((image->type == BilevelType) || (image->type == GrayscaleType) ||
- (image->type == GrayscaleMatteType))
- return(MagickTrue);
- if (image->colorspace == CMYKColorspace)
- return(MagickFalse);
- type=BilevelType;
- switch (image->storage_class)
- {
- case DirectClass:
- case UndefinedClass:
- {
- long
- y;
-
- register long
- x;
-
- CacheView
- *image_view;
-
- image_view=AcquireCacheView(image);
- for (y=0; y < (long) image->rows; y++)
- {
- p=GetCacheViewVirtualPixels(image_view,0,y,image->columns,1,exception);
- if (p == (const PixelPacket *) NULL)
- break;
- for (x=0; x < (long) image->columns; x++)
- {
- if (IsGrayPixel(p) == MagickFalse)
- {
- type=UndefinedType;
- break;
- }
- if ((type == BilevelType) && (IsMonochromePixel(p) == MagickFalse))
- type=GrayscaleType;
- p++;
- }
- if (type == UndefinedType)
- break;
- }
- image_view=DestroyCacheView(image_view);
- break;
- }
- case PseudoClass:
- {
- register long
- i;
-
- p=image->colormap;
- for (i=0; i < (long) image->colors; i++)
- {
- if (IsGrayPixel(p) == MagickFalse)
- {
- type=UndefinedType;
- break;
- }
- if ((type == BilevelType) && (IsMonochromePixel(p) == MagickFalse))
- type=GrayscaleType;
- p++;
- }
- break;
- }
- }
- if (type == UndefinedType)
- return(MagickFalse);
- ((Image *) image)->type=type;
- if ((type == GrayscaleType) && (image->matte != MagickFalse))
- ((Image *) image)->type=GrayscaleMatteType;
- return(MagickTrue);
-}
-\f
-/*
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% %
-% %
-% %
+ I s I m a g e S i m i l a r %
% %
% %
% %
% %
% %
-% I s M o n o c h r o m e I m a g e %
-% %
-% %
-% %
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-% IsMonochromeImage() returns MagickTrue if all the pixels in the image have
-% the same red, green, and blue intensities and the intensity is either
-% 0 or QuantumRange.
-%
-% The format of the IsMonochromeImage method is:
-%
-% MagickBooleanType IsMonochromeImage(const Image *image,
-% ExceptionInfo *exception)
-%
-% A description of each parameter follows:
-%
-% o image: the image.
-%
-% o exception: return any errors or warnings in this structure.
-%
-*/
-MagickExport MagickBooleanType IsMonochromeImage(const Image *image,
- ExceptionInfo *exception)
-{
- ImageType
- type;
-
- register const PixelPacket
- *p;
-
- assert(image != (Image *) NULL);
- assert(image->signature == MagickSignature);
- if (image->debug != MagickFalse)
- (void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",image->filename);
- if (image->type == BilevelType)
- return(MagickTrue);
- if (image->colorspace == CMYKColorspace)
- return(MagickFalse);
- type=BilevelType;
- switch (image->storage_class)
- {
- case DirectClass:
- case UndefinedClass:
- {
- long
- y;
-
- register long
- x;
-
- CacheView
- *image_view;
-
- image_view=AcquireCacheView(image);
- for (y=0; y < (long) image->rows; y++)
- {
- p=GetCacheViewVirtualPixels(image_view,0,y,image->columns,1,exception);
- if (p == (const PixelPacket *) NULL)
- break;
- for (x=0; x < (long) image->columns; x++)
- {
- if (IsMonochromePixel(p) == MagickFalse)
- {
- type=UndefinedType;
- break;
- }
- p++;
- }
- if (type == UndefinedType)
- break;
- }
- image_view=DestroyCacheView(image_view);
- if (y == (long) image->rows)
- ((Image *) image)->type=BilevelType;
- break;
- }
- case PseudoClass:
- {
- register long
- i;
-
- p=image->colormap;
- for (i=0; i < (long) image->colors; i++)
- {
- if (IsMonochromePixel(p) == MagickFalse)
- {
- type=UndefinedType;
- break;
- }
- p++;
- }
- break;
- }
- }
- if (type == UndefinedType)
- return(MagickFalse);
- ((Image *) image)->type=type;
- return(MagickTrue);
-}
-\f
-/*
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% %
-% %
-% %
+ I s O p a c i t y S i m i l a r %
% %
% %
% %
% %
% %
-% I s O p a q u e I m a g e %
-% %
-% %
-% %
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-% IsOpaqueImage() returns MagickTrue if none of the pixels in the image have
-% an opacity value other than opaque (0).
-%
-% The format of the IsOpaqueImage method is:
-%
-% MagickBooleanType IsOpaqueImage(const Image *image,
-% ExceptionInfo *exception)
-%
-% A description of each parameter follows:
-%
-% o image: the image.
-%
-% o exception: return any errors or warnings in this structure.
-%
-*/
-MagickExport MagickBooleanType IsOpaqueImage(const Image *image,
- ExceptionInfo *exception)
-{
- long
- y;
-
- register const PixelPacket
- *p;
-
- register long
- x;
-
- CacheView
- *image_view;
-
- /*
- Determine if image is opaque.
- */
- assert(image != (Image *) NULL);
- assert(image->signature == MagickSignature);
- if (image->debug != MagickFalse)
- (void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",image->filename);
- if (image->matte == MagickFalse)
- return(MagickTrue);
- image_view=AcquireCacheView(image);
- for (y=0; y < (long) image->rows; y++)
- {
- p=GetCacheViewVirtualPixels(image_view,0,y,image->columns,1,exception);
- if (p == (const PixelPacket *) NULL)
- break;
- for (x=0; x < (long) image->columns; x++)
- {
- if (p->opacity != OpaqueOpacity)
- break;
- p++;
- }
- if (x < (long) image->columns)
- break;
- }
- image_view=DestroyCacheView(image_view);
- return(y < (long) image->rows ? MagickFalse : MagickTrue);
-}
-\f
-/*
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% %
-% %
-% %
% L i s t C o l o r I n f o %
% %
% %
% %
% %
% %
-% G e t I m a g e T y p e %
-% %
-% %
-% %
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-% GetImageType() returns the potential type of image:
-%
-% Bilevel Grayscale GrayscaleMatte
-% Palette PaletteMatte TrueColor
-% TrueColorMatte ColorSeparation ColorSeparationMatte
-%
-% To ensure the image type matches its potential, use SetImageType():
-%
-% (void) SetImageType(image,GetImageType(image));
-%
-% The format of the GetImageType method is:
-%
-% ImageType GetImageType(const Image *image,ExceptionInfo *exception)
-%
-% A description of each parameter follows:
-%
-% o image: the image.
-%
-% o exception: return any errors or warnings in this structure.
-%
-*/
-MagickExport ImageType GetImageType(const Image *image,ExceptionInfo *exception)
-{
- assert(image != (Image *) NULL);
- assert(image->signature == MagickSignature);
- if (image->debug != MagickFalse)
- (void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",image->filename);
- if (image->colorspace == CMYKColorspace)
- {
- if (image->matte == MagickFalse)
- return(ColorSeparationType);
- return(ColorSeparationMatteType);
- }
- if (IsMonochromeImage(image,exception) != MagickFalse)
- return(BilevelType);
- if (IsGrayImage(image,exception) != MagickFalse)
- {
- if (image->matte != MagickFalse)
- return(GrayscaleMatteType);
- return(GrayscaleType);
- }
- if (IsPaletteImage(image,exception) != MagickFalse)
- {
- if (image->matte != MagickFalse)
- return(PaletteMatteType);
- return(PaletteType);
- }
- if (image->matte != MagickFalse)
- return(TrueColorMatteType);
- return(TrueColorType);
-}
-\f
-/*
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% %
-% %
-% %
% G e t I m a g e V i r t u a l P i x e l M e t h o d %
% %
% %
*CloneImageInfo(const ImageInfo *),
*DestroyImageInfo(ImageInfo *);
-extern MagickExport ImageType
- GetImageType(const Image *,ExceptionInfo *);
-
extern MagickExport long
GetImageReferenceCount(Image *);
Include declarations.
*/
#include "magick/studio.h"
+#include "magick/attribute.h"
#include "magick/cache.h"
#include "magick/color.h"
#include "magick/compare.h"
*/
#include "magick/studio.h"
#include "magick/artifact.h"
+#include "magick/attribute.h"
#include "magick/blob-private.h"
#include "magick/cache-private.h"
#include "magick/color-private.h"
% %
% %
% %
-+ G e t I m a g e B o u n d i n g B o x %
-% %
-% %
-% %
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-% GetImageBoundingBox() returns the bounding box of an image canvas.
-%
-% The format of the GetImageBoundingBox method is:
-%
-% RectangleInfo GetImageBoundingBox(const Image *image,
-% ExceptionInfo *exception)
-%
-% A description of each parameter follows:
-%
-% o bounds: Method GetImageBoundingBox returns the bounding box of an
-% image canvas.
-%
-% o image: the image.
-%
-% o exception: return any errors or warnings in this structure.
-%
-*/
-MagickExport RectangleInfo GetImageBoundingBox(const Image *image,
- ExceptionInfo *exception)
-{
- long
- y;
-
- MagickBooleanType
- status;
-
- MagickPixelPacket
- target[3],
- zero;
-
- RectangleInfo
- bounds;
-
- register const PixelPacket
- *p;
-
- CacheView
- *image_view;
-
- assert(image != (Image *) NULL);
- assert(image->signature == MagickSignature);
- if (image->debug != MagickFalse)
- (void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",image->filename);
- bounds.width=0;
- bounds.height=0;
- bounds.x=(long) image->columns;
- bounds.y=(long) image->rows;
- GetMagickPixelPacket(image,&target[0]);
- image_view=AcquireCacheView(image);
- p=GetCacheViewVirtualPixels(image_view,0,0,1,1,exception);
- if (p == (const PixelPacket *) NULL)
- {
- image_view=DestroyCacheView(image_view);
- return(bounds);
- }
- SetMagickPixelPacket(image,p,GetCacheViewAuthenticIndexQueue(image_view),
- &target[0]);
- GetMagickPixelPacket(image,&target[1]);
- p=GetCacheViewVirtualPixels(image_view,(long) image->columns-1,0,1,1,
- exception);
- SetMagickPixelPacket(image,p,GetCacheViewAuthenticIndexQueue(image_view),
- &target[1]);
- GetMagickPixelPacket(image,&target[2]);
- p=GetCacheViewVirtualPixels(image_view,0,(long) image->rows-1,1,1,exception);
- SetMagickPixelPacket(image,p,GetCacheViewAuthenticIndexQueue(image_view),
- &target[2]);
- status=MagickTrue;
- GetMagickPixelPacket(image,&zero);
-#if defined(_OPENMP) && (_OPENMP >= 200203)
- #pragma omp parallel for shared(status)
-#endif
- for (y=0; y < (long) image->rows; y++)
- {
- MagickPixelPacket
- pixel;
-
- RectangleInfo
- bounding_box;
-
- register const IndexPacket
- *__restrict indexes;
-
- register const PixelPacket
- *__restrict p;
-
- register long
- x;
-
- if (status == MagickFalse)
- continue;
-#if defined(HAVE_OPENMP)
-# pragma omp critical (MagickCore_GetImageBoundingBox)
-#endif
- bounding_box=bounds;
- p=GetCacheViewVirtualPixels(image_view,0,y,image->columns,1,exception);
- if (p == (const PixelPacket *) NULL)
- {
- status=MagickFalse;
- continue;
- }
- indexes=GetCacheViewVirtualIndexQueue(image_view);
- pixel=zero;
- for (x=0; x < (long) image->columns; x++)
- {
- SetMagickPixelPacket(image,p,indexes+x,&pixel);
- if ((x < bounding_box.x) &&
- (IsMagickColorSimilar(&pixel,&target[0]) == MagickFalse))
- bounding_box.x=x;
- if ((x > (long) bounding_box.width) &&
- (IsMagickColorSimilar(&pixel,&target[1]) == MagickFalse))
- bounding_box.width=(unsigned long) x;
- if ((y < bounding_box.y) &&
- (IsMagickColorSimilar(&pixel,&target[0]) == MagickFalse))
- bounding_box.y=y;
- if ((y > (long) bounding_box.height) &&
- (IsMagickColorSimilar(&pixel,&target[2]) == MagickFalse))
- bounding_box.height=(unsigned long) y;
- p++;
- }
-#if defined(HAVE_OPENMP)
-# pragma omp critical (MagickCore_GetImageBoundingBox)
-#endif
- {
- if (bounding_box.x < bounds.x)
- bounds.x=bounding_box.x;
- if (bounding_box.y < bounds.y)
- bounds.y=bounding_box.y;
- if (bounding_box.width > bounds.width)
- bounds.width=bounding_box.width;
- if (bounding_box.height > bounds.height)
- bounds.height=bounding_box.height;
- }
- }
- image_view=DestroyCacheView(image_view);
- if ((bounds.width == 0) || (bounds.height == 0))
- (void) ThrowMagickException(exception,GetMagickModule(),OptionWarning,
- "GeometryDoesNotContainImage","`%s'",image->filename);
- else
- {
- bounds.width-=(bounds.x-1);
- bounds.height-=(bounds.y-1);
- }
- return(bounds);
-}
-\f
-/*
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% %
-% %
-% %
-% G e t I m a g e C h a n n e l D e p t h %
-% %
-% %
-% %
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-% GetImageChannelDepth() returns the depth of a particular image channel.
-%
-% The format of the GetImageChannelDepth method is:
-%
-% unsigned long GetImageDepth(const Image *image,ExceptionInfo *exception)
-% unsigned long GetImageChannelDepth(const Image *image,
-% const ChannelType channel,ExceptionInfo *exception)
-%
-% A description of each parameter follows:
-%
-% o image: the image.
-%
-% o channel: the channel.
-%
-% o exception: return any errors or warnings in this structure.
-%
-*/
-
-MagickExport unsigned long GetImageDepth(const Image *image,
- ExceptionInfo *exception)
-{
- return(GetImageChannelDepth(image,AllChannels,exception));
-}
-
-MagickExport unsigned long GetImageChannelDepth(const Image *image,
- const ChannelType channel,ExceptionInfo *exception)
-{
- long
- y;
-
- MagickBooleanType
- status;
-
- register long
- id;
-
- unsigned long
- *current_depth,
- depth,
- number_threads;
-
- CacheView
- *image_view;
-
- /*
- Compute image depth.
- */
- assert(image != (Image *) NULL);
- assert(image->signature == MagickSignature);
- if (image->debug != MagickFalse)
- (void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",image->filename);
- number_threads=GetOpenMPMaximumThreads();
- current_depth=(unsigned long *) AcquireQuantumMemory(number_threads,
- sizeof(*current_depth));
- if (current_depth == (unsigned long *) NULL)
- ThrowFatalException(ResourceLimitFatalError,"MemoryAllocationFailed");
- status=MagickTrue;
- for (id=0; id < (long) number_threads; id++)
- current_depth[id]=1;
- if ((image->storage_class == PseudoClass) && (image->matte == MagickFalse))
- {
- register const PixelPacket
- *__restrict p;
-
- register long
- i;
-
- p=image->colormap;
-#if defined(_OPENMP) && (_OPENMP >= 200203)
- #pragma omp parallel for shared(status)
-#endif
- for (i=0; i < (long) image->colors; i++)
- {
- if (status == MagickFalse)
- continue;
- id=GetOpenMPThreadId();
- while (current_depth[id] < MAGICKCORE_QUANTUM_DEPTH)
- {
- MagickStatusType
- status;
-
- QuantumAny
- range;
-
- status=0;
- range=GetQuantumRange(current_depth[id]);
- if ((channel & RedChannel) != 0)
- status|=p->red != ScaleAnyToQuantum(ScaleQuantumToAny(p->red,
- range),range);
- if ((channel & GreenChannel) != 0)
- status|=p->green != ScaleAnyToQuantum(ScaleQuantumToAny(p->green,
- range),range);
- if ((channel & BlueChannel) != 0)
- status|=p->blue != ScaleAnyToQuantum(ScaleQuantumToAny(p->blue,
- range),range);
- if (status == 0)
- break;
- current_depth[id]++;
- }
- p++;
- }
- depth=current_depth[0];
- for (id=1; id < (long) number_threads; id++)
- if (depth < current_depth[id])
- depth=current_depth[id];
- current_depth=(unsigned long *) RelinquishMagickMemory(current_depth);
- return(depth);
- }
- image_view=AcquireCacheView(image);
-#if defined(_OPENMP) && (_OPENMP >= 200203)
- #pragma omp parallel for shared(status)
-#endif
- for (y=0; y < (long) image->rows; y++)
- {
- register const IndexPacket
- *__restrict indexes;
-
- register const PixelPacket
- *__restrict p;
-
- register long
- id,
- x;
-
- if (status == MagickFalse)
- continue;
- id=GetOpenMPThreadId();
- p=GetCacheViewVirtualPixels(image_view,0,y,image->columns,1,exception);
- if (p == (const PixelPacket *) NULL)
- continue;
- indexes=GetCacheViewVirtualIndexQueue(image_view);
- for (x=0; x < (long) image->columns; x++)
- {
- while (current_depth[id] < MAGICKCORE_QUANTUM_DEPTH)
- {
- MagickStatusType
- status;
-
- QuantumAny
- range;
-
- status=0;
- range=GetQuantumRange(current_depth[id]);
- if ((channel & RedChannel) != 0)
- status|=p->red != ScaleAnyToQuantum(ScaleQuantumToAny(p->red,range),
- range);
- if ((channel & GreenChannel) != 0)
- status|=p->green != ScaleAnyToQuantum(ScaleQuantumToAny(p->green,
- range),range);
- if ((channel & BlueChannel) != 0)
- status|=p->blue != ScaleAnyToQuantum(ScaleQuantumToAny(p->blue,range),
- range);
- if (((channel & OpacityChannel) != 0) && (image->matte != MagickFalse))
- status|=p->opacity != ScaleAnyToQuantum(ScaleQuantumToAny(p->opacity,
- range),range);
- if (((channel & IndexChannel) != 0) &&
- (image->colorspace == CMYKColorspace))
- status|=indexes[x] != ScaleAnyToQuantum(ScaleQuantumToAny(indexes[x],
- range),range);
- if (status == 0)
- break;
- current_depth[id]++;
- }
- p++;
- }
- if (current_depth[id] == MAGICKCORE_QUANTUM_DEPTH)
- status=MagickFalse;
- }
- image_view=DestroyCacheView(image_view);
- depth=current_depth[0];
- for (id=1; id < (long) number_threads; id++)
- if (depth < current_depth[id])
- depth=current_depth[id];
- current_depth=(unsigned long *) RelinquishMagickMemory(current_depth);
- return(depth);
-}
-\f
-/*
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% %
-% %
-% %
+ G e t I m a g e C h a n n e l E x t r e m a %
% %
% %
}
return(channel_statistics);
}
-\f
-/*
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% %
-% %
-% %
-% G e t I m a g e Q u a n t u m D e p t h %
-% %
-% %
-% %
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-% GetImageQuantumDepth() returns the depth of the image rounded to a legal
-% quantum depth: 8, 16, or 32.
-%
-% The format of the GetImageQuantumDepth method is:
-%
-% unsigned long GetImageQuantumDepth(const Image *image,
-% const MagickBooleanType constrain)
-%
-% A description of each parameter follows:
-%
-% o image: the image.
-%
-% o constrain: A value other than MagickFalse, constrains the depth to
-% a maximum of MAGICKCORE_QUANTUM_DEPTH.
-%
-*/
-MagickExport unsigned long GetImageQuantumDepth(const Image *image,
- const MagickBooleanType constrain)
-{
- unsigned long
- depth;
-
- depth=image->depth;
- if (depth <= 8)
- depth=8;
- else
- if (depth <= 16)
- depth=16;
- else
- if (depth <= 32)
- depth=32;
- else
- if (depth <= 64)
- depth=64;
- if (constrain != MagickFalse)
- depth=(unsigned long) MagickMin((double) depth,(double)
- MAGICKCORE_QUANTUM_DEPTH);
- return(depth);
-}
-\f
-/*
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% %
-% %
-% %
-% S e t I m a g e C h a n n e l D e p t h %
-% %
-% %
-% %
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-% SetImageChannelDepth() sets the depth of the image.
-%
-% The format of the SetImageChannelDepth method is:
-%
-% MagickBooleanType SetImageDepth(Image *image,const unsigned long depth)
-% MagickBooleanType SetImageChannelDepth(Image *image,
-% const ChannelType channel,const unsigned long depth)
-%
-% A description of each parameter follows:
-%
-% o image: the image.
-%
-% o channel: the channel.
-%
-% o depth: the image depth.
-%
-*/
-
-MagickExport MagickBooleanType SetImageDepth(Image *image,
- const unsigned long depth)
-{
- return(SetImageChannelDepth(image,AllChannels,depth));
-}
-
-MagickExport MagickBooleanType SetImageChannelDepth(Image *image,
- const ChannelType channel,const unsigned long depth)
-{
- ExceptionInfo
- *exception;
-
- long
- y;
-
- MagickBooleanType
- status;
-
- QuantumAny
- range;
-
- CacheView
- *image_view;
-
- assert(image != (Image *) NULL);
- if (image->debug != MagickFalse)
- (void) LogMagickEvent(TraceEvent,GetMagickModule(),"...");
- assert(image->signature == MagickSignature);
- if (GetImageDepth(image,&image->exception) <= (unsigned long)
- MagickMin((double) depth,(double) MAGICKCORE_QUANTUM_DEPTH))
- {
- image->depth=depth;
- return(MagickTrue);
- }
- /*
- Scale pixels to desired depth.
- */
- status=MagickTrue;
- range=GetQuantumRange(depth);
- exception=(&image->exception);
- image_view=AcquireCacheView(image);
-#if defined(_OPENMP) && (_OPENMP >= 200203)
- #pragma omp parallel for shared(status)
-#endif
- for (y=0; y < (long) image->rows; y++)
- {
- register IndexPacket
- *__restrict indexes;
-
- register long
- x;
-
- register PixelPacket
- *__restrict q;
-
- if (status == MagickFalse)
- continue;
- q=GetCacheViewAuthenticPixels(image_view,0,y,image->columns,1,
- exception);
- if (q == (PixelPacket *) NULL)
- {
- status=MagickFalse;
- continue;
- }
- indexes=GetCacheViewAuthenticIndexQueue(image_view);
- for (x=0; x < (long) image->columns; x++)
- {
- if ((channel & RedChannel) != 0)
- q->red=ScaleAnyToQuantum(ScaleQuantumToAny(q->red,range),range);
- if ((channel & GreenChannel) != 0)
- q->green=ScaleAnyToQuantum(ScaleQuantumToAny(q->green,range),range);
- if ((channel & BlueChannel) != 0)
- q->blue=ScaleAnyToQuantum(ScaleQuantumToAny(q->blue,range),range);
- if (((channel & OpacityChannel) != 0) && (image->matte != MagickFalse))
- q->opacity=ScaleAnyToQuantum(ScaleQuantumToAny(q->opacity,range),range);
- if (((channel & IndexChannel) != 0) &&
- (image->colorspace == CMYKColorspace))
- indexes[x]=ScaleAnyToQuantum(ScaleQuantumToAny(indexes[x],range),range);
- q++;
- }
- if (SyncCacheViewAuthenticPixels(image_view,exception) == MagickFalse)
- {
- status=MagickFalse;
- continue;
- }
- }
- image_view=DestroyCacheView(image_view);
- if (image->storage_class == PseudoClass)
- {
- QuantumAny
- range;
-
- register long
- i;
-
- register PixelPacket
- *__restrict p;
-
- p=image->colormap;
- range=GetQuantumRange(depth);
-#if defined(_OPENMP) && (_OPENMP >= 200203)
- #pragma omp parallel for shared(status)
-#endif
- for (i=0; i < (long) image->colors; i++)
- {
- if ((channel & RedChannel) != 0)
- p->red=ScaleAnyToQuantum(ScaleQuantumToAny(p->red,range),range);
- if ((channel & GreenChannel) != 0)
- p->green=ScaleAnyToQuantum(ScaleQuantumToAny(p->green,range),range);
- if ((channel & BlueChannel) != 0)
- p->blue=ScaleAnyToQuantum(ScaleQuantumToAny(p->blue,range),range);
- if ((channel & OpacityChannel) != 0)
- p->opacity=ScaleAnyToQuantum(ScaleQuantumToAny(p->opacity,range),
- range);
- p++;
- }
- }
- image->depth=depth;
- return(status);
-}
ExceptionInfo *),
GetImageRange(const Image *,double *,double *,ExceptionInfo *),
GetImageMean(const Image *,double *,double *,ExceptionInfo *),
- GetImageKurtosis(const Image *,double *,double *,ExceptionInfo *),
- SetImageChannelDepth(Image *,const ChannelType,const unsigned long),
- SetImageDepth(Image *,const unsigned long);
-
-extern MagickExport RectangleInfo
- GetImageBoundingBox(const Image *,ExceptionInfo *exception);
-
-extern MagickExport unsigned long
- GetImageChannelDepth(const Image *,const ChannelType,ExceptionInfo *),
- GetImageDepth(const Image *,ExceptionInfo *),
- GetImageQuantumDepth(const Image *,const MagickBooleanType);
+ GetImageKurtosis(const Image *,double *,double *,ExceptionInfo *);
#if defined(__cplusplus) || defined(c_plusplus)
}
Include declarations.
*/
#include "magick/studio.h"
+#include "magick/attribute.h"
#include "magick/cache.h"
#include "magick/cache-view.h"
#include "magick/color.h"
#define MagickLibVersionText "6.5.7"
#define MagickLibVersionNumber 2,0,0
#define MagickLibSubversion "-0"
-#define MagickReleaseDate "2009-10-13"
+#define MagickReleaseDate "2009-10-14"
#define MagickChangeDate "20091014"
#define MagickAuthoritativeURL "http://www.imagemagick.org"
#define MagickHomeURL "file:///usr/local/share/doc/ImageMagick-6.5.7/index.html"