diff options
Diffstat (limited to 'include/mbgl/platform/default/headless_view.hpp')
-rw-r--r-- | include/mbgl/platform/default/headless_view.hpp | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/include/mbgl/platform/default/headless_view.hpp b/include/mbgl/platform/default/headless_view.hpp new file mode 100644 index 0000000000..c0baddb884 --- /dev/null +++ b/include/mbgl/platform/default/headless_view.hpp @@ -0,0 +1,65 @@ +#ifndef MBGL_COMMON_HEADLESS_VIEW +#define MBGL_COMMON_HEADLESS_VIEW + +#ifdef __APPLE__ +#define MBGL_USE_CGL 1 +#else +#define GL_GLEXT_PROTOTYPES +#include <GL/glx.h> +#define MBGL_USE_GLX 1 +#endif + +#include <mbgl/map/view.hpp> +#include <mbgl/platform/gl.hpp> + +#include <memory> + +namespace mbgl { + +class HeadlessDisplay; + +class HeadlessView : public View { +public: + HeadlessView(); + HeadlessView(std::shared_ptr<HeadlessDisplay> display); + ~HeadlessView(); + + void createContext(); + + void resize(uint16_t width, uint16_t height, float pixelRatio); + const std::unique_ptr<uint32_t[]> readPixels(); + + void notify(); + void notify_map_change(MapChange change, timestamp delay = 0); + void make_active(); + void make_inactive(); + void swap(); + +private: + void clear_buffers(); + +private: + std::shared_ptr<HeadlessDisplay> display_; + uint16_t width_; + uint16_t height_; + float pixelRatio_; + +#if MBGL_USE_CGL + CGLContextObj gl_context; +#endif + +#if MBGL_USE_GLX + Display *x_display = nullptr; + GLXFBConfig *fb_configs = nullptr; + GLXContext gl_context = 0; + GLXPbuffer glx_pbuffer = 0; +#endif + + GLuint fbo = 0; + GLuint fbo_depth_stencil = 0; + GLuint fbo_color = 0; +}; + +} + +#endif |