#pragma once #include #include #include #include #include namespace mbgl { namespace android { class AndroidRendererBackend { public: AndroidRendererBackend() = default; AndroidRendererBackend(const AndroidRendererBackend&) = delete; AndroidRendererBackend& operator=(const AndroidRendererBackend&) = delete; virtual ~AndroidRendererBackend() = default; static std::unique_ptr Create(ANativeWindow* window) { return mbgl::gfx::Backend::Create(window); } virtual mbgl::gfx::RendererBackend& getImpl() = 0; virtual void updateViewPort(); // Ensures the current context is not cleaned up when destroyed virtual void markContextLost(); virtual bool createSurface(ANativeWindow*) { return false; } virtual void destroySurface() {} virtual void resizeFramebuffer(int width, int height); virtual void enableFramebufferRead(bool value) {} virtual PremultipliedImage readFramebuffer(); gfx::Renderable::SwapBehaviour getSwapBehavior() const { return swapBehaviour; } virtual void setSwapBehavior(gfx::Renderable::SwapBehaviour swapBehaviour); protected: gfx::Renderable::SwapBehaviour swapBehaviour = gfx::Renderable::SwapBehaviour::NoFlush; }; } // namespace android } // namespace mbgl