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/cip.c File Reference

#include "magick/studio.h"
#include "magick/attribute.h"
#include "magick/blob.h"
#include "magick/blob_private.h"
#include "magick/colorspace.h"
#include "magick/constitute.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/magick.h"
#include "magick/memory_.h"
#include "magick/monitor.h"
#include "magick/quantize.h"
#include "magick/static.h"
#include "magick/string_.h"
#include "magick/utility.h"

Include dependency graph for cip.c:

Include dependency graph

Go to the source code of this file.

Functions

MagickBooleanType WriteCIPImage (const ImageInfo *, Image *)
ModuleExport void RegisterCIPImage (void)
ModuleExport void UnregisterCIPImage (void)


Function Documentation

ModuleExport void RegisterCIPImage void   ) 
 

Definition at line 89 of file cip.c.

References AcquireString(), _MagickInfo::adjoin, _MagickInfo::description, _MagickInfo::encoder, EncoderHandler, MagickFalse, _MagickInfo::module, ModuleExport, RegisterMagickInfo(), SetMagickInfo(), and WriteCIPImage().

Referenced by RegisterStaticModules().

00090 { 00091 MagickInfo 00092 *entry; 00093 00094 entry=SetMagickInfo("CIP"); 00095 entry->encoder=(EncoderHandler *) WriteCIPImage; 00096 entry->adjoin=MagickFalse; 00097 entry->description=AcquireString("Cisco IP phone image format"); 00098 entry->module=AcquireString("CIP"); 00099 (void) RegisterMagickInfo(entry); 00100 }

Here is the call graph for this function:

ModuleExport void UnregisterCIPImage void   ) 
 

Definition at line 121 of file cip.c.

References ModuleExport, and UnregisterMagickInfo().

Referenced by UnregisterStaticModules().

00122 { 00123 (void) UnregisterMagickInfo("CIP"); 00124 }

Here is the call graph for this function:

MagickBooleanType WriteCIPImage const ImageInfo ,
Image
[static]
 

Definition at line 152 of file cip.c.

References AcquireImagePixels(), assert, BasePath, _Image::client_data, CloseBlob(), _Image::columns, _Image::debug, _Image::exception, _Image::filename, FormatMagickString(), GetImageAttribute(), GetMagickModule, GetPathComponent(), LogMagickEvent(), MagickBooleanType, MagickFalse, MagickProgressMonitor, MagickSignature, MagickTrue, MaxRGB, MaxTextExtent, Min, OpenBlob(), _Image::page, PixelIntensityToQuantum, _Image::progress_monitor, QuantumTick, RGBColorspace, _Image::rows, SaveImageTag, SetImageColorspace(), _Image::signature, _ImageInfo::signature, TraceEvent, _ImageAttribute::value, WriteBinaryBlobMode, WriteBlobString(), _RectangleInfo::x, and _RectangleInfo::y.

Referenced by RegisterCIPImage().

