ZynAddSubFX/FLTK: added Xft/Freetype2 support

Build FLTK with full Xft/Freetype2 support which means the ZynAddSubFX
GUI now has anti-aliased fonts.
This commit is contained in:
Tobias Doerffel
2009-04-13 01:28:34 +02:00
parent 1656f45734
commit c2f83e4157
5 changed files with 45 additions and 3 deletions

View File

@@ -105,7 +105,9 @@ LINK_LIBRARIES(${FFTW3F_LIBRARIES} -lz -lpthread ${CMAKE_CURRENT_BINARY_DIR}/flt
# FLTK needs X
IF(LMMS_BUILD_LINUX)
LINK_LIBRARIES(-lX11)
FIND_PACKAGE(X11)
FIND_PACKAGE(Freetype)
LINK_LIBRARIES(${X11_LIBRARIES} ${X11_Xft_LIB} ${FREETYPE_LIBRARY})
ENDIF(LMMS_BUILD_LINUX)
# link system-libraries when on win32

View File

@@ -65,6 +65,16 @@ ENDIF(APPLE)
IF(UNIX)
FIND_PACKAGE(X11)
SET( FLTK_PLATFORM_DEPENDENT_LIBS ${X11_LIBRARIES} -lm)
SET( FLTK_PLATFORM_DEPENDENT_LIBS ${X11_LIBRARIES} -lm)
SET(USE_XFT 0)
IF(X11_Xft_FOUND)
FIND_PACKAGE(Freetype)
IF(FREETYPE_FOUND)
SET(FOUND_XFT 1)
SET(FLTK_PLATFORM_DEPENDENT_LIBS ${FLTK_PLATFORM_DEPENDENT_LIBS} ${X11_Xft_LIB} ${FREETYPE_LIBRARIES})
INCLUDE_DIRECTORIES(${FREETYPE_INCLUDE_DIRS} ${X11_Xft_INCLUDE_PATH})
ENDIF(FREETYPE_FOUND)
ENDIF(X11_Xft_FOUND)
ENDIF(UNIX)
IF(APPLE AND NOT FLTK_APPLE_X11)

View File

@@ -65,10 +65,34 @@ extern FL_EXPORT int fl_screen;
extern FL_EXPORT XVisualInfo *fl_visual;
extern FL_EXPORT Colormap fl_colormap;
#if USE_XFT
// access to core fonts
FL_EXPORT XFontStruct* fl_xxfont();
class Fl_XFont_On_Demand
{
public:
Fl_XFont_On_Demand(XFontStruct* p = NULL) : ptr(p) { }
Fl_XFont_On_Demand& operator=(const Fl_XFont_On_Demand& x)
{ ptr = x.ptr; return *this; }
Fl_XFont_On_Demand& operator=(XFontStruct* p)
{ ptr = p; return *this; }
XFontStruct* value() { if (!ptr) { ptr = fl_xxfont(); } return ptr; }
operator XFontStruct*() { return value(); }
XFontStruct& operator*() { return *value(); }
XFontStruct* operator->() { return value(); }
bool operator==(const Fl_XFont_On_Demand& x) { return ptr == x.ptr; }
bool operator!=(const Fl_XFont_On_Demand& x) { return ptr != x.ptr; }
private:
XFontStruct* ptr;
};
extern FL_EXPORT Fl_XFont_On_Demand fl_xfont;
#else
extern FL_EXPORT XFontStruct* fl_xfont;
#endif
// drawing functions:
extern FL_EXPORT GC fl_gc;
extern FL_EXPORT Window fl_window;
extern FL_EXPORT XFontStruct* fl_xfont;
extern FL_EXPORT void *fl_xftfont;
FL_EXPORT ulong fl_xpixel(Fl_Color i);
FL_EXPORT ulong fl_xpixel(uchar r, uchar g, uchar b);

View File

@@ -80,8 +80,12 @@
* Use the new Xft library to draw anti-aliased text.
*/
#cmakedefine FOUND_XFT
#ifdef FOUND_XFT
#define USE_XFT 1
#else
#define USE_XFT 0
#endif
/*
* HAVE_XDBE:
*

View File

@@ -195,7 +195,9 @@ static Fl_FontSize* find(int fnum, int size) {
int fl_font_ = 0;
int fl_size_ = 0;
#if USE_XFT != 1
XFontStruct* fl_xfont = 0;
#endif
void *fl_xftfont = 0;
static GC font_gc;