summaryrefslogtreecommitdiff
path: root/src/drivers
diff options
context:
space:
mode:
Diffstat (limited to 'src/drivers')
-rw-r--r--src/drivers/Cocoa/Fl_Cocoa_Screen_Driver.cxx24
-rw-r--r--src/drivers/Quartz/Fl_Font.H2
-rw-r--r--src/drivers/WinAPI/Fl_WinAPI_Screen_Driver.cxx23
-rw-r--r--src/drivers/X11/Fl_X11_Screen_Driver.cxx25
4 files changed, 72 insertions, 2 deletions
diff --git a/src/drivers/Cocoa/Fl_Cocoa_Screen_Driver.cxx b/src/drivers/Cocoa/Fl_Cocoa_Screen_Driver.cxx
index 1f68fd8d8..2c9f693fc 100644
--- a/src/drivers/Cocoa/Fl_Cocoa_Screen_Driver.cxx
+++ b/src/drivers/Cocoa/Fl_Cocoa_Screen_Driver.cxx
@@ -19,6 +19,7 @@
#include "../../config_lib.h"
#include "Fl_Cocoa_Screen_Driver.H"
+#include "../Quartz/Fl_Font.H"
#include <FL/Fl.H>
#include <FL/x.H>
#include <FL/Fl_Graphics_Driver.H>
@@ -301,6 +302,29 @@ int Fl_Cocoa_Screen_Driver::compose(int &del) {
return 1;
}
+unsigned Fl_Screen_Driver::font_desc_size() {
+ return (unsigned)sizeof(Fl_Fontdesc);
+}
+
+const char *Fl_Screen_Driver::font_name(int num) {
+ if (!fl_fonts) fl_fonts = Fl_Screen_Driver::calc_fl_fonts();
+ return fl_fonts[num].name;
+}
+
+void Fl_Screen_Driver::font_name(int num, const char *name) {
+ Fl_Fontdesc *s = fl_fonts + num;
+ if (s->name) {
+ if (!strcmp(s->name, name)) {s->name = name; return;}
+ for (Fl_Font_Descriptor* f = s->first; f;) {
+ Fl_Font_Descriptor* n = f->next; delete f; f = n;
+ }
+ s->first = 0;
+ }
+ s->name = name;
+ s->fontname[0] = 0;
+ s->first = 0;
+}
+
//
// End of "$Id$".
//
diff --git a/src/drivers/Quartz/Fl_Font.H b/src/drivers/Quartz/Fl_Font.H
index 8d4b7d23f..22056eba2 100644
--- a/src/drivers/Quartz/Fl_Font.H
+++ b/src/drivers/Quartz/Fl_Font.H
@@ -63,8 +63,6 @@ struct Fl_Fontdesc {
const char *name;
char fontname[128]; // "Pretty" font name
Fl_Font_Descriptor *first; // linked list of sizes of this style
- char **xlist; // matched X font names
- int n; // size of xlist, negative = don't free xlist!
};
extern FL_EXPORT Fl_Fontdesc *fl_fonts; // the table
diff --git a/src/drivers/WinAPI/Fl_WinAPI_Screen_Driver.cxx b/src/drivers/WinAPI/Fl_WinAPI_Screen_Driver.cxx
index a0db7bad0..7dd7df843 100644
--- a/src/drivers/WinAPI/Fl_WinAPI_Screen_Driver.cxx
+++ b/src/drivers/WinAPI/Fl_WinAPI_Screen_Driver.cxx
@@ -19,6 +19,7 @@
#include "../../config_lib.h"
#include "Fl_WinAPI_Screen_Driver.H"
+#include "../GDI/Fl_Font.H"
#include <FL/Fl.H>
#include <FL/x.H>
#include <FL/Fl_Graphics_Driver.H>
@@ -530,6 +531,28 @@ struct Fl_Fontdesc *Fl_Screen_Driver::calc_fl_fonts() {
return NULL;
}
+unsigned Fl_Screen_Driver::font_desc_size() {
+ return (unsigned)sizeof(Fl_Fontdesc);
+}
+
+const char *Fl_Screen_Driver::font_name(int num) {
+ return fl_fonts[num].name;
+}
+
+void Fl_Screen_Driver::font_name(int num, const char *name) {
+ Fl_Fontdesc *s = fl_fonts + num;
+ if (s->name) {
+ if (!strcmp(s->name, name)) {s->name = name; return;}
+ for (Fl_Font_Descriptor* f = s->first; f;) {
+ Fl_Font_Descriptor* n = f->next; delete f; f = n;
+ }
+ s->first = 0;
+ }
+ s->name = name;
+ s->fontname[0] = 0;
+ s->first = 0;
+}
+
//
// End of "$Id$".
// \ No newline at end of file
diff --git a/src/drivers/X11/Fl_X11_Screen_Driver.cxx b/src/drivers/X11/Fl_X11_Screen_Driver.cxx
index 213613ce1..b07bfb8c5 100644
--- a/src/drivers/X11/Fl_X11_Screen_Driver.cxx
+++ b/src/drivers/X11/Fl_X11_Screen_Driver.cxx
@@ -19,6 +19,7 @@
#include "../../config_lib.h"
#include "Fl_X11_Screen_Driver.H"
+#include "../xlib/Fl_Font.H"
#include <FL/Fl.H>
#include <FL/x.H>
#include <FL/fl_ask.H>
@@ -640,6 +641,30 @@ struct Fl_Fontdesc *Fl_Screen_Driver::calc_fl_fonts() {
return NULL;
}
+unsigned Fl_Screen_Driver::font_desc_size() {
+ return (unsigned)sizeof(Fl_Fontdesc);
+}
+
+const char *Fl_Screen_Driver::font_name(int num) {
+ return fl_fonts[num].name;
+}
+
+void Fl_Screen_Driver::font_name(int num, const char *name) {
+ Fl_Fontdesc *s = fl_fonts + num;
+ if (s->name) {
+ if (!strcmp(s->name, name)) {s->name = name; return;}
+ if (s->xlist && s->n >= 0) XFreeFontNames(s->xlist);
+ for (Fl_Font_Descriptor* f = s->first; f;) {
+ Fl_Font_Descriptor* n = f->next; delete f; f = n;
+ }
+ s->first = 0;
+ }
+ s->name = name;
+ s->fontname[0] = 0;
+ s->xlist = 0;
+ s->first = 0;
+}
+
//
// End of "$Id$".
//