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:
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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:
|
||||
*
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user