blob: 7ef295f8b613888ee7653fb26809dd8dc688dbcd [file] [log] [blame]
/*
* Copyright 2023 Rive
*/
#pragma once
#include "rive/pls/pls_render_context.hpp"
namespace rive::pls
{
class PLSRenderContextImpl
{
public:
virtual ~PLSRenderContextImpl() {}
const PlatformFeatures& platformFeatures() const { return m_platformFeatures; }
virtual void prepareToMapBuffers() {}
virtual void resizePathTexture(size_t width, size_t height) = 0;
virtual void resizeContourTexture(size_t width, size_t height) = 0;
virtual void resizeSimpleColorRampsBuffer(size_t sizeInBytes) = 0;
virtual void resizeGradSpanBuffer(size_t sizeInBytes) = 0;
virtual void resizeTessVertexSpanBuffer(size_t sizeInBytes) = 0;
virtual void resizeTriangleVertexBuffer(size_t sizeInBytes) = 0;
virtual void resizeGradientTexture(size_t height) = 0;
virtual void resizeTessellationTexture(size_t height) = 0;
virtual void* mapPathTexture() = 0;
virtual void* mapContourTexture() = 0;
virtual void* mapSimpleColorRampsBuffer() = 0;
virtual void* mapGradSpanBuffer() = 0;
virtual void* mapTessVertexSpanBuffer() = 0;
virtual void* mapTriangleVertexBuffer() = 0;
virtual void unmapPathTexture(size_t widthWritten, size_t heightWritten) = 0;
virtual void unmapContourTexture(size_t widthWritten, size_t heightWritten) = 0;
virtual void unmapSimpleColorRampsBuffer(size_t bytesWritten) = 0;
virtual void unmapGradSpanBuffer(size_t bytesWritten) = 0;
virtual void unmapTessVertexSpanBuffer(size_t bytesWritten) = 0;
virtual void unmapTriangleVertexBuffer(size_t bytesWritten) = 0;
virtual void updateFlushUniforms(const FlushUniforms*) = 0;
virtual void flush(const PLSRenderContext::FlushDescriptor&) = 0;
protected:
PlatformFeatures m_platformFeatures;
};
} // namespace rive::pls