diff options
| author | Michael R Sweet <michael.r.sweet@gmail.com> | 1998-10-06 18:21:25 +0000 |
|---|---|---|
| committer | Michael R Sweet <michael.r.sweet@gmail.com> | 1998-10-06 18:21:25 +0000 |
| commit | f9039b2ae21988783feae9b362818e7923e82d14 (patch) | |
| tree | 6d6fe3679d73448758f9794e7d4d4f6b22a4adad /src/fl_set_font.cxx | |
| parent | 67e89232f9ba067825a158734a09e0fa21aacbe3 (diff) | |
Initial revision
git-svn-id: file:///fltk/svn/fltk/trunk@2 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
Diffstat (limited to 'src/fl_set_font.cxx')
| -rw-r--r-- | src/fl_set_font.cxx | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/src/fl_set_font.cxx b/src/fl_set_font.cxx new file mode 100644 index 000000000..2d166bf9f --- /dev/null +++ b/src/fl_set_font.cxx @@ -0,0 +1,51 @@ +// fl_set_font.C + +// Add a font to the internal table. +// Also see fl_set_fonts.C which adds all possible fonts. + +#include <config.h> +#include <FL/Fl.H> +#include <FL/x.H> +#include "Fl_Font.H" +#include <stdlib.h> +#include <string.h> + +static int table_size; + +void Fl::set_font(Fl_Font fnum, const char *name) { + if (fnum >= table_size) { + int i = table_size; + if (!i) { // don't realloc the built-in table + table_size = 2*FL_FREE_FONT; + i = FL_FREE_FONT; + Fl_Fontdesc *t = (Fl_Fontdesc*)malloc(table_size*sizeof(Fl_Fontdesc)); + memcpy(t, fl_fonts, FL_FREE_FONT*sizeof(Fl_Fontdesc)); + fl_fonts = t; + } else { + table_size = 2*table_size; + fl_fonts=(Fl_Fontdesc*)realloc(fl_fonts, table_size*sizeof(Fl_Fontdesc)); + } + for (; i < table_size; i++) fl_fonts[i].name = 0; + } + Fl_Fontdesc *s = fl_fonts+fnum; + if (s->name) { + if (!strcmp(s->name, name)) {s->name = name; return;} +#ifndef WIN32 + if (s->xlist && s->n >= 0) XFreeFontNames(s->xlist); +#endif + for (Fl_XFont *f = s->first; f;) { +#ifndef WIN32 + if (f == fl_fixed_xfont) break; +#endif + Fl_XFont *n = f->next; delete f; f = n; + } + s->first = 0; + } + s->name = name; +#ifndef WIN32 + s->xlist = 0; +#endif + s->first = 0; +} + +const char *Fl::get_font(Fl_Font fnum) {return fl_fonts[fnum].name;} |
