diff options
author | Johannes Hofmann <Johannes.Hofmann@gmx.de> | 2011-06-06 21:04:05 +0200 |
---|---|---|
committer | Johannes Hofmann <Johannes.Hofmann@gmx.de> | 2011-06-06 21:04:05 +0200 |
commit | d0731e9ff6d6b8ce395605f9a01fb723073fc7ce (patch) | |
tree | e03d0babaa78fe5848997017abbfc53471d51ff5 /dw/fltkplatform.cc | |
parent | ed854c3ebe04ef4a18db337fb97dd2511d3b9d91 (diff) |
port preferred font code to fltk-1.3
Diffstat (limited to 'dw/fltkplatform.cc')
-rw-r--r-- | dw/fltkplatform.cc | 52 |
1 files changed, 30 insertions, 22 deletions
diff --git a/dw/fltkplatform.cc b/dw/fltkplatform.cc index 6d0b2ec4..2a04985a 100644 --- a/dw/fltkplatform.cc +++ b/dw/fltkplatform.cc @@ -75,30 +75,12 @@ Fl_Font FltkFont::FontFamily::get (int attrs) return font[idx]; } + + FltkFont::FltkFont (core::style::FontAttrs *attrs) { - if (!systemFonts) { - systemFonts = new container::typed::HashTable - <lout::object::ConstString, FontFamily> (true, true); - - int k = Fl::set_fonts ("-*"); - for (int i = 0; i < k; i++) { - int t; - Fl::get_font_name ((Fl_Font) i, &t); - const char *name = Fl::get_font ((Fl_Font) i); - object::String *familyName = new object::String(name + 1); - FontFamily *family = systemFonts->get (familyName); - - if (family) { - family->set ((Fl_Font) i, t); - delete familyName; - } else { - family = new FontFamily (); - family->set ((Fl_Font) i, t); - systemFonts->put (familyName, family); - } - } - } + if (!systemFonts) + initSystemFonts (); copyAttrs (attrs); @@ -129,9 +111,35 @@ FltkFont::~FltkFont () fontsTable->remove (this); } +void FltkFont::initSystemFonts () +{ + systemFonts = new container::typed::HashTable + <lout::object::ConstString, FontFamily> (true, true); + + int k = Fl::set_fonts ("-*"); + for (int i = 0; i < k; i++) { + int t; + Fl::get_font_name ((Fl_Font) i, &t); + const char *name = Fl::get_font ((Fl_Font) i); + object::String *familyName = new object::String(name + 1); + FontFamily *family = systemFonts->get (familyName); + + if (family) { + family->set ((Fl_Font) i, t); + delete familyName; + } else { + family = new FontFamily (); + family->set ((Fl_Font) i, t); + systemFonts->put (familyName, family); + } + } +} + bool FltkFont::fontExists (const char *name) { + if (!systemFonts) + initSystemFonts (); object::ConstString familyName (name); return systemFonts->get (&familyName) != NULL; } |