#ifndef MBGL_COMMON_HEADLESS_VIEW #define MBGL_COMMON_HEADLESS_VIEW #ifdef __APPLE__ #define MBGL_USE_CGL 1 #else #define GL_GLEXT_PROTOTYPES #include #define MBGL_USE_GLX 1 #endif #include #include #include namespace mbgl { class HeadlessDisplay; class HeadlessView : public View { public: HeadlessView(); HeadlessView(std::shared_ptr display); ~HeadlessView(); void createContext(); void resize(uint16_t width, uint16_t height, float pixelRatio); const std::unique_ptr 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 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