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

#include "magick/studio.h"
#include "magick/attribute.h"
#include "magick/blob.h"
#include "magick/blob_private.h"
#include "magick/draw.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/static.h"
#include "magick/string_.h"

Include dependency graph for mvg.c:

Include dependency graph

Go to the source code of this file.

Defines

#define BoundingBox   "viewbox"

Functions

MagickBooleanType WriteMVGImage (const ImageInfo *, Image *)
MagickBooleanType IsMVG (const unsigned char *magick, const size_t length)
ImageReadMVGImage (const ImageInfo *image_info, ExceptionInfo *exception)
ModuleExport void RegisterMVGImage (void)
ModuleExport void UnregisterMVGImage (void)


Define Documentation

#define BoundingBox   "viewbox"
 


Function Documentation

MagickBooleanType IsMVG const unsigned char *  magick,
const size_t  length
[static]
 

Definition at line 90 of file mvg.c.

References LocaleNCompare(), MagickBooleanType, MagickFalse, and MagickTrue.

Referenced by RegisterMVGImage().

00091 { 00092 if (length < 20) 00093 return(MagickFalse); 00094 if (LocaleNCompare((char *) magick,"push graphic-context",20) == 0) 00095 return(MagickTrue); 00096 return(MagickFalse); 00097 }

Here is the call graph for this function:

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

Definition at line 127 of file mvg.c.

References AcquireString(), _DrawInfo::affine, AllocateImage(), assert, BoundingBox, CloneDrawInfo(), CloseBlob(), _Image::columns, _ImageInfo::debug, DestroyDrawInfo(), DestroyImageList(), DrawImage(), _Image::filename, _ImageInfo::filename, FileToBlob(), _DrawInfo::fill, GetBlobStreamData(), GetFirstImageInList(), GetMagickModule, LocaleNCompare(), LogMagickEvent(), MagickBooleanType, MagickFalse, MagickSignature, MaxTextExtent, OpaqueOpacity, OpenBlob(), OptionError, _ImageInfo::pen, _DrawInfo::primitive, ReadBinaryBlobMode, ReadBlobString(), _Image::rows, SegmentInfo, SetImage(), _ExceptionInfo::signature, _ImageInfo::signature, _AffineMatrix::sx, _AffineMatrix::sy, ThrowReaderException, TraceEvent, _SegmentInfo::x1, _SegmentInfo::x2, _Image::x_resolution, _SegmentInfo::y1, _SegmentInfo::y2, and _Image::y_resolution.

Referenced by RegisterMVGImage().

00128 { 00129 #define BoundingBox "viewbox" 00130 00131 DrawInfo 00132 *draw_info; 00133 00134 Image 00135 *image; 00136 00137 MagickBooleanType 00138 status; 00139 00140 size_t 00141 length; 00142 00143 unsigned char 00144 *primitive; 00145 00146 /* 00147 Open image. 00148 */ 00149 assert(image_info != (const ImageInfo *) NULL); 00150 assert(image_info->signature == MagickSignature); 00151 if (image_info->debug != MagickFalse) 00152 (void) LogMagickEvent(TraceEvent,GetMagickModule(),image_info->filename); 00153 assert(exception != (ExceptionInfo *) NULL); 00154 assert(exception->signature == MagickSignature); 00155 image=AllocateImage(image_info); 00156 status=OpenBlob(image_info,image,ReadBinaryBlobMode,exception); 00157 if (status == MagickFalse) 00158 { 00159 DestroyImageList(image); 00160 return((Image *) NULL); 00161 } 00162 if ((image->columns == 0) || (image->rows == 0)) 00163 { 00164 char 00165 primitive[MaxTextExtent]; 00166 00167 register char 00168 *p; 00169 00170 SegmentInfo 00171 bounds; 00172 00173 /* 00174 Determine size of image canvas. 00175 */ 00176 while (ReadBlobString(image,primitive) != (char *) NULL) 00177 { 00178 for (p=primitive; (*p == ' ') || (*p == '\t'); p++); 00179 if (LocaleNCompare(BoundingBox,p,strlen(BoundingBox)) != 0) 00180 continue; 00181 (void) sscanf(p,"viewbox %lf %lf %lf %lf",&bounds.x1,&bounds.y1, 00182 &bounds.x2,&bounds.y2); 00183 image->columns=(unsigned long) ((bounds.x2-bounds.x1)+0.5); 00184 image->rows=(unsigned long) ((bounds.y2-bounds.y1)+0.5); 00185 break; 00186 } 00187 } 00188 if ((image->columns == 0) || (image->rows == 0)) 00189 ThrowReaderException(OptionError,"MustSpecifyImageSize"); 00190 draw_info=CloneDrawInfo(image_info,(DrawInfo *) NULL); 00191 draw_info->affine.sx= 00192 image->x_resolution == 0.0 ? 1.0 : image->x_resolution/72.0; 00193 draw_info->affine.sy= 00194 image->y_resolution == 0.0 ? 1.0 : image->y_resolution/72.0; 00195 image->columns=(unsigned long) (draw_info->affine.sx*image->columns); 00196 image->rows=(unsigned long) (draw_info->affine.sy*image->rows); 00197 SetImage(image,OpaqueOpacity); 00198 /* 00199 Render drawing. 00200 */ 00201 draw_info->fill=image_info->pen; 00202 primitive=GetBlobStreamData(image); 00203 if (primitive != (unsigned char) NULL) 00204 draw_info->primitive=AcquireString((char *) primitive); 00205 else 00206 draw_info->primitive=(char *) FileToBlob(image->filename,&length,exception); 00207 if (draw_info->primitive == (char *) NULL) 00208 return((Image *) NULL); 00209 (void) DrawImage(image,draw_info); 00210 draw_info=DestroyDrawInfo(draw_info); 00211 CloseBlob(image); 00212 return(GetFirstImageInList(image)); 00213 }

Here is the call graph for this function:

ModuleExport void RegisterMVGImage void   ) 
 

