2 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
6 % QQQ U U AAA N N TTTTT U U M M %
7 % Q Q U U A A NN N T U U MM MM %
8 % Q Q U U AAAAA N N N T U U M M M %
9 % Q QQ U U A A N NN T U U M M %
10 % QQQQ UUU A A N N T UUU M M %
12 % IIIII M M PPPP OOO RRRR TTTTT %
13 % I MM MM P P O O R R T %
14 % I M M M PPPP O O RRRR T %
16 % IIIII M M P OOO R R T %
18 % MagickCore Methods to Import Quantum Pixels %
25 % Copyright 1999-2008 ImageMagick Studio LLC, a non-profit organization %
26 % dedicated to making software imaging solutions freely available. %
28 % You may not use this file except in compliance with the License. You may %
29 % obtain a copy of the License at %
31 % http://www.imagemagick.org/script/license.php %
33 % Unless required by applicable law or agreed to in writing, software %
34 % distributed under the License is distributed on an "AS IS" BASIS, %
35 % WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. %
36 % See the License for the specific language governing permissions and %
37 % limitations under the License. %
39 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
47 #include "magick/studio.h"
48 #include "magick/property.h"
49 #include "magick/blob.h"
50 #include "magick/blob-private.h"
51 #include "magick/color-private.h"
52 #include "magick/exception.h"
53 #include "magick/exception-private.h"
54 #include "magick/cache.h"
55 #include "magick/constitute.h"
56 #include "magick/delegate.h"
57 #include "magick/geometry.h"
58 #include "magick/list.h"
59 #include "magick/magick.h"
60 #include "magick/memory_.h"
61 #include "magick/monitor.h"
62 #include "magick/option.h"
63 #include "magick/pixel.h"
64 #include "magick/pixel-private.h"
65 #include "magick/quantum.h"
66 #include "magick/quantum-private.h"
67 #include "magick/resource_.h"
68 #include "magick/semaphore.h"
69 #include "magick/statistic.h"
70 #include "magick/stream.h"
71 #include "magick/string_.h"
72 #include "magick/utility.h"
75 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
79 % I m p o r t Q u a n t u m P i x e l s %
83 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
85 % ImportQuantumPixels() transfers one or more pixel components from a user
86 % supplied buffer into the image pixel cache of an image. The pixels are
87 % expected in network byte order. It returns MagickTrue if the pixels are
88 % successfully transferred, otherwise MagickFalse.
90 % The format of the ImportQuantumPixels method is:
92 % size_t ImportQuantumPixels(Image *image,CacheView *image_view,
93 % const QuantumInfo *quantum_info,const QuantumType quantum_type,
94 % const unsigned char *pixels,ExceptionInfo *exception)
96 % A description of each parameter follows:
100 % o image_view: the image cache view.
102 % o quantum_info: the quantum info.
104 % o quantum_type: Declare which pixel components to transfer (red, green,
105 % blue, opacity, RGB, or RGBA).
107 % o pixels: The pixel components are transferred from this buffer.
109 % o exception: return any errors or warnings in this structure.
113 static inline IndexPacket PushColormapIndex(Image *image,
114 const size_t index,MagickBooleanType *range_exception)
116 if (index < image->colors)
117 return((IndexPacket) index);
118 *range_exception=MagickTrue;
119 return((IndexPacket) 0);
122 static inline const unsigned char *PushDoublePixel(
123 const QuantumState *quantum_state,const unsigned char *pixels,double *pixel)
131 if (quantum_state->endian != LSBEndian)
133 quantum[7]=(*pixels++);
134 quantum[6]=(*pixels++);
135 quantum[5]=(*pixels++);
136 quantum[5]=(*pixels++);
137 quantum[3]=(*pixels++);
138 quantum[2]=(*pixels++);
139 quantum[1]=(*pixels++);
140 quantum[0]=(*pixels++);
141 p=(double *) quantum;
143 *pixel-=quantum_state->minimum;
144 *pixel*=quantum_state->scale;
147 quantum[0]=(*pixels++);
148 quantum[1]=(*pixels++);
149 quantum[2]=(*pixels++);
150 quantum[3]=(*pixels++);
151 quantum[4]=(*pixels++);
152 quantum[5]=(*pixels++);
153 quantum[6]=(*pixels++);
154 quantum[7]=(*pixels++);
155 p=(double *) quantum;
157 *pixel-=quantum_state->minimum;
158 *pixel*=quantum_state->scale;
162 static inline const unsigned char *PushFloatPixel(
163 const QuantumState *quantum_state,const unsigned char *pixels,float *pixel)
171 if (quantum_state->endian != LSBEndian)
173 quantum[3]=(*pixels++);
174 quantum[2]=(*pixels++);
175 quantum[1]=(*pixels++);
176 quantum[0]=(*pixels++);
179 *pixel-=quantum_state->minimum;
180 *pixel*=quantum_state->scale;
183 quantum[0]=(*pixels++);
184 quantum[1]=(*pixels++);
185 quantum[2]=(*pixels++);
186 quantum[3]=(*pixels++);
189 *pixel-=quantum_state->minimum;
190 *pixel*=quantum_state->scale;
194 static inline const unsigned char *PushQuantumPixel(
195 QuantumState *quantum_state,const size_t depth,
196 const unsigned char *pixels,unsigned int *quantum)
204 *quantum=(QuantumAny) 0;
205 for (i=(ssize_t) depth; i > 0L; )
207 if (quantum_state->bits == 0UL)
209 quantum_state->pixel=(*pixels++);
210 quantum_state->bits=8UL;
212 quantum_bits=(size_t) i;
213 if (quantum_bits > quantum_state->bits)
214 quantum_bits=quantum_state->bits;
215 i-=(ssize_t) quantum_bits;
216 quantum_state->bits-=quantum_bits;
217 *quantum=(unsigned int) ((*quantum << quantum_bits) |
218 ((quantum_state->pixel >> quantum_state->bits) &~ ((~0UL) <<
224 static inline const unsigned char *PushQuantumLongPixel(
225 QuantumState *quantum_state,const size_t depth,
226 const unsigned char *pixels,unsigned int *quantum)
235 for (i=(ssize_t) depth; i > 0; )
237 if (quantum_state->bits == 0)
239 pixels=PushLongPixel(quantum_state->endian,pixels,
240 &quantum_state->pixel);
241 quantum_state->bits=32U;
243 quantum_bits=(size_t) i;
244 if (quantum_bits > quantum_state->bits)
245 quantum_bits=quantum_state->bits;
246 *quantum|=(((quantum_state->pixel >> (32U-quantum_state->bits)) &
247 quantum_state->mask[quantum_bits]) << (depth-i));
248 i-=(ssize_t) quantum_bits;
249 quantum_state->bits-=quantum_bits;
254 MagickExport size_t ImportQuantumPixels(Image *image,CacheView *image_view,
255 const QuantumInfo *quantum_info,const QuantumType quantum_type,
256 const unsigned char *pixels,ExceptionInfo *exception)
270 register const unsigned char
291 assert(image != (Image *) NULL);
292 assert(image->signature == MagickSignature);
293 if (image->debug != MagickFalse)
294 (void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",image->filename);
295 assert(quantum_info != (QuantumInfo *) NULL);
296 assert(quantum_info->signature == MagickSignature);
297 if (pixels == (const unsigned char *) NULL)
298 pixels=GetQuantumPixels(quantum_info);
301 if (image_view == (CacheView *) NULL)
303 number_pixels=GetImageExtent(image);
304 q=GetAuthenticPixelQueue(image);
305 indexes=GetAuthenticIndexQueue(image);
309 number_pixels=GetCacheViewExtent(image_view);
310 q=GetCacheViewAuthenticPixelQueue(image_view);
311 indexes=GetCacheViewAuthenticIndexQueue(image_view);
313 InitializeQuantumState(quantum_info,image->endian,&quantum_state);
314 extent=GetQuantumExtent(image,quantum_info,quantum_type);
315 endian=quantum_state.endian;
316 switch (quantum_type)
323 if (image->storage_class != PseudoClass)
325 (void) ThrowMagickException(exception,GetMagickModule(),ImageError,
326 "ColormappedImageRequired","`%s'",image->filename);
329 range_exception=MagickFalse;
330 switch (quantum_info->depth)
334 register unsigned char
337 for (x=0; x < ((ssize_t) number_pixels-7); x+=8)
339 for (bit=0; bit < 8; bit++)
341 if (quantum_info->min_is_white == MagickFalse)
342 pixel=(unsigned char) (((*p) & (1 << (7-bit))) == 0 ?
345 pixel=(unsigned char) (((*p) & (1 << (7-bit))) != 0 ?
347 SetIndexPixelComponent(indexes+x+bit,PushColormapIndex(image,
348 pixel,&range_exception));
349 SetRGBOPixelComponent(q,image->colormap+
350 GetIndexPixelComponent(indexes+x+bit));
355 for (bit=0; bit < (ssize_t) (number_pixels % 8); bit++)
357 if (quantum_info->min_is_white == MagickFalse)
358 pixel=(unsigned char) (((*p) & (1 << (7-bit))) == 0 ?
361 pixel=(unsigned char) (((*p) & (1 << (7-bit))) != 0 ?
363 SetIndexPixelComponent(indexes+x+bit,PushColormapIndex(image,pixel,
365 SetRGBOPixelComponent(q,image->colormap+
366 GetIndexPixelComponent(indexes+x+bit));
373 register unsigned char
376 for (x=0; x < ((ssize_t) number_pixels-1); x+=2)
378 pixel=(unsigned char) ((*p >> 4) & 0xf);
379 SetIndexPixelComponent(indexes+x,PushColormapIndex(image,pixel,
381 SetRGBOPixelComponent(q,image->colormap+
382 GetIndexPixelComponent(indexes+x));
384 pixel=(unsigned char) ((*p) & 0xf);
385 SetIndexPixelComponent(indexes+x+1,PushColormapIndex(image,pixel,
387 *q=image->colormap[(ssize_t) GetIndexPixelComponent(indexes+x+1)];
391 for (bit=0; bit < (ssize_t) (number_pixels % 2); bit++)
393 pixel=(unsigned char) ((*p++ >> 4) & 0xf);
394 SetIndexPixelComponent(indexes+x+bit,PushColormapIndex(image,pixel,
396 SetRGBOPixelComponent(q,image->colormap+
397 GetIndexPixelComponent(indexes+x+bit));
407 for (x=0; x < (ssize_t) number_pixels; x++)
409 p=PushCharPixel(p,&pixel);
410 SetIndexPixelComponent(indexes+x,PushColormapIndex(image,pixel,
412 SetRGBOPixelComponent(q,image->colormap+
413 GetIndexPixelComponent(indexes+x));
414 p+=quantum_info->pad;
424 if (quantum_info->format == FloatingPointQuantumFormat)
426 for (x=0; x < (ssize_t) number_pixels; x++)
428 p=PushShortPixel(endian,p,&pixel);
429 SetIndexPixelComponent(indexes+x,PushColormapIndex(image,
430 ClampToQuantum((MagickRealType) QuantumRange*
431 HalfToSinglePrecision(pixel)),&range_exception));
432 SetRGBOPixelComponent(q,image->colormap+
433 GetIndexPixelComponent(indexes+x));
434 p+=quantum_info->pad;
439 for (x=0; x < (ssize_t) number_pixels; x++)
441 p=PushShortPixel(endian,p,&pixel);
442 SetIndexPixelComponent(indexes+x,PushColormapIndex(image,pixel,
444 SetRGBOPixelComponent(q,image->colormap+
445 GetIndexPixelComponent(indexes+x));
446 p+=quantum_info->pad;
456 if (quantum_info->format == FloatingPointQuantumFormat)
461 for (x=0; x < (ssize_t) number_pixels; x++)
463 p=PushFloatPixel(&quantum_state,p,&pixel);
464 SetIndexPixelComponent(indexes+x,PushColormapIndex(image,
465 ClampToQuantum(pixel),&range_exception));
466 SetRGBOPixelComponent(q,image->colormap+
467 GetIndexPixelComponent(indexes+x));
468 p+=quantum_info->pad;
473 for (x=0; x < (ssize_t) number_pixels; x++)
475 p=PushLongPixel(endian,p,&pixel);
476 SetIndexPixelComponent(indexes+x,PushColormapIndex(image,pixel,
478 SetRGBOPixelComponent(q,image->colormap+
479 GetIndexPixelComponent(indexes+x));
480 p+=quantum_info->pad;
487 if (quantum_info->format == FloatingPointQuantumFormat)
492 for (x=0; x < (ssize_t) number_pixels; x++)
494 p=PushDoublePixel(&quantum_state,p,&pixel);
495 SetIndexPixelComponent(indexes+x,PushColormapIndex(image,
496 ClampToQuantum(pixel),&range_exception));
497 SetRGBOPixelComponent(q,image->colormap+
498 GetIndexPixelComponent(indexes+x));
499 p+=quantum_info->pad;
507 for (x=0; x < (ssize_t) number_pixels; x++)
509 p=PushQuantumPixel(&quantum_state,image->depth,p,&pixel);
510 SetIndexPixelComponent(indexes+x,PushColormapIndex(image,pixel,
512 SetRGBOPixelComponent(q,image->colormap+
513 GetIndexPixelComponent(indexes+x));
514 p+=quantum_info->pad;
520 if (range_exception != MagickFalse)
521 (void) ThrowMagickException(exception,GetMagickModule(),
522 CorruptImageError,"InvalidColormapIndex","`%s'",image->filename);
525 case IndexAlphaQuantum:
530 if (image->storage_class != PseudoClass)
532 (void) ThrowMagickException(exception,GetMagickModule(),
533 ImageError,"ColormappedImageRequired","`%s'",image->filename);
536 range_exception=MagickFalse;
537 switch (quantum_info->depth)
541 register unsigned char
544 for (x=0; x < ((ssize_t) number_pixels-3); x+=4)
546 for (bit=0; bit < 8; bit+=2)
548 if (quantum_info->min_is_white == MagickFalse)
549 pixel=(unsigned char) (((*p) & (1 << (7-bit))) == 0 ?
552 pixel=(unsigned char) (((*p) & (1 << (7-bit))) != 0 ?
554 SetIndexPixelComponent(indexes+x+bit/2,pixel == 0 ? 0 : 1);
555 SetRedPixelComponent(q,pixel == 0 ? 0 : QuantumRange);
556 SetGreenPixelComponent(q,GetRedPixelComponent(q));
557 SetBluePixelComponent(q,GetRedPixelComponent(q));
558 SetOpacityPixelComponent(q,((*p) & (1UL << (unsigned char)
559 (6-bit))) == 0 ? TransparentOpacity : OpaqueOpacity);
563 for (bit=0; bit < (ssize_t) (number_pixels % 4); bit+=2)
565 if (quantum_info->min_is_white == MagickFalse)
566 pixel=(unsigned char) (((*p) & (1 << (7-bit))) == 0 ?
569 pixel=(unsigned char) (((*p) & (1 << (7-bit))) != 0 ?
571 SetIndexPixelComponent(indexes+x+bit/2,pixel == 0 ? 0 : 1);
572 SetRedPixelComponent(q,pixel == 0 ? 0 : QuantumRange);
573 SetGreenPixelComponent(q,GetRedPixelComponent(q));
574 SetBluePixelComponent(q,GetRedPixelComponent(q));
575 SetOpacityPixelComponent(q,((*p) & (1UL << (unsigned char)
576 (6-bit))) == 0 ? TransparentOpacity : OpaqueOpacity);
583 register unsigned char
586 range=GetQuantumRange(image->depth);
587 for (x=0; x < (ssize_t) number_pixels; x++)
589 pixel=(unsigned char) ((*p >> 4) & 0xf);
590 SetIndexPixelComponent(indexes+x,PushColormapIndex(image,pixel,
592 *q=image->colormap[(ssize_t) GetIndexPixelComponent(indexes+x)];
593 pixel=(unsigned char) ((*p) & 0xf);
594 SetOpacityPixelComponent(q,QuantumRange-ScaleAnyToQuantum(pixel,
606 for (x=0; x < (ssize_t) number_pixels; x++)
608 p=PushCharPixel(p,&pixel);
609 SetIndexPixelComponent(indexes+x,PushColormapIndex(image,pixel,
611 *q=image->colormap[(ssize_t) GetIndexPixelComponent(indexes+x)];
612 p=PushCharPixel(p,&pixel);
613 SetOpacityPixelComponent(q,QuantumRange-ScaleCharToQuantum(pixel));
614 p+=quantum_info->pad;
624 if (quantum_info->format == FloatingPointQuantumFormat)
626 for (x=0; x < (ssize_t) number_pixels; x++)
628 p=PushShortPixel(endian,p,&pixel);
629 SetIndexPixelComponent(indexes+x,PushColormapIndex(image,
630 ClampToQuantum((MagickRealType) QuantumRange*
631 HalfToSinglePrecision(pixel)),&range_exception));
632 *q=image->colormap[(ssize_t) GetIndexPixelComponent(indexes+x)];
633 p=PushShortPixel(endian,p,&pixel);
634 SetOpacityPixelComponent(q,QuantumRange-ClampToQuantum(
635 (MagickRealType) QuantumRange*HalfToSinglePrecision(pixel)));
636 p+=quantum_info->pad;
641 for (x=0; x < (ssize_t) number_pixels; x++)
643 p=PushShortPixel(endian,p,&pixel);
644 SetIndexPixelComponent(indexes+x,PushColormapIndex(image,pixel,
646 *q=image->colormap[(ssize_t) GetIndexPixelComponent(indexes+x)];
647 p=PushShortPixel(endian,p,&pixel);
648 SetOpacityPixelComponent(q,QuantumRange-ScaleShortToQuantum(pixel));
649 p+=quantum_info->pad;
659 if (quantum_info->format == FloatingPointQuantumFormat)
664 for (x=0; x < (ssize_t) number_pixels; x++)
666 p=PushFloatPixel(&quantum_state,p,&pixel);
667 SetIndexPixelComponent(indexes+x,PushColormapIndex(image,
668 ClampToQuantum(pixel),&range_exception));
669 *q=image->colormap[(ssize_t) GetIndexPixelComponent(indexes+x)];
670 p=PushFloatPixel(&quantum_state,p,&pixel);
671 SetOpacityPixelComponent(q,QuantumRange-ClampToQuantum(pixel));
672 p+=quantum_info->pad;
677 for (x=0; x < (ssize_t) number_pixels; x++)
679 p=PushLongPixel(endian,p,&pixel);
680 SetIndexPixelComponent(indexes+x,PushColormapIndex(image,pixel,
682 *q=image->colormap[(ssize_t) GetIndexPixelComponent(indexes+x)];
683 p=PushLongPixel(endian,p,&pixel);
684 SetOpacityPixelComponent(q,QuantumRange-ScaleLongToQuantum(pixel));
685 p+=quantum_info->pad;
692 if (quantum_info->format == FloatingPointQuantumFormat)
697 for (x=0; x < (ssize_t) number_pixels; x++)
699 p=PushDoublePixel(&quantum_state,p,&pixel);
700 SetIndexPixelComponent(indexes+x,PushColormapIndex(image,
701 ClampToQuantum(pixel),&range_exception));
702 *q=image->colormap[(ssize_t) GetIndexPixelComponent(indexes+x)];
703 p=PushDoublePixel(&quantum_state,p,&pixel);
704 SetOpacityPixelComponent(q,QuantumRange-ClampToQuantum(pixel));
705 p+=quantum_info->pad;
713 range=GetQuantumRange(image->depth);
714 for (x=0; x < (ssize_t) number_pixels; x++)
716 p=PushQuantumPixel(&quantum_state,image->depth,p,&pixel);
717 SetIndexPixelComponent(indexes+x,PushColormapIndex(image,pixel,
719 *q=image->colormap[(ssize_t) GetIndexPixelComponent(indexes+x)];
720 p=PushQuantumPixel(&quantum_state,image->depth,p,&pixel);
721 SetOpacityPixelComponent(q,QuantumRange-ScaleAnyToQuantum(pixel,
723 p+=quantum_info->pad;
729 if (range_exception != MagickFalse)
730 (void) ThrowMagickException(exception,GetMagickModule(),
731 CorruptImageError,"InvalidColormapIndex","`%s'",image->filename);
736 switch (quantum_info->depth)
743 for (x=0; x < (ssize_t) number_pixels; x++)
745 p=PushCharPixel(p,&pixel);
746 SetBluePixelComponent(q,ScaleCharToQuantum(pixel));
747 p=PushCharPixel(p,&pixel);
748 SetGreenPixelComponent(q,ScaleCharToQuantum(pixel));
749 p=PushCharPixel(p,&pixel);
750 SetRedPixelComponent(q,ScaleCharToQuantum(pixel));
751 SetOpacityPixelComponent(q,OpaqueOpacity);
752 p+=quantum_info->pad;
759 range=GetQuantumRange(image->depth);
760 if (quantum_info->pack == MagickFalse)
762 for (x=0; x < (ssize_t) number_pixels; x++)
764 p=PushLongPixel(endian,p,&pixel);
765 SetRedPixelComponent(q,ScaleAnyToQuantum((pixel >> 22) & 0x3ff,
767 SetGreenPixelComponent(q,ScaleAnyToQuantum((pixel >> 12) &
769 SetBluePixelComponent(q,ScaleAnyToQuantum((pixel >> 2) & 0x3ff,
771 p+=quantum_info->pad;
776 if (quantum_info->quantum == 32U)
778 for (x=0; x < (ssize_t) number_pixels; x++)
780 p=PushQuantumLongPixel(&quantum_state,image->depth,p,&pixel);
781 SetBluePixelComponent(q,ScaleAnyToQuantum(pixel,range));
782 p=PushQuantumLongPixel(&quantum_state,image->depth,p,&pixel);
783 SetGreenPixelComponent(q,ScaleAnyToQuantum(pixel,range));
784 p=PushQuantumLongPixel(&quantum_state,image->depth,p,&pixel);
785 SetRedPixelComponent(q,ScaleAnyToQuantum(pixel,range));
790 for (x=0; x < (ssize_t) number_pixels; x++)
792 p=PushQuantumPixel(&quantum_state,image->depth,p,&pixel);
793 SetBluePixelComponent(q,ScaleAnyToQuantum(pixel,range));
794 p=PushQuantumPixel(&quantum_state,image->depth,p,&pixel);
795 SetGreenPixelComponent(q,ScaleAnyToQuantum(pixel,range));
796 p=PushQuantumPixel(&quantum_state,image->depth,p,&pixel);
797 SetRedPixelComponent(q,ScaleAnyToQuantum(pixel,range));
804 range=GetQuantumRange(image->depth);
805 if (quantum_info->pack == MagickFalse)
810 for (x=0; x < (ssize_t) (3*number_pixels-1); x+=2)
812 p=PushShortPixel(endian,p,&pixel);
818 SetRedPixelComponent(q,ScaleAnyToQuantum((QuantumAny)
819 (pixel >> 4),range));
824 SetGreenPixelComponent(q,ScaleAnyToQuantum((QuantumAny)
825 (pixel >> 4),range));
830 SetBluePixelComponent(q,ScaleAnyToQuantum((QuantumAny)
831 (pixel >> 4),range));
836 p=PushShortPixel(endian,p,&pixel);
842 SetRedPixelComponent(q,ScaleAnyToQuantum((QuantumAny)
843 (pixel >> 4),range));
848 SetGreenPixelComponent(q,ScaleAnyToQuantum((QuantumAny)
849 (pixel >> 4),range));
854 SetBluePixelComponent(q,ScaleAnyToQuantum((QuantumAny)
855 (pixel >> 4),range));
860 p+=quantum_info->pad;
862 for (bit=0; bit < (ssize_t) (3*number_pixels % 2); bit++)
864 p=PushShortPixel(endian,p,&pixel);
870 SetRedPixelComponent(q,ScaleAnyToQuantum((QuantumAny)
871 (pixel >> 4),range));
876 SetGreenPixelComponent(q,ScaleAnyToQuantum((QuantumAny)
877 (pixel >> 4),range));
882 SetBluePixelComponent(q,ScaleAnyToQuantum((QuantumAny)
883 (pixel >> 4),range));
888 p+=quantum_info->pad;
894 if (quantum_info->quantum == 32U)
896 for (x=0; x < (ssize_t) number_pixels; x++)
898 p=PushQuantumLongPixel(&quantum_state,image->depth,p,&pixel);
899 SetBluePixelComponent(q,ScaleAnyToQuantum(pixel,range));
900 p=PushQuantumLongPixel(&quantum_state,image->depth,p,&pixel);
901 SetGreenPixelComponent(q,ScaleAnyToQuantum(pixel,range));
902 p=PushQuantumLongPixel(&quantum_state,image->depth,p,&pixel);
903 SetRedPixelComponent(q,ScaleAnyToQuantum(pixel,range));
908 for (x=0; x < (ssize_t) number_pixels; x++)
910 p=PushQuantumPixel(&quantum_state,image->depth,p,&pixel);
911 SetBluePixelComponent(q,ScaleAnyToQuantum(pixel,range));
912 p=PushQuantumPixel(&quantum_state,image->depth,p,&pixel);
913 SetGreenPixelComponent(q,ScaleAnyToQuantum(pixel,range));
914 p=PushQuantumPixel(&quantum_state,image->depth,p,&pixel);
915 SetRedPixelComponent(q,ScaleAnyToQuantum(pixel,range));
925 if (quantum_info->format == FloatingPointQuantumFormat)
927 for (x=0; x < (ssize_t) number_pixels; x++)
929 p=PushShortPixel(endian,p,&pixel);
930 SetRedPixelComponent(q,ClampToQuantum((MagickRealType)
931 QuantumRange*HalfToSinglePrecision(pixel)));
932 p=PushShortPixel(endian,p,&pixel);
933 SetGreenPixelComponent(q,ClampToQuantum((MagickRealType)
934 QuantumRange*HalfToSinglePrecision(pixel)));
935 p=PushShortPixel(endian,p,&pixel);
936 SetBluePixelComponent(q,ClampToQuantum((MagickRealType)
937 QuantumRange*HalfToSinglePrecision(pixel)));
938 p+=quantum_info->pad;
943 for (x=0; x < (ssize_t) number_pixels; x++)
945 p=PushShortPixel(endian,p,&pixel);
946 SetBluePixelComponent(q,ScaleShortToQuantum(pixel));
947 p=PushShortPixel(endian,p,&pixel);
948 SetGreenPixelComponent(q,ScaleShortToQuantum(pixel));
949 p=PushShortPixel(endian,p,&pixel);
950 SetRedPixelComponent(q,ScaleShortToQuantum(pixel));
951 p+=quantum_info->pad;
961 if (quantum_info->format == FloatingPointQuantumFormat)
966 for (x=0; x < (ssize_t) number_pixels; x++)
968 p=PushFloatPixel(&quantum_state,p,&pixel);
969 SetRedPixelComponent(q,ClampToQuantum(pixel));
970 p=PushFloatPixel(&quantum_state,p,&pixel);
971 SetGreenPixelComponent(q,ClampToQuantum(pixel));
972 p=PushFloatPixel(&quantum_state,p,&pixel);
973 SetBluePixelComponent(q,ClampToQuantum(pixel));
974 p+=quantum_info->pad;
979 for (x=0; x < (ssize_t) number_pixels; x++)
981 p=PushLongPixel(endian,p,&pixel);
982 SetBluePixelComponent(q,ScaleLongToQuantum(pixel));
983 p=PushLongPixel(endian,p,&pixel);
984 SetGreenPixelComponent(q,ScaleLongToQuantum(pixel));
985 p=PushLongPixel(endian,p,&pixel);
986 SetRedPixelComponent(q,ScaleLongToQuantum(pixel));
987 p+=quantum_info->pad;
994 if (quantum_info->format == FloatingPointQuantumFormat)
999 for (x=0; x < (ssize_t) number_pixels; x++)
1001 p=PushDoublePixel(&quantum_state,p,&pixel);
1002 SetRedPixelComponent(q,ClampToQuantum(pixel));
1003 p=PushDoublePixel(&quantum_state,p,&pixel);
1004 SetGreenPixelComponent(q,ClampToQuantum(pixel));
1005 p=PushDoublePixel(&quantum_state,p,&pixel);
1006 SetBluePixelComponent(q,ClampToQuantum(pixel));
1007 p+=quantum_info->pad;
1015 range=GetQuantumRange(image->depth);
1016 for (x=0; x < (ssize_t) number_pixels; x++)
1018 p=PushQuantumPixel(&quantum_state,image->depth,p,&pixel);
1019 SetBluePixelComponent(q,ScaleAnyToQuantum(pixel,range));
1020 p=PushQuantumPixel(&quantum_state,image->depth,p,&pixel);
1021 SetGreenPixelComponent(q,ScaleAnyToQuantum(pixel,range));
1022 p=PushQuantumPixel(&quantum_state,image->depth,p,&pixel);
1023 SetRedPixelComponent(q,ScaleAnyToQuantum(pixel,range));
1034 switch (quantum_info->depth)
1041 for (x=0; x < (ssize_t) number_pixels; x++)
1043 p=PushCharPixel(p,&pixel);
1044 SetBluePixelComponent(q,ScaleCharToQuantum(pixel));
1045 p=PushCharPixel(p,&pixel);
1046 SetGreenPixelComponent(q,ScaleCharToQuantum(pixel));
1047 p=PushCharPixel(p,&pixel);
1048 SetRedPixelComponent(q,ScaleCharToQuantum(pixel));
1049 p=PushCharPixel(p,&pixel);
1050 SetOpacityPixelComponent(q,QuantumRange-ScaleCharToQuantum(pixel));
1051 p+=quantum_info->pad;
1059 if (quantum_info->pack == MagickFalse)
1072 for (x=0; x < (ssize_t) number_pixels; x++)
1074 for (i=0; i < 4; i++)
1080 p=PushLongPixel(endian,p,&pixel);
1081 quantum=(size_t) (ScaleShortToQuantum(
1082 (unsigned short) (((pixel >> 22) & 0x3ff) << 6)));
1087 quantum=(size_t) (ScaleShortToQuantum(
1088 (unsigned short) (((pixel >> 12) & 0x3ff) << 6)));
1093 quantum=(size_t) (ScaleShortToQuantum(
1094 (unsigned short) (((pixel >> 2) & 0x3ff) << 6)));
1100 case 0: SetRedPixelComponent(q,quantum); break;
1101 case 1: SetGreenPixelComponent(q,quantum); break;
1102 case 2: SetBluePixelComponent(q,quantum); break;
1103 case 3: SetOpacityPixelComponent(q,QuantumRange-quantum); break;
1107 p+=quantum_info->pad;
1112 for (x=0; x < (ssize_t) number_pixels; x++)
1114 p=PushQuantumPixel(&quantum_state,image->depth,p,&pixel);
1115 SetRedPixelComponent(q,ScaleShortToQuantum((unsigned short)
1117 p=PushQuantumPixel(&quantum_state,image->depth,p,&pixel);
1118 SetGreenPixelComponent(q,ScaleShortToQuantum((unsigned short)
1120 p=PushQuantumPixel(&quantum_state,image->depth,p,&pixel);
1121 SetBluePixelComponent(q,ScaleShortToQuantum((unsigned short)
1123 p=PushQuantumPixel(&quantum_state,image->depth,p,&pixel);
1124 SetOpacityPixelComponent(q,QuantumRange-ScaleShortToQuantum(
1125 (unsigned short) (pixel << 6)));
1135 if (quantum_info->format == FloatingPointQuantumFormat)
1137 for (x=0; x < (ssize_t) number_pixels; x++)
1139 p=PushShortPixel(endian,p,&pixel);
1140 SetRedPixelComponent(q,ClampToQuantum((MagickRealType)
1141 QuantumRange*HalfToSinglePrecision(pixel)));
1142 p=PushShortPixel(endian,p,&pixel);
1143 SetGreenPixelComponent(q,ClampToQuantum((MagickRealType)
1144 QuantumRange*HalfToSinglePrecision(pixel)));
1145 p=PushShortPixel(endian,p,&pixel);
1146 SetBluePixelComponent(q,ClampToQuantum((MagickRealType)
1147 QuantumRange*HalfToSinglePrecision(pixel)));
1148 p=PushShortPixel(endian,p,&pixel);
1149 SetOpacityPixelComponent(q,QuantumRange-ClampToQuantum(
1150 (MagickRealType) QuantumRange*HalfToSinglePrecision(pixel)));
1151 p+=quantum_info->pad;
1156 for (x=0; x < (ssize_t) number_pixels; x++)
1158 p=PushShortPixel(endian,p,&pixel);
1159 SetBluePixelComponent(q,ScaleShortToQuantum(pixel));
1160 p=PushShortPixel(endian,p,&pixel);
1161 SetGreenPixelComponent(q,ScaleShortToQuantum(pixel));
1162 p=PushShortPixel(endian,p,&pixel);
1163 SetRedPixelComponent(q,ScaleShortToQuantum(pixel));
1164 p=PushShortPixel(endian,p,&pixel);
1165 SetOpacityPixelComponent(q,QuantumRange-ScaleShortToQuantum(pixel));
1166 p+=quantum_info->pad;
1176 if (quantum_info->format == FloatingPointQuantumFormat)
1181 for (x=0; x < (ssize_t) number_pixels; x++)
1183 p=PushFloatPixel(&quantum_state,p,&pixel);
1184 SetRedPixelComponent(q,ClampToQuantum(pixel));
1185 p=PushFloatPixel(&quantum_state,p,&pixel);
1186 SetGreenPixelComponent(q,ClampToQuantum(pixel));
1187 p=PushFloatPixel(&quantum_state,p,&pixel);
1188 SetBluePixelComponent(q,ClampToQuantum(pixel));
1189 p=PushFloatPixel(&quantum_state,p,&pixel);
1190 SetOpacityPixelComponent(q,QuantumRange-ClampToQuantum(pixel));
1191 p+=quantum_info->pad;
1196 for (x=0; x < (ssize_t) number_pixels; x++)
1198 p=PushLongPixel(endian,p,&pixel);
1199 SetBluePixelComponent(q,ScaleLongToQuantum(pixel));
1200 p=PushLongPixel(endian,p,&pixel);
1201 SetGreenPixelComponent(q,ScaleLongToQuantum(pixel));
1202 p=PushLongPixel(endian,p,&pixel);
1203 SetRedPixelComponent(q,ScaleLongToQuantum(pixel));
1204 p=PushLongPixel(endian,p,&pixel);
1205 SetOpacityPixelComponent(q,QuantumRange-ScaleLongToQuantum(pixel));
1206 p+=quantum_info->pad;
1213 if (quantum_info->format == FloatingPointQuantumFormat)
1218 for (x=0; x < (ssize_t) number_pixels; x++)
1220 p=PushDoublePixel(&quantum_state,p,&pixel);
1221 SetRedPixelComponent(q,ClampToQuantum(pixel));
1222 p=PushDoublePixel(&quantum_state,p,&pixel);
1223 SetGreenPixelComponent(q,ClampToQuantum(pixel));
1224 p=PushDoublePixel(&quantum_state,p,&pixel);
1225 SetBluePixelComponent(q,ClampToQuantum(pixel));
1226 p=PushDoublePixel(&quantum_state,p,&pixel);
1227 SetOpacityPixelComponent(q,QuantumRange-ClampToQuantum(pixel));
1228 p+=quantum_info->pad;
1236 range=GetQuantumRange(image->depth);
1237 for (x=0; x < (ssize_t) number_pixels; x++)
1239 p=PushQuantumPixel(&quantum_state,image->depth,p,&pixel);
1240 SetBluePixelComponent(q,ScaleAnyToQuantum(pixel,range));
1241 p=PushQuantumPixel(&quantum_state,image->depth,p,&pixel);
1242 SetGreenPixelComponent(q,ScaleAnyToQuantum(pixel,range));
1243 p=PushQuantumPixel(&quantum_state,image->depth,p,&pixel);
1244 SetRedPixelComponent(q,ScaleAnyToQuantum(pixel,range));
1245 p=PushQuantumPixel(&quantum_state,image->depth,p,&pixel);
1246 SetOpacityPixelComponent(q,QuantumRange-ScaleAnyToQuantum(pixel,
1257 switch (quantum_info->depth)
1266 white=(Quantum) QuantumRange;
1267 if (quantum_info->min_is_white != MagickFalse)
1269 black=(Quantum) QuantumRange;
1272 for (x=0; x < ((ssize_t) number_pixels-7); x+=8)
1274 for (bit=0; bit < 8; bit++)
1276 SetRedPixelComponent(q,((*p) & (1 << (7-bit))) == 0 ?
1278 SetGreenPixelComponent(q,GetRedPixelComponent(q));
1279 SetBluePixelComponent(q,GetRedPixelComponent(q));
1284 for (bit=0; bit < (ssize_t) (number_pixels % 8); bit++)
1286 SetRedPixelComponent(q,((*p) & (0x01 << (7-bit))) == 0 ?
1288 SetGreenPixelComponent(q,GetRedPixelComponent(q));
1289 SetBluePixelComponent(q,GetRedPixelComponent(q));
1298 register unsigned char
1301 range=GetQuantumRange(image->depth);
1302 for (x=0; x < ((ssize_t) number_pixels-1); x+=2)
1304 pixel=(unsigned char) ((*p >> 4) & 0xf);
1305 SetRedPixelComponent(q,ScaleAnyToQuantum(pixel,range));
1306 SetGreenPixelComponent(q,GetRedPixelComponent(q));
1307 SetBluePixelComponent(q,GetRedPixelComponent(q));
1309 pixel=(unsigned char) ((*p) & 0xf);
1310 SetRedPixelComponent(q,ScaleAnyToQuantum(pixel,range));
1311 SetGreenPixelComponent(q,GetRedPixelComponent(q));
1312 SetBluePixelComponent(q,GetRedPixelComponent(q));
1316 for (bit=0; bit < (ssize_t) (number_pixels % 2); bit++)
1318 pixel=(unsigned char) (*p++ >> 4);
1319 SetRedPixelComponent(q,ScaleAnyToQuantum(pixel,range));
1320 SetGreenPixelComponent(q,GetRedPixelComponent(q));
1321 SetBluePixelComponent(q,GetRedPixelComponent(q));
1331 if (quantum_info->min_is_white != MagickFalse)
1333 for (x=0; x < (ssize_t) number_pixels; x++)
1335 p=PushCharPixel(p,&pixel);
1336 SetRedPixelComponent(q,QuantumRange-ScaleCharToQuantum(pixel));
1337 SetGreenPixelComponent(q,GetRedPixelComponent(q));
1338 SetBluePixelComponent(q,GetRedPixelComponent(q));
1339 SetOpacityPixelComponent(q,OpaqueOpacity);
1340 p+=quantum_info->pad;
1345 for (x=0; x < (ssize_t) number_pixels; x++)
1347 p=PushCharPixel(p,&pixel);
1348 SetRedPixelComponent(q,ScaleCharToQuantum(pixel));
1349 SetGreenPixelComponent(q,GetRedPixelComponent(q));
1350 SetBluePixelComponent(q,GetRedPixelComponent(q));
1351 SetOpacityPixelComponent(q,OpaqueOpacity);
1352 p+=quantum_info->pad;
1359 range=GetQuantumRange(image->depth);
1360 if (quantum_info->pack == MagickFalse)
1362 if (image->endian != LSBEndian)
1364 for (x=0; x < (ssize_t) (number_pixels-2); x+=3)
1366 p=PushLongPixel(endian,p,&pixel);
1367 SetRedPixelComponent(q,ScaleAnyToQuantum((pixel >> 2) &
1369 SetGreenPixelComponent(q,GetRedPixelComponent(q));
1370 SetBluePixelComponent(q,GetRedPixelComponent(q));
1372 SetRedPixelComponent(q,ScaleAnyToQuantum((pixel >> 12) &
1374 SetGreenPixelComponent(q,GetRedPixelComponent(q));
1375 SetBluePixelComponent(q,GetRedPixelComponent(q));
1377 SetRedPixelComponent(q,ScaleAnyToQuantum((pixel >> 22) &
1379 SetGreenPixelComponent(q,GetRedPixelComponent(q));
1380 SetBluePixelComponent(q,GetRedPixelComponent(q));
1381 p+=quantum_info->pad;
1384 p=PushLongPixel(endian,p,&pixel);
1385 if (x++ < (ssize_t) (number_pixels-1))
1387 SetRedPixelComponent(q,ScaleAnyToQuantum((pixel >> 2) &
1389 SetGreenPixelComponent(q,GetRedPixelComponent(q));
1390 SetBluePixelComponent(q,GetRedPixelComponent(q));
1393 if (x++ < (ssize_t) number_pixels)
1395 SetRedPixelComponent(q,ScaleAnyToQuantum((pixel >> 12) &
1397 SetGreenPixelComponent(q,GetRedPixelComponent(q));
1398 SetBluePixelComponent(q,GetRedPixelComponent(q));
1403 for (x=0; x < (ssize_t) (number_pixels-2); x+=3)
1405 p=PushLongPixel(endian,p,&pixel);
1406 SetRedPixelComponent(q,ScaleAnyToQuantum((pixel >> 22) &
1408 SetGreenPixelComponent(q,GetRedPixelComponent(q));
1409 SetBluePixelComponent(q,GetRedPixelComponent(q));
1411 SetRedPixelComponent(q,ScaleAnyToQuantum((pixel >> 12) &
1413 SetGreenPixelComponent(q,GetRedPixelComponent(q));
1414 SetBluePixelComponent(q,GetRedPixelComponent(q));
1416 SetRedPixelComponent(q,ScaleAnyToQuantum((pixel >> 2) &
1418 SetGreenPixelComponent(q,GetRedPixelComponent(q));
1419 SetBluePixelComponent(q,GetRedPixelComponent(q));
1420 p+=quantum_info->pad;
1423 p=PushLongPixel(endian,p,&pixel);
1424 if (x++ < (ssize_t) (number_pixels-1))
1426 SetRedPixelComponent(q,ScaleAnyToQuantum((pixel >> 22) &
1428 SetGreenPixelComponent(q,GetRedPixelComponent(q));
1429 SetBluePixelComponent(q,GetRedPixelComponent(q));
1432 if (x++ < (ssize_t) number_pixels)
1434 SetRedPixelComponent(q,ScaleAnyToQuantum((pixel >> 12) &
1436 SetGreenPixelComponent(q,GetRedPixelComponent(q));
1437 SetBluePixelComponent(q,GetRedPixelComponent(q));
1442 for (x=0; x < (ssize_t) number_pixels; x++)
1444 p=PushQuantumPixel(&quantum_state,image->depth,p,&pixel);
1445 SetRedPixelComponent(q,ScaleAnyToQuantum(pixel,range));
1446 SetGreenPixelComponent(q,GetRedPixelComponent(q));
1447 SetBluePixelComponent(q,GetRedPixelComponent(q));
1448 p+=quantum_info->pad;
1455 range=GetQuantumRange(image->depth);
1456 if (quantum_info->pack == MagickFalse)
1461 for (x=0; x < (ssize_t) (number_pixels-1); x+=2)
1463 p=PushShortPixel(endian,p,&pixel);
1464 SetRedPixelComponent(q,ScaleAnyToQuantum((QuantumAny)
1465 (pixel >> 4),range));
1466 SetGreenPixelComponent(q,GetRedPixelComponent(q));
1467 SetBluePixelComponent(q,GetRedPixelComponent(q));
1469 p=PushShortPixel(endian,p,&pixel);
1470 SetRedPixelComponent(q,ScaleAnyToQuantum((QuantumAny)
1471 (pixel >> 4),range));
1472 SetGreenPixelComponent(q,GetRedPixelComponent(q));
1473 SetBluePixelComponent(q,GetRedPixelComponent(q));
1474 p+=quantum_info->pad;
1477 for (bit=0; bit < (ssize_t) (number_pixels % 2); bit++)
1479 p=PushShortPixel(endian,p,&pixel);
1480 SetRedPixelComponent(q,ScaleAnyToQuantum((QuantumAny)
1481 (pixel >> 4),range));
1482 SetGreenPixelComponent(q,GetRedPixelComponent(q));
1483 SetBluePixelComponent(q,GetRedPixelComponent(q));
1484 p+=quantum_info->pad;
1491 for (x=0; x < (ssize_t) number_pixels; x++)
1493 p=PushQuantumPixel(&quantum_state,image->depth,p,&pixel);
1494 SetRedPixelComponent(q,ScaleAnyToQuantum(pixel,range));
1495 SetGreenPixelComponent(q,GetRedPixelComponent(q));
1496 SetBluePixelComponent(q,GetRedPixelComponent(q));
1497 p+=quantum_info->pad;
1507 if (quantum_info->min_is_white != MagickFalse)
1509 for (x=0; x < (ssize_t) number_pixels; x++)
1511 p=PushShortPixel(endian,p,&pixel);
1512 SetRedPixelComponent(q,QuantumRange-ScaleShortToQuantum(pixel));
1513 SetGreenPixelComponent(q,GetRedPixelComponent(q));
1514 SetBluePixelComponent(q,GetRedPixelComponent(q));
1515 p+=quantum_info->pad;
1520 if (quantum_info->format == FloatingPointQuantumFormat)
1522 for (x=0; x < (ssize_t) number_pixels; x++)
1524 p=PushShortPixel(endian,p,&pixel);
1525 SetRedPixelComponent(q,ClampToQuantum((MagickRealType)
1526 QuantumRange*HalfToSinglePrecision(pixel)));
1527 SetGreenPixelComponent(q,GetRedPixelComponent(q));
1528 SetBluePixelComponent(q,GetRedPixelComponent(q));
1529 p+=quantum_info->pad;
1534 for (x=0; x < (ssize_t) number_pixels; x++)
1536 p=PushShortPixel(endian,p,&pixel);
1537 SetRedPixelComponent(q,ScaleShortToQuantum(pixel));
1538 SetGreenPixelComponent(q,GetRedPixelComponent(q));
1539 SetBluePixelComponent(q,GetRedPixelComponent(q));
1540 p+=quantum_info->pad;
1550 if (quantum_info->format == FloatingPointQuantumFormat)
1555 for (x=0; x < (ssize_t) number_pixels; x++)
1557 p=PushFloatPixel(&quantum_state,p,&pixel);
1558 SetRedPixelComponent(q,ClampToQuantum(pixel));
1559 SetGreenPixelComponent(q,GetRedPixelComponent(q));
1560 SetBluePixelComponent(q,GetRedPixelComponent(q));
1561 p+=quantum_info->pad;
1566 for (x=0; x < (ssize_t) number_pixels; x++)
1568 p=PushLongPixel(endian,p,&pixel);
1569 SetRedPixelComponent(q,ScaleLongToQuantum(pixel));
1570 SetGreenPixelComponent(q,GetRedPixelComponent(q));
1571 SetBluePixelComponent(q,GetRedPixelComponent(q));
1572 p+=quantum_info->pad;
1579 if (quantum_info->format == FloatingPointQuantumFormat)
1584 for (x=0; x < (ssize_t) number_pixels; x++)
1586 p=PushDoublePixel(&quantum_state,p,&pixel);
1587 SetRedPixelComponent(q,ClampToQuantum(pixel));
1588 SetGreenPixelComponent(q,GetRedPixelComponent(q));
1589 SetBluePixelComponent(q,GetRedPixelComponent(q));
1590 p+=quantum_info->pad;
1598 range=GetQuantumRange(image->depth);
1599 for (x=0; x < (ssize_t) number_pixels; x++)
1601 p=PushQuantumPixel(&quantum_state,image->depth,p,&pixel);
1602 SetRedPixelComponent(q,ScaleAnyToQuantum(pixel,range));
1603 SetGreenPixelComponent(q,GetRedPixelComponent(q));
1604 SetBluePixelComponent(q,GetRedPixelComponent(q));
1605 p+=quantum_info->pad;
1613 case GrayAlphaQuantum:
1615 switch (quantum_info->depth)
1619 register unsigned char
1622 for (x=0; x < ((ssize_t) number_pixels-3); x+=4)
1624 for (bit=0; bit < 8; bit+=2)
1626 pixel=(unsigned char)
1627 (((*p) & (1 << (7-bit))) != 0 ? 0x00 : 0x01);
1628 SetRedPixelComponent(q,pixel == 0 ? 0 : QuantumRange);
1629 SetGreenPixelComponent(q,GetRedPixelComponent(q));
1630 SetBluePixelComponent(q,GetRedPixelComponent(q));
1631 SetOpacityPixelComponent(q,((*p) & (1UL << (unsigned char)
1632 (6-bit))) == 0 ? TransparentOpacity : OpaqueOpacity);
1637 for (bit=0; bit <= (ssize_t) (number_pixels % 4); bit+=2)
1639 pixel=(unsigned char) (((*p) & (1 << (7-bit))) != 0 ? 0x00 : 0x01);
1640 SetRedPixelComponent(q,pixel != 0 ? 0 : QuantumRange);
1641 SetGreenPixelComponent(q,GetRedPixelComponent(q));
1642 SetBluePixelComponent(q,GetRedPixelComponent(q));
1643 SetOpacityPixelComponent(q,((*p) & (1UL << (unsigned char)
1644 (6-bit))) == 0 ? TransparentOpacity : OpaqueOpacity);
1653 register unsigned char
1656 range=GetQuantumRange(image->depth);
1657 for (x=0; x < (ssize_t) number_pixels; x++)
1659 pixel=(unsigned char) ((*p >> 4) & 0xf);
1660 SetRedPixelComponent(q,ScaleAnyToQuantum(pixel,range));
1661 SetGreenPixelComponent(q,GetRedPixelComponent(q));
1662 SetBluePixelComponent(q,GetRedPixelComponent(q));
1663 pixel=(unsigned char) ((*p) & 0xf);
1664 SetOpacityPixelComponent(q,QuantumRange-ScaleAnyToQuantum(pixel,
1676 for (x=0; x < (ssize_t) number_pixels; x++)
1678 p=PushCharPixel(p,&pixel);
1679 SetRedPixelComponent(q,ScaleCharToQuantum(pixel));
1680 SetGreenPixelComponent(q,GetRedPixelComponent(q));
1681 SetBluePixelComponent(q,GetRedPixelComponent(q));
1682 p=PushCharPixel(p,&pixel);
1683 SetOpacityPixelComponent(q,QuantumRange-ScaleCharToQuantum(pixel));
1684 p+=quantum_info->pad;
1691 range=GetQuantumRange(image->depth);
1692 for (x=0; x < (ssize_t) number_pixels; x++)
1694 p=PushQuantumPixel(&quantum_state,image->depth,p,&pixel);
1695 SetRedPixelComponent(q,ScaleAnyToQuantum(pixel,range));
1696 SetGreenPixelComponent(q,GetRedPixelComponent(q));
1697 SetBluePixelComponent(q,GetRedPixelComponent(q));
1698 p=PushQuantumPixel(&quantum_state,image->depth,p,&pixel);
1699 SetOpacityPixelComponent(q,ScaleAnyToQuantum(pixel,range));
1700 p+=quantum_info->pad;
1707 range=GetQuantumRange(image->depth);
1708 for (x=0; x < (ssize_t) number_pixels; x++)
1710 p=PushQuantumPixel(&quantum_state,image->depth,p,&pixel);
1711 SetRedPixelComponent(q,ScaleAnyToQuantum(pixel,range));
1712 SetGreenPixelComponent(q,GetRedPixelComponent(q));
1713 SetBluePixelComponent(q,GetRedPixelComponent(q));
1714 p=PushQuantumPixel(&quantum_state,image->depth,p,&pixel);
1715 SetOpacityPixelComponent(q,ScaleAnyToQuantum(pixel,range));
1716 p+=quantum_info->pad;
1726 if (quantum_info->format == FloatingPointQuantumFormat)
1728 for (x=0; x < (ssize_t) number_pixels; x++)
1730 p=PushShortPixel(endian,p,&pixel);
1731 SetRedPixelComponent(q,ClampToQuantum((MagickRealType)
1732 QuantumRange*HalfToSinglePrecision(pixel)));
1733 SetGreenPixelComponent(q,GetRedPixelComponent(q));
1734 SetBluePixelComponent(q,GetRedPixelComponent(q));
1735 p=PushShortPixel(endian,p,&pixel);
1736 SetOpacityPixelComponent(q,QuantumRange-ClampToQuantum(
1737 (MagickRealType) QuantumRange*HalfToSinglePrecision(pixel)));
1738 p+=quantum_info->pad;
1743 for (x=0; x < (ssize_t) number_pixels; x++)
1745 p=PushShortPixel(endian,p,&pixel);
1746 SetRedPixelComponent(q,ScaleShortToQuantum(pixel));
1747 SetGreenPixelComponent(q,GetRedPixelComponent(q));
1748 SetBluePixelComponent(q,GetRedPixelComponent(q));
1749 p=PushShortPixel(endian,p,&pixel);
1750 SetOpacityPixelComponent(q,QuantumRange-ScaleShortToQuantum(pixel));
1751 p+=quantum_info->pad;
1761 if (quantum_info->format == FloatingPointQuantumFormat)
1766 for (x=0; x < (ssize_t) number_pixels; x++)
1768 p=PushFloatPixel(&quantum_state,p,&pixel);
1769 SetRedPixelComponent(q,ClampToQuantum(pixel));
1770 SetGreenPixelComponent(q,GetRedPixelComponent(q));
1771 SetBluePixelComponent(q,GetRedPixelComponent(q));
1772 p=PushFloatPixel(&quantum_state,p,&pixel);
1773 SetOpacityPixelComponent(q,QuantumRange-ClampToQuantum(pixel));
1774 p+=quantum_info->pad;
1779 for (x=0; x < (ssize_t) number_pixels; x++)
1781 p=PushLongPixel(endian,p,&pixel);
1782 SetRedPixelComponent(q,ScaleLongToQuantum(pixel));
1783 SetGreenPixelComponent(q,GetRedPixelComponent(q));
1784 SetBluePixelComponent(q,GetRedPixelComponent(q));
1785 p=PushLongPixel(endian,p,&pixel);
1786 SetOpacityPixelComponent(q,QuantumRange-ScaleLongToQuantum(pixel));
1787 p+=quantum_info->pad;
1794 if (quantum_info->format == FloatingPointQuantumFormat)
1799 for (x=0; x < (ssize_t) number_pixels; x++)
1801 p=PushDoublePixel(&quantum_state,p,&pixel);
1802 SetRedPixelComponent(q,ClampToQuantum(pixel));
1803 SetGreenPixelComponent(q,GetRedPixelComponent(q));
1804 SetBluePixelComponent(q,GetRedPixelComponent(q));
1805 p=PushDoublePixel(&quantum_state,p,&pixel);
1806 SetOpacityPixelComponent(q,QuantumRange-ClampToQuantum(pixel));
1807 p+=quantum_info->pad;
1815 range=GetQuantumRange(image->depth);
1816 for (x=0; x < (ssize_t) number_pixels; x++)
1818 p=PushQuantumPixel(&quantum_state,image->depth,p,&pixel);
1819 SetRedPixelComponent(q,ScaleAnyToQuantum(pixel,range));
1820 SetGreenPixelComponent(q,GetRedPixelComponent(q));
1821 SetBluePixelComponent(q,GetRedPixelComponent(q));
1822 p=PushQuantumPixel(&quantum_state,image->depth,p,&pixel);
1823 SetOpacityPixelComponent(q,QuantumRange-ScaleAnyToQuantum(pixel,
1825 p+=quantum_info->pad;
1836 switch (quantum_info->depth)
1843 for (x=0; x < (ssize_t) number_pixels; x++)
1845 p=PushCharPixel(p,&pixel);
1846 SetRedPixelComponent(q,ScaleCharToQuantum(pixel));
1847 p+=quantum_info->pad;
1857 if (quantum_info->format == FloatingPointQuantumFormat)
1859 for (x=0; x < (ssize_t) number_pixels; x++)
1861 p=PushShortPixel(endian,p,&pixel);
1862 SetRedPixelComponent(q,ClampToQuantum((MagickRealType)
1863 QuantumRange*HalfToSinglePrecision(pixel)));
1864 p+=quantum_info->pad;
1869 for (x=0; x < (ssize_t) number_pixels; x++)
1871 p=PushShortPixel(endian,p,&pixel);
1872 SetRedPixelComponent(q,ScaleShortToQuantum(pixel));
1873 p+=quantum_info->pad;
1883 if (quantum_info->format == FloatingPointQuantumFormat)
1888 for (x=0; x < (ssize_t) number_pixels; x++)
1890 p=PushFloatPixel(&quantum_state,p,&pixel);
1891 SetRedPixelComponent(q,ClampToQuantum(pixel));
1892 p+=quantum_info->pad;
1897 for (x=0; x < (ssize_t) number_pixels; x++)
1899 p=PushLongPixel(endian,p,&pixel);
1900 SetRedPixelComponent(q,ScaleLongToQuantum(pixel));
1901 p+=quantum_info->pad;
1908 if (quantum_info->format == FloatingPointQuantumFormat)
1913 for (x=0; x < (ssize_t) number_pixels; x++)
1915 p=PushDoublePixel(&quantum_state,p,&pixel);
1916 SetRedPixelComponent(q,ClampToQuantum(pixel));
1917 p+=quantum_info->pad;
1925 range=GetQuantumRange(image->depth);
1926 for (x=0; x < (ssize_t) number_pixels; x++)
1928 p=PushQuantumPixel(&quantum_state,image->depth,p,&pixel);
1929 SetRedPixelComponent(q,ScaleAnyToQuantum(pixel,range));
1930 p+=quantum_info->pad;
1939 case MagentaQuantum:
1941 switch (quantum_info->depth)
1948 for (x=0; x < (ssize_t) number_pixels; x++)
1950 p=PushCharPixel(p,&pixel);
1951 SetGreenPixelComponent(q,ScaleCharToQuantum(pixel));
1952 p+=quantum_info->pad;
1962 if (quantum_info->format == FloatingPointQuantumFormat)
1964 for (x=0; x < (ssize_t) number_pixels; x++)
1966 p=PushShortPixel(endian,p,&pixel);
1967 SetGreenPixelComponent(q,ClampToQuantum((MagickRealType)
1968 QuantumRange*HalfToSinglePrecision(pixel)));
1969 p+=quantum_info->pad;
1974 for (x=0; x < (ssize_t) number_pixels; x++)
1976 p=PushShortPixel(endian,p,&pixel);
1977 SetGreenPixelComponent(q,ScaleShortToQuantum(pixel));
1978 p+=quantum_info->pad;
1988 if (quantum_info->format == FloatingPointQuantumFormat)
1993 for (x=0; x < (ssize_t) number_pixels; x++)
1995 p=PushFloatPixel(&quantum_state,p,&pixel);
1996 SetGreenPixelComponent(q,ClampToQuantum(pixel));
1997 p+=quantum_info->pad;
2002 for (x=0; x < (ssize_t) number_pixels; x++)
2004 p=PushLongPixel(endian,p,&pixel);
2005 SetGreenPixelComponent(q,ScaleLongToQuantum(pixel));
2006 p+=quantum_info->pad;
2013 if (quantum_info->format == FloatingPointQuantumFormat)
2018 for (x=0; x < (ssize_t) number_pixels; x++)
2020 p=PushDoublePixel(&quantum_state,p,&pixel);
2021 SetGreenPixelComponent(q,ClampToQuantum(pixel));
2022 p+=quantum_info->pad;
2030 range=GetQuantumRange(image->depth);
2031 for (x=0; x < (ssize_t) number_pixels; x++)
2033 p=PushQuantumPixel(&quantum_state,image->depth,p,&pixel);
2034 SetGreenPixelComponent(q,ScaleAnyToQuantum(pixel,range));
2035 p+=quantum_info->pad;
2046 switch (quantum_info->depth)
2053 for (x=0; x < (ssize_t) number_pixels; x++)
2055 p=PushCharPixel(p,&pixel);
2056 SetBluePixelComponent(q,ScaleCharToQuantum(pixel));
2057 p+=quantum_info->pad;
2067 if (quantum_info->format == FloatingPointQuantumFormat)
2069 for (x=0; x < (ssize_t) number_pixels; x++)
2071 p=PushShortPixel(endian,p,&pixel);
2072 SetBluePixelComponent(q,ClampToQuantum((MagickRealType)
2073 QuantumRange*HalfToSinglePrecision(pixel)));
2074 p+=quantum_info->pad;
2079 for (x=0; x < (ssize_t) number_pixels; x++)
2081 p=PushShortPixel(endian,p,&pixel);
2082 SetBluePixelComponent(q,ScaleShortToQuantum(pixel));
2083 p+=quantum_info->pad;
2093 if (quantum_info->format == FloatingPointQuantumFormat)
2098 for (x=0; x < (ssize_t) number_pixels; x++)
2100 p=PushFloatPixel(&quantum_state,p,&pixel);
2101 SetBluePixelComponent(q,ClampToQuantum(pixel));
2102 p+=quantum_info->pad;
2107 for (x=0; x < (ssize_t) number_pixels; x++)
2109 p=PushLongPixel(endian,p,&pixel);
2110 SetBluePixelComponent(q,ScaleLongToQuantum(pixel));
2111 p+=quantum_info->pad;
2118 if (quantum_info->format == FloatingPointQuantumFormat)
2123 for (x=0; x < (ssize_t) number_pixels; x++)
2125 p=PushDoublePixel(&quantum_state,p,&pixel);
2126 SetBluePixelComponent(q,ClampToQuantum(pixel));
2127 p+=quantum_info->pad;
2135 range=GetQuantumRange(image->depth);
2136 for (x=0; x < (ssize_t) number_pixels; x++)
2138 p=PushQuantumPixel(&quantum_state,image->depth,p,&pixel);
2139 SetBluePixelComponent(q,ScaleAnyToQuantum(pixel,range));
2140 p+=quantum_info->pad;
2150 switch (quantum_info->depth)
2157 for (x=0; x < (ssize_t) number_pixels; x++)
2159 p=PushCharPixel(p,&pixel);
2160 SetOpacityPixelComponent(q,QuantumRange-ScaleCharToQuantum(pixel));
2161 p+=quantum_info->pad;
2171 if (quantum_info->format == FloatingPointQuantumFormat)
2173 for (x=0; x < (ssize_t) number_pixels; x++)
2175 p=PushShortPixel(endian,p,&pixel);
2176 SetOpacityPixelComponent(q,QuantumRange-ClampToQuantum(
2177 (MagickRealType) QuantumRange*HalfToSinglePrecision(pixel)));
2178 p+=quantum_info->pad;
2183 for (x=0; x < (ssize_t) number_pixels; x++)
2185 p=PushShortPixel(endian,p,&pixel);
2186 SetOpacityPixelComponent(q,QuantumRange-ScaleShortToQuantum(pixel));
2187 p+=quantum_info->pad;
2197 if (quantum_info->format == FloatingPointQuantumFormat)
2202 for (x=0; x < (ssize_t) number_pixels; x++)
2204 p=PushFloatPixel(&quantum_state,p,&pixel);
2205 SetOpacityPixelComponent(q,QuantumRange-ClampToQuantum(pixel));
2206 p+=quantum_info->pad;
2211 for (x=0; x < (ssize_t) number_pixels; x++)
2213 p=PushLongPixel(endian,p,&pixel);
2214 SetOpacityPixelComponent(q,QuantumRange-ScaleLongToQuantum(pixel));
2215 p+=quantum_info->pad;
2222 if (quantum_info->format == FloatingPointQuantumFormat)
2227 for (x=0; x < (ssize_t) number_pixels; x++)
2229 p=PushDoublePixel(&quantum_state,p,&pixel);
2230 SetOpacityPixelComponent(q,QuantumRange-ClampToQuantum(pixel));
2231 p+=quantum_info->pad;
2239 range=GetQuantumRange(image->depth);
2240 for (x=0; x < (ssize_t) number_pixels; x++)
2242 p=PushQuantumPixel(&quantum_state,image->depth,p,&pixel);
2243 SetOpacityPixelComponent(q,QuantumRange-ScaleAnyToQuantum(pixel,
2245 p+=quantum_info->pad;
2255 if (image->colorspace != CMYKColorspace)
2257 (void) ThrowMagickException(exception,GetMagickModule(),ImageError,
2258 "ColorSeparatedImageRequired","`%s'",image->filename);
2261 switch (quantum_info->depth)
2268 for (x=0; x < (ssize_t) number_pixels; x++)
2270 p=PushCharPixel(p,&pixel);
2271 SetIndexPixelComponent(indexes+x,ScaleCharToQuantum(pixel));
2272 p+=quantum_info->pad;
2281 if (quantum_info->format == FloatingPointQuantumFormat)
2283 for (x=0; x < (ssize_t) number_pixels; x++)
2285 p=PushShortPixel(endian,p,&pixel);
2286 SetIndexPixelComponent(indexes+x,ClampToQuantum((MagickRealType)
2287 QuantumRange*HalfToSinglePrecision(pixel)));
2288 p+=quantum_info->pad;
2292 for (x=0; x < (ssize_t) number_pixels; x++)
2294 p=PushShortPixel(endian,p,&pixel);
2295 SetIndexPixelComponent(indexes+x,ScaleShortToQuantum(pixel));
2296 p+=quantum_info->pad;
2305 if (quantum_info->format == FloatingPointQuantumFormat)
2310 for (x=0; x < (ssize_t) number_pixels; x++)
2312 p=PushFloatPixel(&quantum_state,p,&pixel);
2313 SetIndexPixelComponent(indexes+x,ClampToQuantum(pixel));
2314 p+=quantum_info->pad;
2319 for (x=0; x < (ssize_t) number_pixels; x++)
2321 p=PushLongPixel(endian,p,&pixel);
2322 SetIndexPixelComponent(indexes+x,ScaleLongToQuantum(pixel));
2323 p+=quantum_info->pad;
2330 if (quantum_info->format == FloatingPointQuantumFormat)
2335 for (x=0; x < (ssize_t) number_pixels; x++)
2337 p=PushDoublePixel(&quantum_state,p,&pixel);
2338 SetIndexPixelComponent(indexes+x,ClampToQuantum(pixel));
2339 p+=quantum_info->pad;
2347 range=GetQuantumRange(image->depth);
2348 for (x=0; x < (ssize_t) number_pixels; x++)
2350 p=PushQuantumPixel(&quantum_state,image->depth,p,&pixel);
2351 SetIndexPixelComponent(indexes+x,ScaleAnyToQuantum(pixel,range));
2352 p+=quantum_info->pad;
2363 switch (quantum_info->depth)
2370 for (x=0; x < (ssize_t) number_pixels; x++)
2372 p=PushCharPixel(p,&pixel);
2373 SetRedPixelComponent(q,ScaleCharToQuantum(pixel));
2374 p=PushCharPixel(p,&pixel);
2375 SetGreenPixelComponent(q,ScaleCharToQuantum(pixel));
2376 p=PushCharPixel(p,&pixel);
2377 SetBluePixelComponent(q,ScaleCharToQuantum(pixel));
2378 SetOpacityPixelComponent(q,OpaqueOpacity);
2379 p+=quantum_info->pad;
2386 range=GetQuantumRange(image->depth);
2387 if (quantum_info->pack == MagickFalse)
2389 for (x=0; x < (ssize_t) number_pixels; x++)
2391 p=PushLongPixel(endian,p,&pixel);
2392 SetRedPixelComponent(q,ScaleAnyToQuantum((pixel >> 22) &
2394 SetGreenPixelComponent(q,ScaleAnyToQuantum((pixel >> 12) &
2396 SetBluePixelComponent(q,ScaleAnyToQuantum((pixel >> 2) &
2398 p+=quantum_info->pad;
2403 if (quantum_info->quantum == 32U)
2405 for (x=0; x < (ssize_t) number_pixels; x++)
2407 p=PushQuantumLongPixel(&quantum_state,image->depth,p,&pixel);
2408 SetRedPixelComponent(q,ScaleAnyToQuantum(pixel,range));
2409 p=PushQuantumLongPixel(&quantum_state,image->depth,p,&pixel);
2410 SetGreenPixelComponent(q,ScaleAnyToQuantum(pixel,range));
2411 p=PushQuantumLongPixel(&quantum_state,image->depth,p,&pixel);
2412 SetBluePixelComponent(q,ScaleAnyToQuantum(pixel,range));
2417 for (x=0; x < (ssize_t) number_pixels; x++)
2419 p=PushQuantumPixel(&quantum_state,image->depth,p,&pixel);
2420 SetRedPixelComponent(q,ScaleAnyToQuantum(pixel,range));
2421 p=PushQuantumPixel(&quantum_state,image->depth,p,&pixel);
2422 SetGreenPixelComponent(q,ScaleAnyToQuantum(pixel,range));
2423 p=PushQuantumPixel(&quantum_state,image->depth,p,&pixel);
2424 SetBluePixelComponent(q,ScaleAnyToQuantum(pixel,range));
2431 range=GetQuantumRange(image->depth);
2432 if (quantum_info->pack == MagickFalse)
2437 for (x=0; x < (ssize_t) (3*number_pixels-1); x+=2)
2439 p=PushShortPixel(endian,p,&pixel);
2445 SetRedPixelComponent(q,ScaleAnyToQuantum((QuantumAny)
2446 (pixel >> 4),range));
2451 SetGreenPixelComponent(q,ScaleAnyToQuantum((QuantumAny)
2452 (pixel >> 4),range));
2457 SetBluePixelComponent(q,ScaleAnyToQuantum((QuantumAny)
2458 (pixel >> 4),range));
2463 p=PushShortPixel(endian,p,&pixel);
2469 SetRedPixelComponent(q,ScaleAnyToQuantum((QuantumAny)
2470 (pixel >> 4),range));
2475 SetGreenPixelComponent(q,ScaleAnyToQuantum((QuantumAny)
2476 (pixel >> 4),range));
2481 SetBluePixelComponent(q,ScaleAnyToQuantum((QuantumAny)
2482 (pixel >> 4),range));
2487 p+=quantum_info->pad;
2489 for (bit=0; bit < (ssize_t) (3*number_pixels % 2); bit++)
2491 p=PushShortPixel(endian,p,&pixel);
2492 switch ((x+bit) % 3)
2497 SetRedPixelComponent(q,ScaleAnyToQuantum((QuantumAny)
2498 (pixel >> 4),range));
2503 SetGreenPixelComponent(q,ScaleAnyToQuantum((QuantumAny)
2504 (pixel >> 4),range));
2509 SetBluePixelComponent(q,ScaleAnyToQuantum((QuantumAny)
2510 (pixel >> 4),range));
2515 p+=quantum_info->pad;
2521 if (quantum_info->quantum == 32U)
2523 for (x=0; x < (ssize_t) number_pixels; x++)
2525 p=PushQuantumLongPixel(&quantum_state,image->depth,p,&pixel);
2526 SetRedPixelComponent(q,ScaleAnyToQuantum(pixel,range));
2527 p=PushQuantumLongPixel(&quantum_state,image->depth,p,&pixel);
2528 SetGreenPixelComponent(q,ScaleAnyToQuantum(pixel,range));
2529 p=PushQuantumLongPixel(&quantum_state,image->depth,p,&pixel);
2530 SetBluePixelComponent(q,ScaleAnyToQuantum(pixel,range));
2535 for (x=0; x < (ssize_t) number_pixels; x++)
2537 p=PushQuantumPixel(&quantum_state,image->depth,p,&pixel);
2538 SetRedPixelComponent(q,ScaleAnyToQuantum(pixel,range));
2539 p=PushQuantumPixel(&quantum_state,image->depth,p,&pixel);
2540 SetGreenPixelComponent(q,ScaleAnyToQuantum(pixel,range));
2541 p=PushQuantumPixel(&quantum_state,image->depth,p,&pixel);
2542 SetBluePixelComponent(q,ScaleAnyToQuantum(pixel,range));
2552 if (quantum_info->format == FloatingPointQuantumFormat)
2554 for (x=0; x < (ssize_t) number_pixels; x++)
2556 p=PushShortPixel(endian,p,&pixel);
2557 SetRedPixelComponent(q,ClampToQuantum((MagickRealType)
2558 QuantumRange*HalfToSinglePrecision(pixel)));
2559 p=PushShortPixel(endian,p,&pixel);
2560 SetGreenPixelComponent(q,ClampToQuantum((MagickRealType)
2561 QuantumRange*HalfToSinglePrecision(pixel)));
2562 p=PushShortPixel(endian,p,&pixel);
2563 SetBluePixelComponent(q,ClampToQuantum((MagickRealType)
2564 QuantumRange*HalfToSinglePrecision(pixel)));
2565 p+=quantum_info->pad;
2570 for (x=0; x < (ssize_t) number_pixels; x++)
2572 p=PushShortPixel(endian,p,&pixel);
2573 SetRedPixelComponent(q,ScaleShortToQuantum(pixel));
2574 p=PushShortPixel(endian,p,&pixel);
2575 SetGreenPixelComponent(q,ScaleShortToQuantum(pixel));
2576 p=PushShortPixel(endian,p,&pixel);
2577 SetBluePixelComponent(q,ScaleShortToQuantum(pixel));
2578 p+=quantum_info->pad;
2588 if (quantum_info->format == FloatingPointQuantumFormat)
2593 for (x=0; x < (ssize_t) number_pixels; x++)
2595 p=PushFloatPixel(&quantum_state,p,&pixel);
2596 SetRedPixelComponent(q,ClampToQuantum(pixel));
2597 p=PushFloatPixel(&quantum_state,p,&pixel);
2598 SetGreenPixelComponent(q,ClampToQuantum(pixel));
2599 p=PushFloatPixel(&quantum_state,p,&pixel);
2600 SetBluePixelComponent(q,ClampToQuantum(pixel));
2601 p+=quantum_info->pad;
2606 for (x=0; x < (ssize_t) number_pixels; x++)
2608 p=PushLongPixel(endian,p,&pixel);
2609 SetRedPixelComponent(q,ScaleLongToQuantum(pixel));
2610 p=PushLongPixel(endian,p,&pixel);
2611 SetGreenPixelComponent(q,ScaleLongToQuantum(pixel));
2612 p=PushLongPixel(endian,p,&pixel);
2613 SetBluePixelComponent(q,ScaleLongToQuantum(pixel));
2614 p+=quantum_info->pad;
2621 if (quantum_info->format == FloatingPointQuantumFormat)
2626 for (x=0; x < (ssize_t) number_pixels; x++)
2628 p=PushDoublePixel(&quantum_state,p,&pixel);
2629 SetRedPixelComponent(q,ClampToQuantum(pixel));
2630 p=PushDoublePixel(&quantum_state,p,&pixel);
2631 SetGreenPixelComponent(q,ClampToQuantum(pixel));
2632 p=PushDoublePixel(&quantum_state,p,&pixel);
2633 SetBluePixelComponent(q,ClampToQuantum(pixel));
2634 p+=quantum_info->pad;
2642 range=GetQuantumRange(image->depth);
2643 for (x=0; x < (ssize_t) number_pixels; x++)
2645 p=PushQuantumPixel(&quantum_state,image->depth,p,&pixel);
2646 SetRedPixelComponent(q,ScaleAnyToQuantum(pixel,range));
2647 p=PushQuantumPixel(&quantum_state,image->depth,p,&pixel);
2648 SetGreenPixelComponent(q,ScaleAnyToQuantum(pixel,range));
2649 p=PushQuantumPixel(&quantum_state,image->depth,p,&pixel);
2650 SetBluePixelComponent(q,ScaleAnyToQuantum(pixel,range));
2662 switch (quantum_info->depth)
2669 for (x=0; x < (ssize_t) number_pixels; x++)
2671 p=PushCharPixel(p,&pixel);
2672 SetRedPixelComponent(q,ScaleCharToQuantum(pixel));
2673 p=PushCharPixel(p,&pixel);
2674 SetGreenPixelComponent(q,ScaleCharToQuantum(pixel));
2675 p=PushCharPixel(p,&pixel);
2676 SetBluePixelComponent(q,ScaleCharToQuantum(pixel));
2677 p=PushCharPixel(p,&pixel);
2678 SetOpacityPixelComponent(q,QuantumRange-ScaleCharToQuantum(pixel));
2679 p+=quantum_info->pad;
2687 if (quantum_info->pack == MagickFalse)
2700 for (x=0; x < (ssize_t) number_pixels; x++)
2702 for (i=0; i < 4; i++)
2708 p=PushLongPixel(endian,p,&pixel);
2709 quantum=(size_t) (ScaleShortToQuantum((unsigned short)
2710 (((pixel >> 22) & 0x3ff) << 6)));
2715 quantum=(size_t) (ScaleShortToQuantum((unsigned short)
2716 (((pixel >> 12) & 0x3ff) << 6)));
2721 quantum=(size_t) (ScaleShortToQuantum((unsigned short)
2722 (((pixel >> 2) & 0x3ff) << 6)));
2728 case 0: SetRedPixelComponent(q,quantum); break;
2729 case 1: SetGreenPixelComponent(q,quantum); break;
2730 case 2: SetBluePixelComponent(q,quantum); break;
2731 case 3: SetAlphaPixelComponent(q,quantum); break;
2735 p+=quantum_info->pad;
2740 for (x=0; x < (ssize_t) number_pixels; x++)
2742 p=PushQuantumPixel(&quantum_state,image->depth,p,&pixel);
2743 SetRedPixelComponent(q,ScaleShortToQuantum((unsigned short)
2745 p=PushQuantumPixel(&quantum_state,image->depth,p,&pixel);
2746 SetGreenPixelComponent(q,ScaleShortToQuantum((unsigned short)
2748 p=PushQuantumPixel(&quantum_state,image->depth,p,&pixel);
2749 SetBluePixelComponent(q,ScaleShortToQuantum((unsigned short)
2751 p=PushQuantumPixel(&quantum_state,image->depth,p,&pixel);
2752 SetOpacityPixelComponent(q,QuantumRange-ScaleShortToQuantum(
2753 (unsigned short) (pixel << 6)));
2763 if (quantum_info->format == FloatingPointQuantumFormat)
2765 for (x=0; x < (ssize_t) number_pixels; x++)
2767 p=PushShortPixel(endian,p,&pixel);
2768 SetRedPixelComponent(q,ClampToQuantum((MagickRealType)
2769 QuantumRange*HalfToSinglePrecision(pixel)));
2770 p=PushShortPixel(endian,p,&pixel);
2771 SetGreenPixelComponent(q,ClampToQuantum((MagickRealType)
2772 QuantumRange*HalfToSinglePrecision(pixel)));
2773 p=PushShortPixel(endian,p,&pixel);
2774 SetBluePixelComponent(q,ClampToQuantum((MagickRealType)
2775 QuantumRange*HalfToSinglePrecision(pixel)));
2776 p=PushShortPixel(endian,p,&pixel);
2777 SetOpacityPixelComponent(q,QuantumRange-ClampToQuantum(
2778 (MagickRealType) QuantumRange*HalfToSinglePrecision(pixel)));
2779 p+=quantum_info->pad;
2784 for (x=0; x < (ssize_t) number_pixels; x++)
2786 p=PushShortPixel(endian,p,&pixel);
2787 SetRedPixelComponent(q,ScaleShortToQuantum(pixel));
2788 p=PushShortPixel(endian,p,&pixel);
2789 SetGreenPixelComponent(q,ScaleShortToQuantum(pixel));
2790 p=PushShortPixel(endian,p,&pixel);
2791 SetBluePixelComponent(q,ScaleShortToQuantum(pixel));
2792 p=PushShortPixel(endian,p,&pixel);
2793 SetOpacityPixelComponent(q,QuantumRange-ScaleShortToQuantum(pixel));
2794 p+=quantum_info->pad;
2804 if (quantum_info->format == FloatingPointQuantumFormat)
2809 for (x=0; x < (ssize_t) number_pixels; x++)
2811 p=PushFloatPixel(&quantum_state,p,&pixel);
2812 SetRedPixelComponent(q,ClampToQuantum(pixel));
2813 p=PushFloatPixel(&quantum_state,p,&pixel);
2814 SetGreenPixelComponent(q,ClampToQuantum(pixel));
2815 p=PushFloatPixel(&quantum_state,p,&pixel);
2816 SetBluePixelComponent(q,ClampToQuantum(pixel));
2817 p=PushFloatPixel(&quantum_state,p,&pixel);
2818 SetOpacityPixelComponent(q,QuantumRange-ClampToQuantum(pixel));
2819 p+=quantum_info->pad;
2824 for (x=0; x < (ssize_t) number_pixels; x++)
2826 p=PushLongPixel(endian,p,&pixel);
2827 SetRedPixelComponent(q,ScaleLongToQuantum(pixel));
2828 p=PushLongPixel(endian,p,&pixel);
2829 SetGreenPixelComponent(q,ScaleLongToQuantum(pixel));
2830 p=PushLongPixel(endian,p,&pixel);
2831 SetBluePixelComponent(q,ScaleLongToQuantum(pixel));
2832 p=PushLongPixel(endian,p,&pixel);
2833 SetOpacityPixelComponent(q,QuantumRange-ScaleLongToQuantum(pixel));
2834 p+=quantum_info->pad;
2841 if (quantum_info->format == FloatingPointQuantumFormat)
2846 for (x=0; x < (ssize_t) number_pixels; x++)
2848 p=PushDoublePixel(&quantum_state,p,&pixel);
2849 SetRedPixelComponent(q,ClampToQuantum(pixel));
2850 p=PushDoublePixel(&quantum_state,p,&pixel);
2851 SetGreenPixelComponent(q,ClampToQuantum(pixel));
2852 p=PushDoublePixel(&quantum_state,p,&pixel);
2853 SetBluePixelComponent(q,ClampToQuantum(pixel));
2854 p=PushDoublePixel(&quantum_state,p,&pixel);
2855 SetOpacityPixelComponent(q,QuantumRange-ClampToQuantum(pixel));
2856 p+=quantum_info->pad;
2864 range=GetQuantumRange(image->depth);
2865 for (x=0; x < (ssize_t) number_pixels; x++)
2867 p=PushQuantumPixel(&quantum_state,image->depth,p,&pixel);
2868 SetRedPixelComponent(q,ScaleAnyToQuantum(pixel,range));
2869 p=PushQuantumPixel(&quantum_state,image->depth,p,&pixel);
2870 SetGreenPixelComponent(q,ScaleAnyToQuantum(pixel,range));
2871 p=PushQuantumPixel(&quantum_state,image->depth,p,&pixel);
2872 SetBluePixelComponent(q,ScaleAnyToQuantum(pixel,range));
2873 p=PushQuantumPixel(&quantum_state,image->depth,p,&pixel);
2874 SetOpacityPixelComponent(q,QuantumRange-ScaleAnyToQuantum(pixel,
2885 if (image->colorspace != CMYKColorspace)
2887 (void) ThrowMagickException(exception,GetMagickModule(),ImageError,
2888 "ColorSeparatedImageRequired","`%s'",image->filename);
2891 switch (quantum_info->depth)
2898 for (x=0; x < (ssize_t) number_pixels; x++)
2900 p=PushCharPixel(p,&pixel);
2901 SetRedPixelComponent(q,ScaleCharToQuantum(pixel));
2902 p=PushCharPixel(p,&pixel);
2903 SetGreenPixelComponent(q,ScaleCharToQuantum(pixel));
2904 p=PushCharPixel(p,&pixel);
2905 SetBluePixelComponent(q,ScaleCharToQuantum(pixel));
2906 p=PushCharPixel(p,&pixel);
2907 SetIndexPixelComponent(indexes+x,ScaleCharToQuantum(pixel));
2908 p+=quantum_info->pad;
2918 if (quantum_info->format == FloatingPointQuantumFormat)
2920 for (x=0; x < (ssize_t) number_pixels; x++)
2922 p=PushShortPixel(endian,p,&pixel);
2923 SetRedPixelComponent(q,ClampToQuantum((MagickRealType)
2924 QuantumRange*HalfToSinglePrecision(pixel)));
2925 p=PushShortPixel(endian,p,&pixel);
2926 SetGreenPixelComponent(q,ClampToQuantum((MagickRealType)
2927 QuantumRange*HalfToSinglePrecision(pixel)));
2928 p=PushShortPixel(endian,p,&pixel);
2929 SetBluePixelComponent(q,ClampToQuantum((MagickRealType)
2930 QuantumRange*HalfToSinglePrecision(pixel)));
2931 p=PushShortPixel(endian,p,&pixel);
2932 SetIndexPixelComponent(indexes+x,ClampToQuantum(
2933 (MagickRealType) QuantumRange*HalfToSinglePrecision(pixel)));
2934 p+=quantum_info->pad;
2939 for (x=0; x < (ssize_t) number_pixels; x++)
2941 p=PushShortPixel(endian,p,&pixel);
2942 SetRedPixelComponent(q,ScaleShortToQuantum(pixel));
2943 p=PushShortPixel(endian,p,&pixel);
2944 SetGreenPixelComponent(q,ScaleShortToQuantum(pixel));
2945 p=PushShortPixel(endian,p,&pixel);
2946 SetBluePixelComponent(q,ScaleShortToQuantum(pixel));
2947 p=PushShortPixel(endian,p,&pixel);
2948 SetIndexPixelComponent(indexes+x,ScaleShortToQuantum(pixel));
2949 p+=quantum_info->pad;
2959 if (quantum_info->format == FloatingPointQuantumFormat)
2964 for (x=0; x < (ssize_t) number_pixels; x++)
2966 p=PushFloatPixel(&quantum_state,p,&pixel);
2967 SetRedPixelComponent(q,ClampToQuantum(pixel));
2968 p=PushFloatPixel(&quantum_state,p,&pixel);
2969 SetGreenPixelComponent(q,ClampToQuantum(pixel));
2970 p=PushFloatPixel(&quantum_state,p,&pixel);
2971 SetBluePixelComponent(q,ClampToQuantum(pixel));
2972 p=PushFloatPixel(&quantum_state,p,&pixel);
2973 SetIndexPixelComponent(indexes+x,ClampToQuantum(pixel));
2974 p+=quantum_info->pad;
2979 for (x=0; x < (ssize_t) number_pixels; x++)
2981 p=PushLongPixel(endian,p,&pixel);
2982 SetRedPixelComponent(q,ScaleLongToQuantum(pixel));
2983 p=PushLongPixel(endian,p,&pixel);
2984 SetGreenPixelComponent(q,ScaleLongToQuantum(pixel));
2985 p=PushLongPixel(endian,p,&pixel);
2986 SetBluePixelComponent(q,ScaleLongToQuantum(pixel));
2987 p=PushLongPixel(endian,p,&pixel);
2988 SetIndexPixelComponent(indexes+x,ScaleLongToQuantum(pixel));
2989 p+=quantum_info->pad;
2996 if (quantum_info->format == FloatingPointQuantumFormat)
3001 for (x=0; x < (ssize_t) number_pixels; x++)
3003 p=PushDoublePixel(&quantum_state,p,&pixel);
3004 SetRedPixelComponent(q,ClampToQuantum(pixel));
3005 p=PushDoublePixel(&quantum_state,p,&pixel);
3006 SetGreenPixelComponent(q,ClampToQuantum(pixel));
3007 p=PushDoublePixel(&quantum_state,p,&pixel);
3008 SetBluePixelComponent(q,ClampToQuantum(pixel));
3009 p=PushDoublePixel(&quantum_state,p,&pixel);
3010 SetIndexPixelComponent(indexes+x,ClampToQuantum(pixel));
3011 p+=quantum_info->pad;
3019 range=GetQuantumRange(image->depth);
3020 for (x=0; x < (ssize_t) number_pixels; x++)
3022 p=PushQuantumPixel(&quantum_state,image->depth,p,&pixel);
3023 SetRedPixelComponent(q,ScaleAnyToQuantum(pixel,range));
3024 p=PushQuantumPixel(&quantum_state,image->depth,p,&pixel);
3025 SetGreenPixelComponent(q,ScaleAnyToQuantum(pixel,range));
3026 p=PushQuantumPixel(&quantum_state,image->depth,p,&pixel);
3027 SetBluePixelComponent(q,ScaleAnyToQuantum(pixel,range));
3028 p=PushQuantumPixel(&quantum_state,image->depth,p,&pixel);
3029 SetIndexPixelComponent(indexes+x,ScaleAnyToQuantum(pixel,range));
3040 if (image->colorspace != CMYKColorspace)
3042 (void) ThrowMagickException(exception,GetMagickModule(),ImageError,
3043 "ColorSeparatedImageRequired","`%s'",image->filename);
3046 switch (quantum_info->depth)
3053 for (x=0; x < (ssize_t) number_pixels; x++)
3055 p=PushCharPixel(p,&pixel);
3056 SetRedPixelComponent(q,ScaleCharToQuantum(pixel));
3057 p=PushCharPixel(p,&pixel);
3058 SetGreenPixelComponent(q,ScaleCharToQuantum(pixel));
3059 p=PushCharPixel(p,&pixel);
3060 SetBluePixelComponent(q,ScaleCharToQuantum(pixel));
3061 p=PushCharPixel(p,&pixel);
3062 SetIndexPixelComponent(indexes+x,ScaleCharToQuantum(pixel));
3063 p=PushCharPixel(p,&pixel);
3064 SetOpacityPixelComponent(q,QuantumRange-ScaleCharToQuantum(pixel));
3065 p+=quantum_info->pad;
3075 if (quantum_info->format == FloatingPointQuantumFormat)
3077 for (x=0; x < (ssize_t) number_pixels; x++)
3079 p=PushShortPixel(endian,p,&pixel);
3080 SetRedPixelComponent(q,ClampToQuantum((MagickRealType)
3081 QuantumRange*HalfToSinglePrecision(pixel)));
3082 p=PushShortPixel(endian,p,&pixel);
3083 SetGreenPixelComponent(q,ClampToQuantum((MagickRealType)
3084 QuantumRange*HalfToSinglePrecision(pixel)));
3085 p=PushShortPixel(endian,p,&pixel);
3086 SetBluePixelComponent(q,ClampToQuantum((MagickRealType)
3087 QuantumRange*HalfToSinglePrecision(pixel)));
3088 p=PushShortPixel(endian,p,&pixel);
3089 SetIndexPixelComponent(indexes+x,ClampToQuantum(
3090 (MagickRealType) QuantumRange*HalfToSinglePrecision(pixel)));
3091 p=PushShortPixel(endian,p,&pixel);
3092 SetOpacityPixelComponent(q,QuantumRange-ClampToQuantum(
3093 (MagickRealType) QuantumRange*HalfToSinglePrecision(pixel)));
3094 p+=quantum_info->pad;
3099 for (x=0; x < (ssize_t) number_pixels; x++)
3101 p=PushShortPixel(endian,p,&pixel);
3102 SetRedPixelComponent(q,ScaleShortToQuantum(pixel));
3103 p=PushShortPixel(endian,p,&pixel);
3104 SetGreenPixelComponent(q,ScaleShortToQuantum(pixel));
3105 p=PushShortPixel(endian,p,&pixel);
3106 SetBluePixelComponent(q,ScaleShortToQuantum(pixel));
3107 p=PushShortPixel(endian,p,&pixel);
3108 SetIndexPixelComponent(indexes+x,ScaleShortToQuantum(pixel));
3109 p=PushShortPixel(endian,p,&pixel);
3110 SetOpacityPixelComponent(q,QuantumRange-ScaleShortToQuantum(pixel));
3111 p+=quantum_info->pad;
3121 if (quantum_info->format == FloatingPointQuantumFormat)
3126 for (x=0; x < (ssize_t) number_pixels; x++)
3128 p=PushFloatPixel(&quantum_state,p,&pixel);
3129 SetRedPixelComponent(q,ClampToQuantum(pixel));
3130 p=PushFloatPixel(&quantum_state,p,&pixel);
3131 SetGreenPixelComponent(q,ClampToQuantum(pixel));
3132 p=PushFloatPixel(&quantum_state,p,&pixel);
3133 SetBluePixelComponent(q,ClampToQuantum(pixel));
3134 p=PushFloatPixel(&quantum_state,p,&pixel);
3135 SetIndexPixelComponent(indexes+x,ClampToQuantum(pixel));
3136 p=PushFloatPixel(&quantum_state,p,&pixel);
3137 SetOpacityPixelComponent(q,QuantumRange-ClampToQuantum(pixel));
3138 p+=quantum_info->pad;
3143 for (x=0; x < (ssize_t) number_pixels; x++)
3145 p=PushLongPixel(endian,p,&pixel);
3146 SetRedPixelComponent(q,ScaleLongToQuantum(pixel));
3147 p=PushLongPixel(endian,p,&pixel);
3148 SetGreenPixelComponent(q,ScaleLongToQuantum(pixel));
3149 p=PushLongPixel(endian,p,&pixel);
3150 SetBluePixelComponent(q,ScaleLongToQuantum(pixel));
3151 p=PushLongPixel(endian,p,&pixel);
3152 SetIndexPixelComponent(indexes+x,ScaleLongToQuantum(pixel));
3153 p=PushLongPixel(endian,p,&pixel);
3154 SetOpacityPixelComponent(q,QuantumRange-ScaleLongToQuantum(pixel));
3155 p+=quantum_info->pad;
3162 if (quantum_info->format == FloatingPointQuantumFormat)
3167 for (x=0; x < (ssize_t) number_pixels; x++)
3169 p=PushDoublePixel(&quantum_state,p,&pixel);
3170 SetRedPixelComponent(q,ClampToQuantum(pixel));
3171 p=PushDoublePixel(&quantum_state,p,&pixel);
3172 SetGreenPixelComponent(q,ClampToQuantum(pixel));
3173 p=PushDoublePixel(&quantum_state,p,&pixel);
3174 SetBluePixelComponent(q,ClampToQuantum(pixel));
3175 p=PushDoublePixel(&quantum_state,p,&pixel);
3176 SetIndexPixelComponent(indexes+x,ClampToQuantum(pixel));
3177 p=PushDoublePixel(&quantum_state,p,&pixel);
3178 SetOpacityPixelComponent(q,QuantumRange-ClampToQuantum(pixel));
3179 p=PushDoublePixel(&quantum_state,p,&pixel);
3180 p+=quantum_info->pad;
3188 range=GetQuantumRange(image->depth);
3189 for (x=0; x < (ssize_t) number_pixels; x++)
3191 p=PushQuantumPixel(&quantum_state,image->depth,p,&pixel);
3192 SetRedPixelComponent(q,ScaleAnyToQuantum(pixel,range));
3193 p=PushQuantumPixel(&quantum_state,image->depth,p,&pixel);
3194 SetGreenPixelComponent(q,ScaleAnyToQuantum(pixel,range));
3195 p=PushQuantumPixel(&quantum_state,image->depth,p,&pixel);
3196 SetBluePixelComponent(q,ScaleAnyToQuantum(pixel,range));
3197 p=PushQuantumPixel(&quantum_state,image->depth,p,&pixel);
3198 SetIndexPixelComponent(indexes+x,ScaleAnyToQuantum(pixel,range));
3199 p=PushQuantumPixel(&quantum_state,image->depth,p,&pixel);
3200 SetOpacityPixelComponent(q,QuantumRange-ScaleAnyToQuantum(pixel,
3211 switch (quantum_info->depth)
3219 if (quantum_info->pack == MagickFalse)
3232 for (x=0; x < (ssize_t) number_pixels; x+=2)
3234 for (i=0; i < 4; i++)
3240 p=PushLongPixel(endian,p,&pixel);
3241 quantum=(size_t) (ScaleShortToQuantum((unsigned short)
3242 (((pixel >> 22) & 0x3ff) << 6)));
3247 quantum=(size_t) (ScaleShortToQuantum((unsigned short)
3248 (((pixel >> 12) & 0x3ff) << 6)));
3253 quantum=(size_t) (ScaleShortToQuantum((unsigned short)
3254 (((pixel >> 2) & 0x3ff) << 6)));
3258 cbcr[i]=(Quantum) (quantum);
3261 p+=quantum_info->pad;
3262 SetRedPixelComponent(q,cbcr[1]);
3263 SetGreenPixelComponent(q,cbcr[0]);
3264 SetBluePixelComponent(q,cbcr[2]);
3266 SetRedPixelComponent(q,cbcr[3]);
3267 SetGreenPixelComponent(q,cbcr[0]);
3268 SetBluePixelComponent(q,cbcr[2]);
3276 range=GetQuantumRange(image->depth);
3277 for (x=0; x < (ssize_t) number_pixels; x++)
3279 p=PushQuantumPixel(&quantum_state,image->depth,p,&pixel);
3280 SetRedPixelComponent(q,ScaleAnyToQuantum(pixel,range));
3281 p=PushQuantumPixel(&quantum_state,image->depth,p,&pixel);
3282 SetGreenPixelComponent(q,ScaleAnyToQuantum(pixel,range));
3293 if ((quantum_type == CbYCrQuantum) || (quantum_type == CbYCrAQuantum))
3298 register PixelPacket
3301 q=GetAuthenticPixelQueue(image);
3302 if (image_view != (CacheView *) NULL)
3303 q=GetCacheViewAuthenticPixelQueue(image_view);
3304 for (x=0; x < (ssize_t) number_pixels; x++)
3306 quantum=GetRedPixelComponent(q);
3307 SetRedPixelComponent(q,GetGreenPixelComponent(q));
3308 SetGreenPixelComponent(q,quantum);
3312 if ((quantum_type == RGBOQuantum) || (quantum_type == CMYKOQuantum))
3314 register PixelPacket
3317 q=GetAuthenticPixelQueue(image);
3318 if (image_view != (CacheView *) NULL)
3319 q=GetCacheViewAuthenticPixelQueue(image_view);
3320 for (x=0; x < (ssize_t) number_pixels; x++)
3322 SetOpacityPixelComponent(q,GetAlphaPixelComponent(q));
3326 if (quantum_info->alpha_type == DisassociatedQuantumAlpha)
3331 register PixelPacket
3337 q=GetAuthenticPixelQueue(image);
3338 if (image_view != (CacheView *) NULL)
3339 q=GetCacheViewAuthenticPixelQueue(image_view);
3340 for (x=0; x < (ssize_t) number_pixels; x++)
3342 alpha=QuantumScale*GetAlphaPixelComponent(q);
3343 alpha=1.0/(fabs(alpha) <= MagickEpsilon ? 1.0 : alpha);
3344 SetRedPixelComponent(q,ClampToQuantum(alpha*
3345 GetRedPixelComponent(q)));
3346 SetGreenPixelComponent(q,ClampToQuantum(alpha*
3347 GetGreenPixelComponent(q)));
3348 SetBluePixelComponent(q,ClampToQuantum(alpha*
3349 GetBluePixelComponent(q)));