blob: f62e1e8992c9570f022b5e1ec259f634b926309b [file] [log] [blame]
#ifndef _RIVE_FILE_READER_HPP_
#define _RIVE_FILE_READER_HPP_
#include <rive/core/binary_reader.hpp>
#include <rive/file.hpp>
#include "rive_testing.hpp"
class RiveFileReader {
std::unique_ptr<rive::File> m_File;
uint8_t* m_Bytes = nullptr;
rive::BinaryReader* m_Reader;
public:
RiveFileReader(const char path[]) {
FILE* fp = fopen(path, "r");
REQUIRE(fp != nullptr);
fseek(fp, 0, SEEK_END);
const size_t length = ftell(fp);
fseek(fp, 0, SEEK_SET);
m_Bytes = new uint8_t[length];
REQUIRE(fread(m_Bytes, 1, length, fp) == length);
m_Reader = new rive::BinaryReader(m_Bytes, length);
rive::ImportResult result;
m_File = rive::File::import(*m_Reader, &result);
REQUIRE(result == rive::ImportResult::success);
REQUIRE(m_File != nullptr);
REQUIRE(m_File->artboard() != nullptr);
}
~RiveFileReader() {
delete m_Reader;
delete[] m_Bytes;
}
rive::File* file() const { return m_File.get(); }
};
#endif