Powered by Pair ImageMagick logo
Image Magick
Main Page | Namespace List | Class Hierarchy | Alphabetical List | Data Structures | File List | Namespace Members | Data Fields | Globals | Related Pages

ImageMagick-6.1.1/coders/art.c File Reference

#include "magick/studio.h"
#include "magick/blob.h"
#include "magick/blob_private.h"
#include "magick/error.h"
#include "magick/error_private.h"
#include "magick/image.h"
#include "magick/image_private.h"
#include "magick/list.h"
#include "magick/log.h"
#include "magick/magick.h"
#include "magick/memory_.h"
#include "magick/monitor.h"
#include "magick/static.h"
#include "magick/string_.h"

Include dependency graph for art.c:

Include dependency graph

Go to the source code of this file.

Functions

void InsertRow (unsigned char *p, int y, Image *image)
ImageReadARTImage (const ImageInfo *image_info, ExceptionInfo *exception)
ModuleExport void RegisterARTImage (void)
ModuleExport void UnregisterARTImage (void)


Function Documentation

void InsertRow unsigned char *  p,
int  y,
Image image
[static]
 

Definition at line 66 of file art.c.

References _Image::colormap, _Image::columns, _Image::depth, GetIndexes(), Image, IndexPacket, MagickFalse, SetImagePixels(), and SyncImagePixels().

00067 { 00068 unsigned long bit; long x; 00069 register PixelPacket *q; 00070 IndexPacket index; 00071 register IndexPacket *indexes; 00072 00073 00074 switch (image->depth) 00075 { 00076 case 1: /* Convert bitmap scanline. */ 00077 { 00078 q=SetImagePixels(image,0,y,image->columns,1); 00079 if (q == (PixelPacket *) NULL) 00080 break; 00081 indexes=GetIndexes(image); 00082 for (x=0; x < ((long) image->columns-7); x+=8) 00083 { 00084 for (bit=0; bit < 8; bit++) 00085 { 00086 index=(IndexPacket) (((*p) & (0x80 >> bit)) != 0 ? 0x01 : 0x00); 00087 indexes[x+bit]=index; 00088 *q++=image->colormap[index]; 00089 } 00090 p++; 00091 } 00092 if ((image->columns % 8) != 0) 00093 { 00094 for (bit=0; bit < (image->columns % 8); bit++) 00095 { 00096 index=(IndexPacket) (((*p) & (0x80 >> bit)) != 0 ? 0x01 : 0x00); 00097 indexes[x+bit]=index; 00098 *q++=image->colormap[index]; 00099 } 00100 p++; 00101 } 00102 if (SyncImagePixels(image) == MagickFalse) 00103 break; 00104 /* if (image->previous == (Image *) NULL) 00105 if (QuantumTick(y,image->rows) != MagickFalse) 00106 ProgressMonitor(LoadImageTag,image->rows-y-1,image->rows);*/ 00107 break; 00108 } 00109 } 00110 }

Here is the call graph for this function:

Image* ReadARTImage const ImageInfo image_info,
ExceptionInfo exception
[static]
 

Definition at line 141 of file art.c.

References AcquireMagickMemory(), AllocateImage(), AllocateImageColormap(), assert, CloseBlob(), _Image::colors, _Image::columns, CorruptImageError, _ImageInfo::debug, _Image::depth, DestroyImageList(), EOFBlob(), ExceptionInfo, _Image::filename, _ImageInfo::filename, GetBlobSize(), GetFirstImageInList(), GetMagickModule, ImageInfo, InsertRow(), LogMagickEvent(), MagickBooleanType, MagickFalse, MagickSignature, MagickSizeType, OpenBlob(), ReadBinaryBlobMode, ReadBlob(), ReadBlobLSBShort(), RelinquishMagickMemory(), ResourceLimitError, _Image::rows, _ExceptionInfo::signature, _ImageInfo::signature, ThrowFileException, ThrowReaderException, and TraceEvent.

Referenced by RegisterARTImage().

