diff options
author | Jedidiah Barber <contact@jedbarber.id.au> | 2024-12-24 18:51:07 +1300 |
---|---|---|
committer | Jedidiah Barber <contact@jedbarber.id.au> | 2024-12-24 18:51:07 +1300 |
commit | a8967c654b6ee09dce89fe83bcafff2181a1952f (patch) | |
tree | 447694a360f1b15ffd67155ee13b1e948519f0e2 /src/c_fl_surface_device.cpp | |
parent | 6673742a204f298db1ca983da0184224d9f21649 (diff) |
Added Fl_Display_Device
Diffstat (limited to 'src/c_fl_surface_device.cpp')
-rw-r--r-- | src/c_fl_surface_device.cpp | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/src/c_fl_surface_device.cpp b/src/c_fl_surface_device.cpp new file mode 100644 index 0000000..34b2bac --- /dev/null +++ b/src/c_fl_surface_device.cpp @@ -0,0 +1,54 @@ + + +// Programmed by Jedidiah Barber +// Released into the public domain + + +#include <FL/Fl_Device.H> +#include "c_fl_surface_device.h" + + + + +class My_Surface_Device : public Fl_Surface_Device { +public: + using Fl_Surface_Device::Fl_Surface_Device; + friend SURFACEDEVICE new_fl_surface_device(void * g); +}; + + + + +SURFACEDEVICE new_fl_surface_device(void * g) { + My_Surface_Device *s = new My_Surface_Device(reinterpret_cast<Fl_Graphics_Driver*>(g)); + return s; +} + +void free_fl_surface_device(SURFACEDEVICE s) { + delete reinterpret_cast<My_Surface_Device*>(s); +} + + + + +void fl_surface_device_set_current(SURFACEDEVICE s) { + // virtual so disable dispatch + reinterpret_cast<Fl_Surface_Device*>(s)->Fl_Surface_Device::set_current(); +} + +SURFACEDEVICE fl_surface_device_get_surface(void) { + return Fl_Surface_Device::surface(); +} + + + + +void * fl_surface_device_get_driver(SURFACEDEVICE s) { + return reinterpret_cast<Fl_Surface_Device*>(s)->driver(); +} + +void fl_surface_device_set_driver(SURFACEDEVICE s, void * g) { + reinterpret_cast<Fl_Surface_Device*>(s)->driver(reinterpret_cast<Fl_Graphics_Driver*>(g)); +} + + |