| #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 { | |
| rive::File* m_File = nullptr; | |
| 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); | |
| auto result = rive::File::import(*m_Reader, &m_File); | |
| REQUIRE(result == rive::ImportResult::success); | |
| REQUIRE(m_File != nullptr); | |
| REQUIRE(m_File->artboard() != nullptr); | |
| } | |
| ~RiveFileReader() { | |
| delete m_File; | |
| delete m_Reader; | |
| delete[] m_Bytes; | |
| } | |
| rive::File* file() const { return m_File; } | |
| }; | |
| #endif |