diff options
| -rw-r--r-- | CMake/options.cmake | 93 | ||||
| -rw-r--r-- | src/Fl_x.cxx | 41 | ||||
| -rw-r--r-- | src/drivers/X11/Fl_X11_Gl_Window_Driver.H | 4 | ||||
| -rw-r--r-- | src/drivers/X11/Fl_X11_Gl_Window_Driver.cxx | 10 | ||||
| -rw-r--r-- | src/drivers/X11/Fl_X11_Screen_Driver.H | 6 | ||||
| -rw-r--r-- | src/drivers/X11/Fl_X11_Screen_Driver.cxx | 24 | ||||
| -rw-r--r-- | src/drivers/X11/Fl_X11_Window_Driver.H | 10 | ||||
| -rw-r--r-- | src/drivers/X11/Fl_X11_Window_Driver.cxx | 6 | ||||
| -rw-r--r-- | src/drivers/X11/fl_X11_platform_init.cxx | 4 | ||||
| -rw-r--r-- | src/drivers/Xlib/Fl_Font.H | 4 | ||||
| -rw-r--r-- | src/drivers/Xlib/Fl_Xlib_Graphics_Driver.cxx | 8 | ||||
| -rw-r--r-- | src/fl_dnd_x.cxx | 8 | ||||
| -rw-r--r-- | src/xutf8/lcUniConv/cp936ext.h | 14 |
13 files changed, 81 insertions, 151 deletions
diff --git a/CMake/options.cmake b/CMake/options.cmake index 2677abee4..6c06ca9c1 100644 --- a/CMake/options.cmake +++ b/CMake/options.cmake @@ -280,6 +280,9 @@ if(UNIX) option(FLTK_BACKEND_WAYLAND "support the Wayland backend" ON) endif(NOT APPLE) if(FLTK_BACKEND_WAYLAND) + if(NOT PKG_CONFIG_FOUND) + message(FATAL_ERROR "Option FLTK_BACKEND_WAYLAND requires availability of pkg-config on the build machine.") + endif(NOT PKG_CONFIG_FOUND) pkg_check_modules(WLDCLIENT IMPORTED_TARGET wayland-client>=1.18) pkg_check_modules(WLDCURSOR IMPORTED_TARGET wayland-cursor) pkg_check_modules(WLDPROTO IMPORTED_TARGET wayland-protocols>=1.15) @@ -323,7 +326,6 @@ if(UNIX) if(NOT X11_Xft_FOUND) message(WARNING "Install development headers for libXft (e.g., libxft-dev)") endif() - set(USE_XFT 1) if(NOT X11_Xcursor_FOUND) message(WARNING "Install development headers for libXcursor (e.g., libxcursor-dev)") endif() @@ -829,11 +831,13 @@ endif(FLTK_USE_XCURSOR) ####################################################################### if(X11_Xft_FOUND) - option(FLTK_USE_XFT "use lib Xft" ON) option(FLTK_USE_PANGO "use lib Pango" OFF) if(NOT FLTK_BACKEND_WAYLAND) option(FLTK_GRAPHICS_CAIRO "all drawing to X11 windows uses Cairo" OFF) endif(NOT FLTK_BACKEND_WAYLAND) + if(NOT FLTK_GRAPHICS_CAIRO) + option(FLTK_USE_XFT "use lib Xft" ON) + endif() endif(X11_Xft_FOUND) # test option compatibility: Cairo for Xlib requires Pango @@ -842,19 +846,19 @@ if(FLTK_GRAPHICS_CAIRO) set(FLTK_USE_PANGO TRUE CACHE BOOL "use lib Pango") endif(FLTK_GRAPHICS_CAIRO) -if(FLTK_USE_X11 AND (FLTK_USE_PANGO OR FLTK_GRAPHICS_CAIRO)) # implies to use PANGOXFT +if(FLTK_USE_X11 AND FLTK_USE_PANGO AND NOT FLTK_GRAPHICS_CAIRO) set(USE_PANGOXFT true) endif() -# test option compatibility: Pango requires Xft +# test option compatibility: PangoXft requires Xft if(USE_PANGOXFT) if(NOT X11_Xft_FOUND) - message(STATUS "Pango requires Xft but Xft library or headers could not be found.") + message(STATUS "PangoXft requires Xft but Xft library or headers could not be found.") message(STATUS "Please install Xft development files and try again or disable FLTK_USE_PANGO.") message(FATAL_ERROR "*** Aborting ***") else() if(NOT FLTK_USE_XFT) - message(STATUS "Pango requires Xft but usage of Xft was disabled.") + message(STATUS "PangoXft requires Xft but usage of Xft was disabled.") message(STATUS "Please enable FLTK_USE_XFT and try again or disable FLTK_USE_PANGO.") message(FATAL_ERROR "*** Aborting ***") endif(NOT FLTK_USE_XFT) @@ -863,6 +867,9 @@ endif(USE_PANGOXFT) ####################################################################### if((X11_Xft_FOUND OR NOT USE_PANGOXFT) AND FLTK_USE_PANGO) + if(NOT PKG_CONFIG_FOUND) + message(FATAL_ERROR "Option FLTK_USE_PANGO requires availability of pkg-config on the build machine.") + endif(NOT PKG_CONFIG_FOUND) pkg_check_modules(CAIRO IMPORTED_TARGET cairo) if(USE_PANGOXFT) pkg_check_modules(PANGOXFT IMPORTED_TARGET pangoxft) @@ -877,23 +884,6 @@ if((X11_Xft_FOUND OR NOT USE_PANGOXFT) AND FLTK_USE_PANGO) endif(USE_PANGOXFT) list(APPEND FLTK_BUILD_INCLUDE_DIRECTORIES ${CAIRO_INCLUDE_DIRS}) - find_library(HAVE_LIB_PANGO pango-1.0 ${CMAKE_LIBRARY_PATH}) - mark_as_advanced(HAVE_LIB_PANGO) - - if(USE_PANGOXFT) - find_library(HAVE_LIB_PANGOXFT pangoxft-1.0 ${CMAKE_LIBRARY_PATH}) - mark_as_advanced(HAVE_LIB_PANGOXFT) - endif(USE_PANGOXFT) - - find_library(HAVE_LIB_PANGOCAIRO pangocairo-1.0 ${CMAKE_LIBRARY_PATH}) - mark_as_advanced(HAVE_LIB_PANGOCAIRO) - - find_library(HAVE_LIB_CAIRO cairo ${CMAKE_LIBRARY_PATH}) - mark_as_advanced(HAVE_LIB_CAIRO) - - find_library(HAVE_LIB_GOBJECT gobject-2.0 ${CMAKE_LIBRARY_PATH}) - mark_as_advanced(HAVE_LIB_GOBJECT) - set(USE_PANGO TRUE) # add required libraries to fltk-config ... @@ -902,62 +892,6 @@ if((X11_Xft_FOUND OR NOT USE_PANGOXFT) AND FLTK_USE_PANGO) endif(USE_PANGOXFT) list(APPEND FLTK_LDLIBS ${PANGOCAIRO_LDFLAGS}) - # *FIXME* Libraries should not be added explicitly if possible - if(FLTK_BACKEND_WAYLAND AND FLTK_USE_LIBDECOR_GTK AND NOT USE_SYSTEM_LIBDECOR) - list(APPEND FLTK_LDLIBS -lgtk-3 -lgdk-3 -lgio-2.0) - endif() - if(FLTK_BACKEND_X11) - list(APPEND FLTK_LDLIBS -lX11) - endif() - - if(APPLE) - get_filename_component(PANGO_L_PATH ${HAVE_LIB_PANGO} PATH) - set(LDFLAGS "${LDFLAGS} -L${PANGO_L_PATH}") - endif(APPLE) - - else() - - # this covers Debian, Ubuntu, FreeBSD, NetBSD, Darwin - if(APPLE AND FLTK_BACKEND_X11) - find_file(FINK_PREFIX NAMES /opt/sw /sw) - if(FINK_PREFIX) - list(APPEND CMAKE_INCLUDE_PATH ${FINK_PREFIX}/include) - list(APPEND FLTK_BUILD_INCLUDE_DIRECTORIES ${FINK_PREFIX}/include/cairo) - list(APPEND CMAKE_LIBRARY_PATH ${FINK_PREFIX}/lib) - endif(FINK_PREFIX) - endif(APPLE AND FLTK_BACKEND_X11) - - find_file(HAVE_PANGO_H pango-1.0/pango/pango.h ${CMAKE_INCLUDE_PATH}) - find_file(HAVE_PANGOXFT_H pango-1.0/pango/pangoxft.h ${CMAKE_INCLUDE_PATH}) - - if(HAVE_PANGO_H AND HAVE_PANGOXFT_H) - find_library(HAVE_LIB_PANGO pango-1.0 ${CMAKE_LIBRARY_PATH}) - find_library(HAVE_LIB_PANGOXFT pangoxft-1.0 ${CMAKE_LIBRARY_PATH}) - if(APPLE) - set(HAVE_LIB_GOBJECT TRUE) - else() - find_library(HAVE_LIB_GOBJECT gobject-2.0 ${CMAKE_LIBRARY_PATH}) - endif(APPLE) - endif(HAVE_PANGO_H AND HAVE_PANGOXFT_H) - - if(HAVE_LIB_PANGO AND HAVE_LIB_PANGOXFT AND HAVE_LIB_GOBJECT) - set(USE_PANGO TRUE) - # remove last 3 components of HAVE_PANGO_H and put in PANGO_H_PREFIX - get_filename_component(PANGO_H_PREFIX ${HAVE_PANGO_H} PATH) - get_filename_component(PANGO_H_PREFIX ${PANGO_H_PREFIX} PATH) - get_filename_component(PANGO_H_PREFIX ${PANGO_H_PREFIX} PATH) - - get_filename_component(PANGOLIB_DIR ${HAVE_LIB_PANGO} PATH) - # glib.h is usually in ${PANGO_H_PREFIX}/glib-2.0/ ... - find_path(GLIB_H_PATH glib.h - PATHS ${PANGO_H_PREFIX}/glib-2.0 - ${PANGO_H_PREFIX}/glib/glib-2.0) - list(APPEND FLTK_BUILD_INCLUDE_DIRECTORIES ${PANGO_H_PREFIX}/pango-1.0 ${GLIB_H_PATH} ${PANGOLIB_DIR}/glib-2.0/include) - - # *FIXME* Libraries should not be added explicitly if possible - list(APPEND FLTK_LDLIBS -lpango-1.0 -lpangoxft-1.0 -lgobject-2.0) - - endif(HAVE_LIB_PANGO AND HAVE_LIB_PANGOXFT AND HAVE_LIB_GOBJECT) endif((PANGOXFT_FOUND OR NOT USE_PANGOXFT) AND PANGOCAIRO_FOUND AND CAIRO_FOUND) if(USE_PANGO AND (FLTK_GRAPHICS_CAIRO OR FLTK_BACKEND_WAYLAND)) @@ -974,6 +908,7 @@ if(FLTK_BACKEND_WAYLAND) pkg_check_modules(GTK IMPORTED_TARGET gtk+-3.0) if(GTK_FOUND) list(APPEND FLTK_BUILD_INCLUDE_DIRECTORIES ${GTK_INCLUDE_DIRS}) + list(APPEND FLTK_LDLIBS ${GTK_LDFLAGS}) else() message(WARNING "Installation of the development files for the GTK library " "(e.g., libgtk-3-dev) is recommended when using the gnome desktop.") diff --git a/src/Fl_x.cxx b/src/Fl_x.cxx index 3193024ce..69db31b8c 100644 --- a/src/Fl_x.cxx +++ b/src/Fl_x.cxx @@ -327,7 +327,10 @@ extern "C" { } } + +#if !(USE_XFT || FLTK_USE_CAIRO) extern char *fl_get_font_xfld(int fnum, int size); +#endif void Fl_X11_Screen_Driver::new_ic() { @@ -343,7 +346,7 @@ void Fl_X11_Screen_Driver::new_ic() int sarea = 0; XIMStyles* xim_styles = NULL; -#if USE_XFT +#if USE_XFT || FLTK_USE_CAIRO #if defined(__GNUC__) // FIXME: warning XFT support here @@ -662,7 +665,7 @@ int Fl_X11_Screen_Driver::get_mouse_unscaled(int &mx, int &my) { Window root = RootWindow(fl_display, fl_screen); Window c; int cx,cy; unsigned int mask; XQueryPointer(fl_display, root, &root, &c, &mx, &my, &cx, &cy, &mask); -#if USE_XFT +#if USE_XFT || FLTK_USE_CAIRO int screen = screen_num_unscaled(mx, my); return screen >= 0 ? screen : 0; #else @@ -1012,7 +1015,7 @@ static void set_event_xy(Fl_Window *win) { send_motion = 0; # endif float s = 1; -#if USE_XFT +#if USE_XFT || FLTK_USE_CAIRO s = Fl::screen_driver()->scale(Fl_Window_Driver::driver(win)->screen_num()); #endif Fl::e_x_root = fl_xevent->xbutton.x_root/s; @@ -1206,7 +1209,7 @@ static KeySym fl_KeycodeToKeysym(Display *d, KeyCode k, unsigned i) { #if USE_XRANDR static void react_to_screen_reconfiguration() { -#if USE_XFT +#if USE_XFT || FLTK_USE_CAIRO // memorize previous screen sizes and scales int old_count = Fl::screen_count(); int (*sizes)[4] = new int[old_count][4]; @@ -1215,9 +1218,9 @@ static void react_to_screen_reconfiguration() { Fl::screen_xywh(sizes[screen][0], sizes[screen][1], sizes[screen][2], sizes[screen][3], screen); scales[screen] = Fl::screen_scale(screen); } -#endif // USE_XFT +#endif // USE_XFT || FLTK_USE_CAIRO Fl::call_screen_init(); // compute new screen sizes -#if USE_XFT +#if USE_XFT || FLTK_USE_CAIRO // detect whether screen sizes were unchanged bool nochange = (old_count == Fl::screen_count()); if (nochange) { @@ -1248,11 +1251,11 @@ static void react_to_screen_reconfiguration() { } } delete[] scales; -#endif // USE_XFT +#endif // USE_XFT || FLTK_USE_CAIRO } #endif // USE_XRANDR -#if USE_XFT +#if USE_XFT || FLTK_USE_CAIRO static void after_display_rescale(float *p_current_xft_dpi) { Display *new_dpy = XOpenDisplay(XDisplayString(fl_display)); if (!new_dpy) return; @@ -1269,7 +1272,7 @@ static void after_display_rescale(float *p_current_xft_dpi) { } XCloseDisplay(new_dpy); } -#endif // USE_XFT +#endif // USE_XFT || FLTK_USE_CAIRO static Window *xid_vector = NULL; // list of FLTK-created xid's (see issue #935) @@ -1347,9 +1350,9 @@ int fl_handle(const XEvent& thisevent) if (xevent.type == PropertyNotify && xevent.xproperty.atom == fl_NET_WORKAREA) { Fl_X11_Screen_Driver *d = (Fl_X11_Screen_Driver*)Fl::screen_driver(); d->init_workarea(); -#if USE_XFT +#if USE_XFT || FLTK_USE_CAIRO after_display_rescale(&(d->current_xft_dpi)); -#endif // USE_XFT +#endif // USE_XFT || FLTK_USE_CAIRO } switch (xevent.type) { @@ -1713,7 +1716,7 @@ int fl_handle(const XEvent& thisevent) in_a_window = true; fl_dnd_source_window = data[0]; float s = 1; -#if USE_XFT +#if USE_XFT || FLTK_USE_CAIRO if (window) s = Fl::screen_driver()->scale(Fl_Window_Driver::driver(window)->screen_num()); #endif Fl::e_x_root = (data[2]>>16)/s; @@ -1788,7 +1791,7 @@ int fl_handle(const XEvent& thisevent) case GraphicsExpose: { -#if USE_XFT +#if USE_XFT || FLTK_USE_CAIRO int ns = Fl_Window_Driver::driver(window)->screen_num(); float s = Fl::screen_driver()->scale(ns); window->damage(FL_DAMAGE_EXPOSE, xevent.xexpose.x/s, xevent.xexpose.y/s, @@ -2208,7 +2211,7 @@ int fl_handle(const XEvent& thisevent) Window cr; int X, Y, W = actual.width, H = actual.height; XTranslateCoordinates(fl_display, fl_xid(window), actual.root, 0, 0, &X, &Y, &cr); -#if USE_XFT // detect when window centre changes screen +#if USE_XFT || FLTK_USE_CAIRO // detect when window centre changes screen Fl_X11_Screen_Driver *d = (Fl_X11_Screen_Driver*)Fl::screen_driver(); Fl_X11_Window_Driver *wd = Fl_X11_Window_Driver::driver(window); int olds = wd->screen_num(); @@ -2230,13 +2233,13 @@ int fl_handle(const XEvent& thisevent) Fl::remove_timeout(Fl_X11_Window_Driver::resize_after_screen_change, window); Fl_X11_Window_Driver::data_for_resize_window_between_screens_.busy = false; } -#else // ! USE_XFT +#else // ! (USE_XFT || FLTK_USE_CAIRO) Fl_Window_Driver::driver(window)->screen_num( Fl::screen_num(X, Y, W, H) ); -#endif // USE_XFT +#endif // USE_XFT || FLTK_USE_CAIRO // tell Fl_Window about it and set flag to prevent echoing: resize_bug_fix = window; -#if USE_XFT +#if USE_XFT || FLTK_USE_CAIRO if (!Fl_X11_Window_Driver::data_for_resize_window_between_screens_.busy && ( ceil(W/s) != window->w() || ceil(H/s) != window->h() ) ) { window->resize(rint(X/s), rint(Y/s), ceil(W/s), ceil(H/s)); @@ -2267,7 +2270,7 @@ int fl_handle(const XEvent& thisevent) // tell Fl_Window about it and set flag to prevent echoing: if ( !wasXExceptionRaised() ) { resize_bug_fix = window; -#if USE_XFT +#if USE_XFT || FLTK_USE_CAIRO int ns = Fl_Window_Driver::driver(window)->screen_num(); float s = Fl::screen_driver()->scale(ns); #else @@ -2659,7 +2662,7 @@ void Fl_X::make_xid(Fl_Window* win, XVisualInfo *visual, Colormap colormap) #endif // (ENABLE_BOXCHEAT) float s = 1; -#if USE_XFT +#if USE_XFT || FLTK_USE_CAIRO //compute adequate screen where to put the window int nscreen = 0; if (win->parent()) { diff --git a/src/drivers/X11/Fl_X11_Gl_Window_Driver.H b/src/drivers/X11/Fl_X11_Gl_Window_Driver.H index 1f4c71053..a833e0c44 100644 --- a/src/drivers/X11/Fl_X11_Gl_Window_Driver.H +++ b/src/drivers/X11/Fl_X11_Gl_Window_Driver.H @@ -1,7 +1,7 @@ // // Class Fl_X11_Gl_Window_Driver for the Fast Light Tool Kit (FLTK). // -// Copyright 2022 by Bill Spitzak and others. +// Copyright 2022-2025 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 @@ -47,7 +47,7 @@ class Fl_X11_Gl_Window_Driver : public Fl_Gl_Window_Driver { void gl_bitmap_font(Fl_Font_Descriptor *fl_fontsize) FL_OVERRIDE; void get_list(Fl_Font_Descriptor *fd, int r) FL_OVERRIDE; int genlistsize() FL_OVERRIDE; -#if !USE_XFT +#if !(USE_XFT || FLTK_USE_CAIRO) virtual Fl_Font_Descriptor** fontnum_to_fontdescriptor(int fnum) FL_OVERRIDE; #endif //static GLContext create_gl_context(XVisualInfo* vis); diff --git a/src/drivers/X11/Fl_X11_Gl_Window_Driver.cxx b/src/drivers/X11/Fl_X11_Gl_Window_Driver.cxx index 3a3f80c28..938c61a7b 100644 --- a/src/drivers/X11/Fl_X11_Gl_Window_Driver.cxx +++ b/src/drivers/X11/Fl_X11_Gl_Window_Driver.cxx @@ -1,7 +1,7 @@ // // Class Fl_X11_Gl_Window_Driver for the Fast Light Tool Kit (FLTK). // -// Copyright 2021-2024 by Bill Spitzak and others. +// Copyright 2021-2025 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 @@ -21,7 +21,7 @@ #include "../../Fl_Screen_Driver.H" #include "Fl_X11_Gl_Window_Driver.H" #include <GL/glx.h> -#if ! USE_XFT +#if ! (USE_XFT || FLTK_USE_CAIRO) # include "../Xlib/Fl_Font.H" #endif @@ -51,7 +51,7 @@ void Fl_X11_Gl_Window_Driver::draw_string_legacy(const char* str, int n) { } int Fl_X11_Gl_Window_Driver::genlistsize() { -#if USE_XFT +#if USE_XFT || FLTK_USE_CAIRO return 256; #else return 0x10000; @@ -86,7 +86,7 @@ void Fl_X11_Gl_Window_Driver::gl_bitmap_font(Fl_Font_Descriptor *fl_fontsize) { void Fl_X11_Gl_Window_Driver::get_list(Fl_Font_Descriptor *fd, int r) { -# if USE_XFT +# if USE_XFT || FLTK_USE_CAIRO /* We hope not to come here: We hope that any system using XFT will also * have sufficient GL capability to support our font texture pile mechansim, * allowing XFT to render the face directly. */ @@ -107,7 +107,7 @@ void Fl_X11_Gl_Window_Driver::get_list(Fl_Font_Descriptor *fd, int r) { # endif } -#if !USE_XFT +#if !(USE_XFT || FLTK_USE_CAIRO) Fl_Font_Descriptor** Fl_X11_Gl_Window_Driver::fontnum_to_fontdescriptor(int fnum) { Fl_Xlib_Fontdesc *s = ((Fl_Xlib_Fontdesc*)fl_fonts) + fnum; return &(s->first); diff --git a/src/drivers/X11/Fl_X11_Screen_Driver.H b/src/drivers/X11/Fl_X11_Screen_Driver.H index 17826a94d..a22e38096 100644 --- a/src/drivers/X11/Fl_X11_Screen_Driver.H +++ b/src/drivers/X11/Fl_X11_Screen_Driver.H @@ -2,7 +2,7 @@ // Definition of X11 Screen interface // for the Fast Light Tool Kit (FLTK). // -// Copyright 2010-2022 by Bill Spitzak and others. +// Copyright 2010-2025 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 @@ -40,7 +40,7 @@ protected: short y_org; short width; short height; -#if USE_XFT +#if USE_XFT || FLTK_USE_CAIRO float scale; #endif } FLScreenInfo; @@ -49,7 +49,7 @@ protected: int get_mouse_unscaled(int &xx, int &yy); public: -#if USE_XFT // scaling does not work without Xft +#if USE_XFT || FLTK_USE_CAIRO // scaling does not work without Xft float current_xft_dpi; // current value of the Xft.dpi X resource APP_SCALING_CAPABILITY rescalable() FL_OVERRIDE { return PER_SCREEN_APP_SCALING; } float scale(int n) FL_OVERRIDE {return screens[n].scale;} diff --git a/src/drivers/X11/Fl_X11_Screen_Driver.cxx b/src/drivers/X11/Fl_X11_Screen_Driver.cxx index 50a7260a8..f9cff395d 100644 --- a/src/drivers/X11/Fl_X11_Screen_Driver.cxx +++ b/src/drivers/X11/Fl_X11_Screen_Driver.cxx @@ -1,7 +1,7 @@ // // Definition of X11 Screen interface // -// Copyright 1998-2024 by Bill Spitzak and others. +// Copyright 1998-2025 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 @@ -54,7 +54,7 @@ extern const char *fl_bg; extern const char *fl_bg2; // end of extern additions workaround -#if !USE_XFT +#if !(USE_XFT || FLTK_USE_CAIRO) extern char *fl_get_font_xfld(int fnum, int size); #endif @@ -239,7 +239,7 @@ void Fl_X11_Screen_Driver::init_workarea() int Fl_X11_Screen_Driver::x() { if (!fl_display) open_display(); return fl_workarea_xywh[0] -#if USE_XFT +#if USE_XFT || FLTK_USE_CAIRO / screens[0].scale #endif ; @@ -248,7 +248,7 @@ int Fl_X11_Screen_Driver::x() { int Fl_X11_Screen_Driver::y() { if (!fl_display) open_display(); return fl_workarea_xywh[1] -#if USE_XFT +#if USE_XFT || FLTK_USE_CAIRO / screens[0].scale #endif ; @@ -257,7 +257,7 @@ int Fl_X11_Screen_Driver::y() { int Fl_X11_Screen_Driver::w() { if (!fl_display) open_display(); return fl_workarea_xywh[2] -#if USE_XFT +#if USE_XFT || FLTK_USE_CAIRO / screens[0].scale #endif ; @@ -266,7 +266,7 @@ int Fl_X11_Screen_Driver::w() { int Fl_X11_Screen_Driver::h() { if (!fl_display) open_display(); return fl_workarea_xywh[3] -#if USE_XFT +#if USE_XFT || FLTK_USE_CAIRO / screens[0].scale #endif ; @@ -349,7 +349,7 @@ void Fl_X11_Screen_Driver::init() { screens[i].y_org = 0; screens[i].width = DisplayWidth(fl_display, i); screens[i].height = DisplayHeight(fl_display, i); -#if USE_XFT +#if USE_XFT || FLTK_USE_CAIRO screens[i].scale = 1; #endif if (dpi_by_randr) { @@ -390,7 +390,7 @@ void Fl_X11_Screen_Driver::screen_xywh(int &X, int &Y, int &W, int &H, int n) n = 0; if (num_screens > 0) { -#if USE_XFT +#if USE_XFT || FLTK_USE_CAIRO float s = screens[n].scale; #else float s = 1; @@ -597,7 +597,7 @@ void Fl_X11_Screen_Driver::compose_reset() } int Fl_X11_Screen_Driver::text_display_can_leak() const { -#if USE_XFT +#if USE_XFT || FLTK_USE_CAIRO return 1; #else return 0; @@ -1131,7 +1131,7 @@ void Fl_X11_Screen_Driver::set_spot(int font, int size, int X, int Y, int W, int if (fs) { XFreeFontSet(fl_display, fs); } -#if USE_XFT +#if USE_XFT || FLTK_USE_CAIRO fnt = NULL; // FIXME: missing XFT support here #else fnt = fl_get_font_xfld(font, size); @@ -1163,7 +1163,7 @@ void Fl_X11_Screen_Driver::set_spot(int font, int size, int X, int Y, int W, int } -#if USE_XFT +#if USE_XFT || FLTK_USE_CAIRO //NOTICE: returns -1 if x,y is not in any screen int Fl_X11_Screen_Driver::screen_num_unscaled(int x, int y) { @@ -1198,4 +1198,4 @@ void Fl_X11_Screen_Driver::desktop_scale_factor() } } -#endif // USE_XFT +#endif // USE_XFT || FLTK_USE_CAIRO diff --git a/src/drivers/X11/Fl_X11_Window_Driver.H b/src/drivers/X11/Fl_X11_Window_Driver.H index c0efb30e9..50b7a1bd3 100644 --- a/src/drivers/X11/Fl_X11_Window_Driver.H +++ b/src/drivers/X11/Fl_X11_Window_Driver.H @@ -2,7 +2,7 @@ // Definition of X11 window driver // for the Fast Light Tool Kit (FLTK). // -// Copyright 2010-2024 by Bill Spitzak and others. +// Copyright 2010-2025 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 @@ -66,14 +66,14 @@ private: Fl_Image* shape_; ///< shape image Fl_Bitmap *effective_bitmap_; ///< auxiliary bitmap image } *shape_data_; -#if USE_XFT +#if USE_XFT || FLTK_USE_CAIRO // --- support for screen-specific scaling factors struct type_for_resize_window_between_screens { int screen; bool busy; }; static type_for_resize_window_between_screens data_for_resize_window_between_screens_; -#endif // USE_XFT +#endif // USE_XFT || FLTK_USE_CAIRO #if FLTK_USE_CAIRO cairo_t *cairo_; #endif // FLTK_USE_CAIRO @@ -89,9 +89,9 @@ public: Fl_X11_Window_Driver(Fl_Window*); ~Fl_X11_Window_Driver() FL_OVERRIDE; static inline Fl_X11_Window_Driver* driver(const Fl_Window *w) {return (Fl_X11_Window_Driver*)Fl_Window_Driver::driver(w);} -#if USE_XFT +#if USE_XFT || FLTK_USE_CAIRO static void resize_after_screen_change(void *data); -#endif // USE_XFT +#endif // USE_XFT || FLTK_USE_CAIRO // --- window data int decorated_w() FL_OVERRIDE; diff --git a/src/drivers/X11/Fl_X11_Window_Driver.cxx b/src/drivers/X11/Fl_X11_Window_Driver.cxx index 4af030f49..b7e5da1ee 100644 --- a/src/drivers/X11/Fl_X11_Window_Driver.cxx +++ b/src/drivers/X11/Fl_X11_Window_Driver.cxx @@ -1,7 +1,7 @@ // // Definition of X11 window driver. // -// Copyright 1998-2024 by Bill Spitzak and others. +// Copyright 1998-2025 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 @@ -561,7 +561,7 @@ Window fl_x11_xid(const Fl_Window *win) { } -#if USE_XFT +#if USE_XFT || FLTK_USE_CAIRO Fl_X11_Window_Driver::type_for_resize_window_between_screens Fl_X11_Window_Driver::data_for_resize_window_between_screens_ = {0, false}; @@ -572,7 +572,7 @@ void Fl_X11_Window_Driver::resize_after_screen_change(void *data) { data_for_resize_window_between_screens_.busy = false; } -#endif // USE_XFT +#endif // USE_XFT || FLTK_USE_CAIRO fl_uintptr_t Fl_X11_Window_Driver::os_id() { return fl_xid(pWindow); diff --git a/src/drivers/X11/fl_X11_platform_init.cxx b/src/drivers/X11/fl_X11_platform_init.cxx index 33ea43bee..e9d40dbc3 100644 --- a/src/drivers/X11/fl_X11_platform_init.cxx +++ b/src/drivers/X11/fl_X11_platform_init.cxx @@ -1,7 +1,7 @@ // // X11-specific code to initialize wayland support. // -// Copyright 2022-2023 by Bill Spitzak and others. +// Copyright 2022-2025 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 @@ -47,7 +47,7 @@ Fl_Graphics_Driver *Fl_Graphics_Driver::newMainGraphicsDriver() Fl_Screen_Driver *Fl_Screen_Driver::newScreenDriver() { Fl_X11_Screen_Driver *d = new Fl_X11_Screen_Driver(); -#if USE_XFT +#if USE_XFT || FLTK_USE_CAIRO for (int i = 0; i < MAX_SCREENS; i++) d->screens[i].scale = 1; d->current_xft_dpi = 0.; // means the value of the Xft.dpi resource is still unknown #else diff --git a/src/drivers/Xlib/Fl_Font.H b/src/drivers/Xlib/Fl_Font.H index 9a5e40a93..e1680df4f 100644 --- a/src/drivers/Xlib/Fl_Font.H +++ b/src/drivers/Xlib/Fl_Font.H @@ -1,7 +1,7 @@ // // Font definitions for the Fast Light Tool Kit (FLTK). // -// Copyright 1998-2018 by Bill Spitzak and others. +// Copyright 1998-2025 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 @@ -32,7 +32,7 @@ typedef struct _XftFont XftFont; class Fl_Xlib_Font_Descriptor : public Fl_Font_Descriptor { public: -# if USE_XFT +# if USE_XFT || FLTK_USE_CAIRO # if USE_PANGO int descent_; int height_; diff --git a/src/drivers/Xlib/Fl_Xlib_Graphics_Driver.cxx b/src/drivers/Xlib/Fl_Xlib_Graphics_Driver.cxx index 4c7b64a4c..336e4b429 100644 --- a/src/drivers/Xlib/Fl_Xlib_Graphics_Driver.cxx +++ b/src/drivers/Xlib/Fl_Xlib_Graphics_Driver.cxx @@ -1,7 +1,7 @@ // // Rectangle drawing routines for the Fast Light Tool Kit (FLTK). // -// Copyright 1998-2022 by Bill Spitzak and others. +// Copyright 1998-2025 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 @@ -24,10 +24,6 @@ #include <string.h> #include <stdlib.h> -#if !USE_XFT -extern char *fl_get_font_xfld(int fnum, int size); -#endif - GC Fl_Xlib_Graphics_Driver::gc_ = NULL; int Fl_Xlib_Graphics_Driver::fl_overlay = 0; @@ -62,7 +58,7 @@ void Fl_Xlib_Graphics_Driver::gc(void *value) { } void Fl_Xlib_Graphics_Driver::scale(float f) { -#if USE_XFT +#if USE_XFT || FLTK_USE_CAIRO if (f != scale()) { size_ = 0; Fl_Graphics_Driver::scale(f); diff --git a/src/fl_dnd_x.cxx b/src/fl_dnd_x.cxx index f48ac599e..be5d18557 100644 --- a/src/fl_dnd_x.cxx +++ b/src/fl_dnd_x.cxx @@ -1,7 +1,7 @@ // // Drag & Drop code for the Fast Light Tool Kit (FLTK). // -// Copyright 1998-2023 by Bill Spitzak and others. +// Copyright 1998-2025 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 @@ -106,7 +106,7 @@ int Fl_X11_Screen_Driver::dnd(int unused) { if ((new_local_window = fl_find(child))) break; if ((new_version = dnd_aware(new_window))) break; } -#if USE_XFT +#if USE_XFT || FLTK_USE_CAIRO if (new_local_window) { float s = Fl::screen_driver()->scale(Fl_Window_Driver::driver(new_local_window)->screen_num()); Fl::e_x_root /= s; @@ -158,7 +158,7 @@ int Fl_X11_Screen_Driver::dnd(int unused) { local_handle(FL_DND_DRAG, local_window); } else if (dndversion) { int exroot = Fl::e_x_root, eyroot = Fl::e_y_root; -#if USE_XFT +#if USE_XFT || FLTK_USE_CAIRO Fl_Window *target = fl_find(target_window); if (target) { float s = Fl::screen_driver()->scale(Fl_Window_Driver::driver(target)->screen_num()); @@ -189,7 +189,7 @@ int Fl_X11_Screen_Driver::dnd(int unused) { msg.x = dest_x; msg.y = dest_y; float s = 1; -#if USE_XFT +#if USE_XFT || FLTK_USE_CAIRO Fl_Window *target = fl_find(target_window); if (target) s = Fl::screen_driver()->scale(Fl_Window_Driver::driver(target)->screen_num()); #endif diff --git a/src/xutf8/lcUniConv/cp936ext.h b/src/xutf8/lcUniConv/cp936ext.h index a01df9641..1d72abb15 100644 --- a/src/xutf8/lcUniConv/cp936ext.h +++ b/src/xutf8/lcUniConv/cp936ext.h @@ -1,7 +1,7 @@ /* * Character encoding support for the Fast Light Tool Kit (FLTK). * - * Copyright 1998-2018 by Bill Spitzak and others. + * Copyright 1998-2025 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 @@ -13,12 +13,8 @@ * * https://www.fltk.org/bugs.php */ - -#if defined(_WIN32) || defined(__APPLE__) /* PORTME: is this really needed? It's huge! */ - - /* not needed */ - -#else +#include <FL/fl_config.h> +#if !defined(_WIN32) && (!defined(__APPLE__) || defined(FLTK_USE_X11)) #ifndef CP936 #ifdef NEED_TOWC @@ -38,7 +34,7 @@ cp936ext_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n) } #endif /* NEED_TOMB */ -#else +#else /* CP936 */ /* * CP936EXT */ @@ -6246,4 +6242,4 @@ cp936ext_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n) #endif /* CP936 */ -#endif /* _WIN32 || __APPLE__ */ /* PORTME: Unicode stuff */ +#endif /* _WIN32 || __APPLE__ */ |
