// 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(reinterpret_cast(g)); return s; } void free_fl_surface_device(SURFACEDEVICE s) { delete reinterpret_cast(s); } void fl_surface_device_set_current(SURFACEDEVICE s) { // virtual so disable dispatch reinterpret_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 reinterpret_cast(s)->driver(); } void fl_surface_device_set_driver(SURFACEDEVICE s, void * g) { reinterpret_cast(s)->driver(reinterpret_cast(g)); }