422
415
(void) ReadBlobString(image,text);
423
416
if (LocaleNCompare((char *) text,MagickID,strlen(MagickID)) != 0)
424
417
return(ReadTEXTImage(image_info,image,text,exception));
419
count=(ssize_t) sscanf(text+32,"%lu,%lu,%lu,%s",&image->columns,
420
&image->rows,&max_value,colorspace);
422
ThrowReaderException(CorruptImageError,"ImproperImageHeader");
423
for (depth=1; (GetQuantumRange(depth)+1) < max_value; depth++) ;
425
LocaleLower(colorspace);
426
i=(long) strlen(colorspace)-1;
427
image->matte=MagickFalse;
428
if ((i > 0) && (colorspace[i] == 'a'))
431
image->matte=MagickTrue;
433
type=ParseMagickOption(MagickColorspaceOptions,MagickFalse,colorspace);
435
ThrowReaderException(CorruptImageError,"ImproperImageHeader");
436
image->colorspace=(ColorspaceType) type;
437
(void) ResetMagickMemory(&pixel,0,sizeof(pixel));
438
(void) SetImageBackgroundColor(image);
439
range=GetQuantumRange(image->depth);
440
while (ReadBlobString(image,text) != (char *) NULL)
428
count=(ssize_t) sscanf(text+32,"%lu,%lu,%lu,%s",&width,&height,&max_value,
431
ThrowReaderException(CorruptImageError,"ImproperImageHeader");
432
image->columns=width;
434
for (depth=1; (GetQuantumRange(depth)+1) < max_value; depth++) ;
436
LocaleLower(colorspace);
437
i=(ssize_t) strlen(colorspace)-1;
438
image->matte=MagickFalse;
439
if ((i > 0) && (colorspace[i] == 'a'))
442
image->matte=MagickTrue;
444
type=ParseMagickOption(MagickColorspaceOptions,MagickFalse,colorspace);
446
ThrowReaderException(CorruptImageError,"ImproperImageHeader");
447
image->colorspace=(ColorspaceType) type;
448
(void) ResetMagickMemory(&pixel,0,sizeof(pixel));
449
(void) SetImageBackgroundColor(image);
450
range=GetQuantumRange(image->depth);
451
for (y=0; y < (ssize_t) image->rows; y++)
453
for (x=0; x < (ssize_t) image->columns; x++)
455
if (ReadBlobString(image,text) == (char *) NULL)
457
if (image->colorspace == CMYKColorspace)
459
if (image->matte != MagickFalse)
460
count=(ssize_t) sscanf(text,"%ld,%ld: (%u,%u,%u,%u,%u",&x_offset,
461
&y_offset,&pixel.red,&pixel.green,&pixel.blue,&pixel.index,
464
count=(ssize_t) sscanf(text,"%ld,%ld: (%u,%u,%u,%u",&x_offset,
465
&y_offset,&pixel.red,&pixel.green,&pixel.blue,&pixel.index);
442
if (image->colorspace == CMYKColorspace)
444
if (image->matte != MagickFalse)
445
count=(ssize_t) sscanf(text,"%ld,%ld: (%lu,%lu,%lu,%lu,%lu",&x,&y,
446
&pixel.red,&pixel.green,&pixel.blue,&pixel.index,&pixel.opacity);
468
if (image->matte != MagickFalse)
469
count=(ssize_t) sscanf(text,"%ld,%ld: (%u,%u,%u,%u",&x_offset,
470
&y_offset,&pixel.red,&pixel.green,&pixel.blue,&pixel.opacity);
472
count=(ssize_t) sscanf(text,"%ld,%ld: (%u,%u,%u",&x_offset,
473
&y_offset,&pixel.red,&pixel.green,&pixel.blue);
476
q=GetAuthenticPixels(image,x_offset,y_offset,1,1,exception);
477
if (q == (PixelPacket *) NULL)
479
q->red=ScaleAnyToQuantum(pixel.red,range);
480
q->green=ScaleAnyToQuantum(pixel.green,range);
481
q->blue=ScaleAnyToQuantum(pixel.blue,range);
482
if (image->colorspace == CMYKColorspace)
484
indexes=GetAuthenticIndexQueue(image);
485
*indexes=ScaleAnyToQuantum(pixel.index,range);
487
if (image->matte != MagickFalse)
488
q->opacity=(Quantum) (QuantumRange-ScaleAnyToQuantum(pixel.opacity,
490
if (SyncAuthenticPixels(image,exception) == MagickFalse)
448
count=(ssize_t) sscanf(text,"%ld,%ld: (%lu,%lu,%lu,%lu",&x,&y,
449
&pixel.red,&pixel.green,&pixel.blue,&pixel.index);
494
(void) ReadBlobString(image,text);
495
if (LocaleNCompare((char *) text,MagickID,strlen(MagickID)) == 0)
452
if (image->matte != MagickFalse)
453
count=(ssize_t) sscanf(text,"%ld,%ld: (%lu,%lu,%lu,%lu",&x,&y,
454
&pixel.red,&pixel.green,&pixel.blue,&pixel.opacity);
456
count=(ssize_t) sscanf(text,"%ld,%ld: (%lu,%lu,%lu",&x,&y,
457
&pixel.red,&pixel.green,&pixel.blue);
460
q=GetAuthenticPixels(image,x,y,1,1,exception);
461
if (q == (PixelPacket *) NULL)
463
q->red=ScaleAnyToQuantum(pixel.red,range);
464
q->green=ScaleAnyToQuantum(pixel.green,range);
465
q->blue=ScaleAnyToQuantum(pixel.blue,range);
466
if (image->colorspace == CMYKColorspace)
498
Allocate next image structure.
500
AcquireNextImage(image_info,image);
501
if (GetNextImageInList(image) == (Image *) NULL)
503
image=DestroyImageList(image);
504
return((Image *) NULL);
506
image=SyncNextImageInList(image);
507
status=SetImageProgress(image,LoadImagesTag,TellBlob(image),
509
if (status == MagickFalse)
468
indexes=GetAuthenticIndexQueue(image);
469
*indexes=ScaleAnyToQuantum(pixel.index,range);
512
} while (LocaleNCompare((char *) text,MagickID,strlen(MagickID)) == 0);
513
(void) CloseBlob(image);
471
if (image->matte != MagickFalse)
472
q->opacity=(Quantum) (QuantumRange-ScaleAnyToQuantum(pixel.opacity,
474
if (SyncAuthenticPixels(image,exception) == MagickFalse)
514
477
return(GetFirstImageInList(image));
649
611
status=OpenBlob(image_info,image,WriteBlobMode,&image->exception);
650
612
if (status == MagickFalse)
614
(void) CopyMagickString(colorspace,MagickOptionToMnemonic(
615
MagickColorspaceOptions,(long) image->colorspace),MaxTextExtent);
616
LocaleLower(colorspace);
617
image->depth=GetImageQuantumDepth(image,MagickTrue);
618
if (image->matte != MagickFalse)
619
(void) ConcatenateMagickString(colorspace,"a",MaxTextExtent);
620
(void) FormatMagickString(buffer,MaxTextExtent,
621
"# ImageMagick pixel enumeration: %lu,%lu,%lu,%s\n",image->columns,
622
image->rows,(unsigned long) GetQuantumRange(image->depth),colorspace);
623
(void) WriteBlobString(image,buffer);
624
GetMagickPixelPacket(image,&pixel);
625
for (y=0; y < (long) image->rows; y++)
655
(void) CopyMagickString(colorspace,MagickOptionToMnemonic(
656
MagickColorspaceOptions,(ssize_t) image->colorspace),MaxTextExtent);
657
LocaleLower(colorspace);
658
image->depth=GetImageQuantumDepth(image,MagickTrue);
659
if (image->matte != MagickFalse)
660
(void) ConcatenateMagickString(colorspace,"a",MaxTextExtent);
661
(void) FormatMagickString(buffer,MaxTextExtent,
662
"# ImageMagick pixel enumeration: %.20g,%.20g,%.20g,%s\n",(double)
663
image->columns,(double) image->rows,(double)
664
GetQuantumRange(image->depth),colorspace);
665
(void) WriteBlobString(image,buffer);
666
GetMagickPixelPacket(image,&pixel);
667
for (y=0; y < (ssize_t) image->rows; y++)
627
p=GetVirtualPixels(image,0,y,image->columns,1,&image->exception);
628
if (p == (const PixelPacket *) NULL)
630
indexes=GetVirtualIndexQueue(image);
631
for (x=0; x < (long) image->columns; x++)
669
p=GetVirtualPixels(image,0,y,image->columns,1,&image->exception);
670
if (p == (const PixelPacket *) NULL)
672
indexes=GetVirtualIndexQueue(image);
673
for (x=0; x < (ssize_t) image->columns; x++)
675
(void) FormatMagickString(buffer,MaxTextExtent,"%.20g,%.20g: ",(double)
677
(void) WriteBlobString(image,buffer);
678
SetMagickPixelPacket(image,p,indexes+x,&pixel);
679
(void) CopyMagickString(tuple,"(",MaxTextExtent);
680
ConcatenateColorComponent(&pixel,RedChannel,X11Compliance,tuple);
681
(void) ConcatenateMagickString(tuple,",",MaxTextExtent);
682
ConcatenateColorComponent(&pixel,GreenChannel,X11Compliance,tuple);
683
(void) ConcatenateMagickString(tuple,",",MaxTextExtent);
684
ConcatenateColorComponent(&pixel,BlueChannel,X11Compliance,tuple);
685
if (pixel.colorspace == CMYKColorspace)
687
(void) ConcatenateMagickString(tuple,",",MaxTextExtent);
688
ConcatenateColorComponent(&pixel,IndexChannel,X11Compliance,tuple);
690
if (pixel.matte != MagickFalse)
692
(void) ConcatenateMagickString(tuple,",",MaxTextExtent);
693
ConcatenateColorComponent(&pixel,AlphaChannel,X11Compliance,tuple);
695
(void) ConcatenateMagickString(tuple,")",MaxTextExtent);
696
(void) WriteBlobString(image,tuple);
697
(void) WriteBlobString(image," ");
698
GetColorTuple(&pixel,MagickTrue,tuple);
699
(void) FormatMagickString(buffer,MaxTextExtent,"%s",tuple);
700
(void) WriteBlobString(image,buffer);
701
(void) WriteBlobString(image," ");
702
(void) QueryMagickColorname(image,&pixel,SVGCompliance,tuple,
704
(void) WriteBlobString(image,tuple);
705
(void) WriteBlobString(image,"\n");
708
status=SetImageProgress(image,SaveImageTag,(MagickOffsetType) y,
710
if (status == MagickFalse)
633
(void) FormatMagickString(buffer,MaxTextExtent,"%ld,%ld: ",x,y);
634
(void) WriteBlobString(image,buffer);
635
SetMagickPixelPacket(image,p,indexes+x,&pixel);
636
(void) CopyMagickString(tuple,"(",MaxTextExtent);
637
ConcatenateColorComponent(&pixel,RedChannel,X11Compliance,tuple);
638
(void) ConcatenateMagickString(tuple,",",MaxTextExtent);
639
ConcatenateColorComponent(&pixel,GreenChannel,X11Compliance,tuple);
640
(void) ConcatenateMagickString(tuple,",",MaxTextExtent);
641
ConcatenateColorComponent(&pixel,BlueChannel,X11Compliance,tuple);
642
if (pixel.colorspace == CMYKColorspace)
644
(void) ConcatenateMagickString(tuple,",",MaxTextExtent);
645
ConcatenateColorComponent(&pixel,IndexChannel,X11Compliance,tuple);
647
if (pixel.matte != MagickFalse)
649
(void) ConcatenateMagickString(tuple,",",MaxTextExtent);
650
ConcatenateColorComponent(&pixel,AlphaChannel,X11Compliance,tuple);
652
(void) ConcatenateMagickString(tuple,")",MaxTextExtent);
653
(void) WriteBlobString(image,tuple);
654
(void) WriteBlobString(image," ");
655
GetColorTuple(&pixel,MagickTrue,tuple);
656
(void) FormatMagickString(buffer,MaxTextExtent,"%s",tuple);
657
(void) WriteBlobString(image,buffer);
658
(void) WriteBlobString(image," ");
659
(void) QueryMagickColorname(image,&pixel,SVGCompliance,tuple,
661
(void) WriteBlobString(image,tuple);
662
(void) WriteBlobString(image,"\n");
713
if (GetNextImageInList(image) == (Image *) NULL)
715
image=SyncNextImageInList(image);
716
status=SetImageProgress(image,SaveImagesTag,scene++,
717
GetImageListLength(image));
665
status=SetImageProgress(image,SaveImageTag,y,image->rows);
718
666
if (status == MagickFalse)
720
} while (image_info->adjoin != MagickFalse);
721
669
(void) CloseBlob(image);
722
670
return(MagickTrue);