summaryrefslogtreecommitdiff
path: root/src/drivers
diff options
context:
space:
mode:
authorManolo Gouy <Manolo>2016-04-02 15:37:03 +0000
committerManolo Gouy <Manolo>2016-04-02 15:37:03 +0000
commit6b6c71265f6c5453eb64338600747e2ecb6a6bed (patch)
tree5052f08259858b89285211b33b8716588ecb895a /src/drivers
parent7a8f307fca3d83992be177010b6135121c3efd8d (diff)
Complete removal of platform-dependent code from fl_set_font.cxx
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3-porting@11512 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
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$".
//