00153 { 00154 char 00155 buffer[MaxTextExtent]; 00156 00157 const ImageAttribute 00158 *attribute; 00159 00160 long 00161 y; 00162 00163 MagickBooleanType 00164 status; 00165 00166 register const PixelPacket 00167 *p; 00168 00169 register long 00170 i, 00171 x; 00172 00173 unsigned char 00174 byte; 00175 00176 /* 00177 Open output image file. 00178 */ 00179 assert(image_info != (const ImageInfo *) NULL); 00180 assert(image_info->signature == MagickSignature); 00181 assert(image != (Image *) NULL); 00182 assert(image->signature == MagickSignature); 00183 if (image->debug != MagickFalse) 00184 (void) LogMagickEvent(TraceEvent,GetMagickModule(),image->filename); 00185 status=OpenBlob(image_info,image,WriteBinaryBlobMode,&image->exception); 00186 if (status == MagickFalse) 00187 return(status); 00188 (void) WriteBlobString(image,"<CiscoIPPhoneImage>\n"); 00189 attribute=GetImageAttribute(image,"label"); 00190 if (attribute != (const ImageAttribute *) NULL) 00191 (void) FormatMagickString(buffer,MaxTextExtent,"<Title>%s</Title>\n", 00192 attribute->value); 00193 else 00194 { 00195 char 00196 basename[MaxTextExtent]; 00197 00198 GetPathComponent(image->filename,BasePath,basename); 00199 (void) FormatMagickString(buffer,MaxTextExtent,"<Title>%s</Title>\n", 00200 basename); 00201 } 00202 (void) WriteBlobString(image,buffer); 00203 (void) FormatMagickString(buffer,MaxTextExtent,"<LocationX>%ld</LocationX>\n", 00204 image->page.x); 00205 (void) WriteBlobString(image,buffer); 00206 (void) FormatMagickString(buffer,MaxTextExtent,"<LocationY>%ld</LocationY>\n", 00207 image->page.y); 00208 (void) WriteBlobString(image,buffer); 00209 (void) FormatMagickString(buffer,MaxTextExtent,"<Width>%lu</Width>\n", 00210 image->columns+(image->columns % 2)); 00211 (void) WriteBlobString(image,buffer); 00212 (void) FormatMagickString(buffer,MaxTextExtent,"<Height>%lu</Height>\n", 00213 image->rows); 00214 (void) WriteBlobString(image,buffer); 00215 (void) FormatMagickString(buffer,MaxTextExtent,"<Depth>2</Depth>\n"); 00216 (void) WriteBlobString(image,buffer); 00217 (void) WriteBlobString(image,"<Data>"); 00218 (void) SetImageColorspace(image,RGBColorspace); 00219 for (y=0; y < (long) image->rows; y++) 00220 { 00221 p=AcquireImagePixels(image,0,y,image->columns,1,&image->exception); 00222 if (p == (const PixelPacket *) NULL) 00223 break; 00224 for (x=0; x < ((long) image->columns-3); x+=4) 00225 { 00226 byte=(unsigned char) 00227 (((4*PixelIntensityToQuantum(p+3)/MaxRGB) & 0x03) << 6) | 00228 (((4*PixelIntensityToQuantum(p+2)/MaxRGB) & 0x03) << 4) | 00229 (((4*PixelIntensityToQuantum(p+1)/MaxRGB) & 0x03) << 2) | 00230 (((4*PixelIntensityToQuantum(p+0)/MaxRGB) & 0x03) << 0); 00231 (void) FormatMagickString(buffer,MaxTextExtent,"%02x",byte); 00232 (void) WriteBlobString(image,buffer); 00233 p+=4; 00234 } 00235 if ((image->columns % 4) != 0) 00236 { 00237 i=(long) image->columns % 4; 00238 byte=(unsigned char) 00239 ((((4*PixelIntensityToQuantum(p+Min(i,3))/MaxRGB) & 0x03) << 6) | 00240 (((4*PixelIntensityToQuantum(p+Min(i,2))/MaxRGB) & 0x03) << 4) | 00241 (((4*PixelIntensityToQuantum(p+Min(i,1))/MaxRGB) & 0x03) << 2) | 00242 (((4*PixelIntensityToQuantum(p+Min(i,0))/MaxRGB) & 0x03) << 0)); 00243 (void) FormatMagickString(buffer,MaxTextExtent,"%02x",~byte); 00244 (void) WriteBlobString(image,buffer); 00245 } 00246 if ((image->progress_monitor != (MagickProgressMonitor) NULL) && 00247 (QuantumTick(y,image->rows) != MagickFalse)) 00248 { 00249 status=image->progress_monitor(SaveImageTag,y,image->rows, 00250 image->client_data); 00251 if (status == MagickFalse) 00252 break; 00253 } 00254 } 00255 (void) WriteBlobString(image,"</Data>\n"); 00256 (void) WriteBlobString(image,"</CiscoIPPhoneImage>\n"); 00257 CloseBlob(image); 00258 return(MagickTrue); 00259 }

Here is the call graph for this function:


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