00142 { 00143 Image *image; 00144 int i; 00145 unsigned long width,height,dummy; 00146 long ldblk; 00147 unsigned char *BImgBuff=NULL; 00148 unsigned char k; 00149 MagickBooleanType status; 00150 00151 /* 00152 Open image file. 00153 */ 00154 assert(image_info != (const ImageInfo *) NULL); 00155 assert(image_info->signature == MagickSignature); 00156 if (image_info->debug != MagickFalse) 00157 (void) LogMagickEvent(TraceEvent,GetMagickModule(),image_info->filename); 00158 assert(exception != (ExceptionInfo *) NULL); 00159 assert(exception->signature == MagickSignature); 00160 image=AllocateImage(image_info); 00161 status=OpenBlob(image_info,image,ReadBinaryBlobMode,exception); 00162 if (status == MagickFalse) 00163 { 00164 DestroyImageList(image); 00165 return((Image *) NULL); 00166 } 00167 /* 00168 Read ART image. 00169 */ 00170 dummy=ReadBlobLSBShort(image); 00171 width=ReadBlobLSBShort(image); 00172 dummy=ReadBlobLSBShort(image); 00173 height=ReadBlobLSBShort(image); 00174 00175 ldblk=(long) ((width+7) / 8); 00176 k=(unsigned char) ((-ldblk) & 0x01); 00177 if (GetBlobSize(image) != (MagickSizeType) (8+(ldblk+(long) k)*height)) 00178 ThrowReaderException(CorruptImageError,"ImproperImageHeader"); 00179 image->columns=width; 00180 image->rows=height; 00181 image->depth=1; 00182 image->colors=1l << image->depth; 00183 00184 /* printf("ART header checked OK %d,%d\n",image->colors,image->depth); */ 00185 00186 if (AllocateImageColormap(image,image->colors) == MagickFalse) goto NoMemory; 00187 00188 /* ----- Load RLE compressed raster ----- */ 00189 BImgBuff=(unsigned char *) AcquireMagickMemory((size_t) ldblk); /*Ldblk was set in the check phase*/ 00190 if (BImgBuff==NULL) 00191 NoMemory: 00192 ThrowReaderException(ResourceLimitError,"MemoryAllocationFailed"); 00193 for (i=0;i< (int) height;i++) 00194 { 00195 (void) ReadBlob(image,(size_t) ldblk,BImgBuff); 00196 (void) ReadBlob(image,(size_t) k,(unsigned char *) &dummy); 00197 InsertRow(BImgBuff,i,image); 00198 } 00199 BImgBuff=(unsigned char *) RelinquishMagickMemory(BImgBuff); 00200 if (EOFBlob(image) != MagickFalse) 00201 ThrowFileException(exception,CorruptImageError,"UnexpectedEndOfFile", 00202 image->filename); 00203 CloseBlob(image); 00204 return(GetFirstImageInList(image)); 00205 }

Here is the call graph for this function:

ModuleExport void RegisterARTImage void   ) 
 

Definition at line 230 of file art.c.

References AcquireString(), _MagickInfo::decoder, DecoderHandler, _MagickInfo::description, MagickInfo, _MagickInfo::module, ModuleExport, _MagickInfo::note, ReadARTImage(), RegisterMagickInfo(), and SetMagickInfo().

Referenced by RegisterStaticModules().

00231 { 00232 MagickInfo 00233 *entry; 00234 00235 static const char 00236 *ARTNote= 00237 { 00238 "Format originally used on the Macintosh (MacPaint?) and later used\n" 00239 "for PFS: 1st Publisher clip art. NOT the AOL ART format." 00240 }; 00241 00242 entry=SetMagickInfo("ART"); 00243 entry->decoder=(DecoderHandler *) ReadARTImage; 00244 entry->description=AcquireString("PFS: 1st Publisher"); 00245 entry->module=AcquireString("ART"); 00246 entry->note=AcquireString(ARTNote); 00247 (void) RegisterMagickInfo(entry); 00248 }

Here is the call graph for this function:

ModuleExport void UnregisterARTImage void   ) 
 

Definition at line 269 of file art.c.

References ModuleExport, and UnregisterMagickInfo().

Referenced by UnregisterStaticModules().

00270 { 00271 (void) UnregisterMagickInfo("ART"); 00272 }

Here is the call graph for this function:


Generated on Mon Oct 25 13:42:28 2004 for ImageMagick by doxygen 1.3.7
ImageMagick Copyright © 2004, ImageMagick Studio LLC