summaryrefslogtreecommitdiff
path: root/dw/fltkplatform.cc
diff options
context:
space:
mode:
authorJohannes Hofmann <Johannes.Hofmann@gmx.de>2011-06-06 21:04:05 +0200
committerJohannes Hofmann <Johannes.Hofmann@gmx.de>2011-06-06 21:04:05 +0200
commitd0731e9ff6d6b8ce395605f9a01fb723073fc7ce (patch)
treee03d0babaa78fe5848997017abbfc53471d51ff5 /dw/fltkplatform.cc
parented854c3ebe04ef4a18db337fb97dd2511d3b9d91 (diff)
port preferred font code to fltk-1.3
Diffstat (limited to 'dw/fltkplatform.cc')
-rw-r--r--dw/fltkplatform.cc52
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;
}