]> granicus.if.org Git - imagemagick/blobdiff - MagickCore/quantum-export.c
Add RobidouxSharp filter depreciate Bessel Filter and Static Gravity
[imagemagick] / MagickCore / quantum-export.c
index de0ea4498ff57cdbcaae2fa7c62c1ee99a2052c2..4bd5300eef1a248ee806bd129428ba51efc33e9e 100644 (file)
 %
 %  The format of the ExportQuantumPixels method is:
 %
-%      size_t ExportQuantumPixels(const Image *image,
-%        const CacheView *image_view,const QuantumInfo *quantum_info,
-%        const QuantumType quantum_type,unsigned char *pixels,
-%        ExceptionInfo *exception)
+%      size_t ExportQuantumPixels(const Image *image,CacheView *image_view,
+%        QuantumInfo *quantum_info,const QuantumType quantum_type,
+%        unsigned char *pixels,ExceptionInfo *exception)
 %
 %  A description of each parameter follows:
 %
 %
 */
 
-static inline unsigned char *PopDoublePixel(const QuantumState *quantum_state,
+static inline unsigned char *PopDoublePixel(QuantumInfo *quantum_info,
   const double pixel,unsigned char *pixels)
 {
   double
@@ -121,8 +120,8 @@ static inline unsigned char *PopDoublePixel(const QuantumState *quantum_state,
     quantum[8];
 
   p=(double *) quantum;
-  *p=(double) (pixel*quantum_state->inverse_scale+quantum_state->minimum);
-  if (quantum_state->endian != LSBEndian)
+  *p=(double) (pixel*quantum_info->state.inverse_scale+quantum_info->minimum);
+  if (quantum_info->endian != LSBEndian)
     {
       *pixels++=quantum[7];
       *pixels++=quantum[6];
@@ -145,7 +144,7 @@ static inline unsigned char *PopDoublePixel(const QuantumState *quantum_state,
   return(pixels);
 }
 
-static inline unsigned char *PopFloatPixel(const QuantumState *quantum_state,
+static inline unsigned char *PopFloatPixel(QuantumInfo *quantum_info,
   const float pixel,unsigned char *pixels)
 {
   float
@@ -155,9 +154,9 @@ static inline unsigned char *PopFloatPixel(const QuantumState *quantum_state,
     quantum[4];
 
   p=(float *) quantum;
-  *p=(float) ((double) pixel*quantum_state->inverse_scale+
-    quantum_state->minimum);
-  if (quantum_state->endian != LSBEndian)
+  *p=(float) ((double) pixel*quantum_info->state.inverse_scale+
+    quantum_info->minimum);
+  if (quantum_info->endian != LSBEndian)
     {
       *pixels++=quantum[3];
       *pixels++=quantum[2];
@@ -172,8 +171,8 @@ static inline unsigned char *PopFloatPixel(const QuantumState *quantum_state,
   return(pixels);
 }
 
-static inline unsigned char *PopQuantumPixel(QuantumState *quantum_state,
-  const size_t depth,const QuantumAny pixel,unsigned char *pixels)
+static inline unsigned char *PopQuantumPixel(QuantumInfo *quantum_info,
+  const QuantumAny pixel,unsigned char *pixels)
 {
   register ssize_t
     i;
@@ -181,30 +180,30 @@ static inline unsigned char *PopQuantumPixel(QuantumState *quantum_state,
   size_t
     quantum_bits;
 
-  if (quantum_state->bits == 0UL)
-    quantum_state->bits=8U;
-  for (i=(ssize_t) depth; i > 0L; )
+  if (quantum_info->state.bits == 0UL)
+    quantum_info->state.bits=8U;
+  for (i=(ssize_t) quantum_info->depth; i > 0L; )
   {
     quantum_bits=(size_t) i;
-    if (quantum_bits > quantum_state->bits)
-      quantum_bits=quantum_state->bits;
+    if (quantum_bits > quantum_info->state.bits)
+      quantum_bits=quantum_info->state.bits;
     i-=(ssize_t) quantum_bits;
-    if (quantum_state->bits == 8UL)
+    if (quantum_info->state.bits == 8UL)
       *pixels='\0';
-    quantum_state->bits-=quantum_bits;
+    quantum_info->state.bits-=quantum_bits;
     *pixels|=(((pixel >> i) &~ ((~0UL) << quantum_bits)) <<
-      quantum_state->bits);
-    if (quantum_state->bits == 0UL)
+      quantum_info->state.bits);
+    if (quantum_info->state.bits == 0UL)
       {
         pixels++;
-        quantum_state->bits=8UL;
+        quantum_info->state.bits=8UL;
       }
   }
   return(pixels);
 }
 
-static inline unsigned char *PopQuantumLongPixel(QuantumState *quantum_state,
-  const size_t depth,const size_t pixel,unsigned char *pixels)
+static inline unsigned char *PopQuantumLongPixel(QuantumInfo *quantum_info,
+  const size_t pixel,unsigned char *pixels)
 {
   register ssize_t
     i;
@@ -212,42 +211,39 @@ static inline unsigned char *PopQuantumLongPixel(QuantumState *quantum_state,
   size_t
     quantum_bits;
 
-  if (quantum_state->bits == 0U)
-    quantum_state->bits=32UL;
-  for (i=(ssize_t) depth; i > 0; )
+  if (quantum_info->state.bits == 0U)
+    quantum_info->state.bits=32UL;
+  for (i=(ssize_t) quantum_info->depth; i > 0; )
   {
     quantum_bits=(size_t) i;
-    if (quantum_bits > quantum_state->bits)
-      quantum_bits=quantum_state->bits;
-    quantum_state->pixel|=(((pixel >> (depth-i)) &
-      quantum_state->mask[quantum_bits]) << (32U-quantum_state->bits));
+    if (quantum_bits > quantum_info->state.bits)
+      quantum_bits=quantum_info->state.bits;
+    quantum_info->state.pixel|=(((pixel >> (quantum_info->depth-i)) &
+      quantum_info->state.mask[quantum_bits]) << (32U-
+        quantum_info->state.bits));
     i-=(ssize_t) quantum_bits;
-    quantum_state->bits-=quantum_bits;
-    if (quantum_state->bits == 0U)
+    quantum_info->state.bits-=quantum_bits;
+    if (quantum_info->state.bits == 0U)
       {
-        pixels=PopLongPixel(quantum_state->endian,quantum_state->pixel,pixels);
-        quantum_state->pixel=0U;
-        quantum_state->bits=32U;
+        pixels=PopLongPixel(quantum_info->endian,quantum_info->state.pixel,
+          pixels);
+        quantum_info->state.pixel=0U;
+        quantum_info->state.bits=32U;
       }
   }
   return(pixels);
 }
 
-static void ExportAlphaQuantum(const Image *image,
-  const QuantumInfo *quantum_info,QuantumState quantum_state,
+static void ExportAlphaQuantum(const Image *image,QuantumInfo *quantum_info,
   const MagickSizeType number_pixels,const Quantum *restrict p,
   unsigned char *restrict q,ExceptionInfo *exception)
 {
-  EndianType
-    endian;
-
   QuantumAny
     range;
 
   register ssize_t
     x;
 
-  endian=quantum_state.endian;
   switch (quantum_info->depth)
   {
     case 8:
@@ -274,7 +270,7 @@ static void ExportAlphaQuantum(const Image *image,
           for (x=0; x < (ssize_t) number_pixels; x++)
           {
             pixel=SinglePrecisionToHalf(QuantumScale*GetPixelAlpha(image,p));
-            q=PopShortPixel(endian,pixel,q);
+            q=PopShortPixel(quantum_info->endian,pixel,q);
             p+=GetPixelChannels(image);
             q+=quantum_info->pad;
           }
@@ -283,7 +279,7 @@ static void ExportAlphaQuantum(const Image *image,
       for (x=0; x < (ssize_t) number_pixels; x++)
       {
         pixel=ScaleQuantumToShort(GetPixelAlpha(image,p));
-        q=PopShortPixel(endian,pixel,q);
+        q=PopShortPixel(quantum_info->endian,pixel,q);
         p+=GetPixelChannels(image);
         q+=quantum_info->pad;
       }
@@ -298,7 +294,7 @@ static void ExportAlphaQuantum(const Image *image,
         {
           for (x=0; x < (ssize_t) number_pixels; x++)
           {
-            q=PopFloatPixel(&quantum_state,(float) GetPixelAlpha(image,p),q);
+            q=PopFloatPixel(quantum_info,(float) GetPixelAlpha(image,p),q);
             p+=GetPixelChannels(image);
             q+=quantum_info->pad;
           }
@@ -307,7 +303,7 @@ static void ExportAlphaQuantum(const Image *image,
       for (x=0; x < (ssize_t) number_pixels; x++)
       {
         pixel=ScaleQuantumToLong(GetPixelAlpha(image,p));
-        q=PopLongPixel(endian,pixel,q);
+        q=PopLongPixel(quantum_info->endian,pixel,q);
         p+=GetPixelChannels(image);
         q+=quantum_info->pad;
       }
@@ -319,7 +315,7 @@ static void ExportAlphaQuantum(const Image *image,
         {
           for (x=0; x < (ssize_t) number_pixels; x++)
           {
-            q=PopDoublePixel(&quantum_state,(double) GetPixelAlpha(image,p),q);
+            q=PopDoublePixel(quantum_info,(double) GetPixelAlpha(image,p),q);
             p+=GetPixelChannels(image);
             q+=quantum_info->pad;
           }
@@ -331,8 +327,8 @@ static void ExportAlphaQuantum(const Image *image,
       range=GetQuantumRange(quantum_info->depth);
       for (x=0; x < (ssize_t) number_pixels; x++)
       {
-        q=PopQuantumPixel(&quantum_state,quantum_info->depth,
-          ScaleQuantumToAny(GetPixelAlpha(image,p),range),q);
+        q=PopQuantumPixel(quantum_info,ScaleQuantumToAny(GetPixelAlpha(image,p),
+          range),q);
         p+=GetPixelChannels(image);
         q+=quantum_info->pad;
       }
@@ -341,13 +337,10 @@ static void ExportAlphaQuantum(const Image *image,
   }
 }
 
-static void ExportBGRQuantum(const Image *image,const QuantumInfo *quantum_info,
-  QuantumState quantum_state,const MagickSizeType number_pixels,
-  const Quantum *restrict p,unsigned char *restrict q,ExceptionInfo *exception)
+static void ExportBGRQuantum(const Image *image,QuantumInfo *quantum_info,
+  const MagickSizeType number_pixels,const Quantum *restrict p,
+  unsigned char *restrict q,ExceptionInfo *exception)
 {
-  EndianType
-    endian;
-
   QuantumAny
     range;
 
@@ -357,7 +350,6 @@ static void ExportBGRQuantum(const Image *image,const QuantumInfo *quantum_info,
   ssize_t
     bit;
 
-  endian=quantum_state.endian;
   switch (quantum_info->depth)
   {
     case 8:
@@ -386,7 +378,7 @@ static void ExportBGRQuantum(const Image *image,const QuantumInfo *quantum_info,
               ScaleQuantumToAny(GetPixelRed(image,p),range) << 22 |
               ScaleQuantumToAny(GetPixelGreen(image,p),range) << 12 |
               ScaleQuantumToAny(GetPixelBlue(image,p),range) << 2);
-            q=PopLongPixel(endian,pixel,q);
+            q=PopLongPixel(quantum_info->endian,pixel,q);
             p+=GetPixelChannels(image);
             q+=quantum_info->pad;
           }
@@ -397,12 +389,12 @@ static void ExportBGRQuantum(const Image *image,const QuantumInfo *quantum_info,
           for (x=0; x < (ssize_t) number_pixels; x++)
           {
             pixel=(unsigned int) ScaleQuantumToAny(GetPixelRed(image,p),range);
-            q=PopQuantumLongPixel(&quantum_state,quantum_info->depth,pixel,q);
+            q=PopQuantumLongPixel(quantum_info,pixel,q);
             pixel=(unsigned int) ScaleQuantumToAny(GetPixelGreen(image,p),
               range);
-            q=PopQuantumLongPixel(&quantum_state,quantum_info->depth,pixel,q);
+            q=PopQuantumLongPixel(quantum_info,pixel,q);
             pixel=(unsigned int) ScaleQuantumToAny(GetPixelBlue(image,p),range);
-            q=PopQuantumLongPixel(&quantum_state,quantum_info->depth,pixel,q);
+            q=PopQuantumLongPixel(quantum_info,pixel,q);
             p+=GetPixelChannels(image);
             q+=quantum_info->pad;
           }
@@ -411,11 +403,11 @@ static void ExportBGRQuantum(const Image *image,const QuantumInfo *quantum_info,
       for (x=0; x < (ssize_t) number_pixels; x++)
       {
         pixel=(unsigned int) ScaleQuantumToAny(GetPixelRed(image,p),range);
-        q=PopQuantumPixel(&quantum_state,quantum_info->depth,pixel,q);
+        q=PopQuantumPixel(quantum_info,pixel,q);
         pixel=(unsigned int) ScaleQuantumToAny(GetPixelGreen(image,p),range);
-        q=PopQuantumPixel(&quantum_state,quantum_info->depth,pixel,q);
+        q=PopQuantumPixel(quantum_info,pixel,q);
         pixel=(unsigned int) ScaleQuantumToAny(GetPixelBlue(image,p),range);
-        q=PopQuantumPixel(&quantum_state,quantum_info->depth,pixel,q);
+        q=PopQuantumPixel(quantum_info,pixel,q);
         p+=GetPixelChannels(image);
         q+=quantum_info->pad;
       }
@@ -454,7 +446,8 @@ static void ExportBGRQuantum(const Image *image,const QuantumInfo *quantum_info,
                 break;
               }
             }
-            q=PopShortPixel(endian,(unsigned short) (pixel << 4),q);
+            q=PopShortPixel(quantum_info->endian,(unsigned short) (pixel << 4),
+              q);
             switch ((x+1) % 3)
             {
               default:
@@ -478,7 +471,8 @@ static void ExportBGRQuantum(const Image *image,const QuantumInfo *quantum_info,
                 break;
               }
             }
-            q=PopShortPixel(endian,(unsigned short) (pixel << 4),q);
+            q=PopShortPixel(quantum_info->endian,(unsigned short) (pixel << 4),
+              q);
             q+=quantum_info->pad;
           }
           for (bit=0; bit < (ssize_t) (3*number_pixels % 2); bit++)
@@ -506,7 +500,8 @@ static void ExportBGRQuantum(const Image *image,const QuantumInfo *quantum_info,
                 break;
               }
             }
-            q=PopShortPixel(endian,(unsigned short) (pixel << 4),q);
+            q=PopShortPixel(quantum_info->endian,(unsigned short) (pixel << 4),
+              q);
             q+=quantum_info->pad;
           }
           if (bit != 0)
@@ -518,12 +513,12 @@ static void ExportBGRQuantum(const Image *image,const QuantumInfo *quantum_info,
           for (x=0; x < (ssize_t) number_pixels; x++)
           {
             pixel=(unsigned int) ScaleQuantumToAny(GetPixelRed(image,p),range);
-            q=PopQuantumLongPixel(&quantum_state,quantum_info->depth,pixel,q);
+            q=PopQuantumLongPixel(quantum_info,pixel,q);
             pixel=(unsigned int) ScaleQuantumToAny(GetPixelGreen(image,p),
               range);
-            q=PopQuantumLongPixel(&quantum_state,quantum_info->depth,pixel,q);
+            q=PopQuantumLongPixel(quantum_info,pixel,q);
             pixel=(unsigned int) ScaleQuantumToAny(GetPixelBlue(image,p),range);
-            q=PopQuantumLongPixel(&quantum_state,quantum_info->depth,pixel,q);
+            q=PopQuantumLongPixel(quantum_info,pixel,q);
             p+=GetPixelChannels(image);
             q+=quantum_info->pad;
           }
@@ -532,11 +527,11 @@ static void ExportBGRQuantum(const Image *image,const QuantumInfo *quantum_info,
       for (x=0; x < (ssize_t) number_pixels; x++)
       {
         pixel=(unsigned int) ScaleQuantumToAny(GetPixelRed(image,p),range);
-        q=PopQuantumPixel(&quantum_state,quantum_info->depth,pixel,q);
+        q=PopQuantumPixel(quantum_info,pixel,q);
         pixel=(unsigned int) ScaleQuantumToAny(GetPixelGreen(image,p),range);
-        q=PopQuantumPixel(&quantum_state,quantum_info->depth,pixel,q);
+        q=PopQuantumPixel(quantum_info,pixel,q);
         pixel=(unsigned int) ScaleQuantumToAny(GetPixelBlue(image,p),range);
-        q=PopQuantumPixel(&quantum_state,quantum_info->depth,pixel,q);
+        q=PopQuantumPixel(quantum_info,pixel,q);
         p+=GetPixelChannels(image);
         q+=quantum_info->pad;
       }
@@ -552,11 +547,11 @@ static void ExportBGRQuantum(const Image *image,const QuantumInfo *quantum_info,
           for (x=0; x < (ssize_t) number_pixels; x++)
           {
             pixel=SinglePrecisionToHalf(QuantumScale*GetPixelBlue(image,p));
-            q=PopShortPixel(endian,pixel,q);
+            q=PopShortPixel(quantum_info->endian,pixel,q);
             pixel=SinglePrecisionToHalf(QuantumScale*GetPixelGreen(image,p));
-            q=PopShortPixel(endian,pixel,q);
+            q=PopShortPixel(quantum_info->endian,pixel,q);
             pixel=SinglePrecisionToHalf(QuantumScale*GetPixelRed(image,p));
-            q=PopShortPixel(endian,pixel,q);
+            q=PopShortPixel(quantum_info->endian,pixel,q);
             p+=GetPixelChannels(image);
             q+=quantum_info->pad;
           }
@@ -565,11 +560,11 @@ static void ExportBGRQuantum(const Image *image,const QuantumInfo *quantum_info,
       for (x=0; x < (ssize_t) number_pixels; x++)
       {
         pixel=ScaleQuantumToShort(GetPixelBlue(image,p));
-        q=PopShortPixel(endian,pixel,q);
+        q=PopShortPixel(quantum_info->endian,pixel,q);
         pixel=ScaleQuantumToShort(GetPixelGreen(image,p));
-        q=PopShortPixel(endian,pixel,q);
+        q=PopShortPixel(quantum_info->endian,pixel,q);
         pixel=ScaleQuantumToShort(GetPixelRed(image,p));
-        q=PopShortPixel(endian,pixel,q);
+        q=PopShortPixel(quantum_info->endian,pixel,q);
         p+=GetPixelChannels(image);
         q+=quantum_info->pad;
       }
@@ -584,9 +579,9 @@ static void ExportBGRQuantum(const Image *image,const QuantumInfo *quantum_info,
         {
           for (x=0; x < (ssize_t) number_pixels; x++)
           {
-            q=PopFloatPixel(&quantum_state,(float) GetPixelRed(image,p),q);
-            q=PopFloatPixel(&quantum_state,(float) GetPixelGreen(image,p),q);
-            q=PopFloatPixel(&quantum_state,(float) GetPixelBlue(image,p),q);
+            q=PopFloatPixel(quantum_info,(float) GetPixelRed(image,p),q);
+            q=PopFloatPixel(quantum_info,(float) GetPixelGreen(image,p),q);
+            q=PopFloatPixel(quantum_info,(float) GetPixelBlue(image,p),q);
             p+=GetPixelChannels(image);
             q+=quantum_info->pad;
           }
@@ -595,11 +590,11 @@ static void ExportBGRQuantum(const Image *image,const QuantumInfo *quantum_info,
       for (x=0; x < (ssize_t) number_pixels; x++)
       {
         pixel=ScaleQuantumToLong(GetPixelBlue(image,p));
-        q=PopLongPixel(endian,pixel,q);
+        q=PopLongPixel(quantum_info->endian,pixel,q);
         pixel=ScaleQuantumToLong(GetPixelGreen(image,p));
-        q=PopLongPixel(endian,pixel,q);
+        q=PopLongPixel(quantum_info->endian,pixel,q);
         pixel=ScaleQuantumToLong(GetPixelRed(image,p));
-        q=PopLongPixel(endian,pixel,q);
+        q=PopLongPixel(quantum_info->endian,pixel,q);
         p+=GetPixelChannels(image);
         q+=quantum_info->pad;
       }
@@ -611,9 +606,9 @@ static void ExportBGRQuantum(const Image *image,const QuantumInfo *quantum_info,
         {
           for (x=0; x < (ssize_t) number_pixels; x++)
           {
-            q=PopDoublePixel(&quantum_state,(double) GetPixelRed(image,p),q);
-            q=PopDoublePixel(&quantum_state,(double) GetPixelGreen(image,p),q);
-            q=PopDoublePixel(&quantum_state,(double) GetPixelBlue(image,p),q);
+            q=PopDoublePixel(quantum_info,(double) GetPixelRed(image,p),q);
+            q=PopDoublePixel(quantum_info,(double) GetPixelGreen(image,p),q);
+            q=PopDoublePixel(quantum_info,(double) GetPixelBlue(image,p),q);
             p+=GetPixelChannels(image);
             q+=quantum_info->pad;
           }
@@ -625,12 +620,12 @@ static void ExportBGRQuantum(const Image *image,const QuantumInfo *quantum_info,
       range=GetQuantumRange(quantum_info->depth);
       for (x=0; x < (ssize_t) number_pixels; x++)
       {
-        q=PopQuantumPixel(&quantum_state,quantum_info->depth,
-          ScaleQuantumToAny(GetPixelRed(image,p),range),q);
-        q=PopQuantumPixel(&quantum_state,quantum_info->depth,
-          ScaleQuantumToAny(GetPixelGreen(image,p),range),q);
-        q=PopQuantumPixel(&quantum_state,quantum_info->depth,
-          ScaleQuantumToAny(GetPixelBlue(image,p),range),q);
+        q=PopQuantumPixel(quantum_info,ScaleQuantumToAny(GetPixelRed(image,p),
+          range),q);
+        q=PopQuantumPixel(quantum_info,ScaleQuantumToAny(GetPixelGreen(image,p),
+          range),q);
+        q=PopQuantumPixel(quantum_info,ScaleQuantumToAny(GetPixelBlue(image,p),
+          range),q);
         p+=GetPixelChannels(image);
         q+=quantum_info->pad;
       }
@@ -639,21 +634,16 @@ static void ExportBGRQuantum(const Image *image,const QuantumInfo *quantum_info,
   }
 }
 
-static void ExportBGRAQuantum(const Image *image,
-  const QuantumInfo *quantum_info,QuantumState quantum_state,
+static void ExportBGRAQuantum(const Image *image,QuantumInfo *quantum_info,
   const MagickSizeType number_pixels,const Quantum *restrict p,
   unsigned char *restrict q,ExceptionInfo *exception)
 {
-  EndianType
-    endian;
-
   QuantumAny
     range;
 
   register ssize_t
     x;
 
-  endian=quantum_state.endian;
   switch (quantum_info->depth)
   {
     case 8:
@@ -725,7 +715,7 @@ static void ExportBGRAQuantum(const Image *image,
                 {
                   pixel|=(size_t) (ScaleQuantumToAny((Quantum) quantum,
                     range) << 2);
-                  q=PopLongPixel(endian,pixel,q);
+                  q=PopLongPixel(quantum_info->endian,pixel,q);
                   pixel=0;
                   break;
                 }
@@ -742,15 +732,15 @@ static void ExportBGRAQuantum(const Image *image,
           for (x=0; x < (ssize_t) number_pixels; x++)
           {
             pixel=(unsigned int) ScaleQuantumToAny(GetPixelRed(image,p),range);
-            q=PopQuantumLongPixel(&quantum_state,quantum_info->depth,pixel,q);
+            q=PopQuantumLongPixel(quantum_info,pixel,q);
             pixel=(unsigned int) ScaleQuantumToAny(GetPixelGreen(image,p),
               range);
-            q=PopQuantumLongPixel(&quantum_state,quantum_info->depth,pixel,q);
+            q=PopQuantumLongPixel(quantum_info,pixel,q);
             pixel=(unsigned int) ScaleQuantumToAny(GetPixelBlue(image,p),range);
-            q=PopQuantumLongPixel(&quantum_state,quantum_info->depth,pixel,q);
+            q=PopQuantumLongPixel(quantum_info,pixel,q);
             pixel=(unsigned int) ScaleQuantumToAny(GetPixelAlpha(image,p),
               range);
-            q=PopQuantumLongPixel(&quantum_state,quantum_info->depth,pixel,q);
+            q=PopQuantumLongPixel(quantum_info,pixel,q);
             p+=GetPixelChannels(image);
             q+=quantum_info->pad;
           }
@@ -759,13 +749,13 @@ static void ExportBGRAQuantum(const Image *image,
       for (x=0; x < (ssize_t) number_pixels; x++)
       {
         pixel=(unsigned int) ScaleQuantumToAny(GetPixelRed(image,p),range);
-        q=PopQuantumPixel(&quantum_state,quantum_info->depth,pixel,q);
+        q=PopQuantumPixel(quantum_info,pixel,q);
         pixel=(unsigned int) ScaleQuantumToAny(GetPixelGreen(image,p),range);
-        q=PopQuantumPixel(&quantum_state,quantum_info->depth,pixel,q);
+        q=PopQuantumPixel(quantum_info,pixel,q);
         pixel=(unsigned int) ScaleQuantumToAny(GetPixelBlue(image,p),range);
-        q=PopQuantumPixel(&quantum_state,quantum_info->depth,pixel,q);
+        q=PopQuantumPixel(quantum_info,pixel,q);
         pixel=(unsigned int) ScaleQuantumToAny(GetPixelAlpha(image,p),range);
-        q=PopQuantumPixel(&quantum_state,quantum_info->depth,pixel,q);
+        q=PopQuantumPixel(quantum_info,pixel,q);
         p+=GetPixelChannels(image);
         q+=quantum_info->pad;
       }
@@ -781,13 +771,13 @@ static void ExportBGRAQuantum(const Image *image,
           for (x=0; x < (ssize_t) number_pixels; x++)
           {
             pixel=SinglePrecisionToHalf(QuantumScale*GetPixelBlue(image,p));
-            q=PopShortPixel(endian,pixel,q);
+            q=PopShortPixel(quantum_info->endian,pixel,q);
             pixel=SinglePrecisionToHalf(QuantumScale*GetPixelGreen(image,p));
-            q=PopShortPixel(endian,pixel,q);
+            q=PopShortPixel(quantum_info->endian,pixel,q);
             pixel=SinglePrecisionToHalf(QuantumScale*GetPixelRed(image,p));
-            q=PopShortPixel(endian,pixel,q);
+            q=PopShortPixel(quantum_info->endian,pixel,q);
             pixel=SinglePrecisionToHalf(QuantumScale*GetPixelAlpha(image,p));
-            q=PopShortPixel(endian,pixel,q);
+            q=PopShortPixel(quantum_info->endian,pixel,q);
             p+=GetPixelChannels(image);
             q+=quantum_info->pad;
           }
@@ -796,13 +786,13 @@ static void ExportBGRAQuantum(const Image *image,
       for (x=0; x < (ssize_t) number_pixels; x++)
       {
         pixel=ScaleQuantumToShort(GetPixelBlue(image,p));
-        q=PopShortPixel(endian,pixel,q);
+        q=PopShortPixel(quantum_info->endian,pixel,q);
         pixel=ScaleQuantumToShort(GetPixelGreen(image,p));
-        q=PopShortPixel(endian,pixel,q);
+        q=PopShortPixel(quantum_info->endian,pixel,q);
         pixel=ScaleQuantumToShort(GetPixelRed(image,p));
-        q=PopShortPixel(endian,pixel,q);
+        q=PopShortPixel(quantum_info->endian,pixel,q);
         pixel=ScaleQuantumToShort(GetPixelAlpha(image,p));
-        q=PopShortPixel(endian,pixel,q);
+        q=PopShortPixel(quantum_info->endian,pixel,q);
         p+=GetPixelChannels(image);
         q+=quantum_info->pad;
       }
@@ -820,11 +810,11 @@ static void ExportBGRAQuantum(const Image *image,
             float
               pixel;
 
-            q=PopFloatPixel(&quantum_state,(float) GetPixelRed(image,p),q);
-            q=PopFloatPixel(&quantum_state,(float) GetPixelGreen(image,p),q);
-            q=PopFloatPixel(&quantum_state,(float) GetPixelBlue(image,p),q);
+            q=PopFloatPixel(quantum_info,(float) GetPixelRed(image,p),q);
+            q=PopFloatPixel(quantum_info,(float) GetPixelGreen(image,p),q);
+            q=PopFloatPixel(quantum_info,(float) GetPixelBlue(image,p),q);
             pixel=(float) GetPixelAlpha(image,p);
-            q=PopFloatPixel(&quantum_state,pixel,q);
+            q=PopFloatPixel(quantum_info,pixel,q);
             p+=GetPixelChannels(image);
             q+=quantum_info->pad;
           }
@@ -833,13 +823,13 @@ static void ExportBGRAQuantum(const Image *image,
       for (x=0; x < (ssize_t) number_pixels; x++)
       {
         pixel=ScaleQuantumToLong(GetPixelBlue(image,p));
-        q=PopLongPixel(endian,pixel,q);
+        q=PopLongPixel(quantum_info->endian,pixel,q);
         pixel=ScaleQuantumToLong(GetPixelGreen(image,p));
-        q=PopLongPixel(endian,pixel,q);
+        q=PopLongPixel(quantum_info->endian,pixel,q);
         pixel=ScaleQuantumToLong(GetPixelRed(image,p));
-        q=PopLongPixel(endian,pixel,q);
+        q=PopLongPixel(quantum_info->endian,pixel,q);
         pixel=ScaleQuantumToLong(GetPixelAlpha(image,p));
-        q=PopLongPixel(endian,pixel,q);
+        q=PopLongPixel(quantum_info->endian,pixel,q);
         p+=GetPixelChannels(image);
         q+=quantum_info->pad;
       }
@@ -854,11 +844,11 @@ static void ExportBGRAQuantum(const Image *image,
 
           for (x=0; x < (ssize_t) number_pixels; x++)
           {
-            q=PopDoublePixel(&quantum_state,(double) GetPixelRed(image,p),q);
-            q=PopDoublePixel(&quantum_state,(double) GetPixelGreen(image,p),q);
-            q=PopDoublePixel(&quantum_state,(double) GetPixelBlue(image,p),q);
+            q=PopDoublePixel(quantum_info,(double) GetPixelRed(image,p),q);
+            q=PopDoublePixel(quantum_info,(double) GetPixelGreen(image,p),q);
+            q=PopDoublePixel(quantum_info,(double) GetPixelBlue(image,p),q);
             pixel=(double) GetPixelAlpha(image,p);
-            q=PopDoublePixel(&quantum_state,pixel,q);
+            q=PopDoublePixel(quantum_info,pixel,q);
             p+=GetPixelChannels(image);
             q+=quantum_info->pad;
           }
@@ -870,14 +860,14 @@ static void ExportBGRAQuantum(const Image *image,
       range=GetQuantumRange(quantum_info->depth);
       for (x=0; x < (ssize_t) number_pixels; x++)
       {
-        q=PopQuantumPixel(&quantum_state,quantum_info->depth,
-          ScaleQuantumToAny(GetPixelBlue(image,p),range),q);
-        q=PopQuantumPixel(&quantum_state,quantum_info->depth,
-          ScaleQuantumToAny(GetPixelGreen(image,p),range),q);
-        q=PopQuantumPixel(&quantum_state,quantum_info->depth,
-          ScaleQuantumToAny(GetPixelRed(image,p),range),q);
-        q=PopQuantumPixel(&quantum_state,quantum_info->depth,
-          ScaleQuantumToAny(GetPixelAlpha(image,p),range),q);
+        q=PopQuantumPixel(quantum_info,ScaleQuantumToAny(GetPixelBlue(image,p),
+          range),q);
+        q=PopQuantumPixel(quantum_info,ScaleQuantumToAny(GetPixelGreen(image,p),
+          range),q);
+        q=PopQuantumPixel(quantum_info,ScaleQuantumToAny(GetPixelRed(image,p),
+          range),q);
+        q=PopQuantumPixel(quantum_info,ScaleQuantumToAny(GetPixelAlpha(image,p),
+          range),q);
         p+=GetPixelChannels(image);
         q+=quantum_info->pad;
       }
@@ -886,14 +876,10 @@ static void ExportBGRAQuantum(const Image *image,
   }
 }
 
-static void ExportBlackQuantum(const Image *image,
-  const QuantumInfo *quantum_info,QuantumState quantum_state,
+static void ExportBlackQuantum(const Image *image,QuantumInfo *quantum_info,
   const MagickSizeType number_pixels,const Quantum *restrict p,
   unsigned char *restrict q,ExceptionInfo *exception)
 {
-  EndianType
-    endian;
-
   QuantumAny
     range;
 
@@ -903,10 +889,9 @@ static void ExportBlackQuantum(const Image *image,
   if (image->colorspace != CMYKColorspace)
     {
       (void) ThrowMagickException(exception,GetMagickModule(),ImageError,
-        "ColorSeparatedImageRequired","`%s'",image->filename);
+        "ColorSeparatedImageRequired","'%s'",image->filename);
       return;
     }
-  endian=quantum_state.endian;
   switch (quantum_info->depth)
   {
     case 8:
@@ -933,7 +918,7 @@ static void ExportBlackQuantum(const Image *image,
           for (x=0; x < (ssize_t) number_pixels; x++)
           {
             pixel=SinglePrecisionToHalf(QuantumScale*GetPixelBlack(image,p));
-            q=PopShortPixel(endian,pixel,q);
+            q=PopShortPixel(quantum_info->endian,pixel,q);
             p+=GetPixelChannels(image);
             q+=quantum_info->pad;
           }
@@ -942,7 +927,7 @@ static void ExportBlackQuantum(const Image *image,
       for (x=0; x < (ssize_t) number_pixels; x++)
       {
         pixel=ScaleQuantumToShort(GetPixelBlack(image,p));
-        q=PopShortPixel(endian,pixel,q);
+        q=PopShortPixel(quantum_info->endian,pixel,q);
         p+=GetPixelChannels(image);
         q+=quantum_info->pad;
       }
@@ -957,7 +942,7 @@ static void ExportBlackQuantum(const Image *image,
         {
           for (x=0; x < (ssize_t) number_pixels; x++)
           {
-            q=PopFloatPixel(&quantum_state,(float) GetPixelBlack(image,p),q);
+            q=PopFloatPixel(quantum_info,(float) GetPixelBlack(image,p),q);
             p+=GetPixelChannels(image);
             q+=quantum_info->pad;
           }
@@ -966,7 +951,7 @@ static void ExportBlackQuantum(const Image *image,
       for (x=0; x < (ssize_t) number_pixels; x++)
       {
         pixel=ScaleQuantumToLong(GetPixelBlack(image,p));
-        q=PopLongPixel(endian,pixel,q);
+        q=PopLongPixel(quantum_info->endian,pixel,q);
         p+=GetPixelChannels(image);
         q+=quantum_info->pad;
       }
@@ -978,7 +963,7 @@ static void ExportBlackQuantum(const Image *image,
         {
           for (x=0; x < (ssize_t) number_pixels; x++)
           {
-            q=PopDoublePixel(&quantum_state,(double) GetPixelBlack(image,p),q);
+            q=PopDoublePixel(quantum_info,(double) GetPixelBlack(image,p),q);
             p+=GetPixelChannels(image);
             q+=quantum_info->pad;
           }
@@ -990,8 +975,8 @@ static void ExportBlackQuantum(const Image *image,
       range=GetQuantumRange(quantum_info->depth);
       for (x=0; x < (ssize_t) number_pixels; x++)
       {
-        q=PopQuantumPixel(&quantum_state,quantum_info->depth,
-          ScaleQuantumToAny(GetPixelBlack(image,p),range),q);
+        q=PopQuantumPixel(quantum_info,ScaleQuantumToAny(GetPixelBlack(image,p),
+          range),q);
         p+=GetPixelChannels(image);
         q+=quantum_info->pad;
       }
@@ -1000,21 +985,16 @@ static void ExportBlackQuantum(const Image *image,
   }
 }
 
-static void ExportBlueQuantum(const Image *image,
-  const QuantumInfo *quantum_info,QuantumState quantum_state,
+static void ExportBlueQuantum(const Image *image,QuantumInfo *quantum_info,
   const MagickSizeType number_pixels,const Quantum *restrict p,
   unsigned char *restrict q,ExceptionInfo *exception)
 {
-  EndianType
-    endian;
-
   QuantumAny
     range;
 
   register ssize_t
     x;
 
-  endian=quantum_state.endian;
   switch (quantum_info->depth)
   {
     case 8:
@@ -1041,7 +1021,7 @@ static void ExportBlueQuantum(const Image *image,
           for (x=0; x < (ssize_t) number_pixels; x++)
           {
             pixel=SinglePrecisionToHalf(QuantumScale*GetPixelBlue(image,p));
-            q=PopShortPixel(endian,pixel,q);
+            q=PopShortPixel(quantum_info->endian,pixel,q);
             p+=GetPixelChannels(image);
             q+=quantum_info->pad;
           }
@@ -1050,7 +1030,7 @@ static void ExportBlueQuantum(const Image *image,
       for (x=0; x < (ssize_t) number_pixels; x++)
       {
         pixel=ScaleQuantumToShort(GetPixelBlue(image,p));
-        q=PopShortPixel(endian,pixel,q);
+        q=PopShortPixel(quantum_info->endian,pixel,q);
         p+=GetPixelChannels(image);
         q+=quantum_info->pad;
       }
@@ -1065,7 +1045,7 @@ static void ExportBlueQuantum(const Image *image,
         {
           for (x=0; x < (ssize_t) number_pixels; x++)
           {
-            q=PopFloatPixel(&quantum_state,(float) GetPixelBlue(image,p),q);
+            q=PopFloatPixel(quantum_info,(float) GetPixelBlue(image,p),q);
             p+=GetPixelChannels(image);
             q+=quantum_info->pad;
           }
@@ -1074,7 +1054,7 @@ static void ExportBlueQuantum(const Image *image,
       for (x=0; x < (ssize_t) number_pixels; x++)
       {
         pixel=ScaleQuantumToLong(GetPixelBlue(image,p));
-        q=PopLongPixel(endian,pixel,q);
+        q=PopLongPixel(quantum_info->endian,pixel,q);
         p+=GetPixelChannels(image);
         q+=quantum_info->pad;
       }
@@ -1086,7 +1066,7 @@ static void ExportBlueQuantum(const Image *image,
         {
           for (x=0; x < (ssize_t) number_pixels; x++)
           {
-            q=PopDoublePixel(&quantum_state,(double) GetPixelBlue(image,p),q);
+            q=PopDoublePixel(quantum_info,(double) GetPixelBlue(image,p),q);
             p+=GetPixelChannels(image);
             q+=quantum_info->pad;
           }
@@ -1098,8 +1078,8 @@ static void ExportBlueQuantum(const Image *image,
       range=GetQuantumRange(quantum_info->depth);
       for (x=0; x < (ssize_t) number_pixels; x++)
       {
-        q=PopQuantumPixel(&quantum_state,quantum_info->depth,
-          ScaleQuantumToAny(GetPixelBlue(image,p),range),q);
+        q=PopQuantumPixel(quantum_info,ScaleQuantumToAny(GetPixelBlue(image,p),
+          range),q);
         p+=GetPixelChannels(image);
         q+=quantum_info->pad;
       }
@@ -1108,14 +1088,10 @@ static void ExportBlueQuantum(const Image *image,
   }
 }
 
-static void ExportCbYCrYQuantum(const Image *image,
-  const QuantumInfo *quantum_info,QuantumState quantum_state,
+static void ExportCbYCrYQuantum(const Image *image,QuantumInfo *quantum_info,
   const MagickSizeType number_pixels,const Quantum *restrict p,
   unsigned char *restrict q,ExceptionInfo *exception)
 {
-  EndianType
-    endian;
-
   Quantum
     cbcr[4];
 
@@ -1132,7 +1108,6 @@ static void ExportCbYCrYQuantum(const Image *image,
   ssize_t
     n;
 
-  endian=quantum_state.endian;
   n=0;
   quantum=0;
   switch (quantum_info->depth)
@@ -1168,11 +1143,11 @@ static void ExportCbYCrYQuantum(const Image *image,
             }
             pixel=(unsigned int) ((size_t) (cbcr[1]) << 22 | (size_t)
               (cbcr[0]) << 12 | (size_t) (cbcr[2]) << 2);
-            q=PopLongPixel(endian,pixel,q);
+            q=PopLongPixel(quantum_info->endian,pixel,q);
             p+=GetPixelChannels(image);
             pixel=(unsigned int) ((size_t) (cbcr[3]) << 22 | (size_t)
               (cbcr[0]) << 12 | (size_t) (cbcr[2]) << 2);
-            q=PopLongPixel(endian,pixel,q);
+            q=PopLongPixel(quantum_info->endian,pixel,q);
             p+=GetPixelChannels(image);
             q+=quantum_info->pad;
           }
@@ -1211,19 +1186,13 @@ static void ExportCbYCrYQuantum(const Image *image,
           n++;
         }
         range=GetQuantumRange(quantum_info->depth);
-        q=PopQuantumPixel(&quantum_state,quantum_info->depth,
-          ScaleQuantumToAny(cbcr[1],range),q);
-        q=PopQuantumPixel(&quantum_state,quantum_info->depth,
-          ScaleQuantumToAny(cbcr[0],range),q);
-        q=PopQuantumPixel(&quantum_state,quantum_info->depth,
-          ScaleQuantumToAny(cbcr[2],range),q);
+        q=PopQuantumPixel(quantum_info,ScaleQuantumToAny(cbcr[1],range),q);
+        q=PopQuantumPixel(quantum_info,ScaleQuantumToAny(cbcr[0],range),q);
+        q=PopQuantumPixel(quantum_info,ScaleQuantumToAny(cbcr[2],range),q);
         p+=GetPixelChannels(image);
-        q=PopQuantumPixel(&quantum_state,quantum_info->depth,
-          ScaleQuantumToAny(cbcr[3],range),q);
-        q=PopQuantumPixel(&quantum_state,quantum_info->depth,
-          ScaleQuantumToAny(cbcr[0],range),q);
-        q=PopQuantumPixel(&quantum_state,quantum_info->depth,
-          ScaleQuantumToAny(cbcr[2],range),q);
+        q=PopQuantumPixel(quantum_info,ScaleQuantumToAny(cbcr[3],range),q);
+        q=PopQuantumPixel(quantum_info,ScaleQuantumToAny(cbcr[0],range),q);
+        q=PopQuantumPixel(quantum_info,ScaleQuantumToAny(cbcr[2],range),q);
         p+=GetPixelChannels(image);
         q+=quantum_info->pad;
       }
@@ -1232,24 +1201,19 @@ static void ExportCbYCrYQuantum(const Image *image,
   }
 }
 
-static void ExportCMYKQuantum(const Image *image,
-  const QuantumInfo *quantum_info,QuantumState quantum_state,
+static void ExportCMYKQuantum(const Image *image,QuantumInfo *quantum_info,
   const MagickSizeType number_pixels,const Quantum *restrict p,
   unsigned char *restrict q,ExceptionInfo *exception)
 {
-  EndianType
-    endian;
-
   register ssize_t
     x;
 
   if (image->colorspace != CMYKColorspace)
     {
       (void) ThrowMagickException(exception,GetMagickModule(),ImageError,
-        "ColorSeparatedImageRequired","`%s'",image->filename);
+        "ColorSeparatedImageRequired","'%s'",image->filename);
       return;
     }
-  endian=quantum_state.endian;
   switch (quantum_info->depth)
   {
     case 8:
@@ -1282,13 +1246,13 @@ static void ExportCMYKQuantum(const Image *image,
           for (x=0; x < (ssize_t) number_pixels; x++)
           {
             pixel=SinglePrecisionToHalf(QuantumScale*GetPixelRed(image,p));
-            q=PopShortPixel(endian,pixel,q);
+            q=PopShortPixel(quantum_info->endian,pixel,q);
             pixel=SinglePrecisionToHalf(QuantumScale*GetPixelGreen(image,p));
-            q=PopShortPixel(endian,pixel,q);
+            q=PopShortPixel(quantum_info->endian,pixel,q);
             pixel=SinglePrecisionToHalf(QuantumScale*GetPixelBlue(image,p));
-            q=PopShortPixel(endian,pixel,q);
+            q=PopShortPixel(quantum_info->endian,pixel,q);
             pixel=SinglePrecisionToHalf(QuantumScale*GetPixelBlack(image,p));
-            q=PopShortPixel(endian,pixel,q);
+            q=PopShortPixel(quantum_info->endian,pixel,q);
             p+=GetPixelChannels(image);
             q+=quantum_info->pad;
           }
@@ -1297,13 +1261,13 @@ static void ExportCMYKQuantum(const Image *image,
       for (x=0; x < (ssize_t) number_pixels; x++)
       {
         pixel=ScaleQuantumToShort(GetPixelRed(image,p));
-        q=PopShortPixel(endian,pixel,q);
+        q=PopShortPixel(quantum_info->endian,pixel,q);
         pixel=ScaleQuantumToShort(GetPixelGreen(image,p));
-        q=PopShortPixel(endian,pixel,q);
+        q=PopShortPixel(quantum_info->endian,pixel,q);
         pixel=ScaleQuantumToShort(GetPixelBlue(image,p));
-        q=PopShortPixel(endian,pixel,q);
+        q=PopShortPixel(quantum_info->endian,pixel,q);
         pixel=ScaleQuantumToShort(GetPixelBlack(image,p));
-        q=PopShortPixel(endian,pixel,q);
+        q=PopShortPixel(quantum_info->endian,pixel,q);
         p+=GetPixelChannels(image);
         q+=quantum_info->pad;
       }
@@ -1318,10 +1282,10 @@ static void ExportCMYKQuantum(const Image *image,
         {
           for (x=0; x < (ssize_t) number_pixels; x++)
           {
-            q=PopFloatPixel(&quantum_state,(float) GetPixelRed(image,p),q);
-            q=PopFloatPixel(&quantum_state,(float) GetPixelGreen(image,p),q);
-            q=PopFloatPixel(&quantum_state,(float) GetPixelBlue(image,p),q);
-            q=PopFloatPixel(&quantum_state,(float) GetPixelBlack(image,p),q);
+            q=PopFloatPixel(quantum_info,(float) GetPixelRed(image,p),q);
+            q=PopFloatPixel(quantum_info,(float) GetPixelGreen(image,p),q);
+            q=PopFloatPixel(quantum_info,(float) GetPixelBlue(image,p),q);
+            q=PopFloatPixel(quantum_info,(float) GetPixelBlack(image,p),q);
             p+=GetPixelChannels(image);
             q+=quantum_info->pad;
           }
@@ -1330,13 +1294,13 @@ static void ExportCMYKQuantum(const Image *image,
       for (x=0; x < (ssize_t) number_pixels; x++)
       {
         pixel=ScaleQuantumToLong(GetPixelRed(image,p));
-        q=PopLongPixel(endian,pixel,q);
+        q=PopLongPixel(quantum_info->endian,pixel,q);
         pixel=ScaleQuantumToLong(GetPixelGreen(image,p));
-        q=PopLongPixel(endian,pixel,q);
+        q=PopLongPixel(quantum_info->endian,pixel,q);
         pixel=ScaleQuantumToLong(GetPixelBlue(image,p));
-        q=PopLongPixel(endian,pixel,q);
+        q=PopLongPixel(quantum_info->endian,pixel,q);
         pixel=ScaleQuantumToLong(GetPixelBlack(image,p));
-        q=PopLongPixel(endian,pixel,q);
+        q=PopLongPixel(quantum_info->endian,pixel,q);
         p+=GetPixelChannels(image);
         q+=quantum_info->pad;
       }
@@ -1348,10 +1312,10 @@ static void ExportCMYKQuantum(const Image *image,
         {
           for (x=0; x < (ssize_t) number_pixels; x++)
           {
-            q=PopDoublePixel(&quantum_state,(double) GetPixelRed(image,p),q);
-            q=PopDoublePixel(&quantum_state,(double) GetPixelGreen(image,p),q);
-            q=PopDoublePixel(&quantum_state,(double) GetPixelBlue(image,p),q);
-            q=PopDoublePixel(&quantum_state,(double) GetPixelBlack(image,p),q);
+            q=PopDoublePixel(quantum_info,(double) GetPixelRed(image,p),q);
+            q=PopDoublePixel(quantum_info,(double) GetPixelGreen(image,p),q);
+            q=PopDoublePixel(quantum_info,(double) GetPixelBlue(image,p),q);
+            q=PopDoublePixel(quantum_info,(double) GetPixelBlack(image,p),q);
             p+=GetPixelChannels(image);
             q+=quantum_info->pad;
           }
@@ -1366,14 +1330,14 @@ static void ExportCMYKQuantum(const Image *image,
       range=GetQuantumRange(quantum_info->depth);
       for (x=0; x < (ssize_t) number_pixels; x++)
       {
-        q=PopQuantumPixel(&quantum_state,quantum_info->depth,
-          ScaleQuantumToAny(GetPixelRed(image,p),range),q);
-        q=PopQuantumPixel(&quantum_state,quantum_info->depth,
-          ScaleQuantumToAny(GetPixelGreen(image,p),range),q);
-        q=PopQuantumPixel(&quantum_state,quantum_info->depth,
-          ScaleQuantumToAny(GetPixelBlue(image,p),range),q);
-        q=PopQuantumPixel(&quantum_state,quantum_info->depth,
-          ScaleQuantumToAny(GetPixelBlack(image,p),range),q);
+        q=PopQuantumPixel(quantum_info,ScaleQuantumToAny(GetPixelRed(image,p),
+          range),q);
+        q=PopQuantumPixel(quantum_info,ScaleQuantumToAny(GetPixelGreen(image,p),
+          range),q);
+        q=PopQuantumPixel(quantum_info,ScaleQuantumToAny(GetPixelBlue(image,p),
+          range),q);
+        q=PopQuantumPixel(quantum_info,ScaleQuantumToAny(GetPixelBlack(image,p),
+          range),q);
         p+=GetPixelChannels(image);
         q+=quantum_info->pad;
       }
@@ -1382,24 +1346,19 @@ static void ExportCMYKQuantum(const Image *image,
   }
 }
 
-static void ExportCMYKAQuantum(const Image *image,
-  const QuantumInfo *quantum_info,QuantumState quantum_state,
+static void ExportCMYKAQuantum(const Image *image,QuantumInfo *quantum_info,
   const MagickSizeType number_pixels,const Quantum *restrict p,
   unsigned char *restrict q,ExceptionInfo *exception)
 {
-  EndianType
-    endian;
-
   register ssize_t
     x;
 
   if (image->colorspace != CMYKColorspace)
     {
       (void) ThrowMagickException(exception,GetMagickModule(),ImageError,
-        "ColorSeparatedImageRequired","`%s'",image->filename);
+        "ColorSeparatedImageRequired","'%s'",image->filename);
       return;
     }
-  endian=quantum_state.endian;
   switch (quantum_info->depth)
   {
     case 8:
@@ -1434,15 +1393,15 @@ static void ExportCMYKAQuantum(const Image *image,
           for (x=0; x < (ssize_t) number_pixels; x++)
           {
             pixel=SinglePrecisionToHalf(QuantumScale*GetPixelRed(image,p));
-            q=PopShortPixel(endian,pixel,q);
+            q=PopShortPixel(quantum_info->endian,pixel,q);
             pixel=SinglePrecisionToHalf(QuantumScale*GetPixelGreen(image,p));
-            q=PopShortPixel(endian,pixel,q);
+            q=PopShortPixel(quantum_info->endian,pixel,q);
             pixel=SinglePrecisionToHalf(QuantumScale*GetPixelBlue(image,p));
-            q=PopShortPixel(endian,pixel,q);
+            q=PopShortPixel(quantum_info->endian,pixel,q);
             pixel=SinglePrecisionToHalf(QuantumScale*GetPixelBlack(image,p));
-            q=PopShortPixel(endian,pixel,q);
+            q=PopShortPixel(quantum_info->endian,pixel,q);
             pixel=SinglePrecisionToHalf(QuantumScale*GetPixelAlpha(image,p));
-            q=PopShortPixel(endian,pixel,q);
+            q=PopShortPixel(quantum_info->endian,pixel,q);
             p+=GetPixelChannels(image);
             q+=quantum_info->pad;
           }
@@ -1451,15 +1410,15 @@ static void ExportCMYKAQuantum(const Image *image,
       for (x=0; x < (ssize_t) number_pixels; x++)
       {
         pixel=ScaleQuantumToShort(GetPixelRed(image,p));
-        q=PopShortPixel(endian,pixel,q);
+        q=PopShortPixel(quantum_info->endian,pixel,q);
         pixel=ScaleQuantumToShort(GetPixelGreen(image,p));
-        q=PopShortPixel(endian,pixel,q);
+        q=PopShortPixel(quantum_info->endian,pixel,q);
         pixel=ScaleQuantumToShort(GetPixelBlue(image,p));
-        q=PopShortPixel(endian,pixel,q);
+        q=PopShortPixel(quantum_info->endian,pixel,q);
         pixel=ScaleQuantumToShort(GetPixelBlack(image,p));
-        q=PopShortPixel(endian,pixel,q);
+        q=PopShortPixel(quantum_info->endian,pixel,q);
         pixel=ScaleQuantumToShort(GetPixelAlpha(image,p));
-        q=PopShortPixel(endian,pixel,q);
+        q=PopShortPixel(quantum_info->endian,pixel,q);
         p+=GetPixelChannels(image);
         q+=quantum_info->pad;
       }
@@ -1477,12 +1436,12 @@ static void ExportCMYKAQuantum(const Image *image,
             float
               pixel;
 
-            q=PopFloatPixel(&quantum_state,(float) GetPixelRed(image,p),q);
-            q=PopFloatPixel(&quantum_state,(float) GetPixelGreen(image,p),q);
-            q=PopFloatPixel(&quantum_state,(float) GetPixelBlue(image,p),q);
-            q=PopFloatPixel(&quantum_state,(float) GetPixelBlack(image,p),q);
+            q=PopFloatPixel(quantum_info,(float) GetPixelRed(image,p),q);
+            q=PopFloatPixel(quantum_info,(float) GetPixelGreen(image,p),q);
+            q=PopFloatPixel(quantum_info,(float) GetPixelBlue(image,p),q);
+            q=PopFloatPixel(quantum_info,(float) GetPixelBlack(image,p),q);
             pixel=(float) (GetPixelAlpha(image,p));
-            q=PopFloatPixel(&quantum_state,pixel,q);
+            q=PopFloatPixel(quantum_info,pixel,q);
             p+=GetPixelChannels(image);
             q+=quantum_info->pad;
           }
@@ -1491,15 +1450,15 @@ static void ExportCMYKAQuantum(const Image *image,
       for (x=0; x < (ssize_t) number_pixels; x++)
       {
         pixel=ScaleQuantumToLong(GetPixelRed(image,p));
-        q=PopLongPixel(endian,pixel,q);
+        q=PopLongPixel(quantum_info->endian,pixel,q);
         pixel=ScaleQuantumToLong(GetPixelGreen(image,p));
-        q=PopLongPixel(endian,pixel,q);
+        q=PopLongPixel(quantum_info->endian,pixel,q);
         pixel=ScaleQuantumToLong(GetPixelBlue(image,p));
-        q=PopLongPixel(endian,pixel,q);
+        q=PopLongPixel(quantum_info->endian,pixel,q);
         pixel=ScaleQuantumToLong(GetPixelBlack(image,p));
-        q=PopLongPixel(endian,pixel,q);
+        q=PopLongPixel(quantum_info->endian,pixel,q);
         pixel=ScaleQuantumToLong(GetPixelAlpha(image,p));
-        q=PopLongPixel(endian,pixel,q);
+        q=PopLongPixel(quantum_info->endian,pixel,q);
         p+=GetPixelChannels(image);
         q+=quantum_info->pad;
       }
@@ -1514,12 +1473,12 @@ static void ExportCMYKAQuantum(const Image *image,
 
           for (x=0; x < (ssize_t) number_pixels; x++)
           {
-            q=PopDoublePixel(&quantum_state,(double) GetPixelRed(image,p),q);
-            q=PopDoublePixel(&quantum_state,(double) GetPixelGreen(image,p),q);
-            q=PopDoublePixel(&quantum_state,(double) GetPixelBlue(image,p),q);
-            q=PopDoublePixel(&quantum_state,(double) GetPixelBlack(image,p),q);
+            q=PopDoublePixel(quantum_info,(double) GetPixelRed(image,p),q);
+            q=PopDoublePixel(quantum_info,(double) GetPixelGreen(image,p),q);
+            q=PopDoublePixel(quantum_info,(double) GetPixelBlue(image,p),q);
+            q=PopDoublePixel(quantum_info,(double) GetPixelBlack(image,p),q);
             pixel=(double) (GetPixelAlpha(image,p));
-            q=PopDoublePixel(&quantum_state,pixel,q);
+            q=PopDoublePixel(quantum_info,pixel,q);
             p+=GetPixelChannels(image);
             q+=quantum_info->pad;
           }
@@ -1534,16 +1493,16 @@ static void ExportCMYKAQuantum(const Image *image,
       range=GetQuantumRange(quantum_info->depth);
       for (x=0; x < (ssize_t) number_pixels; x++)
       {
-        q=PopQuantumPixel(&quantum_state,quantum_info->depth,
-          ScaleQuantumToAny(GetPixelRed(image,p),range),q);
-        q=PopQuantumPixel(&quantum_state,quantum_info->depth,
-          ScaleQuantumToAny(GetPixelGreen(image,p),range),q);
-        q=PopQuantumPixel(&quantum_state,quantum_info->depth,
-          ScaleQuantumToAny(GetPixelBlue(image,p),range),q);
-        q=PopQuantumPixel(&quantum_state,quantum_info->depth,
-          ScaleQuantumToAny(GetPixelBlack(image,p),range),q);
-        q=PopQuantumPixel(&quantum_state,quantum_info->depth,
-          ScaleQuantumToAny(GetPixelAlpha(image,p),range),q);
+        q=PopQuantumPixel(quantum_info,ScaleQuantumToAny(GetPixelRed(image,p),
+          range),q);
+        q=PopQuantumPixel(quantum_info,ScaleQuantumToAny(GetPixelGreen(image,p),
+          range),q);
+        q=PopQuantumPixel(quantum_info,ScaleQuantumToAny(GetPixelBlue(image,p),
+          range),q);
+        q=PopQuantumPixel(quantum_info,ScaleQuantumToAny(GetPixelBlack(image,p),
+          range),q);
+        q=PopQuantumPixel(quantum_info,ScaleQuantumToAny(GetPixelAlpha(image,p),
+          range),q);
         p+=GetPixelChannels(image);
         q+=quantum_info->pad;
       }
@@ -1552,21 +1511,16 @@ static void ExportCMYKAQuantum(const Image *image,
   }
 }
 
-static void ExportGrayQuantum(const Image *image,
-  const QuantumInfo *quantum_info,QuantumState quantum_state,
+static void ExportGrayQuantum(const Image *image,QuantumInfo *quantum_info,
   const MagickSizeType number_pixels,const Quantum *restrict p,
   unsigned char *restrict q,ExceptionInfo *exception)
 {
-  EndianType
-    endian;
-
   QuantumAny
     range;
 
   register ssize_t
     x;
 
-  endian=quantum_state.endian;
   switch (quantum_info->depth)
   {
     case 1:
@@ -1670,11 +1624,11 @@ static void ExportGrayQuantum(const Image *image,
 
           for (x=0; x < (ssize_t) (number_pixels-2); x+=3)
           {
-            pixel=(unsigned int) (
-              ScaleQuantumToAny(GetPixelIntensity(image,p+2*GetPixelChannels(image)),range) << 22 |
-              ScaleQuantumToAny(GetPixelIntensity(image,p+GetPixelChannels(image)),range) << 12 |
+            pixel=(unsigned int) (ScaleQuantumToAny(GetPixelIntensity(image,
+              p+2*GetPixelChannels(image)),range) << 22 | ScaleQuantumToAny(
+              GetPixelIntensity(image,p+GetPixelChannels(image)),range) << 12 |
               ScaleQuantumToAny(GetPixelIntensity(image,p),range) << 2);
-            q=PopLongPixel(endian,pixel,q);
+            q=PopLongPixel(quantum_info->endian,pixel,q);
             p+=3*GetPixelChannels(image);
             q+=quantum_info->pad;
           }
@@ -1682,19 +1636,18 @@ static void ExportGrayQuantum(const Image *image,
             {
               pixel=0U;
               if (x++ < (ssize_t) (number_pixels-1))
-                pixel|=ScaleQuantumToAny(GetPixelIntensity(image,p+GetPixelChannels(image)),
-              range) << 12;
+                pixel|=ScaleQuantumToAny(GetPixelIntensity(image,p+
+                  GetPixelChannels(image)),range) << 12;
               if (x++ < (ssize_t) number_pixels)
-                pixel|=ScaleQuantumToAny(GetPixelIntensity(image,p),
-                  range) << 2;
-              q=PopLongPixel(endian,pixel,q);
+                pixel|=ScaleQuantumToAny(GetPixelIntensity(image,p),range) << 2;
+              q=PopLongPixel(quantum_info->endian,pixel,q);
             }
           break;
         }
       for (x=0; x < (ssize_t) number_pixels; x++)
       {
-        q=PopQuantumPixel(&quantum_state,quantum_info->depth,
-          ScaleQuantumToAny(GetPixelIntensity(image,p),range),q);
+        q=PopQuantumPixel(quantum_info,ScaleQuantumToAny(
+          GetPixelIntensity(image,p),range),q);
         p+=GetPixelChannels(image);
         q+=quantum_info->pad;
       }
@@ -1711,7 +1664,8 @@ static void ExportGrayQuantum(const Image *image,
           for (x=0; x < (ssize_t) number_pixels; x++)
           {
             pixel=ScaleQuantumToShort(GetPixelIntensity(image,p));
-            q=PopShortPixel(endian,(unsigned short) (pixel >> 4),q);
+            q=PopShortPixel(quantum_info->endian,(unsigned short) (pixel >> 4),
+              q);
             p+=GetPixelChannels(image);
             q+=quantum_info->pad;
           }
@@ -1719,8 +1673,8 @@ static void ExportGrayQuantum(const Image *image,
         }
       for (x=0; x < (ssize_t) number_pixels; x++)
       {
-        q=PopQuantumPixel(&quantum_state,quantum_info->depth,
-          ScaleQuantumToAny(GetPixelIntensity(image,p),range),q);
+        q=PopQuantumPixel(quantum_info,ScaleQuantumToAny(
+          GetPixelIntensity(image,p),range),q);
         p+=GetPixelChannels(image);
         q+=quantum_info->pad;
       }
@@ -1737,7 +1691,7 @@ static void ExportGrayQuantum(const Image *image,
           {
             pixel=SinglePrecisionToHalf(QuantumScale*
               GetPixelIntensity(image,p));
-            q=PopShortPixel(endian,pixel,q);
+            q=PopShortPixel(quantum_info->endian,pixel,q);
             p+=GetPixelChannels(image);
             q+=quantum_info->pad;
           }
@@ -1746,7 +1700,7 @@ static void ExportGrayQuantum(const Image *image,
       for (x=0; x < (ssize_t) number_pixels; x++)
       {
         pixel=ScaleQuantumToShort(GetPixelIntensity(image,p));
-        q=PopShortPixel(endian,pixel,q);
+        q=PopShortPixel(quantum_info->endian,pixel,q);
         p+=GetPixelChannels(image);
         q+=quantum_info->pad;
       }
@@ -1765,7 +1719,7 @@ static void ExportGrayQuantum(const Image *image,
               pixel;
 
             pixel=(float) GetPixelIntensity(image,p);
-            q=PopFloatPixel(&quantum_state,pixel,q);
+            q=PopFloatPixel(quantum_info,pixel,q);
             p+=GetPixelChannels(image);
             q+=quantum_info->pad;
           }
@@ -1774,7 +1728,7 @@ static void ExportGrayQuantum(const Image *image,
       for (x=0; x < (ssize_t) number_pixels; x++)
       {
         pixel=ScaleQuantumToLong(GetPixelIntensity(image,p));
-        q=PopLongPixel(endian,pixel,q);
+        q=PopLongPixel(quantum_info->endian,pixel,q);
         p+=GetPixelChannels(image);
         q+=quantum_info->pad;
       }
@@ -1790,7 +1744,7 @@ static void ExportGrayQuantum(const Image *image,
               pixel;
 
             pixel=(double) GetPixelIntensity(image,p);
-            q=PopDoublePixel(&quantum_state,pixel,q);
+            q=PopDoublePixel(quantum_info,pixel,q);
             p+=GetPixelChannels(image);
             q+=quantum_info->pad;
           }
@@ -1802,8 +1756,8 @@ static void ExportGrayQuantum(const Image *image,
       range=GetQuantumRange(quantum_info->depth);
       for (x=0; x < (ssize_t) number_pixels; x++)
       {
-        q=PopQuantumPixel(&quantum_state,quantum_info->depth,
-          ScaleQuantumToAny(GetPixelIntensity(image,p),range),q);
+        q=PopQuantumPixel(quantum_info,ScaleQuantumToAny(
+          GetPixelIntensity(image,p),range),q);
         p+=GetPixelChannels(image);
         q+=quantum_info->pad;
       }
@@ -1812,21 +1766,16 @@ static void ExportGrayQuantum(const Image *image,
   }
 }
 
-static void ExportGrayAlphaQuantum(const Image *image,
-  const QuantumInfo *quantum_info,QuantumState quantum_state,
+static void ExportGrayAlphaQuantum(const Image *image,QuantumInfo *quantum_info,
   const MagickSizeType number_pixels,const Quantum *restrict p,
   unsigned char *restrict q,ExceptionInfo *exception)
 {
-  EndianType
-    endian;
-
   QuantumAny
     range;
 
   register ssize_t
     x;
 
-  endian=quantum_state.endian;
   switch (quantum_info->depth)
   {
     case 1:
@@ -1935,9 +1884,9 @@ static void ExportGrayAlphaQuantum(const Image *image,
           {
             pixel=SinglePrecisionToHalf(QuantumScale*
               GetPixelIntensity(image,p));
-            q=PopShortPixel(endian,pixel,q);
+            q=PopShortPixel(quantum_info->endian,pixel,q);
             pixel=SinglePrecisionToHalf(QuantumScale*GetPixelAlpha(image,p));
-            q=PopShortPixel(endian,pixel,q);
+            q=PopShortPixel(quantum_info->endian,pixel,q);
             p+=GetPixelChannels(image);
             q+=quantum_info->pad;
           }
@@ -1946,9 +1895,9 @@ static void ExportGrayAlphaQuantum(const Image *image,
       for (x=0; x < (ssize_t) number_pixels; x++)
       {
         pixel=ScaleQuantumToShort(GetPixelIntensity(image,p));
-        q=PopShortPixel(endian,pixel,q);
+        q=PopShortPixel(quantum_info->endian,pixel,q);
         pixel=ScaleQuantumToShort(GetPixelAlpha(image,p));
-        q=PopShortPixel(endian,pixel,q);
+        q=PopShortPixel(quantum_info->endian,pixel,q);
         p+=GetPixelChannels(image);
         q+=quantum_info->pad;
       }
@@ -1967,9 +1916,9 @@ static void ExportGrayAlphaQuantum(const Image *image,
               pixel;
 
             pixel=(float) GetPixelIntensity(image,p);
-            q=PopFloatPixel(&quantum_state,pixel,q);
+            q=PopFloatPixel(quantum_info,pixel,q);
             pixel=(float) (GetPixelAlpha(image,p));
-            q=PopFloatPixel(&quantum_state,pixel,q);
+            q=PopFloatPixel(quantum_info,pixel,q);
             p+=GetPixelChannels(image);
             q+=quantum_info->pad;
           }
@@ -1978,9 +1927,9 @@ static void ExportGrayAlphaQuantum(const Image *image,
       for (x=0; x < (ssize_t) number_pixels; x++)
       {
         pixel=ScaleQuantumToLong(GetPixelIntensity(image,p));
-        q=PopLongPixel(endian,pixel,q);
+        q=PopLongPixel(quantum_info->endian,pixel,q);
         pixel=ScaleQuantumToLong(GetPixelAlpha(image,p));
-        q=PopLongPixel(endian,pixel,q);
+        q=PopLongPixel(quantum_info->endian,pixel,q);
         p+=GetPixelChannels(image);
         q+=quantum_info->pad;
       }
@@ -1996,9 +1945,9 @@ static void ExportGrayAlphaQuantum(const Image *image,
               pixel;
 
             pixel=(double) GetPixelIntensity(image,p);
-            q=PopDoublePixel(&quantum_state,pixel,q);
+            q=PopDoublePixel(quantum_info,pixel,q);
             pixel=(double) (GetPixelAlpha(image,p));
-            q=PopDoublePixel(&quantum_state,pixel,q);
+            q=PopDoublePixel(quantum_info,pixel,q);
             p+=GetPixelChannels(image);
             q+=quantum_info->pad;
           }
@@ -2010,10 +1959,10 @@ static void ExportGrayAlphaQuantum(const Image *image,
       range=GetQuantumRange(quantum_info->depth);
       for (x=0; x < (ssize_t) number_pixels; x++)
       {
-        q=PopQuantumPixel(&quantum_state,quantum_info->depth,
-          ScaleQuantumToAny(GetPixelIntensity(image,p),range),q);
-        q=PopQuantumPixel(&quantum_state,quantum_info->depth,
-          ScaleQuantumToAny(GetPixelAlpha(image,p),range),q);
+        q=PopQuantumPixel(quantum_info,ScaleQuantumToAny(
+          GetPixelIntensity(image,p),range),q);
+        q=PopQuantumPixel(quantum_info,ScaleQuantumToAny(GetPixelAlpha(image,p),
+          range),q);
         p+=GetPixelChannels(image);
         q+=quantum_info->pad;
       }
@@ -2022,21 +1971,16 @@ static void ExportGrayAlphaQuantum(const Image *image,
   }
 }
 
-static void ExportGreenQuantum(const Image *image,
-  const QuantumInfo *quantum_info,QuantumState quantum_state,
+static void ExportGreenQuantum(const Image *image,QuantumInfo *quantum_info,
   const MagickSizeType number_pixels,const Quantum *restrict p,
   unsigned char *restrict q,ExceptionInfo *exception)
 {
-  EndianType
-    endian;
-
   QuantumAny
     range;
 
   register ssize_t
     x;
 
-  endian=quantum_state.endian;
   switch (quantum_info->depth)
   {
     case 8:
@@ -2063,7 +2007,7 @@ static void ExportGreenQuantum(const Image *image,
           for (x=0; x < (ssize_t) number_pixels; x++)
           {
             pixel=SinglePrecisionToHalf(QuantumScale*GetPixelGreen(image,p));
-            q=PopShortPixel(endian,pixel,q);
+            q=PopShortPixel(quantum_info->endian,pixel,q);
             p+=GetPixelChannels(image);
             q+=quantum_info->pad;
           }
@@ -2072,7 +2016,7 @@ static void ExportGreenQuantum(const Image *image,
       for (x=0; x < (ssize_t) number_pixels; x++)
       {
         pixel=ScaleQuantumToShort(GetPixelGreen(image,p));
-        q=PopShortPixel(endian,pixel,q);
+        q=PopShortPixel(quantum_info->endian,pixel,q);
         p+=GetPixelChannels(image);
         q+=quantum_info->pad;
       }
@@ -2087,7 +2031,7 @@ static void ExportGreenQuantum(const Image *image,
         {
           for (x=0; x < (ssize_t) number_pixels; x++)
           {
-            q=PopFloatPixel(&quantum_state,(float) GetPixelGreen(image,p),q);
+            q=PopFloatPixel(quantum_info,(float) GetPixelGreen(image,p),q);
             p+=GetPixelChannels(image);
             q+=quantum_info->pad;
           }
@@ -2096,7 +2040,7 @@ static void ExportGreenQuantum(const Image *image,
       for (x=0; x < (ssize_t) number_pixels; x++)
       {
         pixel=ScaleQuantumToLong(GetPixelGreen(image,p));
-        q=PopLongPixel(endian,pixel,q);
+        q=PopLongPixel(quantum_info->endian,pixel,q);
         p+=GetPixelChannels(image);
         q+=quantum_info->pad;
       }
@@ -2108,7 +2052,7 @@ static void ExportGreenQuantum(const Image *image,
         {
           for (x=0; x < (ssize_t) number_pixels; x++)
           {
-            q=PopDoublePixel(&quantum_state,(double) GetPixelGreen(image,p),q);
+            q=PopDoublePixel(quantum_info,(double) GetPixelGreen(image,p),q);
             p+=GetPixelChannels(image);
             q+=quantum_info->pad;
           }
@@ -2120,8 +2064,8 @@ static void ExportGreenQuantum(const Image *image,
       range=GetQuantumRange(quantum_info->depth);
       for (x=0; x < (ssize_t) number_pixels; x++)
       {
-        q=PopQuantumPixel(&quantum_state,quantum_info->depth,
-          ScaleQuantumToAny(GetPixelGreen(image,p),range),q);
+        q=PopQuantumPixel(quantum_info,ScaleQuantumToAny(GetPixelGreen(image,p),
+          range),q);
         p+=GetPixelChannels(image);
         q+=quantum_info->pad;
       }
@@ -2130,14 +2074,10 @@ static void ExportGreenQuantum(const Image *image,
   }
 }
 
-static void ExportIndexQuantum(const Image *image,
-  const QuantumInfo *quantum_info,QuantumState quantum_state,
+static void ExportIndexQuantum(const Image *image,QuantumInfo *quantum_info,
   const MagickSizeType number_pixels,const Quantum *restrict p,
   unsigned char *restrict q,ExceptionInfo *exception)
 {
-  EndianType
-    endian;
-
   register ssize_t
     x;
 
@@ -2147,10 +2087,9 @@ static void ExportIndexQuantum(const Image *image,
   if (image->storage_class != PseudoClass)
     {
       (void) ThrowMagickException(exception,GetMagickModule(),ImageError,
-        "ColormappedImageRequired","`%s'",image->filename);
+        "ColormappedImageRequired","'%s'",image->filename);
       return;
     }
-  endian=quantum_state.endian;
   switch (quantum_info->depth)
   {
     case 1:
@@ -2239,8 +2178,8 @@ static void ExportIndexQuantum(const Image *image,
         {
           for (x=0; x < (ssize_t) number_pixels; x++)
           {
-            q=PopShortPixel(endian,SinglePrecisionToHalf(QuantumScale*
-              GetPixelIndex(image,p)),q);
+            q=PopShortPixel(quantum_info->endian,SinglePrecisionToHalf(
+              QuantumScale*GetPixelIndex(image,p)),q);
             p+=GetPixelChannels(image);
             q+=quantum_info->pad;
           }
@@ -2248,7 +2187,8 @@ static void ExportIndexQuantum(const Image *image,
         }
       for (x=0; x < (ssize_t) number_pixels; x++)
       {
-        q=PopShortPixel(endian,(unsigned short) GetPixelIndex(image,p),q);
+        q=PopShortPixel(quantum_info->endian,(unsigned short)
+          GetPixelIndex(image,p),q);
         p+=GetPixelChannels(image);
         q+=quantum_info->pad;
       }
@@ -2260,7 +2200,7 @@ static void ExportIndexQuantum(const Image *image,
         {
           for (x=0; x < (ssize_t) number_pixels; x++)
           {
-            q=PopFloatPixel(&quantum_state,(float) GetPixelIndex(image,p),q);
+            q=PopFloatPixel(quantum_info,(float) GetPixelIndex(image,p),q);
             p+=GetPixelChannels(image);
             q+=quantum_info->pad;
           }
@@ -2268,7 +2208,8 @@ static void ExportIndexQuantum(const Image *image,
         }
       for (x=0; x < (ssize_t) number_pixels; x++)
       {
-        q=PopLongPixel(endian,(unsigned int) GetPixelIndex(image,p),q);
+        q=PopLongPixel(quantum_info->endian,(unsigned int)
+          GetPixelIndex(image,p),q);
         p+=GetPixelChannels(image);
         q+=quantum_info->pad;
       }
@@ -2280,7 +2221,7 @@ static void ExportIndexQuantum(const Image *image,
         {
           for (x=0; x < (ssize_t) number_pixels; x++)
           {
-            q=PopDoublePixel(&quantum_state,(double) GetPixelIndex(image,p),q);
+            q=PopDoublePixel(quantum_info,(double) GetPixelIndex(image,p),q);
             p+=GetPixelChannels(image);
             q+=quantum_info->pad;
           }
@@ -2291,8 +2232,7 @@ static void ExportIndexQuantum(const Image *image,
     {
       for (x=0; x < (ssize_t) number_pixels; x++)
       {
-        q=PopQuantumPixel(&quantum_state,quantum_info->depth,
-          GetPixelIndex(image,p),q);
+        q=PopQuantumPixel(quantum_info,GetPixelIndex(image,p),q);
         p+=GetPixelChannels(image);
         q+=quantum_info->pad;
       }
@@ -2302,13 +2242,9 @@ static void ExportIndexQuantum(const Image *image,
 }
 
 static void ExportIndexAlphaQuantum(const Image *image,
-  const QuantumInfo *quantum_info,QuantumState quantum_state,
-  const MagickSizeType number_pixels,const Quantum *restrict p,
-  unsigned char *restrict q,ExceptionInfo *exception)
+  QuantumInfo *quantum_info,const MagickSizeType number_pixels,
+  const Quantum *restrict p,unsigned char *restrict q,ExceptionInfo *exception)
 {
-  EndianType
-    endian;
-
   register ssize_t
     x;
 
@@ -2318,10 +2254,9 @@ static void ExportIndexAlphaQuantum(const Image *image,
   if (image->storage_class != PseudoClass)
     {
       (void) ThrowMagickException(exception,GetMagickModule(),ImageError,
-        "ColormappedImageRequired","`%s'",image->filename);
+        "ColormappedImageRequired","'%s'",image->filename);
       return;
     }
-  endian=quantum_state.endian;
   switch (quantum_info->depth)
   {
     case 1:
@@ -2413,9 +2348,10 @@ static void ExportIndexAlphaQuantum(const Image *image,
         {
           for (x=0; x < (ssize_t) number_pixels; x++)
           {
-            q=PopShortPixel(endian,(unsigned short) GetPixelIndex(image,p),q);
+            q=PopShortPixel(quantum_info->endian,(unsigned short)
+              GetPixelIndex(image,p),q);
             pixel=SinglePrecisionToHalf(QuantumScale*GetPixelAlpha(image,p));
-            q=PopShortPixel(endian,pixel,q);
+            q=PopShortPixel(quantum_info->endian,pixel,q);
             p+=GetPixelChannels(image);
             q+=quantum_info->pad;
           }
@@ -2423,9 +2359,10 @@ static void ExportIndexAlphaQuantum(const Image *image,
         }
       for (x=0; x < (ssize_t) number_pixels; x++)
       {
-        q=PopShortPixel(endian,(unsigned short) GetPixelIndex(image,p),q);
+        q=PopShortPixel(quantum_info->endian,(unsigned short)
+              GetPixelIndex(image,p),q);
         pixel=ScaleQuantumToShort(GetPixelAlpha(image,p));
-        q=PopShortPixel(endian,pixel,q);
+        q=PopShortPixel(quantum_info->endian,pixel,q);
         p+=GetPixelChannels(image);
         q+=quantum_info->pad;
       }
@@ -2443,9 +2380,9 @@ static void ExportIndexAlphaQuantum(const Image *image,
             float
               pixel;
 
-            q=PopFloatPixel(&quantum_state,(float) GetPixelIndex(image,p),q);
+            q=PopFloatPixel(quantum_info,(float) GetPixelIndex(image,p),q);
             pixel=(float)  GetPixelAlpha(image,p);
-            q=PopFloatPixel(&quantum_state,pixel,q);
+            q=PopFloatPixel(quantum_info,pixel,q);
             p+=GetPixelChannels(image);
             q+=quantum_info->pad;
           }
@@ -2453,9 +2390,10 @@ static void ExportIndexAlphaQuantum(const Image *image,
         }
       for (x=0; x < (ssize_t) number_pixels; x++)
       {
-        q=PopLongPixel(endian,(unsigned int) GetPixelIndex(image,p),q);
+        q=PopLongPixel(quantum_info->endian,(unsigned int)
+          GetPixelIndex(image,p),q);
         pixel=ScaleQuantumToLong(GetPixelAlpha(image,p));
-        q=PopLongPixel(endian,pixel,q);
+        q=PopLongPixel(quantum_info->endian,pixel,q);
         p+=GetPixelChannels(image);
         q+=quantum_info->pad;
       }
@@ -2470,9 +2408,9 @@ static void ExportIndexAlphaQuantum(const Image *image,
             double
               pixel;
 
-            q=PopDoublePixel(&quantum_state,(double) GetPixelIndex(image,p),q);
+            q=PopDoublePixel(quantum_info,(double) GetPixelIndex(image,p),q);
             pixel=(double) GetPixelAlpha(image,p);
-            q=PopDoublePixel(&quantum_state,pixel,q);
+            q=PopDoublePixel(quantum_info,pixel,q);
             p+=GetPixelChannels(image);
             q+=quantum_info->pad;
           }
@@ -2487,10 +2425,9 @@ static void ExportIndexAlphaQuantum(const Image *image,
       range=GetQuantumRange(quantum_info->depth);
       for (x=0; x < (ssize_t) number_pixels; x++)
       {
-        q=PopQuantumPixel(&quantum_state,quantum_info->depth,
-          GetPixelIndex(image,p),q);
-        q=PopQuantumPixel(&quantum_state,quantum_info->depth,
-          ScaleQuantumToAny(GetPixelAlpha(image,p),range),q);
+        q=PopQuantumPixel(quantum_info,GetPixelIndex(image,p),q);
+        q=PopQuantumPixel(quantum_info,ScaleQuantumToAny(GetPixelAlpha(image,p),
+          range),q);
         p+=GetPixelChannels(image);
         q+=quantum_info->pad;
       }
@@ -2499,21 +2436,16 @@ static void ExportIndexAlphaQuantum(const Image *image,
   }
 }
 
-static void ExportOpacityQuantum(const Image *image,
-  const QuantumInfo *quantum_info,QuantumState quantum_state,
+static void ExportOpacityQuantum(const Image *image,QuantumInfo *quantum_info,
   const MagickSizeType number_pixels,const Quantum *restrict p,
   unsigned char *restrict q,ExceptionInfo *exception)
 {
-  EndianType
-    endian;
-
   QuantumAny
     range;
 
   register ssize_t
     x;
 
-  endian=quantum_state.endian;
   switch (quantum_info->depth)
   {
     case 8:
@@ -2540,7 +2472,7 @@ static void ExportOpacityQuantum(const Image *image,
           for (x=0; x < (ssize_t) number_pixels; x++)
           {
             pixel=SinglePrecisionToHalf(QuantumScale*GetPixelOpacity(image,p));
-            q=PopShortPixel(endian,pixel,q);
+            q=PopShortPixel(quantum_info->endian,pixel,q);
             p+=GetPixelChannels(image);
             q+=quantum_info->pad;
           }
@@ -2549,7 +2481,7 @@ static void ExportOpacityQuantum(const Image *image,
       for (x=0; x < (ssize_t) number_pixels; x++)
       {
         pixel=ScaleQuantumToShort(GetPixelOpacity(image,p));
-        q=PopShortPixel(endian,pixel,q);
+        q=PopShortPixel(quantum_info->endian,pixel,q);
         p+=GetPixelChannels(image);
         q+=quantum_info->pad;
       }
@@ -2564,7 +2496,7 @@ static void ExportOpacityQuantum(const Image *image,
         {
           for (x=0; x < (ssize_t) number_pixels; x++)
           {
-            q=PopFloatPixel(&quantum_state,(float) GetPixelOpacity(image,p),q);
+            q=PopFloatPixel(quantum_info,(float) GetPixelOpacity(image,p),q);
             p+=GetPixelChannels(image);
             q+=quantum_info->pad;
           }
@@ -2573,7 +2505,7 @@ static void ExportOpacityQuantum(const Image *image,
       for (x=0; x < (ssize_t) number_pixels; x++)
       {
         pixel=ScaleQuantumToLong(GetPixelOpacity(image,p));
-        q=PopLongPixel(endian,pixel,q);
+        q=PopLongPixel(quantum_info->endian,pixel,q);
         p+=GetPixelChannels(image);
         q+=quantum_info->pad;
       }
@@ -2585,8 +2517,7 @@ static void ExportOpacityQuantum(const Image *image,
         {
           for (x=0; x < (ssize_t) number_pixels; x++)
           {
-            q=PopDoublePixel(&quantum_state,(double) GetPixelOpacity(image,p),
-              q);
+            q=PopDoublePixel(quantum_info,(double) GetPixelOpacity(image,p),q);
             p+=GetPixelChannels(image);
             q+=quantum_info->pad;
           }
@@ -2598,8 +2529,8 @@ static void ExportOpacityQuantum(const Image *image,
       range=GetQuantumRange(quantum_info->depth);
       for (x=0; x < (ssize_t) number_pixels; x++)
       {
-        q=PopQuantumPixel(&quantum_state,quantum_info->depth,
-          ScaleQuantumToAny(GetPixelOpacity(image,p),range),q);
+        q=PopQuantumPixel(quantum_info,ScaleQuantumToAny(
+          GetPixelOpacity(image,p),range),q);
         p+=GetPixelChannels(image);
         q+=quantum_info->pad;
       }
@@ -2608,20 +2539,16 @@ static void ExportOpacityQuantum(const Image *image,
   }
 }
 
-static void ExportRedQuantum(const Image *image,const QuantumInfo *quantum_info,
-  QuantumState quantum_state,const MagickSizeType number_pixels,
-  const Quantum *restrict p,unsigned char *restrict q,ExceptionInfo *exception)
+static void ExportRedQuantum(const Image *image,QuantumInfo *quantum_info,
+  const MagickSizeType number_pixels,const Quantum *restrict p,
+  unsigned char *restrict q,ExceptionInfo *exception)
 {
-  EndianType
-    endian;
-
   QuantumAny
     range;
 
   register ssize_t
     x;
 
-  endian=quantum_state.endian;
   switch (quantum_info->depth)
   {
     case 8:
@@ -2648,7 +2575,7 @@ static void ExportRedQuantum(const Image *image,const QuantumInfo *quantum_info,
           for (x=0; x < (ssize_t) number_pixels; x++)
           {
             pixel=SinglePrecisionToHalf(QuantumScale*GetPixelRed(image,p));
-            q=PopShortPixel(endian,pixel,q);
+            q=PopShortPixel(quantum_info->endian,pixel,q);
             p+=GetPixelChannels(image);
             q+=quantum_info->pad;
           }
@@ -2657,7 +2584,7 @@ static void ExportRedQuantum(const Image *image,const QuantumInfo *quantum_info,
       for (x=0; x < (ssize_t) number_pixels; x++)
       {
         pixel=ScaleQuantumToShort(GetPixelRed(image,p));
-        q=PopShortPixel(endian,pixel,q);
+        q=PopShortPixel(quantum_info->endian,pixel,q);
         p+=GetPixelChannels(image);
         q+=quantum_info->pad;
       }
@@ -2672,7 +2599,7 @@ static void ExportRedQuantum(const Image *image,const QuantumInfo *quantum_info,
         {
           for (x=0; x < (ssize_t) number_pixels; x++)
           {
-            q=PopFloatPixel(&quantum_state,(float) GetPixelRed(image,p),q);
+            q=PopFloatPixel(quantum_info,(float) GetPixelRed(image,p),q);
             p+=GetPixelChannels(image);
             q+=quantum_info->pad;
           }
@@ -2681,7 +2608,7 @@ static void ExportRedQuantum(const Image *image,const QuantumInfo *quantum_info,
       for (x=0; x < (ssize_t) number_pixels; x++)
       {
         pixel=ScaleQuantumToLong(GetPixelRed(image,p));
-        q=PopLongPixel(endian,pixel,q);
+        q=PopLongPixel(quantum_info->endian,pixel,q);
         p+=GetPixelChannels(image);
         q+=quantum_info->pad;
       }
@@ -2693,7 +2620,7 @@ static void ExportRedQuantum(const Image *image,const QuantumInfo *quantum_info,
         {
           for (x=0; x < (ssize_t) number_pixels; x++)
           {
-            q=PopDoublePixel(&quantum_state,(double) GetPixelRed(image,p),q);
+            q=PopDoublePixel(quantum_info,(double) GetPixelRed(image,p),q);
             p+=GetPixelChannels(image);
             q+=quantum_info->pad;
           }
@@ -2705,8 +2632,8 @@ static void ExportRedQuantum(const Image *image,const QuantumInfo *quantum_info,
       range=GetQuantumRange(quantum_info->depth);
       for (x=0; x < (ssize_t) number_pixels; x++)
       {
-        q=PopQuantumPixel(&quantum_state,quantum_info->depth,
-          ScaleQuantumToAny(GetPixelRed(image,p),range),q);
+        q=PopQuantumPixel(quantum_info,ScaleQuantumToAny(GetPixelRed(image,p),
+          range),q);
         p+=GetPixelChannels(image);
         q+=quantum_info->pad;
       }
@@ -2715,13 +2642,10 @@ static void ExportRedQuantum(const Image *image,const QuantumInfo *quantum_info,
   }
 }
 
-static void ExportRGBQuantum(const Image *image,const QuantumInfo *quantum_info,
-  QuantumState quantum_state,const MagickSizeType number_pixels,
-  const Quantum *restrict p,unsigned char *restrict q,ExceptionInfo *exception)
+static void ExportRGBQuantum(const Image *image,QuantumInfo *quantum_info,
+  const MagickSizeType number_pixels,const Quantum *restrict p,
+  unsigned char *restrict q,ExceptionInfo *exception)
 {
-  EndianType
-    endian;
-
   QuantumAny
     range;
 
@@ -2731,7 +2655,6 @@ static void ExportRGBQuantum(const Image *image,const QuantumInfo *quantum_info,
   ssize_t
     bit;
 
-  endian=quantum_state.endian;
   switch (quantum_info->depth)
   {
     case 8:
@@ -2760,7 +2683,7 @@ static void ExportRGBQuantum(const Image *image,const QuantumInfo *quantum_info,
               ScaleQuantumToAny(GetPixelRed(image,p),range) << 22 |
               ScaleQuantumToAny(GetPixelGreen(image,p),range) << 12 |
               ScaleQuantumToAny(GetPixelBlue(image,p),range) << 2);
-            q=PopLongPixel(endian,pixel,q);
+            q=PopLongPixel(quantum_info->endian,pixel,q);
             p+=GetPixelChannels(image);
             q+=quantum_info->pad;
           }
@@ -2771,12 +2694,12 @@ static void ExportRGBQuantum(const Image *image,const QuantumInfo *quantum_info,
           for (x=0; x < (ssize_t) number_pixels; x++)
           {
             pixel=(unsigned int) ScaleQuantumToAny(GetPixelRed(image,p),range);
-            q=PopQuantumLongPixel(&quantum_state,quantum_info->depth,pixel,q);
+            q=PopQuantumLongPixel(quantum_info,pixel,q);
             pixel=(unsigned int) ScaleQuantumToAny(GetPixelGreen(image,p),
               range);
-            q=PopQuantumLongPixel(&quantum_state,quantum_info->depth,pixel,q);
+            q=PopQuantumLongPixel(quantum_info,pixel,q);
             pixel=(unsigned int) ScaleQuantumToAny(GetPixelBlue(image,p),range);
-            q=PopQuantumLongPixel(&quantum_state,quantum_info->depth,pixel,q);
+            q=PopQuantumLongPixel(quantum_info,pixel,q);
             p+=GetPixelChannels(image);
             q+=quantum_info->pad;
           }
@@ -2785,11 +2708,11 @@ static void ExportRGBQuantum(const Image *image,const QuantumInfo *quantum_info,
       for (x=0; x < (ssize_t) number_pixels; x++)
       {
         pixel=(unsigned int) ScaleQuantumToAny(GetPixelRed(image,p),range);
-        q=PopQuantumPixel(&quantum_state,quantum_info->depth,pixel,q);
+        q=PopQuantumPixel(quantum_info,pixel,q);
         pixel=(unsigned int) ScaleQuantumToAny(GetPixelGreen(image,p),range);
-        q=PopQuantumPixel(&quantum_state,quantum_info->depth,pixel,q);
+        q=PopQuantumPixel(quantum_info,pixel,q);
         pixel=(unsigned int) ScaleQuantumToAny(GetPixelBlue(image,p),range);
-        q=PopQuantumPixel(&quantum_state,quantum_info->depth,pixel,q);
+        q=PopQuantumPixel(quantum_info,pixel,q);
         p+=GetPixelChannels(image);
         q+=quantum_info->pad;
       }
@@ -2828,7 +2751,8 @@ static void ExportRGBQuantum(const Image *image,const QuantumInfo *quantum_info,
                 break;
               }
             }
-            q=PopShortPixel(endian,(unsigned short) (pixel << 4),q);
+            q=PopShortPixel(quantum_info->endian,(unsigned short) (pixel << 4),
+              q);
             switch ((x+1) % 3)
             {
               default:
@@ -2852,7 +2776,8 @@ static void ExportRGBQuantum(const Image *image,const QuantumInfo *quantum_info,
                 break;
               }
             }
-            q=PopShortPixel(endian,(unsigned short) (pixel << 4),q);
+            q=PopShortPixel(quantum_info->endian,(unsigned short) (pixel << 4),
+              q);
             q+=quantum_info->pad;
           }
           for (bit=0; bit < (ssize_t) (3*number_pixels % 2); bit++)
@@ -2880,7 +2805,8 @@ static void ExportRGBQuantum(const Image *image,const QuantumInfo *quantum_info,
                 break;
               }
             }
-            q=PopShortPixel(endian,(unsigned short) (pixel << 4),q);
+            q=PopShortPixel(quantum_info->endian,(unsigned short) (pixel << 4),
+              q);
             q+=quantum_info->pad;
           }
           if (bit != 0)
@@ -2892,12 +2818,12 @@ static void ExportRGBQuantum(const Image *image,const QuantumInfo *quantum_info,
           for (x=0; x < (ssize_t) number_pixels; x++)
           {
             pixel=(unsigned int) ScaleQuantumToAny(GetPixelRed(image,p),range);
-            q=PopQuantumLongPixel(&quantum_state,quantum_info->depth,pixel,q);
+            q=PopQuantumLongPixel(quantum_info,pixel,q);
             pixel=(unsigned int) ScaleQuantumToAny(GetPixelGreen(image,p),
               range);
-            q=PopQuantumLongPixel(&quantum_state,quantum_info->depth,pixel,q);
+            q=PopQuantumLongPixel(quantum_info,pixel,q);
             pixel=(unsigned int) ScaleQuantumToAny(GetPixelBlue(image,p),range);
-            q=PopQuantumLongPixel(&quantum_state,quantum_info->depth,pixel,q);
+            q=PopQuantumLongPixel(quantum_info,pixel,q);
             p+=GetPixelChannels(image);
             q+=quantum_info->pad;
           }
@@ -2906,11 +2832,11 @@ static void ExportRGBQuantum(const Image *image,const QuantumInfo *quantum_info,
       for (x=0; x < (ssize_t) number_pixels; x++)
       {
         pixel=(unsigned int) ScaleQuantumToAny(GetPixelRed(image,p),range);
-        q=PopQuantumPixel(&quantum_state,quantum_info->depth,pixel,q);
+        q=PopQuantumPixel(quantum_info,pixel,q);
         pixel=(unsigned int) ScaleQuantumToAny(GetPixelGreen(image,p),range);
-        q=PopQuantumPixel(&quantum_state,quantum_info->depth,pixel,q);
+        q=PopQuantumPixel(quantum_info,pixel,q);
         pixel=(unsigned int) ScaleQuantumToAny(GetPixelBlue(image,p),range);
-        q=PopQuantumPixel(&quantum_state,quantum_info->depth,pixel,q);
+        q=PopQuantumPixel(quantum_info,pixel,q);
         p+=GetPixelChannels(image);
         q+=quantum_info->pad;
       }
@@ -2926,11 +2852,11 @@ static void ExportRGBQuantum(const Image *image,const QuantumInfo *quantum_info,
           for (x=0; x < (ssize_t) number_pixels; x++)
           {
             pixel=SinglePrecisionToHalf(QuantumScale*GetPixelRed(image,p));
-            q=PopShortPixel(endian,pixel,q);
+            q=PopShortPixel(quantum_info->endian,pixel,q);
             pixel=SinglePrecisionToHalf(QuantumScale*GetPixelGreen(image,p));
-            q=PopShortPixel(endian,pixel,q);
+            q=PopShortPixel(quantum_info->endian,pixel,q);
             pixel=SinglePrecisionToHalf(QuantumScale*GetPixelBlue(image,p));
-            q=PopShortPixel(endian,pixel,q);
+            q=PopShortPixel(quantum_info->endian,pixel,q);
             p+=GetPixelChannels(image);
             q+=quantum_info->pad;
           }
@@ -2939,11 +2865,11 @@ static void ExportRGBQuantum(const Image *image,const QuantumInfo *quantum_info,
       for (x=0; x < (ssize_t) number_pixels; x++)
       {
         pixel=ScaleQuantumToShort(GetPixelRed(image,p));
-        q=PopShortPixel(endian,pixel,q);
+        q=PopShortPixel(quantum_info->endian,pixel,q);
         pixel=ScaleQuantumToShort(GetPixelGreen(image,p));
-        q=PopShortPixel(endian,pixel,q);
+        q=PopShortPixel(quantum_info->endian,pixel,q);
         pixel=ScaleQuantumToShort(GetPixelBlue(image,p));
-        q=PopShortPixel(endian,pixel,q);
+        q=PopShortPixel(quantum_info->endian,pixel,q);
         p+=GetPixelChannels(image);
         q+=quantum_info->pad;
       }
@@ -2958,9 +2884,9 @@ static void ExportRGBQuantum(const Image *image,const QuantumInfo *quantum_info,
         {
           for (x=0; x < (ssize_t) number_pixels; x++)
           {
-            q=PopFloatPixel(&quantum_state,(float) GetPixelRed(image,p),q);
-            q=PopFloatPixel(&quantum_state,(float) GetPixelGreen(image,p),q);
-            q=PopFloatPixel(&quantum_state,(float) GetPixelBlue(image,p),q);
+            q=PopFloatPixel(quantum_info,(float) GetPixelRed(image,p),q);
+            q=PopFloatPixel(quantum_info,(float) GetPixelGreen(image,p),q);
+            q=PopFloatPixel(quantum_info,(float) GetPixelBlue(image,p),q);
             p+=GetPixelChannels(image);
             q+=quantum_info->pad;
           }
@@ -2969,11 +2895,11 @@ static void ExportRGBQuantum(const Image *image,const QuantumInfo *quantum_info,
       for (x=0; x < (ssize_t) number_pixels; x++)
       {
         pixel=ScaleQuantumToLong(GetPixelRed(image,p));
-        q=PopLongPixel(endian,pixel,q);
+        q=PopLongPixel(quantum_info->endian,pixel,q);
         pixel=ScaleQuantumToLong(GetPixelGreen(image,p));
-        q=PopLongPixel(endian,pixel,q);
+        q=PopLongPixel(quantum_info->endian,pixel,q);
         pixel=ScaleQuantumToLong(GetPixelBlue(image,p));
-        q=PopLongPixel(endian,pixel,q);
+        q=PopLongPixel(quantum_info->endian,pixel,q);
         p+=GetPixelChannels(image);
         q+=quantum_info->pad;
       }
@@ -2985,9 +2911,9 @@ static void ExportRGBQuantum(const Image *image,const QuantumInfo *quantum_info,
         {
           for (x=0; x < (ssize_t) number_pixels; x++)
           {
-            q=PopDoublePixel(&quantum_state,(double) GetPixelRed(image,p),q);
-            q=PopDoublePixel(&quantum_state,(double) GetPixelGreen(image,p),q);
-            q=PopDoublePixel(&quantum_state,(double) GetPixelBlue(image,p),q);
+            q=PopDoublePixel(quantum_info,(double) GetPixelRed(image,p),q);
+            q=PopDoublePixel(quantum_info,(double) GetPixelGreen(image,p),q);
+            q=PopDoublePixel(quantum_info,(double) GetPixelBlue(image,p),q);
             p+=GetPixelChannels(image);
             q+=quantum_info->pad;
           }
@@ -2999,12 +2925,12 @@ static void ExportRGBQuantum(const Image *image,const QuantumInfo *quantum_info,
       range=GetQuantumRange(quantum_info->depth);
       for (x=0; x < (ssize_t) number_pixels; x++)
       {
-        q=PopQuantumPixel(&quantum_state,quantum_info->depth,
-          ScaleQuantumToAny(GetPixelRed(image,p),range),q);
-        q=PopQuantumPixel(&quantum_state,quantum_info->depth,
-          ScaleQuantumToAny(GetPixelGreen(image,p),range),q);
-        q=PopQuantumPixel(&quantum_state,quantum_info->depth,
-          ScaleQuantumToAny(GetPixelBlue(image,p),range),q);
+        q=PopQuantumPixel(quantum_info,ScaleQuantumToAny(GetPixelRed(image,p),
+          range),q);
+        q=PopQuantumPixel(quantum_info,ScaleQuantumToAny(GetPixelGreen(image,p),
+          range),q);
+        q=PopQuantumPixel(quantum_info,ScaleQuantumToAny(GetPixelBlue(image,p),
+          range),q);
         p+=GetPixelChannels(image);
         q+=quantum_info->pad;
       }
@@ -3013,21 +2939,16 @@ static void ExportRGBQuantum(const Image *image,const QuantumInfo *quantum_info,
   }
 }
 
-static void ExportRGBAQuantum(const Image *image,
-  const QuantumInfo *quantum_info,QuantumState quantum_state,
+static void ExportRGBAQuantum(const Image *image,QuantumInfo *quantum_info,
   const MagickSizeType number_pixels,const Quantum *restrict p,
   unsigned char *restrict q,ExceptionInfo *exception)
 {
-  EndianType
-    endian;
-
   QuantumAny
     range;
 
   register ssize_t
     x;
 
-  endian=quantum_state.endian;
   switch (quantum_info->depth)
   {
     case 8:
@@ -3099,7 +3020,7 @@ static void ExportRGBAQuantum(const Image *image,
                 {
                   pixel|=(size_t) (ScaleQuantumToAny((Quantum) quantum,
                     range) << 2);
-                  q=PopLongPixel(endian,pixel,q);
+                  q=PopLongPixel(quantum_info->endian,pixel,q);
                   pixel=0;
                   break;
                 }
@@ -3116,15 +3037,15 @@ static void ExportRGBAQuantum(const Image *image,
           for (x=0; x < (ssize_t) number_pixels; x++)
           {
             pixel=(unsigned int) ScaleQuantumToAny(GetPixelRed(image,p),range);
-            q=PopQuantumLongPixel(&quantum_state,quantum_info->depth,pixel,q);
+            q=PopQuantumLongPixel(quantum_info,pixel,q);
             pixel=(unsigned int) ScaleQuantumToAny(GetPixelGreen(image,p),
               range);
-            q=PopQuantumLongPixel(&quantum_state,quantum_info->depth,pixel,q);
+            q=PopQuantumLongPixel(quantum_info,pixel,q);
             pixel=(unsigned int) ScaleQuantumToAny(GetPixelBlue(image,p),range);
-            q=PopQuantumLongPixel(&quantum_state,quantum_info->depth,pixel,q);
+            q=PopQuantumLongPixel(quantum_info,pixel,q);
             pixel=(unsigned int) ScaleQuantumToAny(GetPixelAlpha(image,p),
               range);
-            q=PopQuantumLongPixel(&quantum_state,quantum_info->depth,pixel,q);
+            q=PopQuantumLongPixel(quantum_info,pixel,q);
             p+=GetPixelChannels(image);
             q+=quantum_info->pad;
           }
@@ -3133,13 +3054,13 @@ static void ExportRGBAQuantum(const Image *image,
       for (x=0; x < (ssize_t) number_pixels; x++)
       {
         pixel=(unsigned int) ScaleQuantumToAny(GetPixelRed(image,p),range);
-        q=PopQuantumPixel(&quantum_state,quantum_info->depth,pixel,q);
+        q=PopQuantumPixel(quantum_info,pixel,q);
         pixel=(unsigned int) ScaleQuantumToAny(GetPixelGreen(image,p),range);
-        q=PopQuantumPixel(&quantum_state,quantum_info->depth,pixel,q);
+        q=PopQuantumPixel(quantum_info,pixel,q);
         pixel=(unsigned int) ScaleQuantumToAny(GetPixelBlue(image,p),range);
-        q=PopQuantumPixel(&quantum_state,quantum_info->depth,pixel,q);
+        q=PopQuantumPixel(quantum_info,pixel,q);
         pixel=(unsigned int) ScaleQuantumToAny(GetPixelAlpha(image,p),range);
-        q=PopQuantumPixel(&quantum_state,quantum_info->depth,pixel,q);
+        q=PopQuantumPixel(quantum_info,pixel,q);
         p+=GetPixelChannels(image);
         q+=quantum_info->pad;
       }
@@ -3155,13 +3076,13 @@ static void ExportRGBAQuantum(const Image *image,
           for (x=0; x < (ssize_t) number_pixels; x++)
           {
             pixel=SinglePrecisionToHalf(QuantumScale*GetPixelRed(image,p));
-            q=PopShortPixel(endian,pixel,q);
+            q=PopShortPixel(quantum_info->endian,pixel,q);
             pixel=SinglePrecisionToHalf(QuantumScale*GetPixelGreen(image,p));
-            q=PopShortPixel(endian,pixel,q);
+            q=PopShortPixel(quantum_info->endian,pixel,q);
             pixel=SinglePrecisionToHalf(QuantumScale*GetPixelBlue(image,p));
-            q=PopShortPixel(endian,pixel,q);
+            q=PopShortPixel(quantum_info->endian,pixel,q);
             pixel=SinglePrecisionToHalf(QuantumScale*GetPixelAlpha(image,p));
-            q=PopShortPixel(endian,pixel,q);
+            q=PopShortPixel(quantum_info->endian,pixel,q);
             p+=GetPixelChannels(image);
             q+=quantum_info->pad;
           }
@@ -3170,13 +3091,13 @@ static void ExportRGBAQuantum(const Image *image,
       for (x=0; x < (ssize_t) number_pixels; x++)
       {
         pixel=ScaleQuantumToShort(GetPixelRed(image,p));
-        q=PopShortPixel(endian,pixel,q);
+        q=PopShortPixel(quantum_info->endian,pixel,q);
         pixel=ScaleQuantumToShort(GetPixelGreen(image,p));
-        q=PopShortPixel(endian,pixel,q);
+        q=PopShortPixel(quantum_info->endian,pixel,q);
         pixel=ScaleQuantumToShort(GetPixelBlue(image,p));
-        q=PopShortPixel(endian,pixel,q);
+        q=PopShortPixel(quantum_info->endian,pixel,q);
         pixel=ScaleQuantumToShort(GetPixelAlpha(image,p));
-        q=PopShortPixel(endian,pixel,q);
+        q=PopShortPixel(quantum_info->endian,pixel,q);
         p+=GetPixelChannels(image);
         q+=quantum_info->pad;
       }
@@ -3194,11 +3115,11 @@ static void ExportRGBAQuantum(const Image *image,
             float
               pixel;
 
-            q=PopFloatPixel(&quantum_state,(float) GetPixelRed(image,p),q);
-            q=PopFloatPixel(&quantum_state,(float) GetPixelGreen(image,p),q);
-            q=PopFloatPixel(&quantum_state,(float) GetPixelBlue(image,p),q);
+            q=PopFloatPixel(quantum_info,(float) GetPixelRed(image,p),q);
+            q=PopFloatPixel(quantum_info,(float) GetPixelGreen(image,p),q);
+            q=PopFloatPixel(quantum_info,(float) GetPixelBlue(image,p),q);
             pixel=(float) GetPixelAlpha(image,p);
-            q=PopFloatPixel(&quantum_state,pixel,q);
+            q=PopFloatPixel(quantum_info,pixel,q);
             p+=GetPixelChannels(image);
             q+=quantum_info->pad;
           }
@@ -3207,13 +3128,13 @@ static void ExportRGBAQuantum(const Image *image,
       for (x=0; x < (ssize_t) number_pixels; x++)
       {
         pixel=ScaleQuantumToLong(GetPixelRed(image,p));
-        q=PopLongPixel(endian,pixel,q);
+        q=PopLongPixel(quantum_info->endian,pixel,q);
         pixel=ScaleQuantumToLong(GetPixelGreen(image,p));
-        q=PopLongPixel(endian,pixel,q);
+        q=PopLongPixel(quantum_info->endian,pixel,q);
         pixel=ScaleQuantumToLong(GetPixelBlue(image,p));
-        q=PopLongPixel(endian,pixel,q);
+        q=PopLongPixel(quantum_info->endian,pixel,q);
         pixel=ScaleQuantumToLong(GetPixelAlpha(image,p));
-        q=PopLongPixel(endian,pixel,q);
+        q=PopLongPixel(quantum_info->endian,pixel,q);
         p+=GetPixelChannels(image);
         q+=quantum_info->pad;
       }
@@ -3228,11 +3149,11 @@ static void ExportRGBAQuantum(const Image *image,
 
           for (x=0; x < (ssize_t) number_pixels; x++)
           {
-            q=PopDoublePixel(&quantum_state,(double) GetPixelRed(image,p),q);
-            q=PopDoublePixel(&quantum_state,(double) GetPixelGreen(image,p),q);
-            q=PopDoublePixel(&quantum_state,(double) GetPixelBlue(image,p),q);
+            q=PopDoublePixel(quantum_info,(double) GetPixelRed(image,p),q);
+            q=PopDoublePixel(quantum_info,(double) GetPixelGreen(image,p),q);
+            q=PopDoublePixel(quantum_info,(double) GetPixelBlue(image,p),q);
             pixel=(double) GetPixelAlpha(image,p);
-            q=PopDoublePixel(&quantum_state,pixel,q);
+            q=PopDoublePixel(quantum_info,pixel,q);
             p+=GetPixelChannels(image);
             q+=quantum_info->pad;
           }
@@ -3244,14 +3165,14 @@ static void ExportRGBAQuantum(const Image *image,
       range=GetQuantumRange(quantum_info->depth);
       for (x=0; x < (ssize_t) number_pixels; x++)
       {
-        q=PopQuantumPixel(&quantum_state,quantum_info->depth,
-          ScaleQuantumToAny(GetPixelRed(image,p),range),q);
-        q=PopQuantumPixel(&quantum_state,quantum_info->depth,
-          ScaleQuantumToAny(GetPixelGreen(image,p),range),q);
-        q=PopQuantumPixel(&quantum_state,quantum_info->depth,
-          ScaleQuantumToAny(GetPixelBlue(image,p),range),q);
-        q=PopQuantumPixel(&quantum_state,quantum_info->depth,
-          ScaleQuantumToAny(GetPixelAlpha(image,p),range),q);
+        q=PopQuantumPixel(quantum_info,ScaleQuantumToAny(GetPixelRed(image,p),
+          range),q);
+        q=PopQuantumPixel(quantum_info,ScaleQuantumToAny(GetPixelGreen(image,p),
+          range),q);
+        q=PopQuantumPixel(quantum_info,ScaleQuantumToAny(GetPixelBlue(image,p),
+          range),q);
+        q=PopQuantumPixel(quantum_info,ScaleQuantumToAny(GetPixelAlpha(image,p),
+          range),q);
         p+=GetPixelChannels(image);
         q+=quantum_info->pad;
       }
@@ -3260,16 +3181,13 @@ static void ExportRGBAQuantum(const Image *image,
   }
 }
 
-MagickExport size_t ExportQuantumPixels(Image *image,CacheView *image_view,
-  const QuantumInfo *quantum_info,const QuantumType quantum_type,
-  unsigned char *pixels,ExceptionInfo *exception)
+MagickExport size_t ExportQuantumPixels(const Image *image,
+  CacheView *image_view,QuantumInfo *quantum_info,
+  const QuantumType quantum_type,unsigned char *pixels,ExceptionInfo *exception)
 {
   MagickSizeType
     number_pixels;
 
-  QuantumState
-    quantum_state;
-
   register const Quantum
     *restrict p;
 
@@ -3319,6 +3237,11 @@ MagickExport size_t ExportQuantumPixels(Image *image,CacheView *image_view,
         register ssize_t
           i;
 
+        if (GetPixelMask(image,q) != 0)
+          {
+            q+=GetPixelChannels(image);
+            continue;
+          }
         Sa=QuantumScale*GetPixelAlpha(image,q);
         for (i=0; i < (ssize_t) GetPixelChannels(image); i++)
         {
@@ -3330,8 +3253,9 @@ MagickExport size_t ExportQuantumPixels(Image *image,CacheView *image_view,
 
           channel=GetPixelChannelMapChannel(image,i);
           traits=GetPixelChannelMapTraits(image,channel);
-          if ((traits & UpdatePixelTrait) != 0)
-            q[i]=ClampToQuantum(Sa*q[i]);
+          if ((traits & UpdatePixelTrait) == 0)
+            continue;
+          q[i]=ClampToQuantum(Sa*q[i]);
         }
         q+=GetPixelChannels(image);
       }
@@ -3372,118 +3296,101 @@ MagickExport size_t ExportQuantumPixels(Image *image,CacheView *image_view,
     }
   x=0;
   q=pixels;
-  InitializeQuantumState(quantum_info,image->endian,&quantum_state);
+  ResetQuantumState(quantum_info);
   extent=GetQuantumExtent(image,quantum_info,quantum_type);
   switch (quantum_type)
   {
     case AlphaQuantum:
     {
-      ExportAlphaQuantum(image,quantum_info,quantum_state,number_pixels,p,q,
-        exception);
+      ExportAlphaQuantum(image,quantum_info,number_pixels,p,q,exception);
       break;
     }
     case BGRQuantum:
     {
-      ExportBGRQuantum(image,quantum_info,quantum_state,number_pixels,p,q,
-        exception);
+      ExportBGRQuantum(image,quantum_info,number_pixels,p,q,exception);
       break;
     }
     case BGRAQuantum:
     case BGROQuantum:
     {
-      ExportBGRAQuantum(image,quantum_info,quantum_state,number_pixels,p,q,
-        exception);
+      ExportBGRAQuantum(image,quantum_info,number_pixels,p,q,exception);
       break;
     }
     case BlackQuantum:
     {
-      ExportBlackQuantum(image,quantum_info,quantum_state,number_pixels,p,q,
-        exception);
+      ExportBlackQuantum(image,quantum_info,number_pixels,p,q,exception);
       break;
     }
     case BlueQuantum:
     case YellowQuantum:
     {
-      ExportBlueQuantum(image,quantum_info,quantum_state,number_pixels,p,q,
-        exception);
+      ExportBlueQuantum(image,quantum_info,number_pixels,p,q,exception);
       break;
     }
     case CMYKQuantum:
     {
-      ExportCMYKQuantum(image,quantum_info,quantum_state,number_pixels,p,q,
-        exception);
+      ExportCMYKQuantum(image,quantum_info,number_pixels,p,q,exception);
       break;
     }
     case CMYKAQuantum:
     case CMYKOQuantum:
     {
-      ExportCMYKAQuantum(image,quantum_info,quantum_state,number_pixels,p,q,
-        exception);
+      ExportCMYKAQuantum(image,quantum_info,number_pixels,p,q,exception);
       break;
     }
     case CbYCrYQuantum:
     {
-      ExportCbYCrYQuantum(image,quantum_info,quantum_state,number_pixels,p,q,
-        exception);
+      ExportCbYCrYQuantum(image,quantum_info,number_pixels,p,q,exception);
       break;
     }
     case GrayQuantum:
     {
-      ExportGrayQuantum(image,quantum_info,quantum_state,number_pixels,p,q,
-        exception);
+      ExportGrayQuantum(image,quantum_info,number_pixels,p,q,exception);
       break;
     }
     case GrayAlphaQuantum:
     {
-      ExportGrayAlphaQuantum(image,quantum_info,quantum_state,number_pixels,p,q,
-        exception);
+      ExportGrayAlphaQuantum(image,quantum_info,number_pixels,p,q,exception);
       break;
     }
     case GreenQuantum:
     case MagentaQuantum:
     {
-      ExportGreenQuantum(image,quantum_info,quantum_state,number_pixels,p,q,
-        exception);
+      ExportGreenQuantum(image,quantum_info,number_pixels,p,q,exception);
       break;
     }
     case IndexQuantum:
     {
-      ExportIndexQuantum(image,quantum_info,quantum_state,number_pixels,p,q,
-        exception);
+      ExportIndexQuantum(image,quantum_info,number_pixels,p,q,exception);
       break;
     }
     case IndexAlphaQuantum:
     {
-      ExportIndexAlphaQuantum(image,quantum_info,quantum_state,number_pixels,p,
-        q,exception);
+      ExportIndexAlphaQuantum(image,quantum_info,number_pixels,p,q,exception);
       break;
     }
     case RedQuantum:
     case CyanQuantum:
     {
-      ExportRedQuantum(image,quantum_info,quantum_state,number_pixels,p,q,
-        exception);
+      ExportRedQuantum(image,quantum_info,number_pixels,p,q,exception);
       break;
     }
     case OpacityQuantum:
     {
-      ExportOpacityQuantum(image,quantum_info,quantum_state,number_pixels,p,q,
-        exception);
+      ExportOpacityQuantum(image,quantum_info,number_pixels,p,q,exception);
       break;
     }
     case RGBQuantum:
     case CbYCrQuantum:
     {
-      ExportRGBQuantum(image,quantum_info,quantum_state,number_pixels,p,q,
-        exception);
+      ExportRGBQuantum(image,quantum_info,number_pixels,p,q,exception);
       break;
     }
     case RGBAQuantum:
     case RGBOQuantum:
     case CbYCrAQuantum:
     {
-      ExportRGBAQuantum(image,quantum_info,quantum_state,number_pixels,p,q,
-        exception);
+      ExportRGBAQuantum(image,quantum_info,number_pixels,p,q,exception);
       break;
     }
     default: