removed dep on i18n and used MB_CUR_MAX direct

This commit is contained in:
fluxgen 2002-08-04 15:36:19 +00:00
parent 024d181abb
commit b76f3ce744

View file

@ -19,12 +19,16 @@
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
// DEALINGS IN THE SOFTWARE. // DEALINGS IN THE SOFTWARE.
//$Id: Font.cc,v 1.6 2002/05/02 07:19:02 fluxgen Exp $ //$Id: Font.cc,v 1.7 2002/08/04 15:36:19 fluxgen Exp $
#include "Font.hh" #include "Font.hh"
#include "StringUtil.hh" #include "StringUtil.hh"
#ifdef HAVE_CONFIG_H
#include "../config.h"
#endif // HAVE_CONFIG_H
//use gnu extensions //use gnu extensions
#ifndef _GNU_SOURCE #ifndef _GNU_SOURCE
#define _GNU_SOURCE #define _GNU_SOURCE
@ -36,13 +40,9 @@
#include <string> #include <string>
#include <cstdio> #include <cstdio>
#ifdef HAVE_CONFIG_H
# include "../config.h"
#endif // HAVE_CONFIG_H
#ifdef HAVE_SETLOCALE #ifdef HAVE_SETLOCALE
#include <locale.h> #include <locale.h>
#endif //HAVE_SETLOCALE #endif //HAVE_SETLOCALE
#include "i18n.hh"
namespace FbTk namespace FbTk
{ {
@ -54,8 +54,11 @@ m_display(display) {
m_font.fontstruct = 0; m_font.fontstruct = 0;
m_font.set_extents = 0; m_font.set_extents = 0;
m_font.set = 0; m_font.set = 0;
//TODO: should only be done once
m_multibyte = I18n::instance()->multibyte(); // MB_CUR_MAX returns the size of a char in the current locale
if (MB_CUR_MAX > 1)
m_multibyte = true;
if (name!=0) { if (name!=0) {
load(name); load(name);
} }
@ -96,7 +99,7 @@ bool Font::loadFromDatabase(XrmDatabase &database, const char *rname, const char
XrmValue value; XrmValue value;
char *value_type; char *value_type;
//this should probably be moved to a Database class so we can keep //This should probably be moved to a Database class so we can keep
//track of database init //track of database init
if (XrmGetResource(database, rname, rclass, &value_type, &value)) { if (XrmGetResource(database, rname, rclass, &value_type, &value)) {
@ -109,7 +112,7 @@ bool Font::loadFromDatabase(XrmDatabase &database, const char *rname, const char
return false; return false;
} }
unsigned int Font::getTextWidth(const char *text, unsigned int size) const { unsigned int Font::textWidth(const char *text, unsigned int size) const {
if (text==0) if (text==0)
return 0; return 0;
if (multibyte()) { if (multibyte()) {
@ -126,11 +129,15 @@ unsigned int Font::getTextWidth(const char *text, unsigned int size) const {
return 0; return 0;
} }
unsigned int Font::getHeight() const { unsigned int Font::height() const {
if (multibyte() && getFontSetExtents()) if (!isLoaded())
return getFontSetExtents()->max_ink_extent.height; return 0;
if (getFontStruct())
return getFontStruct()->ascent + getFontStruct()->descent; if (multibyte() && fontSetExtents())
return fontSetExtents()->max_ink_extent.height;
if (fontStruct())
return fontStruct()->ascent + fontStruct()->descent;
return 0; return 0;
} }