diff options
| author | ManoloFLTK <41016272+ManoloFLTK@users.noreply.github.com> | 2022-01-05 07:46:49 +0100 |
|---|---|---|
| committer | ManoloFLTK <41016272+ManoloFLTK@users.noreply.github.com> | 2022-01-05 07:46:57 +0100 |
| commit | fc1efc7957c8f9307b4cca261103f2fc4e6fc553 (patch) | |
| tree | a0399d0e4230e4f145d03032f2f6363553ea6b6f /FL/x11.H | |
| parent | 3f2166ea9118a8606ba43a9fa11afb41d1fbaa9b (diff) | |
Create FL/x11.H holding declarations specific to X11 platform.
Diffstat (limited to 'FL/x11.H')
| -rw-r--r-- | FL/x11.H | 92 |
1 files changed, 92 insertions, 0 deletions
diff --git a/FL/x11.H b/FL/x11.H new file mode 100644 index 000000000..576b8f1bd --- /dev/null +++ b/FL/x11.H @@ -0,0 +1,92 @@ +// +// X11 platform header file for the Fast Light Tool Kit (FLTK). +// +// Copyright 1998-2022 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: +// +// https://www.fltk.org/COPYING.php +// +// Please see the following page on how to report bugs and issues: +// +// https://www.fltk.org/bugs.php +// + +// Do not directly include this file, instead use <FL/platform.H>. It will +// include this file if FLTK_USE_X11 is defined. This is to encourage +// portability of even the system-specific code... + +#ifndef FL_DOXYGEN + +#ifndef FL_PLATFORM_H +# error "Never use <FL/x11.H> directly; include <FL/platform.H> instead." +#endif // !FL_PLATFORM_H + +#include <FL/Enumerations.H> + +#if defined(_ABIN32) || defined(_ABI64) // fix for broken SGI Irix X .h files +# pragma set woff 3322 +#endif +#include <X11/Xlib.h> +#include <X11/Xutil.h> +#if defined(_ABIN32) || defined(_ABI64) +# pragma reset woff 3322 +#endif +#include <X11/Xatom.h> + +// constant info about the X server connection: +extern FL_EXPORT Display *fl_display; +extern FL_EXPORT int fl_screen; +extern FL_EXPORT XVisualInfo *fl_visual; +extern FL_EXPORT Colormap fl_colormap; + +// drawing functions: +extern FL_EXPORT GC fl_gc; +FL_EXPORT ulong fl_xpixel(Fl_Color i); +FL_EXPORT ulong fl_xpixel(uchar r, uchar g, uchar b); + +// feed events into fltk: +FL_EXPORT int fl_handle(const XEvent&); + +// you can use these in Fl::add_handler() to look at events: +extern FL_EXPORT const XEvent* fl_xevent; +extern FL_EXPORT ulong fl_event_time; + +#if defined(FL_LIBRARY) || defined(FL_INTERNALS) +extern FL_EXPORT Window fl_message_window; +extern FL_EXPORT void *fl_xftfont; + +// access to core fonts: +// This class provides a "smart pointer" that returns a pointer to an XFontStruct. +// The global variable fl_xfont can be called wherever a bitmap "core" font is +// needed, e.g. when rendering to a GL context under X11. +// With Xlib / X11 fonts, fl_xfont will return the current selected font. +// With XFT / X11 fonts, fl_xfont will attempt to return the bitmap "core" font most +// similar to (usually the same as) the current XFT font. +class FL_EXPORT 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(); + 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; + +extern FL_EXPORT char fl_override_redirect; // hack into Fl_X::make_xid() +extern FL_EXPORT int fl_background_pixel; // hack into Fl_X::make_xid() + +#endif // FL_LIBRARY || FL_INTERNALS + +#endif // FL_DOXYGEN |
