Files
MapLibreParticleLab/platform/android/MapLibreAndroid/src/cpp/android_renderer_backend.hpp
2026-06-06 01:06:40 +02:00

46 lines
1.4 KiB
C++

#pragma once
#include <mbgl/gfx/backend.hpp>
#include <mbgl/gfx/renderer_backend.hpp>
#include <mbgl/gfx/renderable.hpp>
#include <mbgl/util/image.hpp>
#include <android/native_window.h>
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<AndroidRendererBackend> Create(ANativeWindow* window) {
return mbgl::gfx::Backend::Create<AndroidRendererBackend, ANativeWindow*>(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