blob: 8959da919be6f47d75c35f253f5e23d303386075 [file] [log] [blame] [edit]
/*
* 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