Definition at line 238 of file mvg.c.

References AcquireString(), _MagickInfo::adjoin, _MagickInfo::decoder, DecoderHandler, _MagickInfo::description, _MagickInfo::encoder, EncoderHandler, IsMVG(), _MagickInfo::magick, MagickFalse, MagickHandler, MagickTrue, _MagickInfo::module, ModuleExport, ReadMVGImage(), RegisterMagickInfo(), _MagickInfo::seekable_stream, SetMagickInfo(), and WriteMVGImage().

Referenced by RegisterStaticModules().

00239 { 00240 MagickInfo 00241 *entry; 00242 00243 entry=SetMagickInfo("MVG"); 00244 entry->decoder=(DecoderHandler *) ReadMVGImage; 00245 entry->encoder=(EncoderHandler *) WriteMVGImage; 00246 entry->magick=(MagickHandler *) IsMVG; 00247 entry->adjoin=MagickFalse; 00248 entry->seekable_stream=MagickTrue; 00249 entry->description=AcquireString("Magick Vector Graphics"); 00250 entry->module=AcquireString("MVG"); 00251 (void) RegisterMagickInfo(entry); 00252 }

Here is the call graph for this function:

ModuleExport void UnregisterMVGImage void   ) 
 

Definition at line 273 of file mvg.c.

References ModuleExport, and UnregisterMagickInfo().

Referenced by UnregisterStaticModules().

00274 { 00275 (void) UnregisterMagickInfo("MVG"); 00276 }

Here is the call graph for this function:

MagickBooleanType WriteMVGImage const ImageInfo ,
Image
[static]
 

Definition at line 303 of file mvg.c.

References assert, CloseBlob(), _Image::debug, _Image::exception, _Image::filename, GetImageAttribute(), GetMagickModule, LogMagickEvent(), MagickBooleanType, MagickFalse, MagickSignature, MagickTrue, OpenBlob(), OptionError, _Image::signature, _ImageInfo::signature, ThrowWriterException, TraceEvent, _ImageAttribute::value, WriteBlob(), and WriteBlobMode.

Referenced by RegisterMVGImage().

00304 { 00305 const ImageAttribute 00306 *attribute; 00307 00308 MagickBooleanType 00309 status; 00310 00311 /* 00312 Open output image file. 00313 */ 00314 assert(image_info != (const ImageInfo *) NULL); 00315 assert(image_info->signature == MagickSignature); 00316 assert(image != (Image *) NULL); 00317 assert(image->signature == MagickSignature); 00318 if (image->debug != MagickFalse) 00319 (void) LogMagickEvent(TraceEvent,GetMagickModule(),image->filename); 00320 attribute=GetImageAttribute(image,"[MVG]"); 00321 if (attribute == (ImageAttribute *) NULL) 00322 ThrowWriterException(OptionError,"NoImageVectorGraphics"); 00323 status=OpenBlob(image_info,image,WriteBlobMode,&image->exception); 00324 if (status == MagickFalse) 00325 return(status); 00326 (void) WriteBlob(image,strlen(attribute->value),(unsigned char *) 00327 attribute->value); 00328 CloseBlob(image); 00329 return(MagickTrue); 00330 }

Here is the call graph for this function:


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