From d011d5b4f060166f87fc44594f7f31ddf6b652e9 Mon Sep 17 00:00:00 2001 From: Manolo Gouy Date: Sat, 2 Apr 2016 13:22:48 +0000 Subject: Replace src/Fl_Font.H by one file for each platform. This file contained nearly only platform-specific code. git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3-porting@11507 ea41ed52-d2ee-0310-a9c1-e6b18d33e121 --- src/drivers/GDI/Fl_Font.H | 70 ++++++++++++++++++ src/drivers/GDI/Fl_GDI_Graphics_Driver_font.cxx | 2 +- src/drivers/Quartz/Fl_Font.H | 76 ++++++++++++++++++++ .../Quartz/Fl_Quartz_Graphics_Driver_font.cxx | 9 +-- src/drivers/WinAPI/Fl_WinAPI_Screen_Driver.cxx | 4 ++ src/drivers/X11/Fl_X11_Screen_Driver.cxx | 4 ++ src/drivers/Xlib/Fl_Font.H | 82 ++++++++++++++++++++++ .../Xlib/Fl_Xlib_Graphics_Driver_font_x.cxx | 2 +- .../Xlib/Fl_Xlib_Graphics_Driver_font_xft.cxx | 2 +- 9 files changed, 244 insertions(+), 7 deletions(-) create mode 100644 src/drivers/GDI/Fl_Font.H create mode 100644 src/drivers/Quartz/Fl_Font.H create mode 100644 src/drivers/Xlib/Fl_Font.H (limited to 'src/drivers') diff --git a/src/drivers/GDI/Fl_Font.H b/src/drivers/GDI/Fl_Font.H new file mode 100644 index 000000000..c6d467cc3 --- /dev/null +++ b/src/drivers/GDI/Fl_Font.H @@ -0,0 +1,70 @@ +// +// "$Id: Fl_Font.H 11506 2016-04-02 11:58:13Z manolo $" +// +// Font definitions for the Fast Light Tool Kit (FLTK). +// +// Copyright 1998-2011 by Bill Spitzak and others. +// +// This library is free software. Distribution and use rights are outlined in +// the file "COPYING" which should have been included with this file. If this +// file is missing or damaged, see the license at: +// +// http://www.fltk.org/COPYING.php +// +// Please report all bugs and problems on the following page: +// +// http://www.fltk.org/str.php +// + +// Two internal fltk data structures: +// +// Fl_Fontdesc: an entry into the fl_font() table. There is one of these +// for each fltk font number. +// +#ifndef FL_FONT_ +#define FL_FONT_ + +#include + +/** + This a structure for an actual system font, with junk to + help choose it and info on character sizes. Each Fl_Fontdesc has a + linked list of these. These are created the first time each system + font/size combination is used. +*/ +class Fl_Font_Descriptor { +public: + /** linked list for this Fl_Fontdesc */ + Fl_Font_Descriptor *next; + Fl_Fontsize size; /**< font size */ +#ifndef FL_DOXYGEN // don't bother with platorm dependant details in the doc. + HFONT fid; + int *width[64]; + TEXTMETRIC metr; + int angle; + FL_EXPORT Fl_Font_Descriptor(const char* fontname, Fl_Fontsize size); +# if HAVE_GL + unsigned int listbase;// base of display list, 0 = none + char glok[64]; +# endif // HAVE_GL + + FL_EXPORT ~Fl_Font_Descriptor(); + +#endif // FL_DOXYGEN +}; + +//extern FL_EXPORT Fl_Font_Descriptor *fl_fontsize; // the currently selected one + +struct Fl_Fontdesc { + const char *name; + char fontname[128]; // "Pretty" font name + Fl_Font_Descriptor *first; // linked list of sizes of this style +}; + +extern FL_EXPORT Fl_Fontdesc *fl_fonts; // the table + +#endif + +// +// End of "$Id: Fl_Font.H 11506 2016-04-02 11:58:13Z manolo $". +// diff --git a/src/drivers/GDI/Fl_GDI_Graphics_Driver_font.cxx b/src/drivers/GDI/Fl_GDI_Graphics_Driver_font.cxx index 9de668c69..3f1b31223 100644 --- a/src/drivers/GDI/Fl_GDI_Graphics_Driver_font.cxx +++ b/src/drivers/GDI/Fl_GDI_Graphics_Driver_font.cxx @@ -41,7 +41,7 @@ #include #include #include -#include "../../Fl_Font.H" +#include "Fl_Font.H" #include #include diff --git a/src/drivers/Quartz/Fl_Font.H b/src/drivers/Quartz/Fl_Font.H new file mode 100644 index 000000000..8d4b7d23f --- /dev/null +++ b/src/drivers/Quartz/Fl_Font.H @@ -0,0 +1,76 @@ +// +// "$Id: Fl_Font.H 11506 2016-04-02 11:58:13Z manolo $" +// +// Font definitions for the Fast Light Tool Kit (FLTK). +// +// Copyright 1998-2011 by Bill Spitzak and others. +// +// This library is free software. Distribution and use rights are outlined in +// the file "COPYING" which should have been included with this file. If this +// file is missing or damaged, see the license at: +// +// http://www.fltk.org/COPYING.php +// +// Please report all bugs and problems on the following page: +// +// http://www.fltk.org/str.php +// + +// Two internal fltk data structures: +// +// Fl_Fontdesc: an entry into the fl_font() table. There is one of these +// for each fltk font number. +// +#ifndef FL_FONT_ +#define FL_FONT_ + +#include +#include + +/** + This a structure for an actual system font, with junk to + help choose it and info on character sizes. Each Fl_Fontdesc has a + linked list of these. These are created the first time each system + font/size combination is used. +*/ +class Fl_Font_Descriptor { +public: + /** linked list for this Fl_Fontdesc */ + Fl_Font_Descriptor *next; + Fl_Fontsize size; /**< font size */ +#ifndef FL_DOXYGEN // don't bother with platorm dependant details in the doc. + Fl_Font_Descriptor(const char* fontname, Fl_Fontsize size); + ATSUTextLayout layout; +# if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5 + CTFontRef fontref; + // the unicode span is divided in 512 blocks of 128 characters + float *width[512]; // array of arrays of character widths +# endif + ATSUStyle style; + short ascent, descent, q_width; +# if HAVE_GL + unsigned int listbase;// base of display list, 0 = none +# endif // HAVE_GL + + FL_EXPORT ~Fl_Font_Descriptor(); + +#endif // FL_DOXYGEN +}; + +//extern FL_EXPORT Fl_Font_Descriptor *fl_fontsize; // the currently selected one + +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 + +#endif + +// +// End of "$Id: Fl_Font.H 11506 2016-04-02 11:58:13Z manolo $". +// diff --git a/src/drivers/Quartz/Fl_Quartz_Graphics_Driver_font.cxx b/src/drivers/Quartz/Fl_Quartz_Graphics_Driver_font.cxx index 9e51a97a1..eca6fb5d2 100644 --- a/src/drivers/Quartz/Fl_Quartz_Graphics_Driver_font.cxx +++ b/src/drivers/Quartz/Fl_Quartz_Graphics_Driver_font.cxx @@ -25,6 +25,7 @@ #include #include #include +#include Fl_Fontdesc* fl_fonts = NULL; @@ -48,7 +49,7 @@ static const int CoreText_threshold = 100500; // this represents Mac OS 10.5 // turn a stored font name into a pretty name: const char* Fl::get_font_name(Fl_Font fnum, int* ap) { - if (!fl_fonts) fl_fonts = Fl_X::calc_fl_fonts(); + if (!fl_fonts) fl_fonts = Fl_Screen_Driver::calc_fl_fonts(); Fl_Fontdesc *f = fl_fonts + fnum; if (!f->fontname[0]) { #if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5 @@ -200,7 +201,7 @@ else { int Fl::get_font_sizes(Fl_Font fnum, int*& sizep) { static int array[128]; - if (!fl_fonts) fl_fonts = Fl_X::calc_fl_fonts(); + if (!fl_fonts) fl_fonts = Fl_Screen_Driver::calc_fl_fonts(); Fl_Fontdesc *s = fl_fonts+fnum; if (!s->name) s = fl_fonts; // empty slot in table, use entry 0 int cnt = 0; @@ -416,7 +417,7 @@ static UniChar *mac_Utf8_to_Utf16(const char *txt, int len, int *new_len) return utfWbuf; } // mac_Utf8_to_Utf16 -Fl_Fontdesc* Fl_X::calc_fl_fonts(void) +Fl_Fontdesc* Fl_Screen_Driver::calc_fl_fonts(void) { if (!fl_mac_os_version) fl_mac_os_version = Fl_Darwin_System_Driver::calc_mac_os_version(); #if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5 @@ -427,7 +428,7 @@ Fl_Fontdesc* Fl_X::calc_fl_fonts(void) } static Fl_Font_Descriptor* find(Fl_Font fnum, Fl_Fontsize size) { - if (!fl_fonts) fl_fonts = Fl_X::calc_fl_fonts(); + if (!fl_fonts) fl_fonts = Fl_Screen_Driver::calc_fl_fonts(); Fl_Fontdesc* s = fl_fonts+fnum; if (!s->name) s = fl_fonts; // use 0 if fnum undefined Fl_Font_Descriptor* f; diff --git a/src/drivers/WinAPI/Fl_WinAPI_Screen_Driver.cxx b/src/drivers/WinAPI/Fl_WinAPI_Screen_Driver.cxx index 7cca121db..a0db7bad0 100644 --- a/src/drivers/WinAPI/Fl_WinAPI_Screen_Driver.cxx +++ b/src/drivers/WinAPI/Fl_WinAPI_Screen_Driver.cxx @@ -526,6 +526,10 @@ int Fl_WinAPI_Screen_Driver::compose(int &del) { return 1; } +struct Fl_Fontdesc *Fl_Screen_Driver::calc_fl_fonts() { + return NULL; +} + // // 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 530e18e4a..213613ce1 100644 --- a/src/drivers/X11/Fl_X11_Screen_Driver.cxx +++ b/src/drivers/X11/Fl_X11_Screen_Driver.cxx @@ -636,6 +636,10 @@ int Fl_X11_Screen_Driver::text_display_can_leak() { #endif } +struct Fl_Fontdesc *Fl_Screen_Driver::calc_fl_fonts() { + return NULL; +} + // // End of "$Id$". // diff --git a/src/drivers/Xlib/Fl_Font.H b/src/drivers/Xlib/Fl_Font.H new file mode 100644 index 000000000..d04bc9e33 --- /dev/null +++ b/src/drivers/Xlib/Fl_Font.H @@ -0,0 +1,82 @@ +// +// "$Id: Fl_Font.H 11506 2016-04-02 11:58:13Z manolo $" +// +// Font definitions for the Fast Light Tool Kit (FLTK). +// +// Copyright 1998-2011 by Bill Spitzak and others. +// +// This library is free software. Distribution and use rights are outlined in +// the file "COPYING" which should have been included with this file. If this +// file is missing or damaged, see the license at: +// +// http://www.fltk.org/COPYING.php +// +// Please report all bugs and problems on the following page: +// +// http://www.fltk.org/str.php +// + +// Two internal fltk data structures: +// +// Fl_Fontdesc: an entry into the fl_font() table. There is one of these +// for each fltk font number. +// +#ifndef FL_FONT_ +#define FL_FONT_ + +#include + +#if USE_XFT +typedef struct _XftFont XftFont; +#else +# include "../../Xutf8.h" +#endif // USE_XFT + +/** + This a structure for an actual system font, with junk to + help choose it and info on character sizes. Each Fl_Fontdesc has a + linked list of these. These are created the first time each system + font/size combination is used. +*/ +class Fl_Font_Descriptor { +public: + /** linked list for this Fl_Fontdesc */ + Fl_Font_Descriptor *next; + Fl_Fontsize size; /**< font size */ +#ifndef FL_DOXYGEN // don't bother with platorm dependant details in the doc. +# if USE_XFT + XftFont* font; + //const char* encoding; + int angle; + FL_EXPORT Fl_Font_Descriptor(const char* xfontname, Fl_Fontsize size, int angle); +# else + XUtf8FontStruct* font; // X UTF-8 font information + FL_EXPORT Fl_Font_Descriptor(const char* xfontname); +# endif +# if HAVE_GL + unsigned int listbase;// base of display list, 0 = none + char glok[64]; +# endif // HAVE_GL + + FL_EXPORT ~Fl_Font_Descriptor(); + +#endif // FL_DOXYGEN +}; + +//extern FL_EXPORT Fl_Font_Descriptor *fl_fontsize; // the currently selected one + +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 + +#endif + +// +// End of "$Id: Fl_Font.H 11506 2016-04-02 11:58:13Z manolo $". +// diff --git a/src/drivers/Xlib/Fl_Xlib_Graphics_Driver_font_x.cxx b/src/drivers/Xlib/Fl_Xlib_Graphics_Driver_font_x.cxx index d364030e5..0d64ee09b 100644 --- a/src/drivers/Xlib/Fl_Xlib_Graphics_Driver_font_x.cxx +++ b/src/drivers/Xlib/Fl_Xlib_Graphics_Driver_font_x.cxx @@ -22,7 +22,7 @@ #include #include #include -#include "../../Fl_Font.H" +#include "Fl_Font.H" #include #include diff --git a/src/drivers/Xlib/Fl_Xlib_Graphics_Driver_font_xft.cxx b/src/drivers/Xlib/Fl_Xlib_Graphics_Driver_font_xft.cxx index 582870e85..d6563eabe 100644 --- a/src/drivers/Xlib/Fl_Xlib_Graphics_Driver_font_xft.cxx +++ b/src/drivers/Xlib/Fl_Xlib_Graphics_Driver_font_xft.cxx @@ -22,7 +22,7 @@ #include #include #include -#include "../../Fl_Font.H" +#include "Fl_Font.H" #include #include -- cgit v1.2.3