]> granicus.if.org Git - imagemagick/blobdiff - MagickCore/quantum.c
(no commit message)
[imagemagick] / MagickCore / quantum.c
index c0227c031ac0c682bbb4e1c2526045efbbf291d4..914e4aefbc2c6a9769ce3bbf103c9a989d00cbcd 100644 (file)
 %             MagicCore Methods to Acquire / Destroy Quantum Pixels           %
 %                                                                             %
 %                             Software Design                                 %
-%                               John Cristy                                   %
+%                                  Cristy                                     %
 %                               October 1998                                  %
 %                                                                             %
 %                                                                             %
-%  Copyright 1999-2008 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.  You may  %
@@ -128,9 +128,9 @@ MagickExport QuantumInfo *AcquireQuantumInfo(const ImageInfo *image_info,
   if (image == (const Image *) NULL)
     return(quantum_info);
   status=SetQuantumDepth(image,quantum_info,image->depth);
+  quantum_info->endian=image->endian;
   if (status == MagickFalse)
     quantum_info=DestroyQuantumInfo(quantum_info);
-  quantum_info->endian=image->endian;
   return(quantum_info);
 }
 \f
@@ -218,7 +218,7 @@ MagickExport QuantumInfo *DestroyQuantumInfo(QuantumInfo *quantum_info)
   if (quantum_info->pixels != (unsigned char **) NULL)
     DestroyQuantumPixels(quantum_info);
   if (quantum_info->semaphore != (SemaphoreInfo *) NULL)
-    DestroySemaphoreInfo(&quantum_info->semaphore);
+    RelinquishSemaphoreInfo(&quantum_info->semaphore);
   quantum_info->signature=(~MagickSignature);
   quantum_info=(QuantumInfo *) RelinquishMagickMemory(quantum_info);
   return(quantum_info);
@@ -332,6 +332,35 @@ MagickExport size_t GetQuantumExtent(const Image *image,
 %                                                                             %
 %                                                                             %
 %                                                                             %
+%   G e t Q u a n t u m E n d i a n                                           %
+%                                                                             %
+%                                                                             %
+%                                                                             %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+%  GetQuantumEndian() returns the quantum endian of the image.
+%
+%  The endian of the GetQuantumEndian method is:
+%
+%      EndianType GetQuantumEndian(const QuantumInfo *quantum_info)
+%
+%  A description of each parameter follows:
+%
+%    o quantum_info: the quantum info.
+%
+*/
+MagickExport EndianType GetQuantumEndian(const QuantumInfo *quantum_info)
+{
+  assert(quantum_info != (QuantumInfo *) NULL);
+  assert(quantum_info->signature == MagickSignature);
+  return(quantum_info->endian);
+}
+\f
+/*
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%                                                                             %
+%                                                                             %
+%                                                                             %
 %   G e t Q u a n t u m F o r m a t                                           %
 %                                                                             %
 %                                                                             %
@@ -392,7 +421,7 @@ MagickExport void GetQuantumInfo(const ImageInfo *image_info,
   quantum_info->maximum=1.0;
   quantum_info->scale=QuantumRange;
   quantum_info->pack=MagickTrue;
-  quantum_info->semaphore=AllocateSemaphoreInfo();
+  quantum_info->semaphore=AcquireSemaphoreInfo();
   quantum_info->signature=MagickSignature;
   if (image_info == (const ImageInfo *) NULL)
     return;
@@ -649,8 +678,8 @@ MagickExport MagickBooleanType SetQuantumDepth(const Image *image,
     }
   if (quantum_info->pixels != (unsigned char **) NULL)
     DestroyQuantumPixels(quantum_info);
-  status=AcquireQuantumPixels(quantum_info,(6+quantum_info->pad)*image->columns*
-    ((quantum_info->depth+7)/8));  /* allow for CMYKA + RLE byte + pad */
+  status=AcquireQuantumPixels(quantum_info,(MaxPixelChannels+quantum_info->pad)*
+    image->columns*((quantum_info->depth+7)/8));
   return(status);
 }
 \f
@@ -659,6 +688,46 @@ MagickExport MagickBooleanType SetQuantumDepth(const Image *image,
 %                                                                             %
 %                                                                             %
 %                                                                             %
+%   S e t Q u a n t u m E n d i a n                                           %
+%                                                                             %
+%                                                                             %
+%                                                                             %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+%  SetQuantumEndian() sets the quantum endian.
+%
+%  The endian of the SetQuantumEndian method is:
+%
+%      MagickBooleanType SetQuantumEndian(const Image *image,
+%        QuantumInfo *quantum_info,const EndianType endian)
+%
+%  A description of each parameter follows:
+%
+%    o image: the image.
+%
+%    o quantum_info: the quantum info.
+%
+%    o endian: the quantum endian.
+%
+*/
+MagickExport MagickBooleanType SetQuantumEndian(const Image *image,
+  QuantumInfo *quantum_info,const EndianType endian)
+{
+  assert(image != (Image *) NULL);
+  assert(image->signature == MagickSignature);
+  if (image->debug != MagickFalse)
+    (void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",image->filename);
+  assert(quantum_info != (QuantumInfo *) NULL);
+  assert(quantum_info->signature == MagickSignature);
+  quantum_info->endian=endian;
+  return(SetQuantumDepth(image,quantum_info,quantum_info->depth));
+}
+\f
+/*
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%                                                                             %
+%                                                                             %
+%                                                                             %
 %   S e t Q u a n t u m F o r m a t                                           %
 %                                                                             %
 %                                                                             %