| /* | |
| * Copyright 2022 Rive | |
| */ | |
| #ifndef RENDER_CONTEXT_HPP | |
| #define RENDER_CONTEXT_HPP | |
| #include "testing_window.hpp" | |
| #include <memory> | |
| namespace rive | |
| { | |
| class Renderer; | |
| class Factory; | |
| }; // namespace rive | |
| // Provides a rive::Factory and rive::Renderer, with a few extra testing and | |
| // GL-specific functions. | |
| class TestingGLRenderer | |
| { | |
| public: | |
| static std::unique_ptr<TestingGLRenderer> Make( | |
| const TestingWindow::BackendParams&); | |
| virtual void init(void* getGLProcAddress) = 0; | |
| virtual rive::Factory* factory() = 0; | |
| virtual std::unique_ptr<rive::Renderer> reset( | |
| int width, | |
| int height, | |
| uint32_t targetTextureID = 0) = 0; | |
| virtual void beginFrame(const TestingWindow::FrameOptions&) = 0; | |
| virtual void flush(int dpiScale = 1) = 0; | |
| // For testing directly on RenderContext. | |
| virtual rive::gpu::RenderContext* renderContext() const { return nullptr; } | |
| virtual rive::gpu::RenderTarget* renderTarget() const { return nullptr; } | |
| // For testing render pass breaks. Caller must call | |
| // renderContext()->beginFrame() again. | |
| virtual void flushPLSContext(rive::gpu::RenderTarget* offscreenRenderTarget) | |
| {} | |
| virtual ~TestingGLRenderer(); | |
| }; | |
| #endif |