From b4438b2fbe895694be98e6e8426103deefc51448 Mon Sep 17 00:00:00 2001 From: Jedidiah Barber Date: Tue, 21 Jan 2025 21:04:54 +1300 Subject: Split public API and private implementation files into different directories --- body/c_fl_surface_device.cpp | 58 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 body/c_fl_surface_device.cpp (limited to 'body/c_fl_surface_device.cpp') diff --git a/body/c_fl_surface_device.cpp b/body/c_fl_surface_device.cpp new file mode 100644 index 0000000..9836a04 --- /dev/null +++ b/body/c_fl_surface_device.cpp @@ -0,0 +1,58 @@ + + +// Programmed by Jedidiah Barber +// Released into the public domain + + +#include +#include "c_fl_surface_device.h" + + + + +// Adding relevant friends + +class My_Surface_Device : public Fl_Surface_Device { +public: + using Fl_Surface_Device::Fl_Surface_Device; + friend SURFACEDEVICE new_fl_surface_device(void * g); +}; + + + + +// Flattened C API + +SURFACEDEVICE new_fl_surface_device(void * g) { + My_Surface_Device *s = new My_Surface_Device(static_cast(g)); + return s; +} + +void free_fl_surface_device(SURFACEDEVICE s) { + delete static_cast(s); +} + + + + +void fl_surface_device_set_current(SURFACEDEVICE s) { + // virtual so disable dispatch + static_cast(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 static_cast(s)->driver(); +} + +void fl_surface_device_set_driver(SURFACEDEVICE s, void * g) { + static_cast(s)->driver(static_cast(g)); +} + + -- cgit