summaryrefslogtreecommitdiff
path: root/src/Fl_Gl_Window.cxx
AgeCommit message (Collapse)Author
2017-07-28Replace static protected bool Fl_Window_Driver::is_a_rescale by a private ↵Manolo Gouy
static variable and a public getter. git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12364 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2017-07-27Rename Fl_Window_Driver::in_resize_after_scale_change to 'is_a_rescale' ↵Manolo Gouy
which is more expressive. git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12358 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2017-07-25Rewrite Fl_Window_Driver::resize_after_scale_change() removing calls to ↵Manolo Gouy
Fl_Window::hide() and Fl_Window::show(). Windows are now rescaled with a call to Fl_Window::resize() which has been slightly modified. Static member variable bool Fl_Window_Driver::in_resize_after_scale_change is created, and is true if and only if Fl_Window::resize() is called by Fl_Window_Driver::resize_after_scale_change(). This new flag allows Fl_Window::resize() to perform correctly the rescaling of the window. Fl_Gl_Window::resize() and Fl_Double_Window::resize() also consult the value of the Fl_Window_Driver::in_resize_after_scale_change flag. The platform-specific Fl_WinAPI_Window_Driver::resize() and Fl_X11_Window_Driver::resize() also use the Fl_Window_Driver::in_resize_after_scale_change flag. git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12349 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2017-07-03Fix Fl_WinAPI_Gl_Window_Driver::pixels_per_unit() when on secondary monitor.Manolo Gouy
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12286 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2017-05-17Introduce HiDPI + rescaling support for the X11 platform (+ partial support ↵Manolo Gouy
for WIN32) Corresponds to STR #3320 1) HiDPI support consists in detecting the adequate scaling factor for the screen on which FLTK maps a window, and scaling all FLTK units by this factor. FLTK tries to detect the correct value of this factor at startup (see more details below). Environment variable FLTK_SCALING_FACTOR can also be used to set this value. 2) Rescaling support consists in changing the scaling factor of all FLTK windows in reply to ctrl/+/-/0/ keystrokes. More details for the various platforms : - X11: Support is very advanced. Some details need still to be improved. Automatic detection of the correct starting value of the scaling factor works well with the gnome desktop. The present code contains no support for this on other desktops. FLTK_SCALING_FACTOR provides a workaround. -WIN32: Support is incomplete at this point, although many test applications have partial or complete HiDPI and scaling support. The current value of the system's scaling factor is correctly detected at application startup. Apps respond to changes of this value in real time. Support needs to define the FLTK_HIDPI_SUPPORT preprocessor variable at compile time. This way, standard builds produce a code with the default WIN32 HiDPI support, that is, where all graphics goes to an internal buffer that gets enlarged by the system and then mapped to the HiDPI display. To experiment with (or develop) the new HiDPI support requires a modified build procedure in which FLTK_HIDPI_SUPPORT is defined at compile time. When the support will be complete, the requirement for the definition of this preprocessor variable will be removed. The present commit contains support for a single scaling factor. Eventually, per-screen scaling factors should be implemented, as done for X11. - MacOS: this commit does not give new HiDPI for this platform. Eventually, window rescaling in reply to command/+/-/0/ is desirable. Per-screen scaling factor makes no sense on this platform because the OS itself takes care of the difference between the resolutions of traditional and retina displays. git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12239 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2017-05-11Added some example code to Fl_Gl_Window::draw() docs..Greg Ercolano
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12235 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2017-01-20Allow resizable Fl_Gl_Window drawn using the Fl_OpenGL_Graphics_DriverManolo Gouy
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12165 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2017-01-10Match glPushAttrib() with glPopAttrib()Manolo Gouy
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12161 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2016-12-07Add static void Fl_Surface_Device::push_current(Fl_Surface_Device ↵Manolo Gouy
*new_current) and pop_current() to set/unset the current drawing surface. git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12140 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2016-12-05For consistency, make the pre-processor check for the inclusion of "dlfcn.h" beIan MacArthur
the same as the check which is subsequently used before calling dlsym() and dlopen(). Note that this may also work around an occasional issue observed when building for Windows with cmake and mingw-64, which was sometimes erroneously attempting to #include "dlfcn.h" - which is not generally appropriate on a Windows host. git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12136 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2016-08-23Step back from r11886 that is not correct.Manolo Gouy
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3-porting@11888 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2016-08-23Make Fl_Gl_Window::make_current() set the value of the fl_window global ↵Manolo Gouy
variable under the X11 platform. git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3-porting@11886 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2016-06-22 Make Fl_Gl_Window::pixels_per_unit() return a float (rather than int) value.Manolo Gouy
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3-porting@11794 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2016-05-13Add GLContext to the set of platform-dependent types defined in ↵Manolo Gouy
FL/platform_types.h If a platform does not support OpenGL, it can just typedef GLContext as void* git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3-porting@11733 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2016-05-09Move GL-related member functions from class Fl_Cocoa_Screen_Driver to class ↵Manolo Gouy
Fl_Cocoa_Gl_Window_Driver git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3-porting@11728 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2016-05-08Rewrite OpenGL-related code under the driver model.Manolo Gouy
Class Fl_Gl_Window_Driver, with its platform-specific derived classes, is created to hold platform-specific, OpenGL code. File gl_draw.cxx still needs to be converted to the driver model. git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3-porting@11716 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2016-04-19Move private_dc from Fl_X for WIN32 platform to Fl_WinAPI_Window_Driver.Manolo Gouy
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3-porting@11664 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2016-04-19Add static Fl_XXX_Window_Driver *driver(Fl_Window*) to get the ↵Manolo Gouy
platform-specific driver of a window. git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3-porting@11663 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2016-04-19Move GL-related static member functions of the Fl_X class on Mac OS to class ↵Manolo Gouy
Fl_Cocoa_Screen_Driver. git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3-porting@11662 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2016-04-19Move several of the methods of class Fl_X for Mac platform to class ↵Manolo Gouy
Fl_Cocoa_Window_Driver. git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3-porting@11657 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2016-02-26Rename all remaining src/drivers/XXX.h to XXX.HManolo Gouy
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3-porting@11226 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2016-02-19Rename Fl_Graphics_Driver::set_gc(void*) to gc(void*) and ↵Manolo Gouy
Fl_Graphics_Driver::get_gc() to gc(). git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3-porting@11191 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2016-02-18Remove all uses of the fl_gc global variable. Towards a clean driver model.Manolo Gouy
fl_gc remains usable by the application as a hook into the system. git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3-porting@11189 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2016-02-11Mark places that need to be refactored with // PORTME:Matthias Melcher
Searching for __APPLE, WIN32 or X11 did give me many false results. I instead marked most ifdef's that I would like to get rid of with the text // PORTME:, so they can be easily found by a global search. git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3-porting@11155 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2016-02-10Fix MSWindows compile issues.Matthias Melcher
Fixed a few warnings and a compilation issue introduced from previous reorganization. git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3-porting@11143 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2016-01-29Updated OpenGL Display DeviceMatthias Melcher
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3-porting@11084 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2016-01-21Removed OpenGL graphics driver from public view. For the parts that are ↵Matthias Melcher
implemented, it will 'just work' by allowing fl_* rendering into OpenGL contexts (such as widgets, etc.) git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3-porting@11022 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2016-01-20Avoid clipping stack overruns in OpenGL graphics driverMatthias Melcher
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3-porting@11018 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2016-01-20Wrapping up fl_rect.cxx implementation. Introducing 3 moer virtual functions ↵Matthias Melcher
to Fl_Graphics_Device - will that break binary compatibility? git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3-porting@11017 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2016-01-20Reorganized all integer line and polygon drawing functionsMatthias Melcher
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3-porting@11016 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2016-01-20Re-ordering a few more functions. It's nice to see how clear functions like ↵Matthias Melcher
rectf() become without the #ifdef mess. git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3-porting@11013 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2016-01-20Starting to cut out individual graphics function, so that multiple drivers ↵Matthias Melcher
can coexist (cfg_gfx). Found the missing pixels in the OpenGL gfx driver. git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3-porting@11012 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2016-01-19Fixed typos for Linux compilation. OpenGL driver compiles and somewhat ↵Matthias Melcher
works, except for text rendering (as expected). git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3-porting@11009 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2016-01-18Replaced static initializer with Fl_OpenGL_Display_Device.Matthias Melcher
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3-porting@11008 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2016-01-17Trying to create a more detaild way to configure the library, added runtime ↵Matthias Melcher
information, added an OpenGL graphics driver that renders a button on top of an OpenGL window (see test/cube). git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3-porting@11006 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2016-01-03Updated platform specific #if's to report unimplemented code when compiling ↵Matthias Melcher
with FL_PORTING defined and WIN32 and __APPLE__ undefined> git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3-porting@10989 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2015-12-02Mac OS: support for high resolution OpenGL windows.Manolo Gouy
Methods Fl::event_x_pixel() and Fl::event_y_pixel() committed at r.10941 are removed. Instead method Fl_Gl_Window::pixels_per_unit() is added. The documentation explains in more detail how to write cross-platform FLTK code supporting high resolution OpenGL windows on retina displays. The examples/OpenGL3test.cxx app exercises Fl_Gl_Window::pixels_per_unit(). git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3@10945 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2015-09-08The Fl_Gl_Window public API offers 2 ways to control the OpenGL capabilities ↵Manolo Gouy
of a window: 1) Fl_Gl_Window::mode(int m) is platform-independent and uses an argument containing bit flags (e.g., FL_DOUBLE, FL_RGB8) to express desired capabilities. The m argument is assigned to the mode_ private member variable of the Fl_Gl_Window object. 2) Fl_Gl_Window::mode(const int *a) is highly platform-dependent. It uses a zero-ending array of attributes or attribute-value pairs to express capabilities. This member function can be used on the X11 and the Mac OS platforms, but not with MSWindows. Before this patch, the mode_ private member variable of the Fl_Gl_Window object is assigned 0 by this member function. The Fl_Gl_Window::flush() member function tests whether the FL_DOUBLE flag is ON in the mode_ variable, and changes code path accordingly. Therefore, the second API to control OpenGL capabilities fails when a double-buffered GL context is required, because the code path followed by Fl_Gl_Window::flush() does not match the GL context requirements. With this patch, Fl_Gl_Window::mode(const int *a) scans the content of its array argument, and sets the FL_DOUBLE bit of the mode_ member variable if the array requires a double-buffered GL context. This patch does that for the X11 platform. The same was introduced for the Mac OS platform at r. 10854. The MSWindows platform does not use the Fl_Gl_Window::mode(const int *a) API. git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3@10859 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2015-09-07Moved a few Mac-specific lines from Fl_Gl_Window::show() to Fl_Gl_Window::mode()Manolo Gouy
where it is more easily understood. git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3@10858 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2015-09-07Mac OS X: restored the possibility to set a GL context mode with theManolo Gouy
Fl_Gl_Window::(const int *a) member function that uses a zero-ending array of system-dependent attributes. This procedure failed whenever a double buffer was asked for. git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3@10854 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2015-08-31Improved use of the gl_texture_reset() function:Manolo Gouy
it is necessary only if all GL windows have been deleted. git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3@10848 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2015-08-27Programs compiled with pre-10.7 SDKs can now fully use retina displays.Manolo Gouy
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3@10844 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2015-02-03Fixed crash when resizing a not yet shown() Fl_Gl_Window.Manolo Gouy
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3@10551 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2015-02-02Replace gl_xxx() function names by new member functions of the Fl_X class to ↵Manolo Gouy
avoid collisions with user-defined symbols. git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3@10548 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2015-01-31Improved Mac OS X Fl_Gl_Window resizing: the GL scene was drawn twice at ↵Manolo Gouy
each resize operation. git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3@10545 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2015-01-14A public header file must not use a preprocessor variable such as ↵Manolo Gouy
MAC_OS_X_VERSION_10_7 because it is only defined internally to FLTK. git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3@10516 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2014-12-20Changed OpenGL support for the Mac OS X platform: use cocoa instead of ↵Manolo Gouy
deprecated AGL. All changes are mac-specific, except a very minor change in file src/gl_draw.cxx where string drawing wrongly claimed to support @symbol, not possible because symbols are drawn using non-GL primitives. Unchanged application code can use the new FLTK code. In addition, the new code allows mac applications to draw OpenGL scenes at high resolution on so-called 'retina' displays, but this requires some support from app code. They must call, before opening GL windows, Fl::use_high_resolution(1); and change their glViewport() calls as follows glViewport(0, 0, pxel_w(), pixel_h()); This uses 2 new member functions of the Fl_Gl_Window class, pixel_w() and pixel_h() returning the window dimensions in pixel units, that is, twice the w() and h() when the window is mapped on a retina display. git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3@10498 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2014-11-11Added support of true subwindows to the Mac OS X code. With this, a window ↵Manolo Gouy
inside another window is just another window with Mac OS as it was already with MSWindows and X11. This requires Mac OS X 10.2. Window nesting to any depth is possible. git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3@10449 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2014-06-30Follow up to earlier commit. Missed one reference to fixcursor.Pierre Ossman
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3@10214 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
2014-06-30The SGI 320 is obsolete since many many years, so remove this codePierre Ossman
rather than try to port it to the new fancy cursor handling. git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3@10212 ea41ed52-d2ee-0310-a9c1-e6b18d33e121