]> granicus.if.org Git - imagemagick/commitdiff
Added fontTypeMetricsMultiline to Image.
authordirk <dirk@git.imagemagick.org>
Thu, 16 Jan 2014 19:08:42 +0000 (19:08 +0000)
committerdirk <dirk@git.imagemagick.org>
Thu, 16 Jan 2014 19:08:42 +0000 (19:08 +0000)
Added underlinePosition and underlineThickness to TypeMetric.

Magick++/lib/Image.cpp
Magick++/lib/Magick++/Image.h
Magick++/lib/Magick++/Include.h
Magick++/lib/Magick++/TypeMetric.h
Magick++/lib/TypeMetric.cpp

index 7d7304546e0a61d7836c5ca0c56d54c08b7e4edf..cc0d526a7a985e02ed5a1be9d49e16cb7ccc9551 100644 (file)
@@ -2946,6 +2946,20 @@ void Magick::Image::fontTypeMetrics(const std::string &text_,
   ThrowPPException;
 }
 
+void Magick::Image::fontTypeMetricsMultiline(const std::string &text_,
+  TypeMetric *metrics)
+{
+  DrawInfo
+    *drawInfo;
+
+  drawInfo=options()->drawInfo();
+  drawInfo->text=const_cast<char *>(text_.c_str());
+  GetPPException;
+  GetMultilineTypeMetrics(image(),drawInfo,&(metrics->_typeMetric),&exceptionInfo);
+  drawInfo->text=0;
+  ThrowPPException;
+}
+
 void Magick::Image::frame(const Geometry &geometry_)
 {
   FrameInfo
index 9e57dc2b7dbd31eb0793f9c9bd7f808c6a389183..e3166a974f23ab09097c9455dafbea2099a4ea36 100644 (file)
@@ -896,6 +896,11 @@ namespace Magick
     // pointsize, and density settings.
     void fontTypeMetrics(const std::string &text_,TypeMetric *metrics);
 
+    // Obtain multi line font metrics for text string given current font,
+    // pointsize, and density settings.
+    void fontTypeMetricsMultiline(const std::string &text_,
+      TypeMetric *metrics);
+
     // Frame image
     void frame(const Geometry &geometry_=frameGeometryDefault);
     void frame(const size_t width_,const size_t height_,
index 4cbb5e7bef8d0b69818f67301710f418ce4ca900..d0b08735e007e0d4a6921466dac8e0497a848be6 100644 (file)
@@ -1161,6 +1161,7 @@ namespace Magick
   using MagickCore::GetImageQuantizeError;
   using MagickCore::GetImageType;
   using MagickCore::GetMagickInfo;
+  using MagickCore::GetMultilineTypeMetrics;
   using MagickCore::GetPixelBlue;
   using MagickCore::GetPixelGreen;
   using MagickCore::GetPixelInfo;
index b84baf7440e1182029e9174beb06ff8fe9daa82e..204fbd9d0f15696a4c723a56fb10ce2165346844 100644 (file)
@@ -17,41 +17,42 @@ namespace Magick
   class MagickPPExport TypeMetric
   {
     friend class Image;
+
   public:
-    
-    TypeMetric ( void );
-    ~TypeMetric ( void );
+
+    // Default constructor
+    TypeMetric(void);
+
+    // Destructor
+    ~TypeMetric(void);
 
     // Ascent, the distance in pixels from the text baseline to the
     // highest/upper grid coordinate used to place an outline point.
-    double         ascent ( void ) const;
+    double ascent(void) const;
 
     // Descent, the distance in pixels from the baseline to the lowest
     // grid coordinate used to place an outline point. Always a
     // negative value.
-    double         descent ( void ) const;
+    double descent(void) const;
 
-    // Text width in pixels.
-    double         textWidth ( void ) const;
+    // Maximum horizontal advance in pixels.
+    double maxHorizontalAdvance(void) const;
 
     // Text height in pixels.
-    double         textHeight ( void ) const;
+    double textHeight(void) const;
 
-    // Maximum horizontal advance in pixels.
-    double         maxHorizontalAdvance ( void ) const;
+    // Text width in pixels.
+    double textWidth(void) const;
+
+    // Underline position.
+    double underlinePosition(void) const;
 
-    //
-    // Public methods below this point are for Magick++ use only.
-    //
+    // Underline thickness.
+    double underlineThickness(void) const;
 
   private:
-    MagickCore::TypeMetric  _typeMetric;
+    MagickCore::TypeMetric _typeMetric;
   };
 } // namespace Magick
 
-//
-// Inlines
-//
-
-
 #endif // Magick_TypeMetric_header
index 68d1cec22cab73ccdd63594ea003fbaf8aac6b59..40a6caa04a0c6862a396e879dd25230fb33a614a 100644 (file)
 #include "Magick++/TypeMetric.h"
 #include <string.h>
 
-// Default constructor
-Magick::TypeMetric::TypeMetric ( void )
+Magick::TypeMetric::TypeMetric(void)
 {
-  memset( &_typeMetric, 0, sizeof(_typeMetric));
+  ResetMagickMemory(&_typeMetric,0,sizeof(_typeMetric));
 }
 
-Magick::TypeMetric::~TypeMetric ( void )
+Magick::TypeMetric::~TypeMetric(void)
 {
-  // Nothing to do
 }
 
-// Ascent, expressed in pixels
-double Magick::TypeMetric::ascent ( void ) const
+double Magick::TypeMetric::ascent(void) const
 {
-  return _typeMetric.ascent;
+  return(_typeMetric.ascent);
 }
 
-// Descent, expressed in pixels
-double Magick::TypeMetric::descent ( void ) const
+double Magick::TypeMetric::descent(void) const
 {
-  return _typeMetric.descent;
+  return(_typeMetric.descent);
 }
 
-// Text width, expressed in pixels
-double Magick::TypeMetric::textWidth ( void ) const
+double Magick::TypeMetric::maxHorizontalAdvance(void) const
 {
-  return _typeMetric.width;
+  return(_typeMetric.max_advance);
 }
 
-// Text height, expressed in pixels
-double Magick::TypeMetric::textHeight ( void ) const
+double Magick::TypeMetric::textHeight(void) const
 {
-  return _typeMetric.height;
+  return(_typeMetric.height);
 }
 
-// Maximum horizontal advance, expressed in pixels
-double Magick::TypeMetric::maxHorizontalAdvance ( void ) const
+double Magick::TypeMetric::textWidth(void) const
 {
-  return _typeMetric.max_advance;
+  return(_typeMetric.width);
+}
+
+double Magick::TypeMetric::underlinePosition(void) const
+{
+  return(_typeMetric.underline_position);
+}
+
+double Magick::TypeMetric::underlineThickness(void) const
+{
+  return(_typeMetric.underline_thickness);
 }