// -*- C++ -*-
+/* This file is part of
+ * ======================================================
+ *
+ * LyX, The Document Processor
+ *
+ * Copyright 1995 Matthias Ettrich
+ * Copyright 1995-2001 The LyX Team.
+ *
+ * ====================================================== */
+
#ifndef FONT_H
#define FONT_H
+#ifdef __GNUG__
+#pragma interface
+#endif
+
#include <X11/Xlib.h>
#include "LString.h"
//namespace lyx {
//namespace font {
-
+///
struct lyxfont {
-
+ ///
static
int maxAscent(LyXFont const & f);
-
+ ///
static
int maxDescent(LyXFont const & f);
-
+ ///
static
int ascent(char c, LyXFont const & f);
-
+ ///
static
int descent(char c, LyXFont const & f);
-
+ ///
static
int lbearing(char c, LyXFont const & f);
-
+ ///
static
int rbearing(char c, LyXFont const & f);
-
+ ///
static
int width(char c, LyXFont const & f) {
return width(&c, 1, f);
}
-
+ ///
static
- int width(char const * s, int n, LyXFont const & f);
-
+ int width(char const * s, size_t n, LyXFont const & f);
+ ///
static
int width(string const & s, LyXFont const & f) {
if (s.empty()) return 0;
- return width(s.c_str(), s.length(), f);
- }
-
- static
- int width(char const * s, LyXFont const & f) {
- return width(s, strlen(s), f);
+ return width(s.data(), s.length(), f);
}
-
+ ///
+ //static
+ //int width(char const * s, LyXFont const & f) {
+ // return width(s, strlen(s), f);
+ //}
+ ///
static
int signedWidth(string const & s, LyXFont const & f);
-
+ ///
static
- int XTextWidth(LyXFont const & f, char * str, int count);
-
+ int XTextWidth(LyXFont const & f, char const * str, int count);
+ ///
static
int width(XChar2b const * s, int n, LyXFont const & f);
-
+ ///
static
- int XTextWidth16(LyXFont const & f, XChar2b * str, int count);
-
+ int XTextWidth16(LyXFont const & f, XChar2b const * str, int count);
+ ///
static
void XSetFont(Display * display, GC gc, LyXFont const & f);
+ // A couple of more high-level metrics
+ ///
+ static
+ void rectText(string const & str, LyXFont const & font,
+ int & width, int & ascent, int & descent);
+ ///
+ static
+ void buttonText(string const & str, LyXFont const & font,
+ int & width, int & ascent, int & descent);
};
//} // end of namespace font