blob: 27ee8b0be648447a77f2344618a62dcf92196468 [file] [log] [blame]
/*
* Copyright 2022 Rive
*/
#ifndef _RIVE_FACTORY_UTILS_HPP_
#define _RIVE_FACTORY_UTILS_HPP_
#include "rive/factory.hpp"
namespace rive
{
// Generic subclass of RenderBuffer that just stores the data on the cpu.
//
class DataRenderBuffer : public lite_rtti_override<RenderBuffer, DataRenderBuffer>
{
public:
DataRenderBuffer(RenderBufferType type, RenderBufferFlags flags, size_t sizeInBytes) :
lite_rtti_override(type, flags, sizeInBytes)
{
m_storage = malloc(sizeInBytes);
}
~DataRenderBuffer() { free(m_storage); }
const float* f32s() const { return reinterpret_cast<const float*>(m_storage); }
const uint16_t* u16s() const { return reinterpret_cast<const uint16_t*>(m_storage); }
const Vec2D* vecs() const { return reinterpret_cast<const Vec2D*>(f32s()); }
protected:
void* onMap() override { return m_storage; }
void onUnmap() override {}
private:
void* m_storage;
};
} // namespace rive
#endif