]> granicus.if.org Git - imagemagick/blobdiff - magick/attribute.c
(no commit message)
[imagemagick] / magick / attribute.c
index b0634ffa13216a2bfc8ef4e1ea27429e8fd004d3..8378d460c365704551cb3826c065595c8ea2198d 100644 (file)
@@ -17,7 +17,7 @@
 %                                October 2002                                 %
 %                                                                             %
 %                                                                             %
-%  Copyright 1999-2010 ImageMagick Studio LLC, a non-profit organization      %
+%  Copyright 1999-2011 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  %
@@ -123,9 +123,6 @@ MagickExport RectangleInfo GetImageBoundingBox(const Image *image,
   CacheView
     *image_view;
 
-  ssize_t
-    y;
-
   MagickBooleanType
     status;
 
@@ -139,6 +136,9 @@ MagickExport RectangleInfo GetImageBoundingBox(const Image *image,
   register const PixelPacket
     *p;
 
+  ssize_t
+    y;
+
   assert(image != (Image *) NULL);
   assert(image->signature == MagickSignature);
   if (image->debug != MagickFalse)
@@ -276,7 +276,7 @@ MagickExport RectangleInfo GetImageBoundingBox(const Image *image,
 */
 MagickExport size_t GetImageDepth(const Image *image,ExceptionInfo *exception)
 {
-  return(GetImageChannelDepth(image,AllChannels,exception));
+  return(GetImageChannelDepth(image,CompositeChannels,exception));
 }
 
 MagickExport size_t GetImageChannelDepth(const Image *image,
@@ -285,9 +285,6 @@ MagickExport size_t GetImageChannelDepth(const Image *image,
   CacheView
     *image_view;
 
-  ssize_t
-    y;
-
   MagickBooleanType
     status;
 
@@ -299,6 +296,9 @@ MagickExport size_t GetImageChannelDepth(const Image *image,
     depth,
     number_threads;
 
+  ssize_t
+    y;
+
   /*
     Compute image depth.
   */
@@ -328,9 +328,11 @@ MagickExport size_t GetImageChannelDepth(const Image *image,
 #endif
       for (i=0; i < (ssize_t) image->colors; i++)
       {
+        const int
+          id = GetOpenMPThreadId();
+
         if (status == MagickFalse)
           continue;
-        id=GetOpenMPThreadId();
         while (current_depth[id] < MAGICKCORE_QUANTUM_DEPTH)
         {
           MagickStatusType
@@ -342,13 +344,13 @@ MagickExport size_t GetImageChannelDepth(const Image *image,
           status=0;
           range=GetQuantumRange(current_depth[id]);
           if ((channel & RedChannel) != 0)
-            status|=p->red != ScaleAnyToQuantum(ScaleQuantumToAny(p->red,
+            status|=GetRedPixelComponent(p) != ScaleAnyToQuantum(ScaleQuantumToAny(GetRedPixelComponent(p),
               range),range);
           if ((channel & GreenChannel) != 0)
-            status|=p->green != ScaleAnyToQuantum(ScaleQuantumToAny(p->green,
+            status|=GetGreenPixelComponent(p) != ScaleAnyToQuantum(ScaleQuantumToAny(GetGreenPixelComponent(p),
               range),range);
           if ((channel & BlueChannel) != 0)
-            status|=p->blue != ScaleAnyToQuantum(ScaleQuantumToAny(p->blue,
+            status|=GetBluePixelComponent(p) != ScaleAnyToQuantum(ScaleQuantumToAny(GetBluePixelComponent(p),
               range),range);
           if (status == 0)
             break;
@@ -369,8 +371,8 @@ MagickExport size_t GetImageChannelDepth(const Image *image,
 #endif
   for (y=0; y < (ssize_t) image->rows; y++)
   {
-    int
-      id;
+    const int
+      id = GetOpenMPThreadId();
 
     register const IndexPacket
       *restrict indexes;
@@ -383,7 +385,6 @@ MagickExport size_t GetImageChannelDepth(const Image *image,
 
     if (status == MagickFalse)
       continue;
-    id=GetOpenMPThreadId();
     p=GetCacheViewVirtualPixels(image_view,0,y,image->columns,1,exception);
     if (p == (const PixelPacket *) NULL)
       continue;
@@ -401,21 +402,22 @@ MagickExport size_t GetImageChannelDepth(const Image *image,
         status=0;
         range=GetQuantumRange(current_depth[id]);
         if ((channel & RedChannel) != 0)
-          status|=p->red != ScaleAnyToQuantum(ScaleQuantumToAny(p->red,range),
-            range);
+          status|=GetRedPixelComponent(p) != ScaleAnyToQuantum(
+            ScaleQuantumToAny(GetRedPixelComponent(p),range),range);
         if ((channel & GreenChannel) != 0)
-          status|=p->green != ScaleAnyToQuantum(ScaleQuantumToAny(p->green,
-            range),range);
+          status|=GetGreenPixelComponent(p) != ScaleAnyToQuantum(
+            ScaleQuantumToAny(GetGreenPixelComponent(p),range),range);
         if ((channel & BlueChannel) != 0)
-          status|=p->blue != ScaleAnyToQuantum(ScaleQuantumToAny(p->blue,range),
-            range);
+          status|=GetBluePixelComponent(p) != ScaleAnyToQuantum(
+            ScaleQuantumToAny(GetBluePixelComponent(p),range),range);
         if (((channel & OpacityChannel) != 0) && (image->matte != MagickFalse))
-          status|=p->opacity != ScaleAnyToQuantum(ScaleQuantumToAny(p->opacity,
-            range),range);
+          status|=GetOpacityPixelComponent(p) != ScaleAnyToQuantum(
+            ScaleQuantumToAny(GetOpacityPixelComponent(p),range),range);
         if (((channel & IndexChannel) != 0) &&
             (image->colorspace == CMYKColorspace))
-          status|=indexes[x] != ScaleAnyToQuantum(ScaleQuantumToAny(indexes[x],
-            range),range);
+          status|=GetIndexPixelComponent(indexes+x) !=
+            ScaleAnyToQuantum(ScaleQuantumToAny(GetIndexPixelComponent(indexes+
+            x),range),range);
         if (status == 0)
           break;
         current_depth[id]++;
@@ -675,15 +677,15 @@ MagickExport MagickBooleanType IsMonochromeImage(const Image *image,
   ImageType
     type;
 
-  ssize_t
-    y;
-
   register ssize_t
     x;
 
   register const PixelPacket
     *p;
 
+  ssize_t
+    y;
+
   assert(image != (Image *) NULL);
   assert(image->signature == MagickSignature);
   if (image->debug != MagickFalse)
@@ -750,15 +752,15 @@ MagickExport MagickBooleanType IsOpaqueImage(const Image *image,
   CacheView
     *image_view;
 
-  ssize_t
-    y;
-
   register const PixelPacket
     *p;
 
   register ssize_t
     x;
 
+  ssize_t
+    y;
+
   /*
     Determine if image is opaque.
   */
@@ -776,7 +778,7 @@ MagickExport MagickBooleanType IsOpaqueImage(const Image *image,
       break;
     for (x=0; x < (ssize_t) image->columns; x++)
     {
-      if (p->opacity != OpaqueOpacity)
+      if (GetOpacityPixelComponent(p) != OpaqueOpacity)
         break;
       p++;
     }
@@ -818,7 +820,7 @@ MagickExport MagickBooleanType IsOpaqueImage(const Image *image,
 MagickExport MagickBooleanType SetImageDepth(Image *image,
   const size_t depth)
 {
-  return(SetImageChannelDepth(image,AllChannels,depth));
+  return(SetImageChannelDepth(image,CompositeChannels,depth));
 }
 
 MagickExport MagickBooleanType SetImageChannelDepth(Image *image,
@@ -830,15 +832,15 @@ MagickExport MagickBooleanType SetImageChannelDepth(Image *image,
   ExceptionInfo
     *exception;
 
-  ssize_t
-    y;
-
   MagickBooleanType
     status;
 
   QuantumAny
     range;
 
+  ssize_t
+    y;
+
   assert(image != (Image *) NULL);
   if (image->debug != MagickFalse)
     (void) LogMagickEvent(TraceEvent,GetMagickModule(),"...");
@@ -883,16 +885,21 @@ MagickExport MagickBooleanType SetImageChannelDepth(Image *image,
     for (x=0; x < (ssize_t) image->columns; x++)
     {
       if ((channel & RedChannel) != 0)
-        q->red=ScaleAnyToQuantum(ScaleQuantumToAny(q->red,range),range);
+        SetRedPixelComponent(q,ScaleAnyToQuantum(ScaleQuantumToAny(
+          GetRedPixelComponent(q),range),range));
       if ((channel & GreenChannel) != 0)
-        q->green=ScaleAnyToQuantum(ScaleQuantumToAny(q->green,range),range);
+        SetGreenPixelComponent(q,ScaleAnyToQuantum(ScaleQuantumToAny(
+          GetGreenPixelComponent(q),range),range));
       if ((channel & BlueChannel) != 0)
-        q->blue=ScaleAnyToQuantum(ScaleQuantumToAny(q->blue,range),range);
+        SetBluePixelComponent(q,ScaleAnyToQuantum(ScaleQuantumToAny(
+          GetBluePixelComponent(q),range),range));
       if (((channel & OpacityChannel) != 0) && (image->matte != MagickFalse))
-        q->opacity=ScaleAnyToQuantum(ScaleQuantumToAny(q->opacity,range),range);
+        SetOpacityPixelComponent(q,ScaleAnyToQuantum(ScaleQuantumToAny(
+          GetOpacityPixelComponent(q),range),range));
       if (((channel & IndexChannel) != 0) &&
           (image->colorspace == CMYKColorspace))
-        indexes[x]=ScaleAnyToQuantum(ScaleQuantumToAny(indexes[x],range),range);
+        SetIndexPixelComponent(indexes+x,ScaleAnyToQuantum(ScaleQuantumToAny(
+          GetIndexPixelComponent(indexes+x),range),range));
       q++;
     }
     if (SyncCacheViewAuthenticPixels(image_view,exception) == MagickFalse)
@@ -917,13 +924,13 @@ MagickExport MagickBooleanType SetImageChannelDepth(Image *image,
       for (i=0; i < (ssize_t) image->colors; i++)
       {
         if ((channel & RedChannel) != 0)
-          p->red=ScaleAnyToQuantum(ScaleQuantumToAny(p->red,range),range);
+          GetRedPixelComponent(p)=ScaleAnyToQuantum(ScaleQuantumToAny(GetRedPixelComponent(p),range),range);
         if ((channel & GreenChannel) != 0)
-          p->green=ScaleAnyToQuantum(ScaleQuantumToAny(p->green,range),range);
+          GetGreenPixelComponent(p)=ScaleAnyToQuantum(ScaleQuantumToAny(GetGreenPixelComponent(p),range),range);
         if ((channel & BlueChannel) != 0)
-          p->blue=ScaleAnyToQuantum(ScaleQuantumToAny(p->blue,range),range);
+          GetBluePixelComponent(p)=ScaleAnyToQuantum(ScaleQuantumToAny(GetBluePixelComponent(p),range),range);
         if ((channel & OpacityChannel) != 0)
-          p->opacity=ScaleAnyToQuantum(ScaleQuantumToAny(p->opacity,range),
+          GetOpacityPixelComponent(p)=ScaleAnyToQuantum(ScaleQuantumToAny(GetOpacityPixelComponent(p),range),
             range);
         p++;
       }