]> git.lyx.org Git - lyx.git/blobdiff - src/frontends/font_metrics.h
Minipage is no more (long live the box inset)
[lyx.git] / src / frontends / font_metrics.h
index 14d9d7dbdc7d0e5f8709837fd9a46bdbe2c38425..6a83b25d03c23940d56b0049ac76a2e3c25a4b52 100644 (file)
@@ -5,15 +5,16 @@
  * Licence details can be found in the file COPYING.
  *
  * \author unknown
- * \author John Levon 
+ * \author John Levon
  *
- * Full author contact details are available in file CREDITS
+ * Full author contact details are available in file CREDITS.
  */
 
 #ifndef FONT_METRICS_H
 #define FONT_METRICS_H
 
-#include "LString.h"
+#include <string>
+
 
 class LyXFont;
 
@@ -23,36 +24,48 @@ class LyXFont;
  *
  * The geometry is the standard typographical geometry,
  * as follows :
- *                                                                
+ *
  * --------------+------------------<maxAscent
  *               |          |
  *               <-------> (right bearing)
  *               <-> (left bearing)
  * char ascent>___          |
- *               ^   oooo   |  oooo              
- *   origin>____ |  oo  oo  | oo  oo             
- *              \|  oo  oo  | oo  oo             
- * --------------+---ooooo--|--oooo-<baseline  
- *               |      oo  |                 
- * char          |  oo  oo  |                
- * descent>______|   oooo   |                
+ *               ^   oooo   |  oooo
+ *   origin>____ |  oo  oo  | oo  oo
+ *              \|  oo  oo  | oo  oo
+ * --------------+---ooooo--|--oooo-<baseline
+ *               |      oo  |
+ * char          |  oo  oo  |
+ * descent>______|   oooo   |
  *               <-  width ->
  * --------------+----------+-------<maxDescent
- *  
+ *
  */
 namespace font_metrics {
        /// return the maximum ascent of the font
        int maxAscent(LyXFont const & f);
        /// return the maximum descent of the font
        int maxDescent(LyXFont const & f);
+       /// return the maximum descent of the font
+       inline int maxHeight(LyXFont const & f) {
+               return maxAscent(f) + maxDescent(f);
+       }
        /// return the ascent of the char in the font
        int ascent(char c, LyXFont const & f);
        /// return the descent of the char in the font
        int descent(char c, LyXFont const & f);
+       /// return the descent of the char in the font
+       inline int height(char c, LyXFont const & f) {
+               return ascent(c, f) + descent(c, f);
+       }
        /// return the left bearing of the char in the font
        int lbearing(char c, LyXFont const & f);
        /// return the right bearing of the char in the font
        int rbearing(char c, LyXFont const & f);
+       /// return the inner width of the char in the font
+       inline int center(char c, LyXFont const & f) {
+               return (rbearing(c, f) - lbearing(c, f)) / 2;
+       }
        /// return the width of the string in the font
        int width(char const * s, size_t n, LyXFont const & f);
        /// return the width of the char in the font
@@ -60,27 +73,26 @@ namespace font_metrics {
                return width(&c, 1, f);
        }
        /// return the width of the string in the font
-       inline int width(string const & s, LyXFont const & f) {
-               if (s.empty()) return 0;
-               return width(s.data(), s.length(), f);
+       inline int width(std::string const & s, LyXFont const & f) {
+               return s.empty() ? 0 : width(s.data(), s.length(), f);
        }
        /// FIXME ??
-       int signedWidth(string const & s, LyXFont const & f);
-       /** 
+       int signedWidth(std::string const & s, LyXFont const & f);
+       /**
         * fill in width,ascent,descent with the values for the
         * given string in the font.
         */
-       void rectText(string const & str, LyXFont const & font,
-               int & width, 
-               int & ascent, 
+       void rectText(std::string const & str, LyXFont const & font,
+               int & width,
+               int & ascent,
                int & descent);
-       /** 
+       /**
         * fill in width,ascent,descent with the values for the
         * given string in the font for a button.
         */
-       void buttonText(string const & str, LyXFont const & font,
-               int & width, 
-               int & ascent, 
+       void buttonText(std::string const & str, LyXFont const & font,
+               int & width,
+               int & ascent,
                int & descent);
 }