]> granicus.if.org Git - imagemagick/blobdiff - magick/pixel.c
(no commit message)
[imagemagick] / magick / pixel.c
index b952c12d4feda7701e95b46278adf53b7e30b552..999b42d6052964f8b5213924022f4f15fe77b7d1 100644 (file)
@@ -427,7 +427,7 @@ MagickExport MagickBooleanType ExportImagePixels(const Image *image,
               case BlackQuantum:
               {
                 if (image->colorspace == CMYKColorspace)
-                  *q=ScaleQuantumToChar(indexes[x]);
+                  *q=ScaleQuantumToChar(GetIndexPixelComponent(indexes+x));
                 break;
               }
               case IndexQuantum:
@@ -619,7 +619,7 @@ MagickExport MagickBooleanType ExportImagePixels(const Image *image,
               case BlackQuantum:
               {
                 if (image->colorspace == CMYKColorspace)
-                  *q=(double) (QuantumScale*indexes[x]);
+                  *q=(double) (QuantumScale*GetIndexPixelComponent(indexes+x));
                 break;
               }
               case IndexQuantum:
@@ -808,7 +808,7 @@ MagickExport MagickBooleanType ExportImagePixels(const Image *image,
               case BlackQuantum:
               {
                 if (image->colorspace == CMYKColorspace)
-                  *q=(float) (QuantumScale*indexes[x]);
+                  *q=(float) (QuantumScale*GetIndexPixelComponent(indexes+x));
                 break;
               }
               case IndexQuantum:
@@ -1001,7 +1001,7 @@ MagickExport MagickBooleanType ExportImagePixels(const Image *image,
               case BlackQuantum:
               {
                 if (image->colorspace == CMYKColorspace)
-                  *q=(unsigned int) ScaleQuantumToLong(indexes[x]);
+                  *q=(unsigned int) ScaleQuantumToLong(GetIndexPixelComponent(indexes+x));
                 break;
               }
               case IndexQuantum:
@@ -1191,7 +1191,7 @@ MagickExport MagickBooleanType ExportImagePixels(const Image *image,
               case BlackQuantum:
               {
                 if (image->colorspace == CMYKColorspace)
-                  *q=ScaleQuantumToLong(indexes[x]);
+                  *q=ScaleQuantumToLong(GetIndexPixelComponent(indexes+x));
                 break;
               }
               case IndexQuantum:
@@ -1380,7 +1380,7 @@ MagickExport MagickBooleanType ExportImagePixels(const Image *image,
               case BlackQuantum:
               {
                 if (image->colorspace == CMYKColorspace)
-                  *q=indexes[x];
+                  *q=GetIndexPixelComponent(indexes+x);
                 break;
               }
               case IndexQuantum:
@@ -1569,7 +1569,7 @@ MagickExport MagickBooleanType ExportImagePixels(const Image *image,
               case BlackQuantum:
               {
                 if (image->colorspace == CMYKColorspace)
-                  *q=ScaleQuantumToShort(indexes[x]);
+                  *q=ScaleQuantumToShort(GetIndexPixelComponent(indexes+x));
                 break;
               }
               case IndexQuantum:
@@ -1843,9 +1843,9 @@ MagickExport MagickBooleanType ImportImagePixels(Image *image,
               break;
             for (x=0; x < (ssize_t) columns; x++)
             {
-              q->blue=ScaleCharToQuantum(*p++);
-              q->green=ScaleCharToQuantum(*p++);
-              q->red=ScaleCharToQuantum(*p++);
+              SetBluePixelComponent(q,ScaleCharToQuantum(*p++));
+              SetGreenPixelComponent(q,ScaleCharToQuantum(*p++));
+              SetRedPixelComponent(q,ScaleCharToQuantum(*p++));
               q++;
             }
             if (SyncAuthenticPixels(image,exception) == MagickFalse)
@@ -1862,10 +1862,10 @@ MagickExport MagickBooleanType ImportImagePixels(Image *image,
               break;
             for (x=0; x < (ssize_t) columns; x++)
             {
-              q->blue=ScaleCharToQuantum(*p++);
-              q->green=ScaleCharToQuantum(*p++);
-              q->red=ScaleCharToQuantum(*p++);
-              q->opacity=(Quantum) QuantumRange-ScaleCharToQuantum(*p++);
+              SetBluePixelComponent(q,ScaleCharToQuantum(*p++));
+              SetGreenPixelComponent(q,ScaleCharToQuantum(*p++));
+              SetRedPixelComponent(q,ScaleCharToQuantum(*p++));
+              SetAlphaPixelComponent(q,ScaleCharToQuantum(*p++));
               q++;
             }
             if (SyncAuthenticPixels(image,exception) == MagickFalse)
@@ -1882,10 +1882,10 @@ MagickExport MagickBooleanType ImportImagePixels(Image *image,
               break;
             for (x=0; x < (ssize_t) columns; x++)
             {
-              q->blue=ScaleCharToQuantum(*p++);
-              q->green=ScaleCharToQuantum(*p++);
-              q->red=ScaleCharToQuantum(*p++);
-              q->opacity=ScaleCharToQuantum(*p++);
+              SetBluePixelComponent(q,ScaleCharToQuantum(*p++));
+              SetGreenPixelComponent(q,ScaleCharToQuantum(*p++));
+              SetRedPixelComponent(q,ScaleCharToQuantum(*p++));
+              SetOpacityPixelComponent(q,ScaleCharToQuantum(*p++));
               q++;
             }
             if (SyncAuthenticPixels(image,exception) == MagickFalse)
@@ -1902,9 +1902,9 @@ MagickExport MagickBooleanType ImportImagePixels(Image *image,
               break;
             for (x=0; x < (ssize_t) columns; x++)
             {
-              q->blue=ScaleCharToQuantum(*p++);
-              q->green=ScaleCharToQuantum(*p++);
-              q->red=ScaleCharToQuantum(*p++);
+              SetBluePixelComponent(q,ScaleCharToQuantum(*p++));
+              SetGreenPixelComponent(q,ScaleCharToQuantum(*p++));
+              SetRedPixelComponent(q,ScaleCharToQuantum(*p++));
               p++;
               q++;
             }
@@ -1922,9 +1922,9 @@ MagickExport MagickBooleanType ImportImagePixels(Image *image,
               break;
             for (x=0; x < (ssize_t) columns; x++)
             {
-              q->red=ScaleCharToQuantum(*p++);
-              q->green=q->red;
-              q->blue=q->red;
+              SetRedPixelComponent(q,ScaleCharToQuantum(*p++));
+              SetGreenPixelComponent(q,GetRedPixelComponent(q));
+              SetBluePixelComponent(q,GetRedPixelComponent(q));
               q++;
             }
             if (SyncAuthenticPixels(image,exception) == MagickFalse)
@@ -1941,9 +1941,9 @@ MagickExport MagickBooleanType ImportImagePixels(Image *image,
               break;
             for (x=0; x < (ssize_t) columns; x++)
             {
-              q->red=ScaleCharToQuantum(*p++);
-              q->green=ScaleCharToQuantum(*p++);
-              q->blue=ScaleCharToQuantum(*p++);
+              SetRedPixelComponent(q,ScaleCharToQuantum(*p++));
+              SetGreenPixelComponent(q,ScaleCharToQuantum(*p++));
+              SetBluePixelComponent(q,ScaleCharToQuantum(*p++));
               q++;
             }
             if (SyncAuthenticPixels(image,exception) == MagickFalse)
@@ -1960,10 +1960,10 @@ MagickExport MagickBooleanType ImportImagePixels(Image *image,
               break;
             for (x=0; x < (ssize_t) columns; x++)
             {
-              q->red=ScaleCharToQuantum(*p++);
-              q->green=ScaleCharToQuantum(*p++);
-              q->blue=ScaleCharToQuantum(*p++);
-              q->opacity=(Quantum) QuantumRange-ScaleCharToQuantum(*p++);
+              SetRedPixelComponent(q,ScaleCharToQuantum(*p++));
+              SetGreenPixelComponent(q,ScaleCharToQuantum(*p++));
+              SetBluePixelComponent(q,ScaleCharToQuantum(*p++));
+              SetAlphaPixelComponent(q,ScaleCharToQuantum(*p++));
               q++;
             }
             if (SyncAuthenticPixels(image,exception) == MagickFalse)
@@ -1980,10 +1980,10 @@ MagickExport MagickBooleanType ImportImagePixels(Image *image,
               break;
             for (x=0; x < (ssize_t) columns; x++)
             {
-              q->red=ScaleCharToQuantum(*p++);
-              q->green=ScaleCharToQuantum(*p++);
-              q->blue=ScaleCharToQuantum(*p++);
-              q->opacity=ScaleCharToQuantum(*p++);
+              SetRedPixelComponent(q,ScaleCharToQuantum(*p++));
+              SetGreenPixelComponent(q,ScaleCharToQuantum(*p++));
+              SetBluePixelComponent(q,ScaleCharToQuantum(*p++));
+              SetOpacityPixelComponent(q,ScaleCharToQuantum(*p++));
               q++;
             }
             if (SyncAuthenticPixels(image,exception) == MagickFalse)
@@ -2000,9 +2000,9 @@ MagickExport MagickBooleanType ImportImagePixels(Image *image,
               break;
             for (x=0; x < (ssize_t) columns; x++)
             {
-              q->red=ScaleCharToQuantum(*p++);
-              q->green=ScaleCharToQuantum(*p++);
-              q->blue=ScaleCharToQuantum(*p++);
+              SetRedPixelComponent(q,ScaleCharToQuantum(*p++));
+              SetGreenPixelComponent(q,ScaleCharToQuantum(*p++));
+              SetBluePixelComponent(q,ScaleCharToQuantum(*p++));
               p++;
               q++;
             }
@@ -2026,41 +2026,41 @@ MagickExport MagickBooleanType ImportImagePixels(Image *image,
               case RedQuantum:
               case CyanQuantum:
               {
-                q->red=ScaleCharToQuantum(*p);
+                SetRedPixelComponent(q,ScaleCharToQuantum(*p));
                 break;
               }
               case GreenQuantum:
               case MagentaQuantum:
               {
-                q->green=ScaleCharToQuantum(*p);
+                SetGreenPixelComponent(q,ScaleCharToQuantum(*p));
                 break;
               }
               case BlueQuantum:
               case YellowQuantum:
               {
-                q->blue=ScaleCharToQuantum(*p);
+                SetBluePixelComponent(q,ScaleCharToQuantum(*p));
                 break;
               }
               case AlphaQuantum:
               {
-                q->opacity=(Quantum) QuantumRange-ScaleCharToQuantum(*p);
+                SetAlphaPixelComponent(q,ScaleCharToQuantum(*p));
                 break;
               }
               case OpacityQuantum:
               {
-                q->opacity=ScaleCharToQuantum(*p);
+                SetOpacityPixelComponent(q,ScaleCharToQuantum(*p));
                 break;
               }
               case BlackQuantum:
               {
-                indexes[x]=ScaleCharToQuantum(*p);
+                SetIndexPixelComponent(indexes+x,ScaleCharToQuantum(*p));
                 break;
               }
               case IndexQuantum:
               {
-                q->red=ScaleCharToQuantum(*p);
-                q->green=q->red;
-                q->blue=q->red;
+                SetRedPixelComponent(q,ScaleCharToQuantum(*p));
+                SetGreenPixelComponent(q,GetRedPixelComponent(q));
+                SetBluePixelComponent(q,GetRedPixelComponent(q));
                 break;
               }
               default:
@@ -2090,11 +2090,14 @@ MagickExport MagickBooleanType ImportImagePixels(Image *image,
               break;
             for (x=0; x < (ssize_t) columns; x++)
             {
-              q->blue=ClampToQuantum((MagickRealType) QuantumRange*(*p));
+              SetBluePixelComponent(q,ClampToQuantum((MagickRealType)
+                QuantumRange*(*p)));
               p++;
-              q->green=ClampToQuantum((MagickRealType) QuantumRange*(*p));
+              SetGreenPixelComponent(q,ClampToQuantum((MagickRealType)
+                QuantumRange*(*p)));
               p++;
-              q->red=ClampToQuantum((MagickRealType) QuantumRange*(*p));
+              SetRedPixelComponent(q,ClampToQuantum((MagickRealType)
+                QuantumRange*(*p)));
               p++;
               q++;
             }
@@ -2112,11 +2115,14 @@ MagickExport MagickBooleanType ImportImagePixels(Image *image,
               break;
             for (x=0; x < (ssize_t) columns; x++)
             {
-              q->blue=ClampToQuantum((MagickRealType) QuantumRange*(*p));
+              SetBluePixelComponent(q,ClampToQuantum((MagickRealType)
+                QuantumRange*(*p)));
               p++;
-              q->green=ClampToQuantum((MagickRealType) QuantumRange*(*p));
+              SetGreenPixelComponent(q,ClampToQuantum((MagickRealType)
+                QuantumRange*(*p)));
               p++;
-              q->red=ClampToQuantum((MagickRealType) QuantumRange*(*p));
+              SetRedPixelComponent(q,ClampToQuantum((MagickRealType)
+                QuantumRange*(*p)));
               p++;
               q->opacity=(Quantum) QuantumRange-ClampToQuantum((MagickRealType)
                 QuantumRange*(*p));
@@ -2137,11 +2143,14 @@ MagickExport MagickBooleanType ImportImagePixels(Image *image,
               break;
             for (x=0; x < (ssize_t) columns; x++)
             {
-              q->blue=ClampToQuantum((MagickRealType) QuantumRange*(*p));
+              SetBluePixelComponent(q,ClampToQuantum((MagickRealType)
+                QuantumRange*(*p)));
               p++;
-              q->green=ClampToQuantum((MagickRealType) QuantumRange*(*p));
+              SetGreenPixelComponent(q,ClampToQuantum((MagickRealType)
+                QuantumRange*(*p)));
               p++;
-              q->red=ClampToQuantum((MagickRealType) QuantumRange*(*p));
+              SetRedPixelComponent(q,ClampToQuantum((MagickRealType)
+                QuantumRange*(*p)));
               p++;
               p++;
               q++;
@@ -2160,9 +2169,10 @@ MagickExport MagickBooleanType ImportImagePixels(Image *image,
               break;
             for (x=0; x < (ssize_t) columns; x++)
             {
-              q->red=ClampToQuantum((MagickRealType) QuantumRange*(*p));
-              q->green=q->red;
-              q->blue=q->red;
+              SetRedPixelComponent(q,ClampToQuantum((MagickRealType)
+                QuantumRange*(*p)));
+              SetGreenPixelComponent(q,GetRedPixelComponent(q));
+              SetBluePixelComponent(q,GetRedPixelComponent(q));
               p++;
               q++;
             }
@@ -2180,11 +2190,12 @@ MagickExport MagickBooleanType ImportImagePixels(Image *image,
               break;
             for (x=0; x < (ssize_t) columns; x++)
             {
-              q->red=ClampToQuantum((MagickRealType) QuantumRange*(*p));
+              SetRedPixelComponent(q,ClampToQuantum((MagickRealType)
+                QuantumRange*(*p)));
               p++;
-              q->green=ClampToQuantum((MagickRealType) QuantumRange*(*p));
+              SetGreenPixelComponent(q,ClampToQuantum((MagickRealType) QuantumRange*(*p)));
               p++;
-              q->blue=ClampToQuantum((MagickRealType) QuantumRange*(*p));
+              SetBluePixelComponent(q,ClampToQuantum((MagickRealType) QuantumRange*(*p)));
               p++;
               q++;
             }
@@ -2202,14 +2213,17 @@ MagickExport MagickBooleanType ImportImagePixels(Image *image,
               break;
             for (x=0; x < (ssize_t) columns; x++)
             {
-              q->red=ClampToQuantum((MagickRealType) QuantumRange*(*p));
+              SetRedPixelComponent(q,ClampToQuantum((MagickRealType)
+                QuantumRange*(*p)));
               p++;
-              q->green=ClampToQuantum((MagickRealType) QuantumRange*(*p));
+              SetGreenPixelComponent(q,ClampToQuantum((MagickRealType)
+                QuantumRange*(*p)));
               p++;
-              q->blue=ClampToQuantum((MagickRealType) QuantumRange*(*p));
+              SetBluePixelComponent(q,ClampToQuantum((MagickRealType)
+                QuantumRange*(*p)));
               p++;
-              q->opacity=(Quantum) QuantumRange-ClampToQuantum((MagickRealType)
-                QuantumRange*(*p));
+              SetAlphaPixelComponent(q,ClampToQuantum((MagickRealType)
+                QuantumRange*(*p)));
               p++;
               q++;
             }
@@ -2227,11 +2241,14 @@ MagickExport MagickBooleanType ImportImagePixels(Image *image,
               break;
             for (x=0; x < (ssize_t) columns; x++)
             {
-              q->red=ClampToQuantum((MagickRealType) QuantumRange*(*p));
+              SetRedPixelComponent(q,ClampToQuantum((MagickRealType)
+                QuantumRange*(*p)));
               p++;
-              q->green=ClampToQuantum((MagickRealType) QuantumRange*(*p));
+              SetGreenPixelComponent(q,ClampToQuantum((MagickRealType)
+                QuantumRange*(*p)));
               p++;
-              q->blue=ClampToQuantum((MagickRealType) QuantumRange*(*p));
+              SetBluePixelComponent(q,ClampToQuantum((MagickRealType)
+                QuantumRange*(*p)));
               p++;
               q++;
             }
@@ -2255,42 +2272,48 @@ MagickExport MagickBooleanType ImportImagePixels(Image *image,
               case RedQuantum:
               case CyanQuantum:
               {
-                q->red=ClampToQuantum((MagickRealType) QuantumRange*(*p));
+                SetRedPixelComponent(q,ClampToQuantum((MagickRealType)
+                  QuantumRange*(*p)));
                 break;
               }
               case GreenQuantum:
               case MagentaQuantum:
               {
-                q->green=ClampToQuantum((MagickRealType) QuantumRange*(*p));
+                SetGreenPixelComponent(q,ClampToQuantum((MagickRealType)
+                  QuantumRange*(*p)));
                 break;
               }
               case BlueQuantum:
               case YellowQuantum:
               {
-                q->blue=ClampToQuantum((MagickRealType) QuantumRange*(*p));
+                SetBluePixelComponent(q,ClampToQuantum((MagickRealType)
+                  QuantumRange*(*p)));
                 break;
               }
               case AlphaQuantum:
               {
-                q->opacity=(Quantum) QuantumRange-ClampToQuantum(
-                  (MagickRealType) QuantumRange*(*p));
+                SetAlphaPixelComponent(q,ClampToQuantum((MagickRealType)
+                  QuantumRange*(*p)));
                 break;
               }
               case OpacityQuantum:
               {
-                q->opacity=ClampToQuantum((MagickRealType) QuantumRange*(*p));
+                SetOpacityPixelComponent(q,ClampToQuantum((MagickRealType)
+                  QuantumRange*(*p)));
                 break;
               }
               case BlackQuantum:
               {
-                indexes[x]=ClampToQuantum((MagickRealType) QuantumRange*(*p));
+                SetIndexPixelComponent(indexes+x,ClampToQuantum(
+                  (MagickRealType) QuantumRange*(*p)));
                 break;
               }
               case IndexQuantum:
               {
-                q->red=ClampToQuantum((MagickRealType) QuantumRange*(*p));
-                q->green=q->red;
-                q->blue=q->red;
+                SetRedPixelComponent(q,ClampToQuantum((MagickRealType)
+                  QuantumRange*(*p)));
+                SetGreenPixelComponent(q,GetRedPixelComponent(q));
+                SetBluePixelComponent(q,GetRedPixelComponent(q));
                 break;
               }
               default:
@@ -2320,11 +2343,14 @@ MagickExport MagickBooleanType ImportImagePixels(Image *image,
               break;
             for (x=0; x < (ssize_t) columns; x++)
             {
-              q->blue=ClampToQuantum((MagickRealType) QuantumRange*(*p));
+              SetBluePixelComponent(q,ClampToQuantum((MagickRealType)
+                QuantumRange*(*p)));
               p++;
-              q->green=ClampToQuantum((MagickRealType) QuantumRange*(*p));
+              SetGreenPixelComponent(q,ClampToQuantum((MagickRealType)
+                QuantumRange*(*p)));
               p++;
-              q->red=ClampToQuantum((MagickRealType) QuantumRange*(*p));
+              SetRedPixelComponent(q,ClampToQuantum((MagickRealType)
+                QuantumRange*(*p)));
               p++;
               q++;
             }
@@ -2342,14 +2368,17 @@ MagickExport MagickBooleanType ImportImagePixels(Image *image,
               break;
             for (x=0; x < (ssize_t) columns; x++)
             {
-              q->blue=ClampToQuantum((MagickRealType) QuantumRange*(*p));
+              SetBluePixelComponent(q,ClampToQuantum((MagickRealType)
+                QuantumRange*(*p)));
               p++;
-              q->green=ClampToQuantum((MagickRealType) QuantumRange*(*p));
+              SetGreenPixelComponent(q,ClampToQuantum((MagickRealType)
+                QuantumRange*(*p)));
               p++;
-              q->red=ClampToQuantum((MagickRealType) QuantumRange*(*p));
+              SetRedPixelComponent(q,ClampToQuantum((MagickRealType)
+                QuantumRange*(*p)));
               p++;
-              q->opacity=(Quantum) QuantumRange-ClampToQuantum((MagickRealType)
-                QuantumRange*(*p));
+              SetAlphaPixelComponent(q,ClampToQuantum((MagickRealType)
+                QuantumRange*(*p)));
               p++;
               q++;
             }
@@ -2367,11 +2396,14 @@ MagickExport MagickBooleanType ImportImagePixels(Image *image,
               break;
             for (x=0; x < (ssize_t) columns; x++)
             {
-              q->blue=ClampToQuantum((MagickRealType) QuantumRange*(*p));
+              SetBluePixelComponent(q,ClampToQuantum((MagickRealType)
+                QuantumRange*(*p)));
               p++;
-              q->green=ClampToQuantum((MagickRealType) QuantumRange*(*p));
+              SetGreenPixelComponent(q,ClampToQuantum((MagickRealType)
+                QuantumRange*(*p)));
               p++;
-              q->red=ClampToQuantum((MagickRealType) QuantumRange*(*p));
+              SetRedPixelComponent(q,ClampToQuantum((MagickRealType)
+                QuantumRange*(*p)));
               p++;
               p++;
               q++;
@@ -2390,9 +2422,10 @@ MagickExport MagickBooleanType ImportImagePixels(Image *image,
               break;
             for (x=0; x < (ssize_t) columns; x++)
             {
-              q->red=ClampToQuantum((MagickRealType) QuantumRange*(*p));
-              q->green=q->red;
-              q->blue=q->red;
+              SetRedPixelComponent(q,ClampToQuantum((MagickRealType)
+                QuantumRange*(*p)));
+              SetGreenPixelComponent(q,GetRedPixelComponent(q));
+              SetBluePixelComponent(q,GetRedPixelComponent(q));
               p++;
               q++;
             }
@@ -2410,11 +2443,14 @@ MagickExport MagickBooleanType ImportImagePixels(Image *image,
               break;
             for (x=0; x < (ssize_t) columns; x++)
             {
-              q->red=ClampToQuantum((MagickRealType) QuantumRange*(*p));
+              SetRedPixelComponent(q,ClampToQuantum((MagickRealType)
+                QuantumRange*(*p)));
               p++;
-              q->green=ClampToQuantum((MagickRealType) QuantumRange*(*p));
+              SetGreenPixelComponent(q,ClampToQuantum((MagickRealType)
+                QuantumRange*(*p)));
               p++;
-              q->blue=ClampToQuantum((MagickRealType) QuantumRange*(*p));
+              SetBluePixelComponent(q,ClampToQuantum((MagickRealType)
+                QuantumRange*(*p)));
               p++;
               q++;
             }
@@ -2432,14 +2468,17 @@ MagickExport MagickBooleanType ImportImagePixels(Image *image,
               break;
             for (x=0; x < (ssize_t) columns; x++)
             {
-              q->red=ClampToQuantum((MagickRealType) QuantumRange*(*p));
+              SetRedPixelComponent(q,ClampToQuantum((MagickRealType)
+                QuantumRange*(*p)));
               p++;
-              q->green=ClampToQuantum((MagickRealType) QuantumRange*(*p));
+              SetGreenPixelComponent(q,ClampToQuantum((MagickRealType)
+                QuantumRange*(*p)));
               p++;
-              q->blue=ClampToQuantum((MagickRealType) QuantumRange*(*p));
+              SetBluePixelComponent(q,ClampToQuantum((MagickRealType)
+                QuantumRange*(*p)));
               p++;
-              q->opacity=(Quantum) QuantumRange-ClampToQuantum((MagickRealType)
-                QuantumRange*(*p));
+              SetAlphaPixelComponent(q,ClampToQuantum((MagickRealType)
+                QuantumRange*(*p)));
               p++;
               q++;
             }
@@ -2457,11 +2496,14 @@ MagickExport MagickBooleanType ImportImagePixels(Image *image,
               break;
             for (x=0; x < (ssize_t) columns; x++)
             {
-              q->red=ClampToQuantum((MagickRealType) QuantumRange*(*p));
+              SetRedPixelComponent(q,ClampToQuantum((MagickRealType)
+                QuantumRange*(*p)));
               p++;
-              q->green=ClampToQuantum((MagickRealType) QuantumRange*(*p));
+              SetGreenPixelComponent(q,ClampToQuantum((MagickRealType)
+                QuantumRange*(*p)));
               p++;
-              q->blue=ClampToQuantum((MagickRealType) QuantumRange*(*p));
+              SetBluePixelComponent(q,ClampToQuantum((MagickRealType)
+                QuantumRange*(*p)));
               p++;
               q++;
             }
@@ -2485,42 +2527,48 @@ MagickExport MagickBooleanType ImportImagePixels(Image *image,
               case RedQuantum:
               case CyanQuantum:
               {
-                q->red=ClampToQuantum((MagickRealType) QuantumRange*(*p));
+                SetRedPixelComponent(q,ClampToQuantum((MagickRealType)
+                QuantumRange*(*p)));
                 break;
               }
               case GreenQuantum:
               case MagentaQuantum:
               {
-                q->green=ClampToQuantum((MagickRealType) QuantumRange*(*p));
+                SetGreenPixelComponent(q,ClampToQuantum((MagickRealType)
+                QuantumRange*(*p)));
                 break;
               }
               case BlueQuantum:
               case YellowQuantum:
               {
-                q->blue=ClampToQuantum((MagickRealType) QuantumRange*(*p));
+                SetBluePixelComponent(q,ClampToQuantum((MagickRealType)
+                QuantumRange*(*p)));
                 break;
               }
               case AlphaQuantum:
               {
-                q->opacity=(Quantum) QuantumRange-ClampToQuantum(
-                  (MagickRealType) QuantumRange*(*p));
+                SetAlphaPixelComponent(q,ClampToQuantum((MagickRealType)
+                  QuantumRange*(*p)));
                 break;
               }
               case OpacityQuantum:
               {
-                q->opacity=ClampToQuantum((MagickRealType) QuantumRange*(*p));
+                SetOpacityPixelComponent(q,ClampToQuantum((MagickRealType)
+                  QuantumRange*(*p)));
                 break;
               }
               case BlackQuantum:
               {
-                indexes[x]=ClampToQuantum((MagickRealType) QuantumRange*(*p));
+                SetIndexPixelComponent(indexes+x,ClampToQuantum(
+                  (MagickRealType) QuantumRange*(*p)));
                 break;
               }
               case IndexQuantum:
               {
-                q->red=ClampToQuantum((MagickRealType) QuantumRange*(*p));
-                q->green=q->red;
-                q->blue=q->red;
+                SetRedPixelComponent(q,ClampToQuantum((MagickRealType)
+                  QuantumRange*(*p)));
+                SetGreenPixelComponent(q,GetRedPixelComponent(q));
+                SetBluePixelComponent(q,GetRedPixelComponent(q));
                 break;
               }
               default:
@@ -2550,9 +2598,9 @@ MagickExport MagickBooleanType ImportImagePixels(Image *image,
               break;
             for (x=0; x < (ssize_t) columns; x++)
             {
-              q->blue=ScaleLongToQuantum(*p++);
-              q->green=ScaleLongToQuantum(*p++);
-              q->red=ScaleLongToQuantum(*p++);
+              SetBluePixelComponent(q,ScaleLongToQuantum(*p++));
+              SetGreenPixelComponent(q,ScaleLongToQuantum(*p++));
+              SetRedPixelComponent(q,ScaleLongToQuantum(*p++));
               q++;
             }
             if (SyncAuthenticPixels(image,exception) == MagickFalse)
@@ -2569,10 +2617,10 @@ MagickExport MagickBooleanType ImportImagePixels(Image *image,
               break;
             for (x=0; x < (ssize_t) columns; x++)
             {
-              q->blue=ScaleLongToQuantum(*p++);
-              q->green=ScaleLongToQuantum(*p++);
-              q->red=ScaleLongToQuantum(*p++);
-              q->opacity=(Quantum) QuantumRange-ScaleLongToQuantum(*p++);
+              SetBluePixelComponent(q,ScaleLongToQuantum(*p++));
+              SetGreenPixelComponent(q,ScaleLongToQuantum(*p++));
+              SetRedPixelComponent(q,ScaleLongToQuantum(*p++));
+              SetAlphaPixelComponent(q,ScaleLongToQuantum(*p++));
               q++;
             }
             if (SyncAuthenticPixels(image,exception) == MagickFalse)
@@ -2589,9 +2637,9 @@ MagickExport MagickBooleanType ImportImagePixels(Image *image,
               break;
             for (x=0; x < (ssize_t) columns; x++)
             {
-              q->blue=ScaleLongToQuantum(*p++);
-              q->green=ScaleLongToQuantum(*p++);
-              q->red=ScaleLongToQuantum(*p++);
+              SetBluePixelComponent(q,ScaleLongToQuantum(*p++));
+              SetGreenPixelComponent(q,ScaleLongToQuantum(*p++));
+              SetRedPixelComponent(q,ScaleLongToQuantum(*p++));
               p++;
               q++;
             }
@@ -2609,9 +2657,9 @@ MagickExport MagickBooleanType ImportImagePixels(Image *image,
               break;
             for (x=0; x < (ssize_t) columns; x++)
             {
-              q->red=ScaleLongToQuantum(*p++);
-              q->green=q->red;
-              q->blue=q->red;
+              SetRedPixelComponent(q,ScaleLongToQuantum(*p++));
+              SetGreenPixelComponent(q,GetRedPixelComponent(q));
+              SetBluePixelComponent(q,GetRedPixelComponent(q));
               q++;
             }
             if (SyncAuthenticPixels(image,exception) == MagickFalse)
@@ -2628,9 +2676,9 @@ MagickExport MagickBooleanType ImportImagePixels(Image *image,
               break;
             for (x=0; x < (ssize_t) columns; x++)
             {
-              q->red=ScaleLongToQuantum(*p++);
-              q->green=ScaleLongToQuantum(*p++);
-              q->blue=ScaleLongToQuantum(*p++);
+              SetRedPixelComponent(q,ScaleLongToQuantum(*p++));
+              SetGreenPixelComponent(q,ScaleLongToQuantum(*p++));
+              SetBluePixelComponent(q,ScaleLongToQuantum(*p++));
               q++;
             }
             if (SyncAuthenticPixels(image,exception) == MagickFalse)
@@ -2647,10 +2695,10 @@ MagickExport MagickBooleanType ImportImagePixels(Image *image,
               break;
             for (x=0; x < (ssize_t) columns; x++)
             {
-              q->red=ScaleLongToQuantum(*p++);
-              q->green=ScaleLongToQuantum(*p++);
-              q->blue=ScaleLongToQuantum(*p++);
-              q->opacity=(Quantum) QuantumRange-ScaleLongToQuantum(*p++);
+              SetRedPixelComponent(q,ScaleLongToQuantum(*p++));
+              SetGreenPixelComponent(q,ScaleLongToQuantum(*p++));
+              SetBluePixelComponent(q,ScaleLongToQuantum(*p++));
+              SetAlphaPixelComponent(q,ScaleLongToQuantum(*p++));
               q++;
             }
             if (SyncAuthenticPixels(image,exception) == MagickFalse)
@@ -2667,9 +2715,9 @@ MagickExport MagickBooleanType ImportImagePixels(Image *image,
               break;
             for (x=0; x < (ssize_t) columns; x++)
             {
-              q->red=ScaleLongToQuantum(*p++);
-              q->green=ScaleLongToQuantum(*p++);
-              q->blue=ScaleLongToQuantum(*p++);
+              SetRedPixelComponent(q,ScaleLongToQuantum(*p++));
+              SetGreenPixelComponent(q,ScaleLongToQuantum(*p++));
+              SetBluePixelComponent(q,ScaleLongToQuantum(*p++));
               p++;
               q++;
             }
@@ -2693,41 +2741,41 @@ MagickExport MagickBooleanType ImportImagePixels(Image *image,
               case RedQuantum:
               case CyanQuantum:
               {
-                q->red=ScaleLongToQuantum(*p);
+                SetRedPixelComponent(q,ScaleLongToQuantum(*p));
                 break;
               }
               case GreenQuantum:
               case MagentaQuantum:
               {
-                q->green=ScaleLongToQuantum(*p);
+                SetGreenPixelComponent(q,ScaleLongToQuantum(*p));
                 break;
               }
               case BlueQuantum:
               case YellowQuantum:
               {
-                q->blue=ScaleLongToQuantum(*p);
+                SetBluePixelComponent(q,ScaleLongToQuantum(*p));
                 break;
               }
               case AlphaQuantum:
               {
-                q->opacity=(Quantum) QuantumRange-ScaleLongToQuantum(*p);
+                SetAlphaPixelComponent(q,ScaleLongToQuantum(*p));
                 break;
               }
               case OpacityQuantum:
               {
-                q->opacity=ScaleLongToQuantum(*p);
+                SetOpacityPixelComponent(q,ScaleLongToQuantum(*p));
                 break;
               }
               case BlackQuantum:
               {
-                indexes[x]=ScaleLongToQuantum(*p);
+                SetIndexPixelComponent(indexes+x,ScaleLongToQuantum(*p));
                 break;
               }
               case IndexQuantum:
               {
-                q->red=ScaleLongToQuantum(*p);
-                q->green=q->red;
-                q->blue=q->red;
+                SetRedPixelComponent(q,ScaleLongToQuantum(*p));
+                SetGreenPixelComponent(q,GetRedPixelComponent(q));
+                SetBluePixelComponent(q,GetRedPixelComponent(q));
                 break;
               }
               default:
@@ -2757,9 +2805,9 @@ MagickExport MagickBooleanType ImportImagePixels(Image *image,
               break;
             for (x=0; x < (ssize_t) columns; x++)
             {
-              q->blue=ScaleLongToQuantum(*p++);
-              q->green=ScaleLongToQuantum(*p++);
-              q->red=ScaleLongToQuantum(*p++);
+              SetBluePixelComponent(q,ScaleLongToQuantum(*p++));
+              SetGreenPixelComponent(q,ScaleLongToQuantum(*p++));
+              SetRedPixelComponent(q,ScaleLongToQuantum(*p++));
               q++;
             }
             if (SyncAuthenticPixels(image,exception) == MagickFalse)
@@ -2776,10 +2824,10 @@ MagickExport MagickBooleanType ImportImagePixels(Image *image,
               break;
             for (x=0; x < (ssize_t) columns; x++)
             {
-              q->blue=ScaleLongToQuantum(*p++);
-              q->green=ScaleLongToQuantum(*p++);
-              q->red=ScaleLongToQuantum(*p++);
-              q->opacity=(Quantum) QuantumRange-ScaleLongToQuantum(*p++);
+              SetBluePixelComponent(q,ScaleLongToQuantum(*p++));
+              SetGreenPixelComponent(q,ScaleLongToQuantum(*p++));
+              SetRedPixelComponent(q,ScaleLongToQuantum(*p++));
+              SetAlphaPixelComponent(q,ScaleLongToQuantum(*p++));
               q++;
             }
             if (SyncAuthenticPixels(image,exception) == MagickFalse)
@@ -2796,9 +2844,9 @@ MagickExport MagickBooleanType ImportImagePixels(Image *image,
               break;
             for (x=0; x < (ssize_t) columns; x++)
             {
-              q->blue=ScaleLongToQuantum(*p++);
-              q->green=ScaleLongToQuantum(*p++);
-              q->red=ScaleLongToQuantum(*p++);
+              SetBluePixelComponent(q,ScaleLongToQuantum(*p++));
+              SetGreenPixelComponent(q,ScaleLongToQuantum(*p++));
+              SetRedPixelComponent(q,ScaleLongToQuantum(*p++));
               p++;
               q++;
             }
@@ -2816,9 +2864,9 @@ MagickExport MagickBooleanType ImportImagePixels(Image *image,
               break;
             for (x=0; x < (ssize_t) columns; x++)
             {
-              q->red=ScaleLongToQuantum(*p++);
-              q->green=q->red;
-              q->blue=q->red;
+              SetRedPixelComponent(q,ScaleLongToQuantum(*p++));
+              SetGreenPixelComponent(q,GetRedPixelComponent(q));
+              SetBluePixelComponent(q,GetRedPixelComponent(q));
               q++;
             }
             if (SyncAuthenticPixels(image,exception) == MagickFalse)
@@ -2835,9 +2883,9 @@ MagickExport MagickBooleanType ImportImagePixels(Image *image,
               break;
             for (x=0; x < (ssize_t) columns; x++)
             {
-              q->red=ScaleLongToQuantum(*p++);
-              q->green=ScaleLongToQuantum(*p++);
-              q->blue=ScaleLongToQuantum(*p++);
+              SetRedPixelComponent(q,ScaleLongToQuantum(*p++));
+              SetGreenPixelComponent(q,ScaleLongToQuantum(*p++));
+              SetBluePixelComponent(q,ScaleLongToQuantum(*p++));
               q++;
             }
             if (SyncAuthenticPixels(image,exception) == MagickFalse)
@@ -2854,10 +2902,10 @@ MagickExport MagickBooleanType ImportImagePixels(Image *image,
               break;
             for (x=0; x < (ssize_t) columns; x++)
             {
-              q->red=ScaleLongToQuantum(*p++);
-              q->green=ScaleLongToQuantum(*p++);
-              q->blue=ScaleLongToQuantum(*p++);
-              q->opacity=(Quantum) QuantumRange-ScaleLongToQuantum(*p++);
+              SetRedPixelComponent(q,ScaleLongToQuantum(*p++));
+              SetGreenPixelComponent(q,ScaleLongToQuantum(*p++));
+              SetBluePixelComponent(q,ScaleLongToQuantum(*p++));
+              SetAlphaPixelComponent(q,ScaleLongToQuantum(*p++));
               q++;
             }
             if (SyncAuthenticPixels(image,exception) == MagickFalse)
@@ -2874,9 +2922,9 @@ MagickExport MagickBooleanType ImportImagePixels(Image *image,
               break;
             for (x=0; x < (ssize_t) columns; x++)
             {
-              q->red=ScaleLongToQuantum(*p++);
-              q->green=ScaleLongToQuantum(*p++);
-              q->blue=ScaleLongToQuantum(*p++);
+              SetRedPixelComponent(q,ScaleLongToQuantum(*p++));
+              SetGreenPixelComponent(q,ScaleLongToQuantum(*p++));
+              SetBluePixelComponent(q,ScaleLongToQuantum(*p++));
               p++;
               q++;
             }
@@ -2900,41 +2948,41 @@ MagickExport MagickBooleanType ImportImagePixels(Image *image,
               case RedQuantum:
               case CyanQuantum:
               {
-                q->red=ScaleLongToQuantum(*p);
+                SetRedPixelComponent(q,ScaleLongToQuantum(*p));
                 break;
               }
               case GreenQuantum:
               case MagentaQuantum:
               {
-                q->green=ScaleLongToQuantum(*p);
+                SetGreenPixelComponent(q,ScaleLongToQuantum(*p));
                 break;
               }
               case BlueQuantum:
               case YellowQuantum:
               {
-                q->blue=ScaleLongToQuantum(*p);
+                SetBluePixelComponent(q,ScaleLongToQuantum(*p));
                 break;
               }
               case AlphaQuantum:
               {
-                q->opacity=(Quantum) QuantumRange-ScaleLongToQuantum(*p);
+                SetAlphaPixelComponent(q,ScaleLongToQuantum(*p));
                 break;
               }
               case OpacityQuantum:
               {
-                q->opacity=ScaleLongToQuantum(*p);
+                SetOpacityPixelComponent(q,ScaleLongToQuantum(*p));
                 break;
               }
               case BlackQuantum:
               {
-                indexes[x]=ScaleLongToQuantum(*p);
+                SetIndexPixelComponent(indexes+x,ScaleLongToQuantum(*p));
                 break;
               }
               case IndexQuantum:
               {
-                q->red=ScaleLongToQuantum(*p);
-                q->green=q->red;
-                q->blue=q->red;
+                SetRedPixelComponent(q,ScaleLongToQuantum(*p));
+                SetGreenPixelComponent(q,GetRedPixelComponent(q));
+                SetBluePixelComponent(q,GetRedPixelComponent(q));
                 break;
               }
               default:
@@ -2964,9 +3012,9 @@ MagickExport MagickBooleanType ImportImagePixels(Image *image,
               break;
             for (x=0; x < (ssize_t) columns; x++)
             {
-              q->blue=(*p++);
-              q->green=(*p++);
-              q->red=(*p++);
+              SetBluePixelComponent(q,*p++);
+              SetGreenPixelComponent(q,*p++);
+              SetRedPixelComponent(q,*p++);
               q++;
             }
             if (SyncAuthenticPixels(image,exception) == MagickFalse)
@@ -2983,10 +3031,10 @@ MagickExport MagickBooleanType ImportImagePixels(Image *image,
               break;
             for (x=0; x < (ssize_t) columns; x++)
             {
-              q->blue=(*p++);
-              q->green=(*p++);
-              q->red=(*p++);
-              q->opacity=(Quantum) QuantumRange-(*p++);
+              SetBluePixelComponent(q,*p++);
+              SetGreenPixelComponent(q,*p++);
+              SetRedPixelComponent(q,*p++);
+              SetAlphaPixelComponent(q,*p++);
               q++;
             }
             if (SyncAuthenticPixels(image,exception) == MagickFalse)
@@ -3003,9 +3051,9 @@ MagickExport MagickBooleanType ImportImagePixels(Image *image,
               break;
             for (x=0; x < (ssize_t) columns; x++)
             {
-              q->blue=(*p++);
-              q->green=(*p++);
-              q->red=(*p++);
+              SetBluePixelComponent(q,*p++);
+              SetGreenPixelComponent(q,*p++);
+              SetRedPixelComponent(q,*p++);
               p++;
               q++;
             }
@@ -3023,9 +3071,9 @@ MagickExport MagickBooleanType ImportImagePixels(Image *image,
               break;
             for (x=0; x < (ssize_t) columns; x++)
             {
-              q->red=(*p++);
-              q->green=q->red;
-              q->blue=q->red;
+              SetRedPixelComponent(q,*p++);
+              SetGreenPixelComponent(q,GetRedPixelComponent(q));
+              SetBluePixelComponent(q,GetRedPixelComponent(q));
               q++;
             }
             if (SyncAuthenticPixels(image,exception) == MagickFalse)
@@ -3042,9 +3090,9 @@ MagickExport MagickBooleanType ImportImagePixels(Image *image,
               break;
             for (x=0; x < (ssize_t) columns; x++)
             {
-              q->red=(*p++);
-              q->green=(*p++);
-              q->blue=(*p++);
+              SetRedPixelComponent(q,*p++);
+              SetGreenPixelComponent(q,*p++);
+              SetBluePixelComponent(q,*p++);
               q++;
             }
             if (SyncAuthenticPixels(image,exception) == MagickFalse)
@@ -3061,10 +3109,10 @@ MagickExport MagickBooleanType ImportImagePixels(Image *image,
               break;
             for (x=0; x < (ssize_t) columns; x++)
             {
-              q->red=(*p++);
-              q->green=(*p++);
-              q->blue=(*p++);
-              q->opacity=(Quantum) QuantumRange-(*p++);
+              SetRedPixelComponent(q,*p++);
+              SetGreenPixelComponent(q,*p++);
+              SetBluePixelComponent(q,*p++);
+              SetAlphaPixelComponent(q,*p++);
               q++;
             }
             if (SyncAuthenticPixels(image,exception) == MagickFalse)
@@ -3081,9 +3129,9 @@ MagickExport MagickBooleanType ImportImagePixels(Image *image,
               break;
             for (x=0; x < (ssize_t) columns; x++)
             {
-              q->red=(*p++);
-              q->green=(*p++);
-              q->blue=(*p++);
+              SetRedPixelComponent(q,*p++);
+              SetGreenPixelComponent(q,*p++);
+              SetBluePixelComponent(q,*p++);
               p++;
               q++;
             }
@@ -3107,41 +3155,41 @@ MagickExport MagickBooleanType ImportImagePixels(Image *image,
               case RedQuantum:
               case CyanQuantum:
               {
-                q->red=(*p);
+                SetRedPixelComponent(q,*p);
                 break;
               }
               case GreenQuantum:
               case MagentaQuantum:
               {
-                q->green=(*p);
+                SetGreenPixelComponent(q,*p);
                 break;
               }
               case BlueQuantum:
               case YellowQuantum:
               {
-                q->blue=(*p);
+                SetBluePixelComponent(q,*p);
                 break;
               }
               case AlphaQuantum:
               {
-                q->opacity=(Quantum) QuantumRange-(*p);
+                SetAlphaPixelComponent(q,*p);
                 break;
               }
               case OpacityQuantum:
               {
-                q->opacity=(*p);
+                SetOpacityPixelComponent(q,*p);
                 break;
               }
               case BlackQuantum:
               {
-                indexes[x]=(*p);
+                SetIndexPixelComponent(indexes+x,*p);
                 break;
               }
               case IndexQuantum:
               {
-                q->red=(*p);
-                q->green=q->red;
-                q->blue=q->red;
+                SetRedPixelComponent(q,*p);
+                SetGreenPixelComponent(q,GetRedPixelComponent(q));
+                SetBluePixelComponent(q,GetRedPixelComponent(q));
                 break;
               }
               default:
@@ -3171,9 +3219,9 @@ MagickExport MagickBooleanType ImportImagePixels(Image *image,
               break;
             for (x=0; x < (ssize_t) columns; x++)
             {
-              q->blue=ScaleShortToQuantum(*p++);
-              q->green=ScaleShortToQuantum(*p++);
-              q->red=ScaleShortToQuantum(*p++);
+              SetBluePixelComponent(q,ScaleShortToQuantum(*p++));
+              SetGreenPixelComponent(q,ScaleShortToQuantum(*p++));
+              SetRedPixelComponent(q,ScaleShortToQuantum(*p++));
               q++;
             }
             if (SyncAuthenticPixels(image,exception) == MagickFalse)
@@ -3190,10 +3238,10 @@ MagickExport MagickBooleanType ImportImagePixels(Image *image,
               break;
             for (x=0; x < (ssize_t) columns; x++)
             {
-              q->blue=ScaleShortToQuantum(*p++);
-              q->green=ScaleShortToQuantum(*p++);
-              q->red=ScaleShortToQuantum(*p++);
-              q->opacity=(Quantum) QuantumRange-ScaleShortToQuantum(*p++);
+              SetBluePixelComponent(q,ScaleShortToQuantum(*p++));
+              SetGreenPixelComponent(q,ScaleShortToQuantum(*p++));
+              SetRedPixelComponent(q,ScaleShortToQuantum(*p++));
+              SetAlphaPixelComponent(q,ScaleShortToQuantum(*p++));
               q++;
             }
             if (SyncAuthenticPixels(image,exception) == MagickFalse)
@@ -3210,9 +3258,9 @@ MagickExport MagickBooleanType ImportImagePixels(Image *image,
               break;
             for (x=0; x < (ssize_t) columns; x++)
             {
-              q->blue=ScaleShortToQuantum(*p++);
-              q->green=ScaleShortToQuantum(*p++);
-              q->red=ScaleShortToQuantum(*p++);
+              SetBluePixelComponent(q,ScaleShortToQuantum(*p++));
+              SetGreenPixelComponent(q,ScaleShortToQuantum(*p++));
+              SetRedPixelComponent(q,ScaleShortToQuantum(*p++));
               p++;
               q++;
             }
@@ -3230,9 +3278,9 @@ MagickExport MagickBooleanType ImportImagePixels(Image *image,
               break;
             for (x=0; x < (ssize_t) columns; x++)
             {
-              q->red=ScaleShortToQuantum(*p++);
-              q->green=q->red;
-              q->blue=q->red;
+              SetRedPixelComponent(q,ScaleShortToQuantum(*p++));
+              SetGreenPixelComponent(q,GetRedPixelComponent(q));
+              SetBluePixelComponent(q,GetRedPixelComponent(q));
               q++;
             }
             if (SyncAuthenticPixels(image,exception) == MagickFalse)
@@ -3249,9 +3297,9 @@ MagickExport MagickBooleanType ImportImagePixels(Image *image,
               break;
             for (x=0; x < (ssize_t) columns; x++)
             {
-              q->red=ScaleShortToQuantum(*p++);
-              q->green=ScaleShortToQuantum(*p++);
-              q->blue=ScaleShortToQuantum(*p++);
+              SetRedPixelComponent(q,ScaleShortToQuantum(*p++));
+              SetGreenPixelComponent(q,ScaleShortToQuantum(*p++));
+              SetBluePixelComponent(q,ScaleShortToQuantum(*p++));
               q++;
             }
             if (SyncAuthenticPixels(image,exception) == MagickFalse)
@@ -3268,10 +3316,10 @@ MagickExport MagickBooleanType ImportImagePixels(Image *image,
               break;
             for (x=0; x < (ssize_t) columns; x++)
             {
-              q->red=ScaleShortToQuantum(*p++);
-              q->green=ScaleShortToQuantum(*p++);
-              q->blue=ScaleShortToQuantum(*p++);
-              q->opacity=(Quantum) QuantumRange-ScaleShortToQuantum(*p++);
+              SetRedPixelComponent(q,ScaleShortToQuantum(*p++));
+              SetGreenPixelComponent(q,ScaleShortToQuantum(*p++));
+              SetBluePixelComponent(q,ScaleShortToQuantum(*p++));
+              SetAlphaPixelComponent(q,ScaleShortToQuantum(*p++));
               q++;
             }
             if (SyncAuthenticPixels(image,exception) == MagickFalse)
@@ -3288,9 +3336,9 @@ MagickExport MagickBooleanType ImportImagePixels(Image *image,
               break;
             for (x=0; x < (ssize_t) columns; x++)
             {
-              q->red=ScaleShortToQuantum(*p++);
-              q->green=ScaleShortToQuantum(*p++);
-              q->blue=ScaleShortToQuantum(*p++);
+              SetRedPixelComponent(q,ScaleShortToQuantum(*p++));
+              SetGreenPixelComponent(q,ScaleShortToQuantum(*p++));
+              SetBluePixelComponent(q,ScaleShortToQuantum(*p++));
               p++;
               q++;
             }
@@ -3314,41 +3362,41 @@ MagickExport MagickBooleanType ImportImagePixels(Image *image,
               case RedQuantum:
               case CyanQuantum:
               {
-                q->red=ScaleShortToQuantum(*p);
+                SetRedPixelComponent(q,ScaleShortToQuantum(*p));
                 break;
               }
               case GreenQuantum:
               case MagentaQuantum:
               {
-                q->green=ScaleShortToQuantum(*p);
+                SetGreenPixelComponent(q,ScaleShortToQuantum(*p));
                 break;
               }
               case BlueQuantum:
               case YellowQuantum:
               {
-                q->blue=ScaleShortToQuantum(*p);
+                SetBluePixelComponent(q,ScaleShortToQuantum(*p));
                 break;
               }
               case AlphaQuantum:
               {
-                q->opacity=(Quantum) QuantumRange-ScaleShortToQuantum(*p);
+                SetAlphaPixelComponent(q,ScaleShortToQuantum(*p));
                 break;
               }
               case OpacityQuantum:
               {
-                q->opacity=ScaleShortToQuantum(*p);
+                SetOpacityPixelComponent(q,ScaleShortToQuantum(*p));
                 break;
               }
               case BlackQuantum:
               {
-                indexes[x]=ScaleShortToQuantum(*p);
+                SetIndexPixelComponent(indexes+x,ScaleShortToQuantum(*p));
                 break;
               }
               case IndexQuantum:
               {
-                q->red=ScaleShortToQuantum(*p);
-                q->green=q->red;
-                q->blue=q->red;
+                SetRedPixelComponent(q,ScaleShortToQuantum(*p));
+                SetGreenPixelComponent(q,GetRedPixelComponent(q));
+                SetBluePixelComponent(q,GetRedPixelComponent(q));
                 break;
               }
               default:
@@ -3415,31 +3463,33 @@ MagickExport MagickBooleanType ImportImagePixels(Image *image,
 */
 
 static inline void AlphaBlendMagickPixelPacket(const Image *image,
-  const PixelPacket *color,const IndexPacket *index,MagickPixelPacket *pixel,
+  const PixelPacket *color,const IndexPacket *indexes,MagickPixelPacket *pixel,
   MagickRealType *alpha)
 {
   if (image->matte == MagickFalse)
     {
       *alpha=1.0;
-      pixel->red=(MagickRealType) color->red;
-      pixel->green=(MagickRealType) color->green;
-      pixel->blue=(MagickRealType) color->blue;
-      pixel->opacity=(MagickRealType) color->opacity;
+      pixel->red=(MagickRealType) GetRedPixelComponent(color);
+      pixel->green=(MagickRealType) GetGreenPixelComponent(color);
+      pixel->blue=(MagickRealType) GetBluePixelComponent(color);
+      pixel->opacity=(MagickRealType) GetOpacityPixelComponent(color);
+      pixel->index=0.0;
       if (((image->colorspace == CMYKColorspace) ||
            (image->storage_class == PseudoClass)) &&
-          (index != (const IndexPacket *) NULL))
-        pixel->index=(MagickRealType) *index;
+          (indexes != (const IndexPacket *) NULL))
+        pixel->index=(MagickRealType) GetIndexPixelComponent(indexes);
       return;
     }
   *alpha=QuantumScale*GetAlphaPixelComponent(color);
-  pixel->red=(MagickRealType) (*alpha*color->red);
-  pixel->green=(MagickRealType) (*alpha*color->green);
-  pixel->blue=(MagickRealType) (*alpha*color->blue);
-  pixel->opacity=(MagickRealType) (*alpha*color->opacity);
+  pixel->red=(*alpha*GetRedPixelComponent(color));
+  pixel->green=(*alpha*GetGreenPixelComponent(color));
+  pixel->blue=(*alpha*GetBluePixelComponent(color));
+  pixel->opacity=(MagickRealType) GetOpacityPixelComponent(color);
+  pixel->index=0.0;
   if (((image->colorspace == CMYKColorspace) ||
        (image->storage_class == PseudoClass)) &&
-      (index != (const IndexPacket *) NULL))
-    pixel->index=(MagickRealType) (*alpha*(*index));
+      (indexes != (const IndexPacket *) NULL))
+    pixel->index=(*alpha*GetIndexPixelComponent(indexes));
 }
 
 static void BicubicInterpolate(const MagickPixelPacket *pixels,const double dx,
@@ -3528,6 +3578,13 @@ MagickExport MagickBooleanType InterpolateMagickPixelPacket(const Image *image,
   MagickBooleanType
     status;
 
+  MagickPixelPacket
+    pixels[16];
+
+  MagickRealType
+    alpha[16],
+    gamma;
+
   register const IndexPacket
     *indexes;
 
@@ -3537,23 +3594,22 @@ MagickExport MagickBooleanType InterpolateMagickPixelPacket(const Image *image,
   register ssize_t
     i;
 
+  ssize_t
+    x_offset,
+    y_offset;
+
   assert(image != (Image *) NULL);
   assert(image->signature == MagickSignature);
   assert(image_view != (CacheView *) NULL);
   status=MagickTrue;
+  x_offset=(ssize_t) floor(x);
+  y_offset=(ssize_t) floor(y);
   switch (method == UndefinedInterpolatePixel ? image->interpolate : method)
   {
     case AverageInterpolatePixel:
     {
-      MagickPixelPacket
-        pixels[16];
-
-      MagickRealType
-        alpha[16],
-        gamma;
-
-      p=GetCacheViewVirtualPixels(image_view,(ssize_t) floor(x)-1,
-        (ssize_t) floor(y)-1,4,4,exception);
+      p=GetCacheViewVirtualPixels(image_view,x_offset-1,y_offset-1,4,4,
+        exception);
       if (p == (const PixelPacket *) NULL)
         {
           status=MagickFalse;
@@ -3596,17 +3652,13 @@ MagickExport MagickBooleanType InterpolateMagickPixelPacket(const Image *image,
     case BicubicInterpolatePixel:
     {
       MagickPixelPacket
-        pixels[16],
         u[4];
 
-      MagickRealType
-        alpha[16];
-
       PointInfo
         delta;
 
-      p=GetCacheViewVirtualPixels(image_view,(ssize_t) floor(x)-1,(ssize_t)
-        floor(y)-1,4,4,exception);
+      p=GetCacheViewVirtualPixels(image_view,x_offset-1,y_offset-1,4,4,
+        exception);
       if (p == (const PixelPacket *) NULL)
         {
           status=MagickFalse;
@@ -3629,8 +3681,8 @@ MagickExport MagickBooleanType InterpolateMagickPixelPacket(const Image *image,
       AlphaBlendMagickPixelPacket(image,p+13,indexes+13,pixels+13,alpha+13);
       AlphaBlendMagickPixelPacket(image,p+14,indexes+14,pixels+14,alpha+14);
       AlphaBlendMagickPixelPacket(image,p+15,indexes+15,pixels+15,alpha+15);
-      delta.x=x-floor(x);
-      delta.y=y-floor(y);
+      delta.x=x-x_offset;
+      delta.y=y-y_offset;
       for (i=0; i < 4L; i++)
         BicubicInterpolate(pixels+4*i,delta.x,u+i);
       BicubicInterpolate(u,delta.y,pixel);
@@ -3639,19 +3691,11 @@ MagickExport MagickBooleanType InterpolateMagickPixelPacket(const Image *image,
     case BilinearInterpolatePixel:
     default:
     {
-      MagickPixelPacket
-        pixels[4];
-
-      MagickRealType
-        alpha[4],
-        gamma;
-
       PointInfo
         delta,
         epsilon;
 
-      p=GetCacheViewVirtualPixels(image_view,(ssize_t) floor(x),(ssize_t)
-        floor(y),2,2,exception);
+      p=GetCacheViewVirtualPixels(image_view,x_offset,y_offset,2,2,exception);
       if (p == (const PixelPacket *) NULL)
         {
           status=MagickFalse;
@@ -3662,8 +3706,8 @@ MagickExport MagickBooleanType InterpolateMagickPixelPacket(const Image *image,
       AlphaBlendMagickPixelPacket(image,p+1,indexes+1,pixels+1,alpha+1);
       AlphaBlendMagickPixelPacket(image,p+2,indexes+2,pixels+2,alpha+2);
       AlphaBlendMagickPixelPacket(image,p+3,indexes+3,pixels+3,alpha+3);
-      delta.x=x-floor(x);
-      delta.y=y-floor(y);
+      delta.x=x-x_offset;
+      delta.y=y-y_offset;
       epsilon.x=1.0-delta.x;
       epsilon.y=1.0-delta.y;
       gamma=((epsilon.y*(epsilon.x*alpha[0]+delta.x*alpha[1])+delta.y*
@@ -3700,8 +3744,8 @@ MagickExport MagickBooleanType InterpolateMagickPixelPacket(const Image *image,
 
       geometry.width=4L;
       geometry.height=4L;
-      geometry.x=(ssize_t) floor(x)-1L;
-      geometry.y=(ssize_t) floor(y)-1L;
+      geometry.x=x_offset-1;
+      geometry.y=y_offset-1;
       excerpt_image=ExcerptImage(image,&geometry,exception);
       if (excerpt_image == (Image *) NULL)
         {
@@ -3726,8 +3770,7 @@ MagickExport MagickBooleanType InterpolateMagickPixelPacket(const Image *image,
     }
     case IntegerInterpolatePixel:
     {
-      p=GetCacheViewVirtualPixels(image_view,(ssize_t) floor(x),(ssize_t)
-        floor(y),1,1,exception);
+      p=GetCacheViewVirtualPixels(image_view,x_offset,y_offset,1,1,exception);
       if (p == (const PixelPacket *) NULL)
         {
           status=MagickFalse;
@@ -3739,19 +3782,12 @@ MagickExport MagickBooleanType InterpolateMagickPixelPacket(const Image *image,
     }
     case MeshInterpolatePixel:
     {
-      MagickPixelPacket
-        pixels[4];
-
-      MagickRealType
-        alpha[4],
-        gamma;
-
       PointInfo
         delta,
         luminance;
 
-      p=GetCacheViewVirtualPixels(image_view,(ssize_t) floor(x),(ssize_t)
-        floor(y),2,2,exception);
+      p=GetCacheViewVirtualPixels(image_view,x_offset,y_offset,2,2,
+        exception);
       if (p == (const PixelPacket *) NULL)
         {
           status=MagickFalse;
@@ -3762,8 +3798,8 @@ MagickExport MagickBooleanType InterpolateMagickPixelPacket(const Image *image,
       AlphaBlendMagickPixelPacket(image,p+1,indexes+1,pixels+1,alpha+1);
       AlphaBlendMagickPixelPacket(image,p+2,indexes+2,pixels+2,alpha+2);
       AlphaBlendMagickPixelPacket(image,p+3,indexes+3,pixels+3,alpha+3);
-      delta.x=x-floor(x);
-      delta.y=y-floor(y);
+      delta.x=x-x_offset;
+      delta.y=y-y_offset;
       luminance.x=MagickPixelLuminance(pixels+0)-MagickPixelLuminance(pixels+3);
       luminance.y=MagickPixelLuminance(pixels+1)-MagickPixelLuminance(pixels+2);
       if (fabs(luminance.x) < fabs(luminance.y))
@@ -3875,14 +3911,9 @@ MagickExport MagickBooleanType InterpolateMagickPixelPacket(const Image *image,
     }
     case SplineInterpolatePixel:
     {
-      MagickPixelPacket
-        pixels[16];
-
       MagickRealType
-        alpha[16],
         dx,
-        dy,
-        gamma;
+        dy;
 
       PointInfo
         delta;
@@ -3891,8 +3922,8 @@ MagickExport MagickBooleanType InterpolateMagickPixelPacket(const Image *image,
         j,
         n;
 
-      p=GetCacheViewVirtualPixels(image_view,(ssize_t) floor(x)-1,(ssize_t)
-        floor(y)-1,4,4,exception);
+      p=GetCacheViewVirtualPixels(image_view,x_offset-1,y_offset-1,4,4,
+        exception);
       if (p == (const PixelPacket *) NULL)
         {
           status=MagickFalse;
@@ -3920,8 +3951,8 @@ MagickExport MagickBooleanType InterpolateMagickPixelPacket(const Image *image,
       pixel->blue=0.0;
       pixel->opacity=0.0;
       pixel->index=0.0;
-      delta.x=x-floor(x);
-      delta.y=y-floor(y);
+      delta.x=x-x_offset;
+      delta.y=y-y_offset;
       n=0;
       for (i=(-1); i < 3L; i++)
       {