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

#include "magick/studio.h"
#include "magick/annotate.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 "magick/utility.h"

Include dependency graph for label.c:

Include dependency graph

Go to the source code of this file.

Functions

ImageReadLABELImage (const ImageInfo *image_info, ExceptionInfo *exception)
ModuleExport void RegisterLABELImage (void)
ModuleExport void UnregisterLABELImage (void)


Function Documentation

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

Definition at line 86 of file label.c.

References AcquireString(), AllocateImage(), AnnotateImage(), _TypeMetric::ascent, assert, CloneDrawInfo(), CoderError, _Image::columns, _ImageInfo::debug, _TypeMetric::descent, DestroyDrawInfo(), _ImageInfo::filename, _DrawInfo::fill, FormatMagickString(), _DrawInfo::geometry, GetFirstImageInList(), GetMagickModule, GetTypeMetrics(), LogMagickEvent(), MagickBooleanType, MagickFalse, MagickSignature, _TypeMetric::max_advance, MaxTextExtent, OpaqueOpacity, _ImageInfo::pen, _DrawInfo::pointsize, _Image::rows, SetImage(), _ExceptionInfo::signature, _ImageInfo::signature, _DrawInfo::text, ThrowReaderException, TraceEvent, TranslateText(), TypeError, and _TypeMetric::width.

Referenced by RegisterLABELImage().

00088 { 00089 char 00090 geometry[MaxTextExtent]; 00091 00092 DrawInfo 00093 *draw_info; 00094 00095 Image 00096 *image; 00097 00098 MagickBooleanType 00099 status; 00100 00101 TypeMetric 00102 metrics; 00103 00104 unsigned long 00105 height, 00106 width; 00107 00108 /* 00109 Initialize Image structure. 00110 */ 00111 assert(image_info != (const ImageInfo *) NULL); 00112 assert(image_info->signature == MagickSignature); 00113 if (image_info->debug != MagickFalse) 00114 (void) LogMagickEvent(TraceEvent,GetMagickModule(),image_info->filename); 00115 assert(exception != (ExceptionInfo *) NULL); 00116 assert(exception->signature == MagickSignature); 00117 image=AllocateImage(image_info); 00118 draw_info=CloneDrawInfo(image_info,(DrawInfo *) NULL); 00119 draw_info->fill=image_info->pen; 00120 draw_info->text=TranslateText(image_info,image,image_info->filename); 00121 if (draw_info->text == (char *) NULL) 00122 ThrowReaderException(CoderError,"UnableToTranslateText"); 00123 if ((image->columns != 0) || (image->rows != 0)) 00124 { 00125 /* 00126 Fit label to canvas size. 00127 */ 00128 status=GetTypeMetrics(image,draw_info,&metrics); 00129 for ( ; status != MagickFalse; draw_info->pointsize*=2) 00130 { 00131 width=(unsigned long) (metrics.width+metrics.max_advance/2+0.5); 00132 height=(unsigned long) (metrics.ascent-metrics.descent+0.5); 00133 if (((image->columns != 0) && (width >= image->columns)) || 00134 ((image->rows != 0) && (height >= image->rows))) 00135 break; 00136 status=GetTypeMetrics(image,draw_info,&metrics); 00137 } 00138 for ( ; status != MagickFalse; draw_info->pointsize--) 00139 { 00140 width=(unsigned long) (metrics.width+metrics.max_advance/2+0.5); 00141 height=(unsigned long) (metrics.ascent-metrics.descent+0.5); 00142 if ((image->columns != 0) && (width <= image->columns) && 00143 ((image->rows == 0) || (height <= image->rows))) 00144 break; 00145 if ((image->rows != 0) && (height <= image->rows) && 00146 ((image->columns == 0) || (width <= image->columns))) 00147 break; 00148 if (draw_info->pointsize < 2.0) 00149 break; 00150 status=GetTypeMetrics(image,draw_info,&metrics); 00151 } 00152 } 00153 status=GetTypeMetrics(image,draw_info,&metrics); 00154 if (status == MagickFalse) 00155 ThrowReaderException(TypeError,"UnableToGetTypeMetrics"); 00156 (void) FormatMagickString(geometry,MaxTextExtent,"+%g+%g", 00157 metrics.max_advance/4,metrics.ascent); 00158 if (image->columns == 0) 00159 image->columns=(unsigned long) (metrics.width+metrics.max_advance/2+0.5); 00160 if (image->rows == 0) 00161 { 00162 image->rows=(unsigned long) (metrics.ascent-metrics.descent+0.5); 00163 (void) FormatMagickString(geometry,MaxTextExtent,"+%g+%g", 00164 image->columns/2.0-metrics.width/2.0,metrics.ascent); 00165 } 00166 draw_info->geometry=AcquireString(geometry); 00167 SetImage(image,OpaqueOpacity); 00168 (void) AnnotateImage(image,draw_info); 00169 draw_info=DestroyDrawInfo(draw_info); 00170 return(GetFirstImageInList(image)); 00171 }

Here is the call graph for this function:

ModuleExport void RegisterLABELImage void   ) 
 

Definition at line 196 of file label.c.

References AcquireString(), _MagickInfo::adjoin, _MagickInfo::decoder, DecoderHandler, _MagickInfo::description, MagickFalse, _MagickInfo::module, ModuleExport, ReadLABELImage(), RegisterMagickInfo(), and SetMagickInfo().

Referenced by RegisterStaticModules().

00197 { 00198 MagickInfo 00199 *entry; 00200 00201 entry=SetMagickInfo("LABEL"); 00202 entry->decoder=(DecoderHandler *) ReadLABELImage; 00203 entry->adjoin=MagickFalse; 00204 entry->description=AcquireString("Image label"); 00205 entry->module=AcquireString("LABEL"); 00206 (void) RegisterMagickInfo(entry); 00207 }

Here is the call graph for this function:

ModuleExport void UnregisterLABELImage void   ) 
 

Definition at line 228 of file label.c.

References ModuleExport, and UnregisterMagickInfo().

Referenced by UnregisterStaticModules().

00229 { 00230 (void) UnregisterMagickInfo("LABEL"); 00231 }

Here is the call graph for this function:


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