]> granicus.if.org Git - imagemagick/commitdiff
Added extra properties to TypeMetric (#1121)
authorDirk Lemstra <dirk@git.imagemagick.org>
Fri, 4 May 2018 22:49:46 +0000 (00:49 +0200)
committerDirk Lemstra <dirk@git.imagemagick.org>
Fri, 4 May 2018 22:50:16 +0000 (00:50 +0200)
Magick++/lib/Magick++/TypeMetric.h
Magick++/lib/TypeMetric.cpp

index 338616b9d33ea1f382d80f2ba852447ed46b3f5d..cf779d389e31eadc96613268ac07bde1cc8d9725 100644 (file)
@@ -1,7 +1,7 @@
 // This may look like C code, but it is really -*- C++ -*-
 //
 // Copyright Bob Friesenhahn, 2001, 2002
-// Copyright Dirk Lemstra 2014
+// Copyright Dirk Lemstra 2014-2018
 //
 // TypeMetric Definition
 //
@@ -12,6 +12,7 @@
 #define Magick_TypeMetric_header
 
 #include "Magick++/Include.h"
+#include "Magick++/Drawable.h"
 
 namespace Magick
 {
@@ -27,18 +28,26 @@ namespace Magick
     // Destructor
     ~TypeMetric(void);
 
-    // Ascent, the distance in pixels from the text baseline to the
-    // highest/upper grid coordinate used to place an outline point.
+    // The distance in pixels from the text baseline to the highest/upper
+    // grid coordinate used to place an outline point.
     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.
+    // The bounds of the type metric.
+    Geometry bounds(void) const;
+
+    // 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;
 
     // Maximum horizontal advance in pixels.
     double maxHorizontalAdvance(void) const;
 
+    // The origin.
+    Coordinate origin(void) const;
+
+    // The number of pixels per em.
+    Coordinate pixelsPerEm(void) const;
+
     // Text height in pixels.
     double textHeight(void) const;
 
index 2d8e29b65f4ca107db53ee92416bb3b7f555b3f9..b6e725b5f60bc0e3147a6bd344e701e902760df2 100644 (file)
@@ -1,7 +1,7 @@
 // This may look like C code, but it is really -*- C++ -*-
 //
 // Copyright Bob Friesenhahn, 2001
-// Copyright Dirk Lemstra 2014
+// Copyright Dirk Lemstra 2014-2018
 //
 // TypeMetric implementation
 //
@@ -10,6 +10,7 @@
 #define MAGICK_PLUSPLUS_IMPLEMENTATION 1
 
 #include "Magick++/TypeMetric.h"
+#include "Magick++/Drawable.h"
 #include <string.h>
 
 Magick::TypeMetric::TypeMetric(void)
@@ -26,6 +27,13 @@ double Magick::TypeMetric::ascent(void) const
   return(_typeMetric.ascent);
 }
 
+Magick::Geometry Magick::TypeMetric::bounds(void) const
+{
+  return(Geometry((size_t) _typeMetric.bounds.x2-_typeMetric.bounds.x1,
+    (size_t) _typeMetric.bounds.y2-_typeMetric.bounds.y1,(ssize_t)
+    _typeMetric.bounds.x1,(ssize_t) _typeMetric.bounds.y1));
+}
+
 double Magick::TypeMetric::descent(void) const
 {
   return(_typeMetric.descent);
@@ -36,6 +44,16 @@ double Magick::TypeMetric::maxHorizontalAdvance(void) const
   return(_typeMetric.max_advance);
 }
 
+Magick::Coordinate Magick::TypeMetric::origin(void) const
+{
+  return(Coordinate(_typeMetric.origin.x,_typeMetric.origin.y));
+}
+
+Magick::Coordinate Magick::TypeMetric::pixelsPerEm(void) const
+{
+  return(Coordinate(_typeMetric.pixels_per_em.x,_typeMetric.pixels_per_em.y));
+}
+
 double Magick::TypeMetric::textHeight(void) const
 {
   return(_typeMetric.height);