Added underlinePosition and underlineThickness to TypeMetric.
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
// 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_,
using MagickCore::GetImageQuantizeError;
using MagickCore::GetImageType;
using MagickCore::GetMagickInfo;
+ using MagickCore::GetMultilineTypeMetrics;
using MagickCore::GetPixelBlue;
using MagickCore::GetPixelGreen;
using MagickCore::GetPixelInfo;
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
#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);
}