43#include "magick/studio.h"
44#include "magick/blob.h"
45#include "magick/blob-private.h"
46#include "magick/cache.h"
47#include "magick/cache-private.h"
48#include "magick/color-private.h"
49#include "magick/composite-private.h"
50#include "magick/constitute.h"
51#include "magick/exception.h"
52#include "magick/exception-private.h"
53#include "magick/geometry.h"
54#include "magick/memory_.h"
55#include "magick/memory-private.h"
56#include "magick/pixel.h"
57#include "magick/policy.h"
58#include "magick/quantum.h"
59#include "magick/quantum-private.h"
60#include "magick/semaphore.h"
61#include "magick/stream.h"
62#include "magick/stream-private.h"
63#include "magick/string_.h"
110#if defined(__cplusplus) || defined(c_plusplus)
115 *GetVirtualPixelStream(
const Image *,
const VirtualPixelMethod,
const ssize_t,
118static MagickBooleanType
123 *QueueAuthenticPixelsStream(
Image *,
const ssize_t,
const ssize_t,
const size_t,
126#if defined(__cplusplus) || defined(c_plusplus)
157 stream_info=(
StreamInfo *) AcquireMagickMemory(
sizeof(*stream_info));
159 ThrowFatalException(ResourceLimitFatalError,
"MemoryAllocationFailed");
160 (void) memset(stream_info,0,
sizeof(*stream_info));
161 stream_info->pixels=(
unsigned char *) MagickAssumeAligned(
162 AcquireAlignedMemory(1,
sizeof(*stream_info->pixels)));
163 if (stream_info->pixels == (
unsigned char *) NULL)
164 ThrowFatalException(ResourceLimitFatalError,
"MemoryAllocationFailed");
165 stream_info->map=ConstantString(
"RGB");
166 stream_info->storage_type=CharPixel;
167 stream_info->stream=AcquireImage(image_info);
168 stream_info->signature=MagickCoreSignature;
195static inline void RelinquishStreamPixels(
CacheInfo *cache_info)
197 assert(cache_info != (
CacheInfo *) NULL);
198 if (cache_info->pixels != NULL)
200 if (cache_info->mapped == MagickFalse)
201 cache_info->pixels=(
PixelPacket *) RelinquishAlignedMemory(
205 (void) UnmapBlob(cache_info->pixels,(
size_t) cache_info->length);
209 cache_info->mapped=MagickFalse;
210 cache_info->indexes=(IndexPacket *) NULL;
211 cache_info->length=0;
214static void DestroyPixelStream(
Image *image)
222 assert(image != (
Image *) NULL);
223 assert(image->signature == MagickCoreSignature);
224 if (IsEventLogging() != MagickFalse)
225 (void) LogMagickEvent(TraceEvent,GetMagickModule(),
"%s",image->filename);
227 assert(cache_info->signature == MagickCoreSignature);
229 LockSemaphoreInfo(cache_info->semaphore);
230 cache_info->reference_count--;
231 if (cache_info->reference_count == 0)
233 UnlockSemaphoreInfo(cache_info->semaphore);
234 if (destroy == MagickFalse)
236 RelinquishStreamPixels(cache_info);
237 if (cache_info->nexus_info != (
NexusInfo **) NULL)
238 cache_info->nexus_info=DestroyPixelCacheNexus(cache_info->nexus_info,
239 cache_info->number_threads);
241 DestroySemaphoreInfo(&cache_info->file_semaphore);
243 DestroySemaphoreInfo(&cache_info->semaphore);
244 cache_info=(
CacheInfo *) RelinquishAlignedMemory(cache_info);
273 assert(stream_info->signature == MagickCoreSignature);
274 if (IsEventLogging() != MagickFalse)
275 (void) LogMagickEvent(TraceEvent,GetMagickModule(),
"...");
276 if (stream_info->map != (
char *) NULL)
277 stream_info->map=DestroyString(stream_info->map);
278 if (stream_info->pixels != (
unsigned char *) NULL)
279 stream_info->pixels=(
unsigned char *) RelinquishAlignedMemory(
280 stream_info->pixels);
281 if (stream_info->stream != (
Image *) NULL)
283 (void) CloseBlob(stream_info->stream);
284 stream_info->stream=DestroyImage(stream_info->stream);
286 if (stream_info->quantum_info != (
QuantumInfo *) NULL)
287 stream_info->quantum_info=DestroyQuantumInfo(stream_info->quantum_info);
288 stream_info->signature=(~MagickCoreSignature);
289 stream_info=(
StreamInfo *) RelinquishMagickMemory(stream_info);
316static IndexPacket *GetAuthenticIndexesFromStream(
const Image *image)
321 assert(image != (
Image *) NULL);
322 assert(image->signature == MagickCoreSignature);
323 if (IsEventLogging() != MagickFalse)
324 (void) LogMagickEvent(TraceEvent,GetMagickModule(),
"%s",image->filename);
326 assert(cache_info->signature == MagickCoreSignature);
327 return(cache_info->indexes);
363 const ssize_t y,
const size_t columns,
const size_t rows,
369 assert(image != (
Image *) NULL);
370 assert(image->signature == MagickCoreSignature);
371 if (IsEventLogging() != MagickFalse)
372 (void) LogMagickEvent(TraceEvent,GetMagickModule(),
"%s",image->filename);
373 pixels=QueueAuthenticPixelsStream(image,x,y,columns,rows,exception);
405 assert(image != (
Image *) NULL);
406 assert(image->signature == MagickCoreSignature);
407 if (IsEventLogging() != MagickFalse)
408 (void) LogMagickEvent(TraceEvent,GetMagickModule(),
"%s",image->filename);
410 assert(cache_info->signature == MagickCoreSignature);
411 return(cache_info->pixels);
445static MagickBooleanType GetOneAuthenticPixelFromStream(
Image *image,
451 assert(image != (
Image *) NULL);
452 assert(image->signature == MagickCoreSignature);
453 *pixel=image->background_color;
454 pixels=GetAuthenticPixelsStream(image,x,y,1,1,exception);
494static MagickBooleanType GetOneVirtualPixelFromStream(
const Image *image,
495 const VirtualPixelMethod virtual_pixel_method,
const ssize_t x,
const ssize_t y,
501 assert(image != (
Image *) NULL);
502 assert(image->signature == MagickCoreSignature);
503 *pixel=image->background_color;
504 pixels=GetVirtualPixelStream(image,virtual_pixel_method,x,y,1,1,exception);
533MagickExport
const void *GetStreamInfoClientData(
StreamInfo *stream_info)
536 assert(stream_info->signature == MagickCoreSignature);
537 return(stream_info->client_data);
571 assert(image != (
Image *) NULL);
572 assert(image->signature == MagickCoreSignature);
573 if (IsEventLogging() != MagickFalse)
574 (void) LogMagickEvent(TraceEvent,GetMagickModule(),
"%s",image->filename);
576 assert(cache_info->signature == MagickCoreSignature);
577 return(cache_info->pixels);
603static const IndexPacket *GetVirtualIndexesFromStream(
const Image *image)
608 assert(image != (
Image *) NULL);
609 assert(image->signature == MagickCoreSignature);
610 if (IsEventLogging() != MagickFalse)
611 (void) LogMagickEvent(TraceEvent,GetMagickModule(),
"%s",image->filename);
613 assert(cache_info->signature == MagickCoreSignature);
614 return(cache_info->indexes);
653static inline MagickBooleanType AcquireStreamPixels(
CacheInfo *cache_info,
656 if (cache_info->length != (MagickSizeType) ((
size_t) cache_info->length))
658 cache_info->pixels=(
PixelPacket *) MagickAssumeAligned(
659 AcquireAlignedMemory(1,(
size_t) cache_info->length));
661 (void) memset(cache_info->pixels,0,(
size_t) cache_info->length);
664 (void) ThrowMagickException(exception,GetMagickModule(),
665 ResourceLimitError,
"MemoryAllocationFailed",
"`%s'",
666 cache_info->filename);
673 const VirtualPixelMethod magick_unused(virtual_pixel_method),
const ssize_t x,
674 const ssize_t y,
const size_t columns,
const size_t rows,
689 magick_unreferenced(virtual_pixel_method);
694 assert(image != (
const Image *) NULL);
695 assert(image->signature == MagickCoreSignature);
696 if (IsEventLogging() != MagickFalse)
697 (void) LogMagickEvent(TraceEvent,GetMagickModule(),
"%s",image->filename);
698 if ((image->columns == 0) || (image->rows == 0) || (x < 0) ||
699 (y < 0) || (x >= (ssize_t) image->columns) ||
700 (y >= (ssize_t) image->rows))
702 (void) ThrowMagickException(exception,GetMagickModule(),StreamError,
703 "ImageDoesNotContainTheStreamGeometry",
"`%s'",image->filename);
707 assert(cache_info->signature == MagickCoreSignature);
711 cache_info->active_index_channel=((image->storage_class == PseudoClass) ||
712 (image->colorspace == CMYKColorspace)) ? MagickTrue : MagickFalse;
713 number_pixels=(MagickSizeType) columns*rows;
715 if (cache_info->active_index_channel != MagickFalse)
716 length+=number_pixels*
sizeof(IndexPacket);
719 cache_info->length=length;
720 status=AcquireStreamPixels(cache_info,exception);
721 if (status == MagickFalse)
723 cache_info->length=0;
728 if (cache_info->length < length)
730 RelinquishStreamPixels(cache_info);
731 cache_info->length=length;
732 status=AcquireStreamPixels(cache_info,exception);
733 if (status == MagickFalse)
735 cache_info->length=0;
739 cache_info->indexes=(IndexPacket *) NULL;
740 if (cache_info->active_index_channel != MagickFalse)
741 cache_info->indexes=(IndexPacket *) (cache_info->pixels+number_pixels);
742 return(cache_info->pixels);
774MagickExport MagickBooleanType OpenStream(
const ImageInfo *image_info,
780 (void) CopyMagickString(stream_info->stream->filename,filename,MaxTextExtent);
781 status=OpenBlob(image_info,stream_info->stream,WriteBinaryBlobMode,exception);
817static inline MagickBooleanType ValidatePixelCacheMorphology(
818 const Image *magick_restrict image)
821 *magick_restrict cache_info;
827 if ((image->storage_class != cache_info->storage_class) ||
828 (image->colorspace != cache_info->colorspace) ||
829 (image->channels != cache_info->channels) ||
830 (image->columns != cache_info->columns) ||
831 (image->rows != cache_info->rows) ||
832 (cache_info->nexus_info == (
NexusInfo **) NULL))
838 const ssize_t y,
const size_t columns,
const size_t rows,
859 assert(image != (
Image *) NULL);
860 if ((x < 0) || (y < 0) ||
861 ((x+(ssize_t) columns) > (ssize_t) image->columns) ||
862 ((y+(ssize_t) rows) > (ssize_t) image->rows) ||
863 (columns == 0) || (rows == 0))
865 (void) ThrowMagickException(exception,GetMagickModule(),StreamError,
866 "ImageDoesNotContainTheStreamGeometry",
"`%s'",image->filename);
869 stream_handler=GetBlobStreamHandler(image);
870 if (stream_handler == (StreamHandler) NULL)
872 (void) ThrowMagickException(exception,GetMagickModule(),StreamError,
873 "NoStreamHandlerIsDefined",
"`%s'",image->filename);
877 assert(cache_info->signature == MagickCoreSignature);
878 if (ValidatePixelCacheMorphology(image) == MagickFalse)
880 if (cache_info->storage_class == UndefinedClass)
881 (void) stream_handler(image,(
const void *) NULL,(
size_t)
882 cache_info->columns);
883 cache_info->storage_class=image->storage_class;
884 cache_info->colorspace=image->colorspace;
885 cache_info->channels=image->channels;
886 cache_info->columns=image->columns;
887 cache_info->rows=image->rows;
888 image->cache=cache_info;
893 cache_info->active_index_channel=((image->storage_class == PseudoClass) ||
894 (image->colorspace == CMYKColorspace)) ? MagickTrue : MagickFalse;
895 cache_info->columns=columns;
896 cache_info->rows=rows;
897 number_pixels=(MagickSizeType) columns*rows;
899 if (cache_info->active_index_channel != MagickFalse)
900 length+=number_pixels*
sizeof(IndexPacket);
903 cache_info->length=length;
904 status=AcquireStreamPixels(cache_info,exception);
905 if (status == MagickFalse)
907 cache_info->length=0;
912 if (cache_info->length < length)
914 RelinquishStreamPixels(cache_info);
915 cache_info->length=length;
916 status=AcquireStreamPixels(cache_info,exception);
917 if (status == MagickFalse)
919 cache_info->length=0;
923 cache_info->indexes=(IndexPacket *) NULL;
924 if (cache_info->active_index_channel != MagickFalse)
925 cache_info->indexes=(IndexPacket *) (cache_info->pixels+number_pixels);
926 return(cache_info->pixels);
957MagickExport
Image *ReadStream(
const ImageInfo *image_info,StreamHandler stream,
972 assert(image_info != (
ImageInfo *) NULL);
973 assert(image_info->signature == MagickCoreSignature);
975 assert(exception->signature == MagickCoreSignature);
976 if (IsEventLogging() != MagickFalse)
977 (void) LogMagickEvent(TraceEvent,GetMagickModule(),
"%s",
978 image_info->filename);
979 read_info=CloneImageInfo(image_info);
980 read_info->cache=AcquirePixelCache(0);
981 GetPixelCacheMethods(&cache_methods);
982 cache_methods.get_virtual_pixel_handler=GetVirtualPixelStream;
983 cache_methods.get_virtual_pixels_handler=GetVirtualPixelsStream;
984 cache_methods.get_virtual_indexes_from_handler=GetVirtualIndexesFromStream;
985 cache_methods.get_authentic_pixels_handler=GetAuthenticPixelsStream;
986 cache_methods.queue_authentic_pixels_handler=QueueAuthenticPixelsStream;
987 cache_methods.sync_authentic_pixels_handler=SyncAuthenticPixelsStream;
988 cache_methods.get_authentic_pixels_from_handler=GetAuthenticPixelsFromStream;
989 cache_methods.get_authentic_indexes_from_handler=
990 GetAuthenticIndexesFromStream;
991 cache_methods.get_one_virtual_pixel_from_handler=GetOneVirtualPixelFromStream;
992 cache_methods.get_one_authentic_pixel_from_handler=
993 GetOneAuthenticPixelFromStream;
994 cache_methods.destroy_pixel_handler=DestroyPixelStream;
995 SetPixelCacheMethods(read_info->cache,&cache_methods);
996 read_info->stream=stream;
997 image=ReadImage(read_info,exception);
998 read_info=DestroyImageInfo(read_info);
1020MagickPrivate
void ResetStreamAnonymousMemory(
void)
1049MagickExport
void SetStreamInfoClientData(
StreamInfo *stream_info,
1050 const void *client_data)
1053 assert(stream_info->signature == MagickCoreSignature);
1054 stream_info->client_data=client_data;
1081MagickExport
void SetStreamInfoMap(
StreamInfo *stream_info,
const char *map)
1084 assert(stream_info->signature == MagickCoreSignature);
1085 (void) CloneString(&stream_info->map,map);
1113MagickExport
void SetStreamInfoStorageType(
StreamInfo *stream_info,
1114 const StorageType storage_type)
1117 assert(stream_info->signature == MagickCoreSignature);
1118 stream_info->storage_type=storage_type;
1150#if defined(__cplusplus) || defined(c_plusplus)
1154static size_t WriteStreamImage(
const Image *image,
const void *pixels,
1155 const size_t columns)
1174 stream_info=(
StreamInfo *) image->client_data;
1175 switch (stream_info->storage_type)
1177 default: packet_size=
sizeof(char);
break;
1178 case CharPixel: packet_size=
sizeof(char);
break;
1179 case DoublePixel: packet_size=
sizeof(double);
break;
1180 case FloatPixel: packet_size=
sizeof(float);
break;
1181 case IntegerPixel: packet_size=
sizeof(int);
break;
1182 case LongPixel: packet_size=
sizeof(ssize_t);
break;
1183 case QuantumPixel: packet_size=
sizeof(Quantum);
break;
1184 case ShortPixel: packet_size=
sizeof(
unsigned short);
break;
1187 assert(cache_info->signature == MagickCoreSignature);
1188 packet_size*=strlen(stream_info->map);
1189 length=packet_size*cache_info->columns*cache_info->rows;
1190 if (image != stream_info->image)
1198 (void) RelinquishAlignedMemory(stream_info->pixels);
1199 stream_info->pixels=(
unsigned char *) MagickAssumeAligned(
1200 AcquireAlignedMemory(1,length));
1201 if (stream_info->pixels == (
unsigned char *) NULL)
1203 (void) memset(stream_info->pixels,0,length);
1204 stream_info->image=image;
1205 write_info=CloneImageInfo(stream_info->image_info);
1206 (void) SetImageInfo(write_info,1,stream_info->exception);
1207 if (write_info->extract != (
char *) NULL)
1208 (void) ParseAbsoluteGeometry(write_info->extract,
1209 &stream_info->extract_info);
1211 write_info=DestroyImageInfo(write_info);
1213 extract_info=stream_info->extract_info;
1214 if ((extract_info.width == 0) || (extract_info.height == 0))
1219 (void) StreamImagePixels(stream_info,image,stream_info->exception);
1220 count=WriteBlob(stream_info->stream,length,stream_info->pixels);
1222 return(count == 0 ? 0 : columns);
1224 if ((stream_info->y < extract_info.y) ||
1225 (stream_info->y >= (ssize_t) (extract_info.y+extract_info.height)))
1233 (void) StreamImagePixels(stream_info,image,stream_info->exception);
1234 length=packet_size*extract_info.width;
1235 count=WriteBlob(stream_info->stream,length,stream_info->pixels+packet_size*
1238 return(count == 0 ? 0 : columns);
1241#if defined(__cplusplus) || defined(c_plusplus)
1254 assert(image_info != (
const ImageInfo *) NULL);
1255 assert(image_info->signature == MagickCoreSignature);
1257 assert(stream_info->signature == MagickCoreSignature);
1259 if (IsEventLogging() != MagickFalse)
1260 (void) LogMagickEvent(TraceEvent,GetMagickModule(),
"%s",
1261 image_info->filename);
1262 read_info=CloneImageInfo(image_info);
1263 stream_info->image_info=image_info;
1264 stream_info->quantum_info=AcquireQuantumInfo(image_info,(
Image *) NULL);
1265 if (stream_info->quantum_info == (
QuantumInfo *) NULL)
1267 read_info=DestroyImageInfo(read_info);
1268 return((
Image *) NULL);
1270 stream_info->exception=exception;
1271 read_info->client_data=(
void *) stream_info;
1272 image=ReadStream(read_info,&WriteStreamImage,exception);
1273 read_info=DestroyImageInfo(read_info);
1274 stream_info->quantum_info=DestroyQuantumInfo(stream_info->quantum_info);
1275 stream_info->quantum_info=AcquireQuantumInfo(image_info,image);
1276 if (stream_info->quantum_info == (
QuantumInfo *) NULL)
1277 image=DestroyImage(image);
1310static MagickBooleanType StreamImagePixels(
const StreamInfo *stream_info,
1333 assert(stream_info->signature == MagickCoreSignature);
1334 assert(image != (
Image *) NULL);
1335 assert(image->signature == MagickCoreSignature);
1336 if (IsEventLogging() != MagickFalse)
1337 (void) LogMagickEvent(TraceEvent,GetMagickModule(),
"%s",image->filename);
1338 length=strlen(stream_info->map);
1339 quantum_map=(QuantumType *) AcquireQuantumMemory(length,
sizeof(*quantum_map));
1340 if (quantum_map == (QuantumType *) NULL)
1342 (void) ThrowMagickException(exception,GetMagickModule(),
1343 ResourceLimitError,
"MemoryAllocationFailed",
"`%s'",image->filename);
1344 return(MagickFalse);
1346 (void) memset(quantum_map,0,length*
sizeof(*quantum_map));
1347 for (i=0; i < (ssize_t) length; i++)
1349 switch (stream_info->map[i])
1354 quantum_map[i]=AlphaQuantum;
1360 quantum_map[i]=BlueQuantum;
1366 quantum_map[i]=CyanQuantum;
1367 if (image->colorspace == CMYKColorspace)
1369 quantum_map=(QuantumType *) RelinquishMagickMemory(quantum_map);
1370 (void) ThrowMagickException(exception,GetMagickModule(),ImageError,
1371 "ColorSeparatedImageRequired",
"`%s'",stream_info->map);
1372 return(MagickFalse);
1377 quantum_map[i]=GreenQuantum;
1383 quantum_map[i]=IndexQuantum;
1389 quantum_map[i]=BlackQuantum;
1390 if (image->colorspace == CMYKColorspace)
1392 quantum_map=(QuantumType *) RelinquishMagickMemory(quantum_map);
1393 (void) ThrowMagickException(exception,GetMagickModule(),ImageError,
1394 "ColorSeparatedImageRequired",
"`%s'",stream_info->map);
1395 return(MagickFalse);
1400 quantum_map[i]=MagentaQuantum;
1401 if (image->colorspace == CMYKColorspace)
1403 quantum_map=(QuantumType *) RelinquishMagickMemory(quantum_map);
1404 (void) ThrowMagickException(exception,GetMagickModule(),ImageError,
1405 "ColorSeparatedImageRequired",
"`%s'",stream_info->map);
1406 return(MagickFalse);
1411 quantum_map[i]=OpacityQuantum;
1417 quantum_map[i]=UndefinedQuantum;
1423 quantum_map[i]=RedQuantum;
1429 quantum_map[i]=YellowQuantum;
1430 if (image->colorspace == CMYKColorspace)
1432 quantum_map=(QuantumType *) RelinquishMagickMemory(quantum_map);
1433 (void) ThrowMagickException(exception,GetMagickModule(),ImageError,
1434 "ColorSeparatedImageRequired",
"`%s'",stream_info->map);
1435 return(MagickFalse);
1439 quantum_map=(QuantumType *) RelinquishMagickMemory(quantum_map);
1440 (void) ThrowMagickException(exception,GetMagickModule(),OptionError,
1441 "UnrecognizedPixelMap",
"`%s'",stream_info->map);
1442 return(MagickFalse);
1446 quantum_info=stream_info->quantum_info;
1447 switch (stream_info->storage_type)
1454 q=(
unsigned char *) stream_info->pixels;
1455 if (LocaleCompare(stream_info->map,
"BGR") == 0)
1457 p=GetAuthenticPixelQueue(image);
1460 for (x=0; x < (ssize_t) GetImageExtent(image); x++)
1462 *q++=ScaleQuantumToChar(GetPixelBlue(p));
1463 *q++=ScaleQuantumToChar(GetPixelGreen(p));
1464 *q++=ScaleQuantumToChar(GetPixelRed(p));
1469 if (LocaleCompare(stream_info->map,
"BGRA") == 0)
1471 p=GetAuthenticPixelQueue(image);
1474 for (x=0; x < (ssize_t) GetImageExtent(image); x++)
1476 *q++=ScaleQuantumToChar(GetPixelBlue(p));
1477 *q++=ScaleQuantumToChar(GetPixelGreen(p));
1478 *q++=ScaleQuantumToChar(GetPixelRed(p));
1479 *q++=ScaleQuantumToChar((Quantum) (GetPixelAlpha(p)));
1484 if (LocaleCompare(stream_info->map,
"BGRP") == 0)
1486 p=GetAuthenticPixelQueue(image);
1489 for (x=0; x < (ssize_t) GetImageExtent(image); x++)
1491 *q++=ScaleQuantumToChar(GetPixelBlue(p));
1492 *q++=ScaleQuantumToChar(GetPixelGreen(p));
1493 *q++=ScaleQuantumToChar(GetPixelRed(p));
1494 *q++=ScaleQuantumToChar((Quantum) 0);
1499 if (LocaleCompare(stream_info->map,
"I") == 0)
1501 p=GetAuthenticPixelQueue(image);
1504 for (x=0; x < (ssize_t) GetImageExtent(image); x++)
1506 *q++=ScaleQuantumToChar(ClampToQuantum(GetPixelIntensity(image,p)));
1511 if (LocaleCompare(stream_info->map,
"RGB") == 0)
1513 p=GetAuthenticPixelQueue(image);
1516 for (x=0; x < (ssize_t) GetImageExtent(image); x++)
1518 *q++=ScaleQuantumToChar(GetPixelRed(p));
1519 *q++=ScaleQuantumToChar(GetPixelGreen(p));
1520 *q++=ScaleQuantumToChar(GetPixelBlue(p));
1525 if (LocaleCompare(stream_info->map,
"RGBA") == 0)
1527 p=GetAuthenticPixelQueue(image);
1530 for (x=0; x < (ssize_t) GetImageExtent(image); x++)
1532 *q++=ScaleQuantumToChar(GetPixelRed(p));
1533 *q++=ScaleQuantumToChar(GetPixelGreen(p));
1534 *q++=ScaleQuantumToChar(GetPixelBlue(p));
1535 *q++=ScaleQuantumToChar((Quantum) (GetPixelAlpha(p)));
1540 if (LocaleCompare(stream_info->map,
"RGBP") == 0)
1542 p=GetAuthenticPixelQueue(image);
1545 for (x=0; x < (ssize_t) GetImageExtent(image); x++)
1547 *q++=ScaleQuantumToChar(GetPixelRed(p));
1548 *q++=ScaleQuantumToChar(GetPixelGreen(p));
1549 *q++=ScaleQuantumToChar(GetPixelBlue(p));
1550 *q++=ScaleQuantumToChar((Quantum) 0);
1555 p=GetAuthenticPixelQueue(image);
1558 indexes=GetVirtualIndexQueue(image);
1559 for (x=0; x < (ssize_t) GetImageExtent(image); x++)
1561 for (i=0; i < (ssize_t) length; i++)
1564 switch (quantum_map[i])
1569 *q=ScaleQuantumToChar(GetPixelRed(p));
1573 case MagentaQuantum:
1575 *q=ScaleQuantumToChar(GetPixelGreen(p));
1581 *q=ScaleQuantumToChar(GetPixelBlue(p));
1586 *q=ScaleQuantumToChar(GetPixelAlpha(p));
1589 case OpacityQuantum:
1591 *q=ScaleQuantumToChar(GetPixelOpacity(p));
1596 if (image->colorspace == CMYKColorspace)
1597 *q=ScaleQuantumToChar(GetPixelIndex(indexes+x));
1602 *q=ScaleQuantumToChar(ClampToQuantum(GetPixelIntensity(image,p)));
1619 q=(
double *) stream_info->pixels;
1620 if (LocaleCompare(stream_info->map,
"BGR") == 0)
1622 p=GetAuthenticPixelQueue(image);
1625 for (x=0; x < (ssize_t) GetImageExtent(image); x++)
1627 *q++=(double) ((QuantumScale*(
double) GetPixelBlue(p))*
1628 quantum_info->scale+quantum_info->minimum);
1629 *q++=(double) ((QuantumScale*(
double) GetPixelGreen(p))*
1630 quantum_info->scale+quantum_info->minimum);
1631 *q++=(double) ((QuantumScale*(
double) GetPixelRed(p))*
1632 quantum_info->scale+quantum_info->minimum);
1637 if (LocaleCompare(stream_info->map,
"BGRA") == 0)
1639 p=GetAuthenticPixelQueue(image);
1642 for (x=0; x < (ssize_t) GetImageExtent(image); x++)
1644 *q++=(double) ((QuantumScale*(
double) GetPixelBlue(p))*
1645 quantum_info->scale+quantum_info->minimum);
1646 *q++=(double) ((QuantumScale*(
double) GetPixelGreen(p))*
1647 quantum_info->scale+quantum_info->minimum);
1648 *q++=(double) ((QuantumScale*(
double) GetPixelRed(p))*
1649 quantum_info->scale+quantum_info->minimum);
1650 *q++=(double) ((QuantumScale*(
double) GetPixelAlpha(p))*
1651 quantum_info->scale+quantum_info->minimum);
1656 if (LocaleCompare(stream_info->map,
"BGRP") == 0)
1658 p=GetAuthenticPixelQueue(image);
1661 for (x=0; x < (ssize_t) GetImageExtent(image); x++)
1663 *q++=(double) ((QuantumScale*(
double) GetPixelBlue(p))*
1664 quantum_info->scale+quantum_info->minimum);
1665 *q++=(double) ((QuantumScale*(
double) GetPixelGreen(p))*
1666 quantum_info->scale+quantum_info->minimum);
1667 *q++=(double) ((QuantumScale*(
double) GetPixelRed(p))*
1668 quantum_info->scale+quantum_info->minimum);
1674 if (LocaleCompare(stream_info->map,
"I") == 0)
1676 p=GetAuthenticPixelQueue(image);
1679 for (x=0; x < (ssize_t) GetImageExtent(image); x++)
1681 *q++=(double) ((QuantumScale*(
double) GetPixelIntensity(image,p))*
1682 quantum_info->scale+quantum_info->minimum);
1687 if (LocaleCompare(stream_info->map,
"RGB") == 0)
1689 p=GetAuthenticPixelQueue(image);
1692 for (x=0; x < (ssize_t) GetImageExtent(image); x++)
1694 *q++=(double) ((QuantumScale*(
double) GetPixelRed(p))*
1695 quantum_info->scale+quantum_info->minimum);
1696 *q++=(double) ((QuantumScale*(
double) GetPixelGreen(p))*
1697 quantum_info->scale+quantum_info->minimum);
1698 *q++=(double) ((QuantumScale*(
double) GetPixelBlue(p))*
1699 quantum_info->scale+quantum_info->minimum);
1704 if (LocaleCompare(stream_info->map,
"RGBA") == 0)
1706 p=GetAuthenticPixelQueue(image);
1709 for (x=0; x < (ssize_t) GetImageExtent(image); x++)
1711 *q++=(double) ((QuantumScale*(
double) GetPixelRed(p))*
1712 quantum_info->scale+quantum_info->minimum);
1713 *q++=(double) ((QuantumScale*(
double) GetPixelGreen(p))*
1714 quantum_info->scale+quantum_info->minimum);
1715 *q++=(double) ((QuantumScale*(
double) GetPixelBlue(p))*
1716 quantum_info->scale+quantum_info->minimum);
1717 *q++=(double) ((QuantumScale*(
double) GetPixelAlpha(p))*
1718 quantum_info->scale+quantum_info->minimum);
1723 if (LocaleCompare(stream_info->map,
"RGBP") == 0)
1725 p=GetAuthenticPixelQueue(image);
1728 for (x=0; x < (ssize_t) GetImageExtent(image); x++)
1730 *q++=(double) ((QuantumScale*(
double) GetPixelRed(p))*
1731 quantum_info->scale+quantum_info->minimum);
1732 *q++=(double) ((QuantumScale*(
double) GetPixelGreen(p))*
1733 quantum_info->scale+quantum_info->minimum);
1734 *q++=(double) ((QuantumScale*(
double) GetPixelBlue(p))*
1735 quantum_info->scale+quantum_info->minimum);
1741 p=GetAuthenticPixelQueue(image);
1744 indexes=GetVirtualIndexQueue(image);
1745 for (x=0; x < (ssize_t) GetImageExtent(image); x++)
1747 for (i=0; i < (ssize_t) length; i++)
1750 switch (quantum_map[i])
1755 *q=(double) ((QuantumScale*(
double) GetPixelRed(p))*
1756 quantum_info->scale+quantum_info->minimum);
1760 case MagentaQuantum:
1762 *q=(double) ((QuantumScale*(
double) GetPixelGreen(p))*
1763 quantum_info->scale+quantum_info->minimum);
1769 *q=(double) ((QuantumScale*(
double) GetPixelBlue(p))*
1770 quantum_info->scale+quantum_info->minimum);
1775 *q=(double) ((QuantumScale*(
double) GetPixelAlpha(p))*
1776 quantum_info->scale+quantum_info->minimum);
1779 case OpacityQuantum:
1781 *q=(double) ((QuantumScale*(
double) GetPixelOpacity(p))*
1782 quantum_info->scale+quantum_info->minimum);
1787 if (image->colorspace == CMYKColorspace)
1788 *q=(double) ((QuantumScale*(
double) GetPixelIndex(indexes+x))*
1789 quantum_info->scale+quantum_info->minimum);
1794 *q=(double) ((QuantumScale*(
double) GetPixelIntensity(image,p))*
1795 quantum_info->scale+quantum_info->minimum);
1812 q=(
float *) stream_info->pixels;
1813 if (LocaleCompare(stream_info->map,
"BGR") == 0)
1815 p=GetAuthenticPixelQueue(image);
1818 for (x=0; x < (ssize_t) GetImageExtent(image); x++)
1820 *q++=(float) ((QuantumScale*(
double) GetPixelBlue(p))*
1821 quantum_info->scale+quantum_info->minimum);
1822 *q++=(float) ((QuantumScale*(
double) GetPixelGreen(p))*
1823 quantum_info->scale+quantum_info->minimum);
1824 *q++=(float) ((QuantumScale*(
double) GetPixelRed(p))*
1825 quantum_info->scale+quantum_info->minimum);
1830 if (LocaleCompare(stream_info->map,
"BGRA") == 0)
1832 p=GetAuthenticPixelQueue(image);
1835 for (x=0; x < (ssize_t) GetImageExtent(image); x++)
1837 *q++=(float) ((QuantumScale*(
double) GetPixelBlue(p))*
1838 quantum_info->scale+quantum_info->minimum);
1839 *q++=(float) ((QuantumScale*(
double) GetPixelGreen(p))*
1840 quantum_info->scale+quantum_info->minimum);
1841 *q++=(float) ((QuantumScale*(
double) GetPixelRed(p))*
1842 quantum_info->scale+quantum_info->minimum);
1843 *q++=(float) ((QuantumScale*(
double) GetPixelAlpha(p))*
1844 quantum_info->scale+quantum_info->minimum);
1849 if (LocaleCompare(stream_info->map,
"BGRP") == 0)
1851 p=GetAuthenticPixelQueue(image);
1854 for (x=0; x < (ssize_t) GetImageExtent(image); x++)
1856 *q++=(float) ((QuantumScale*(
double) GetPixelBlue(p))*
1857 quantum_info->scale+quantum_info->minimum);
1858 *q++=(float) ((QuantumScale*(
double) GetPixelGreen(p))*
1859 quantum_info->scale+quantum_info->minimum);
1860 *q++=(float) ((QuantumScale*(
double) GetPixelRed(p))*
1861 quantum_info->scale+quantum_info->minimum);
1867 if (LocaleCompare(stream_info->map,
"I") == 0)
1869 p=GetAuthenticPixelQueue(image);
1872 for (x=0; x < (ssize_t) GetImageExtent(image); x++)
1874 *q++=(float) ((QuantumScale*(
double) GetPixelIntensity(image,p))*
1875 quantum_info->scale+quantum_info->minimum);
1880 if (LocaleCompare(stream_info->map,
"RGB") == 0)
1882 p=GetAuthenticPixelQueue(image);
1885 for (x=0; x < (ssize_t) GetImageExtent(image); x++)
1887 *q++=(float) ((QuantumScale*(
double) GetPixelRed(p))*
1888 quantum_info->scale+quantum_info->minimum);
1889 *q++=(float) ((QuantumScale*(
double) GetPixelGreen(p))*
1890 quantum_info->scale+quantum_info->minimum);
1891 *q++=(float) ((QuantumScale*(
double) GetPixelBlue(p))*
1892 quantum_info->scale+quantum_info->minimum);
1897 if (LocaleCompare(stream_info->map,
"RGBA") == 0)
1899 p=GetAuthenticPixelQueue(image);
1902 for (x=0; x < (ssize_t) GetImageExtent(image); x++)
1904 *q++=(float) ((QuantumScale*(
double) GetPixelRed(p))*
1905 quantum_info->scale+quantum_info->minimum);
1906 *q++=(float) ((QuantumScale*(
double) GetPixelGreen(p))*
1907 quantum_info->scale+quantum_info->minimum);
1908 *q++=(float) ((QuantumScale*(
double) GetPixelBlue(p))*
1909 quantum_info->scale+quantum_info->minimum);
1910 *q++=(float) ((QuantumScale*(
double) GetPixelAlpha(p))*
1911 quantum_info->scale+quantum_info->minimum);
1916 if (LocaleCompare(stream_info->map,
"RGBP") == 0)
1918 p=GetAuthenticPixelQueue(image);
1921 for (x=0; x < (ssize_t) GetImageExtent(image); x++)
1923 *q++=(float) ((QuantumScale*(
double) GetPixelRed(p))*
1924 quantum_info->scale+quantum_info->minimum);
1925 *q++=(float) ((QuantumScale*(
double) GetPixelGreen(p))*
1926 quantum_info->scale+quantum_info->minimum);
1927 *q++=(float) ((QuantumScale*(
double) GetPixelBlue(p))*
1928 quantum_info->scale+quantum_info->minimum);
1934 p=GetAuthenticPixelQueue(image);
1937 indexes=GetVirtualIndexQueue(image);
1938 for (x=0; x < (ssize_t) GetImageExtent(image); x++)
1940 for (i=0; i < (ssize_t) length; i++)
1943 switch (quantum_map[i])
1948 *q=(float) ((QuantumScale*(
double) GetPixelRed(p))*
1949 quantum_info->scale+quantum_info->minimum);
1953 case MagentaQuantum:
1955 *q=(float) ((QuantumScale*(
double) GetPixelGreen(p))*
1956 quantum_info->scale+quantum_info->minimum);
1962 *q=(float) ((QuantumScale*(
double) GetPixelBlue(p))*
1963 quantum_info->scale+quantum_info->minimum);
1968 *q=(float) ((QuantumScale*(
double) GetPixelAlpha(p))*
1969 quantum_info->scale+quantum_info->minimum);
1972 case OpacityQuantum:
1974 *q=(float) ((QuantumScale*(
double) GetPixelOpacity(p))*
1975 quantum_info->scale+quantum_info->minimum);
1980 if (image->colorspace == CMYKColorspace)
1981 *q=(float) ((QuantumScale*(
double) GetPixelIndex(indexes+x))*
1982 quantum_info->scale+quantum_info->minimum);
1987 *q=(float) ((QuantumScale*(
double) GetPixelIntensity(image,p))*
1988 quantum_info->scale+quantum_info->minimum);
2005 q=(
unsigned int *) stream_info->pixels;
2006 if (LocaleCompare(stream_info->map,
"BGR") == 0)
2008 p=GetAuthenticPixelQueue(image);
2011 for (x=0; x < (ssize_t) GetImageExtent(image); x++)
2013 *q++=(
unsigned int) ScaleQuantumToLong(GetPixelBlue(p));
2014 *q++=(
unsigned int) ScaleQuantumToLong(GetPixelGreen(p));
2015 *q++=(
unsigned int) ScaleQuantumToLong(GetPixelRed(p));
2020 if (LocaleCompare(stream_info->map,
"BGRA") == 0)
2022 p=GetAuthenticPixelQueue(image);
2025 for (x=0; x < (ssize_t) GetImageExtent(image); x++)
2027 *q++=(
unsigned int) ScaleQuantumToLong(GetPixelBlue(p));
2028 *q++=(
unsigned int) ScaleQuantumToLong(GetPixelGreen(p));
2029 *q++=(
unsigned int) ScaleQuantumToLong(GetPixelRed(p));
2030 *q++=(
unsigned int) ScaleQuantumToLong(GetPixelAlpha(p));
2035 if (LocaleCompare(stream_info->map,
"BGRP") == 0)
2037 p=GetAuthenticPixelQueue(image);
2040 for (x=0; x < (ssize_t) GetImageExtent(image); x++)
2042 *q++=(
unsigned int) ScaleQuantumToLong(GetPixelBlue(p));
2043 *q++=(
unsigned int) ScaleQuantumToLong(GetPixelGreen(p));
2044 *q++=(
unsigned int) ScaleQuantumToLong(GetPixelRed(p));
2050 if (LocaleCompare(stream_info->map,
"I") == 0)
2052 p=GetAuthenticPixelQueue(image);
2055 for (x=0; x < (ssize_t) GetImageExtent(image); x++)
2057 *q++=(
unsigned int) ScaleQuantumToLong(ClampToQuantum(
2058 GetPixelIntensity(image,p)));
2063 if (LocaleCompare(stream_info->map,
"RGB") == 0)
2065 p=GetAuthenticPixelQueue(image);
2068 for (x=0; x < (ssize_t) GetImageExtent(image); x++)
2070 *q++=(
unsigned int) ScaleQuantumToLong(GetPixelRed(p));
2071 *q++=(
unsigned int) ScaleQuantumToLong(GetPixelGreen(p));
2072 *q++=(
unsigned int) ScaleQuantumToLong(GetPixelBlue(p));
2077 if (LocaleCompare(stream_info->map,
"RGBA") == 0)
2079 p=GetAuthenticPixelQueue(image);
2082 for (x=0; x < (ssize_t) GetImageExtent(image); x++)
2084 *q++=(
unsigned int) ScaleQuantumToLong(GetPixelRed(p));
2085 *q++=(
unsigned int) ScaleQuantumToLong(GetPixelGreen(p));
2086 *q++=(
unsigned int) ScaleQuantumToLong(GetPixelBlue(p));
2087 *q++=(
unsigned int) ScaleQuantumToLong((Quantum)
2088 (GetPixelAlpha(p)));
2093 if (LocaleCompare(stream_info->map,
"RGBP") == 0)
2095 p=GetAuthenticPixelQueue(image);
2098 for (x=0; x < (ssize_t) GetImageExtent(image); x++)
2100 *q++=(
unsigned int) ScaleQuantumToLong(GetPixelRed(p));
2101 *q++=(
unsigned int) ScaleQuantumToLong(GetPixelGreen(p));
2102 *q++=(
unsigned int) ScaleQuantumToLong(GetPixelBlue(p));
2108 p=GetAuthenticPixelQueue(image);
2111 indexes=GetVirtualIndexQueue(image);
2112 for (x=0; x < (ssize_t) GetImageExtent(image); x++)
2114 for (i=0; i < (ssize_t) length; i++)
2117 switch (quantum_map[i])
2122 *q=(
unsigned int) ScaleQuantumToLong(GetPixelRed(p));
2126 case MagentaQuantum:
2128 *q=(
unsigned int) ScaleQuantumToLong(GetPixelGreen(p));
2134 *q=(
unsigned int) ScaleQuantumToLong(GetPixelBlue(p));
2139 *q=(
unsigned int) ScaleQuantumToLong(GetPixelAlpha(p));
2142 case OpacityQuantum:
2144 *q=(
unsigned int) ScaleQuantumToLong(GetPixelOpacity(p));
2149 if (image->colorspace == CMYKColorspace)
2150 *q=(
unsigned int) ScaleQuantumToLong(GetPixelIndex(
2156 *q=(
unsigned int) ScaleQuantumToLong(ClampToQuantum(
2157 GetPixelIntensity(image,p)));
2174 q=(
size_t *) stream_info->pixels;
2175 if (LocaleCompare(stream_info->map,
"BGR") == 0)
2177 p=GetAuthenticPixelQueue(image);
2180 for (x=0; x < (ssize_t) GetImageExtent(image); x++)
2182 *q++=ScaleQuantumToLong(GetPixelBlue(p));
2183 *q++=ScaleQuantumToLong(GetPixelGreen(p));
2184 *q++=ScaleQuantumToLong(GetPixelRed(p));
2189 if (LocaleCompare(stream_info->map,
"BGRA") == 0)
2191 p=GetAuthenticPixelQueue(image);
2194 for (x=0; x < (ssize_t) GetImageExtent(image); x++)
2196 *q++=ScaleQuantumToLong(GetPixelBlue(p));
2197 *q++=ScaleQuantumToLong(GetPixelGreen(p));
2198 *q++=ScaleQuantumToLong(GetPixelRed(p));
2199 *q++=ScaleQuantumToLong((Quantum) (GetPixelAlpha(p)));
2204 if (LocaleCompare(stream_info->map,
"BGRP") == 0)
2206 p=GetAuthenticPixelQueue(image);
2209 for (x=0; x < (ssize_t) GetImageExtent(image); x++)
2211 *q++=ScaleQuantumToLong(GetPixelBlue(p));
2212 *q++=ScaleQuantumToLong(GetPixelGreen(p));
2213 *q++=ScaleQuantumToLong(GetPixelRed(p));
2219 if (LocaleCompare(stream_info->map,
"I") == 0)
2221 p=GetAuthenticPixelQueue(image);
2224 for (x=0; x < (ssize_t) GetImageExtent(image); x++)
2226 *q++=ScaleQuantumToLong(ClampToQuantum(GetPixelIntensity(image,p)));
2231 if (LocaleCompare(stream_info->map,
"RGB") == 0)
2233 p=GetAuthenticPixelQueue(image);
2236 for (x=0; x < (ssize_t) GetImageExtent(image); x++)
2238 *q++=ScaleQuantumToLong(GetPixelRed(p));
2239 *q++=ScaleQuantumToLong(GetPixelGreen(p));
2240 *q++=ScaleQuantumToLong(GetPixelBlue(p));
2245 if (LocaleCompare(stream_info->map,
"RGBA") == 0)
2247 p=GetAuthenticPixelQueue(image);
2250 for (x=0; x < (ssize_t) GetImageExtent(image); x++)
2252 *q++=ScaleQuantumToLong(GetPixelRed(p));
2253 *q++=ScaleQuantumToLong(GetPixelGreen(p));
2254 *q++=ScaleQuantumToLong(GetPixelBlue(p));
2255 *q++=ScaleQuantumToLong((Quantum) (GetPixelAlpha(p)));
2260 if (LocaleCompare(stream_info->map,
"RGBP") == 0)
2262 p=GetAuthenticPixelQueue(image);
2265 for (x=0; x < (ssize_t) GetImageExtent(image); x++)
2267 *q++=ScaleQuantumToLong(GetPixelRed(p));
2268 *q++=ScaleQuantumToLong(GetPixelGreen(p));
2269 *q++=ScaleQuantumToLong(GetPixelBlue(p));
2275 p=GetAuthenticPixelQueue(image);
2278 indexes=GetVirtualIndexQueue(image);
2279 for (x=0; x < (ssize_t) GetImageExtent(image); x++)
2281 for (i=0; i < (ssize_t) length; i++)
2284 switch (quantum_map[i])
2289 *q=ScaleQuantumToLong(GetPixelRed(p));
2293 case MagentaQuantum:
2295 *q=ScaleQuantumToLong(GetPixelGreen(p));
2301 *q=ScaleQuantumToLong(GetPixelBlue(p));
2306 *q=ScaleQuantumToLong(GetPixelAlpha(p));
2309 case OpacityQuantum:
2311 *q=ScaleQuantumToLong(GetPixelOpacity(p));
2316 if (image->colorspace == CMYKColorspace)
2317 *q=ScaleQuantumToLong(GetPixelIndex(indexes+x));
2322 *q=ScaleQuantumToLong(ClampToQuantum(GetPixelIntensity(image,p)));
2339 q=(Quantum *) stream_info->pixels;
2340 if (LocaleCompare(stream_info->map,
"BGR") == 0)
2342 p=GetAuthenticPixelQueue(image);
2345 for (x=0; x < (ssize_t) GetImageExtent(image); x++)
2347 *q++=GetPixelBlue(p);
2348 *q++=GetPixelGreen(p);
2349 *q++=GetPixelRed(p);
2354 if (LocaleCompare(stream_info->map,
"BGRA") == 0)
2356 p=GetAuthenticPixelQueue(image);
2359 for (x=0; x < (ssize_t) GetImageExtent(image); x++)
2361 *q++=GetPixelBlue(p);
2362 *q++=GetPixelGreen(p);
2363 *q++=GetPixelRed(p);
2364 *q++=(Quantum) (GetPixelAlpha(p));
2369 if (LocaleCompare(stream_info->map,
"BGRP") == 0)
2371 p=GetAuthenticPixelQueue(image);
2374 for (x=0; x < (ssize_t) GetImageExtent(image); x++)
2376 *q++=GetPixelBlue(p);
2377 *q++=GetPixelGreen(p);
2378 *q++=GetPixelRed(p);
2384 if (LocaleCompare(stream_info->map,
"I") == 0)
2386 p=GetAuthenticPixelQueue(image);
2389 for (x=0; x < (ssize_t) GetImageExtent(image); x++)
2391 *q++=ClampToQuantum(GetPixelIntensity(image,p));
2396 if (LocaleCompare(stream_info->map,
"RGB") == 0)
2398 p=GetAuthenticPixelQueue(image);
2401 for (x=0; x < (ssize_t) GetImageExtent(image); x++)
2403 *q++=GetPixelRed(p);
2404 *q++=GetPixelGreen(p);
2405 *q++=GetPixelBlue(p);
2410 if (LocaleCompare(stream_info->map,
"RGBA") == 0)
2412 p=GetAuthenticPixelQueue(image);
2415 for (x=0; x < (ssize_t) GetImageExtent(image); x++)
2417 *q++=GetPixelRed(p);
2418 *q++=GetPixelGreen(p);
2419 *q++=GetPixelBlue(p);
2420 *q++=(Quantum) (GetPixelAlpha(p));
2425 if (LocaleCompare(stream_info->map,
"RGBP") == 0)
2427 p=GetAuthenticPixelQueue(image);
2430 for (x=0; x < (ssize_t) GetImageExtent(image); x++)
2432 *q++=GetPixelRed(p);
2433 *q++=GetPixelGreen(p);
2434 *q++=GetPixelBlue(p);
2440 p=GetAuthenticPixelQueue(image);
2443 indexes=GetVirtualIndexQueue(image);
2444 for (x=0; x < (ssize_t) GetImageExtent(image); x++)
2446 for (i=0; i < (ssize_t) length; i++)
2449 switch (quantum_map[i])
2458 case MagentaQuantum:
2460 *q=GetPixelGreen(p);
2471 *q=GetPixelAlpha(p);
2474 case OpacityQuantum:
2476 *q=GetPixelOpacity(p);
2481 if (image->colorspace == CMYKColorspace)
2482 *q=GetPixelIndex(indexes+x);
2487 *q=ClampToQuantum(GetPixelIntensity(image,p));
2504 q=(
unsigned short *) stream_info->pixels;
2505 if (LocaleCompare(stream_info->map,
"BGR") == 0)
2507 p=GetAuthenticPixelQueue(image);
2510 for (x=0; x < (ssize_t) GetImageExtent(image); x++)
2512 *q++=ScaleQuantumToShort(GetPixelBlue(p));
2513 *q++=ScaleQuantumToShort(GetPixelGreen(p));
2514 *q++=ScaleQuantumToShort(GetPixelRed(p));
2519 if (LocaleCompare(stream_info->map,
"BGRA") == 0)
2521 p=GetAuthenticPixelQueue(image);
2524 for (x=0; x < (ssize_t) GetImageExtent(image); x++)
2526 *q++=ScaleQuantumToShort(GetPixelBlue(p));
2527 *q++=ScaleQuantumToShort(GetPixelGreen(p));
2528 *q++=ScaleQuantumToShort(GetPixelRed(p));
2529 *q++=ScaleQuantumToShort((Quantum) (GetPixelAlpha(p)));
2534 if (LocaleCompare(stream_info->map,
"BGRP") == 0)
2536 p=GetAuthenticPixelQueue(image);
2539 for (x=0; x < (ssize_t) GetImageExtent(image); x++)
2541 *q++=ScaleQuantumToShort(GetPixelBlue(p));
2542 *q++=ScaleQuantumToShort(GetPixelGreen(p));
2543 *q++=ScaleQuantumToShort(GetPixelRed(p));
2549 if (LocaleCompare(stream_info->map,
"I") == 0)
2551 p=GetAuthenticPixelQueue(image);
2554 for (x=0; x < (ssize_t) GetImageExtent(image); x++)
2556 *q++=ScaleQuantumToShort(ClampToQuantum(GetPixelIntensity(image,
2562 if (LocaleCompare(stream_info->map,
"RGB") == 0)
2564 p=GetAuthenticPixelQueue(image);
2567 for (x=0; x < (ssize_t) GetImageExtent(image); x++)
2569 *q++=ScaleQuantumToShort(GetPixelRed(p));
2570 *q++=ScaleQuantumToShort(GetPixelGreen(p));
2571 *q++=ScaleQuantumToShort(GetPixelBlue(p));
2576 if (LocaleCompare(stream_info->map,
"RGBA") == 0)
2578 p=GetAuthenticPixelQueue(image);
2581 for (x=0; x < (ssize_t) GetImageExtent(image); x++)
2583 *q++=ScaleQuantumToShort(GetPixelRed(p));
2584 *q++=ScaleQuantumToShort(GetPixelGreen(p));
2585 *q++=ScaleQuantumToShort(GetPixelBlue(p));
2586 *q++=ScaleQuantumToShort((Quantum) (GetPixelAlpha(p)));
2591 if (LocaleCompare(stream_info->map,
"RGBP") == 0)
2593 p=GetAuthenticPixelQueue(image);
2596 for (x=0; x < (ssize_t) GetImageExtent(image); x++)
2598 *q++=ScaleQuantumToShort(GetPixelRed(p));
2599 *q++=ScaleQuantumToShort(GetPixelGreen(p));
2600 *q++=ScaleQuantumToShort(GetPixelBlue(p));
2606 p=GetAuthenticPixelQueue(image);
2609 indexes=GetVirtualIndexQueue(image);
2610 for (x=0; x < (ssize_t) GetImageExtent(image); x++)
2612 for (i=0; i < (ssize_t) length; i++)
2615 switch (quantum_map[i])
2620 *q=ScaleQuantumToShort(GetPixelRed(p));
2624 case MagentaQuantum:
2626 *q=ScaleQuantumToShort(GetPixelGreen(p));
2632 *q=ScaleQuantumToShort(GetPixelBlue(p));
2637 *q=ScaleQuantumToShort(GetPixelAlpha(p));
2640 case OpacityQuantum:
2642 *q=ScaleQuantumToShort(GetPixelOpacity(p));
2647 if (image->colorspace == CMYKColorspace)
2648 *q=ScaleQuantumToShort(GetPixelIndex(indexes+x));
2653 *q=ScaleQuantumToShort(ClampToQuantum(GetPixelIntensity(image,
2668 quantum_map=(QuantumType *) RelinquishMagickMemory(quantum_map);
2669 (void) ThrowMagickException(exception,GetMagickModule(),OptionError,
2670 "UnrecognizedPixelMap",
"`%s'",stream_info->map);
2674 quantum_map=(QuantumType *) RelinquishMagickMemory(quantum_map);
2704static MagickBooleanType SyncAuthenticPixelsStream(
Image *image,
2716 assert(image != (
Image *) NULL);
2717 assert(image->signature == MagickCoreSignature);
2718 if (IsEventLogging() != MagickFalse)
2719 (void) LogMagickEvent(TraceEvent,GetMagickModule(),
"%s",image->filename);
2721 assert(cache_info->signature == MagickCoreSignature);
2722 stream_handler=GetBlobStreamHandler(image);
2723 if (stream_handler == (StreamHandler) NULL)
2725 (void) ThrowMagickException(exception,GetMagickModule(),StreamError,
2726 "NoStreamHandlerIsDefined",
"`%s'",image->filename);
2727 return(MagickFalse);
2729 length=stream_handler(image,cache_info->pixels,(
size_t) cache_info->columns);
2730 return(length == cache_info->columns ? MagickTrue : MagickFalse);
2759MagickExport MagickBooleanType WriteStream(
const ImageInfo *image_info,
2760 Image *image,StreamHandler stream)
2768 assert(image_info != (
ImageInfo *) NULL);
2769 assert(image_info->signature == MagickCoreSignature);
2770 assert(image != (
Image *) NULL);
2771 assert(image->signature == MagickCoreSignature);
2772 if (IsEventLogging() != MagickFalse)
2773 (void) LogMagickEvent(TraceEvent,GetMagickModule(),
"%s",
2774 image_info->filename);
2775 write_info=CloneImageInfo(image_info);
2776 *write_info->magick=
'\0';
2777 write_info->stream=stream;
2778 status=WriteImage(write_info,image);
2779 write_info=DestroyImageInfo(write_info);