From 0fe399a33ecc31f3992ca3b2443a0078952b48fc Mon Sep 17 00:00:00 2001 From: light7734 Date: Wed, 1 Oct 2025 17:29:35 +0330 Subject: [PATCH] chore(asset_parser): removed for rewrite --- modules/asset_parser/CMakeLists.txt | 10 -- .../asset_parser/private/assets/texture.cpp | 164 ------------------ modules/asset_parser/private/parser.cpp | 5 - modules/asset_parser/public/assets/text.hpp | 58 ------- .../asset_parser/public/assets/texture.hpp | 64 ------- .../public/compressors/compressors.hpp | 14 -- modules/asset_parser/public/parser.hpp | 68 -------- 7 files changed, 383 deletions(-) delete mode 100644 modules/asset_parser/CMakeLists.txt delete mode 100644 modules/asset_parser/private/assets/texture.cpp delete mode 100644 modules/asset_parser/private/parser.cpp delete mode 100644 modules/asset_parser/public/assets/text.hpp delete mode 100644 modules/asset_parser/public/assets/texture.hpp delete mode 100644 modules/asset_parser/public/compressors/compressors.hpp delete mode 100644 modules/asset_parser/public/parser.hpp diff --git a/modules/asset_parser/CMakeLists.txt b/modules/asset_parser/CMakeLists.txt deleted file mode 100644 index 4625172..0000000 --- a/modules/asset_parser/CMakeLists.txt +++ /dev/null @@ -1,10 +0,0 @@ -add_library_module(asset_parser - parser.cpp - assets/texture.cpp - assets/text.cpp -) - -target_link_libraries( - asset_parser - PRIVATE logger -) diff --git a/modules/asset_parser/private/assets/texture.cpp b/modules/asset_parser/private/assets/texture.cpp deleted file mode 100644 index 3188a37..0000000 --- a/modules/asset_parser/private/assets/texture.cpp +++ /dev/null @@ -1,164 +0,0 @@ -#include - -namespace Assets { - -/* static */ void TextureAsset::pack(const PackageData &data, const std::filesystem::path &out_path) -{ - const auto &[metadata, texture_metadata, pixels] = data; - - auto stream = std::ofstream { out_path, std::ios::binary | std::ios::trunc }; - if (!stream.is_open()) - { - throw std::runtime_error { - std::format("Failed to open ofstream for packing texture at: {}", out_path.string()) - }; - } - stream.seekp(0); - - // NOLINTBEGIN(cppcoreguidelines-pro-type-cstyle-cast) - stream.write((char *)¤t_version, sizeof(current_version)); - - stream.write((char *)&metadata, sizeof(metadata)); - stream.write((char *)&texture_metadata, sizeof(texture_metadata)); - - constexpr auto number_of_blobs = uint32_t { 1 }; - stream.write((char *)&number_of_blobs, sizeof(number_of_blobs)); - - auto pixels_metadata = BlobMetadata { - .tag = BlobMetadata::Tag::color, - .offset = static_cast(stream.tellp()) + sizeof(BlobMetadata), - .compression_type = CompressionType::None, - .compressed_size = pixels.size(), - .uncompressed_size = pixels.size(), - }; - - stream.write((char *)&pixels_metadata, sizeof(pixels_metadata)); - stream.write((char *)&pixels[0], static_cast(pixels.size())); - // NOLINTEND(cppcoreguidelines-pro-type-cstyle-cast) -} - -TextureAsset::TextureAsset(const std::filesystem::path &path) -{ - m_stream = std::ifstream { path, std::ios::binary }; - if (!m_stream.is_open()) - { - throw std::runtime_error { - std::format("Failed to open ifstream for loading texture asset at: {}", path.string()) - }; - } - - // NOLINTBEGIN(cppcoreguidelines-pro-type-cstyle-cast) - m_stream.read((char *)&version, sizeof(version)); - m_stream.read((char *)&m_asset_metadata, sizeof(m_asset_metadata)); - m_stream.read((char *)&m_metadata, sizeof(m_metadata)); - - auto num_blobs = uint32_t {}; - m_stream.read((char *)&num_blobs, sizeof(num_blobs)); - if (num_blobs != 1) - { - throw std::runtime_error { - std::format("Failed to load texture asset: invalid number of blobs: {}", num_blobs) - }; - } - - m_stream.read((char *)&m_pixel_blob_metadata, sizeof(m_pixel_blob_metadata)); - if (m_pixel_blob_metadata.tag != BlobMetadata::Tag::color) - { - throw std::runtime_error { - std::format( - "Failed to load texture asset: invalid blob tag, expected {}, got {}", - std::to_underlying(BlobMetadata::Tag::color), - std::to_underlying(m_pixel_blob_metadata.tag) - ), - }; - } - // NOLINTEND(cppcoreguidelines-pro-type-cstyle-cast) -} - -void TextureAsset::unpack_blob( - BlobMetadata::Tag tag, - std::byte *destination, - size_t destination_capacity -) -{ - if (tag != BlobMetadata::Tag::color) - { - throw std::runtime_error { - std::format("Invalid tag for unpack_blob of TextureAsset: {}", std::to_underlying(tag)) - }; - } - - m_stream.seekg(static_cast(m_pixel_blob_metadata.offset)); - switch (m_pixel_blob_metadata.compression_type) - { - case Assets::CompressionType::None: - if (m_pixel_blob_metadata.uncompressed_size != m_pixel_blob_metadata.compressed_size) - { - throw std::runtime_error( - "Failed to unpack blob from TextureAsset: " - "compressed/uncompressed size mismatch for no compression " - "type" - ); - } - - if (m_pixel_blob_metadata.uncompressed_size > destination_capacity) - { - throw std::runtime_error( - "Failed to unpack blob from TextureAsset: " - "uncompressed_size > destination_capacity, unpacking " - "would result in segfault" - ); - } - - if (!m_stream.is_open()) - { - throw std::runtime_error( - "Failed to unpack blob from TextureAsset: ifstream is " - "closed" - ); - } - - m_stream.read( - // NOLINTNEXTLINE(cppcoreguidelines-pro-type-cstyle-cast) - (char *)destination, - static_cast(m_pixel_blob_metadata.uncompressed_size) - ); - - return; - - default: - throw std::runtime_error( - std::format( - "Failed to unpack blob from TextureAsset: unsupported " - "compression type: {}", - std::to_underlying(m_pixel_blob_metadata.compression_type) - ) - ); - } -} - -[[nodiscard]] auto TextureAsset::get_asset_metadata() const -> const Asset::Metadata & -{ - return m_asset_metadata; -} - -[[nodiscard]] auto TextureAsset::get_metadata() const -> const Metadata & -{ - return m_metadata; -} - -[[nodiscard]] auto TextureAsset::get_blob_metadata(BlobMetadata::Tag tag) const - -> const BlobMetadata & -{ - if (tag != BlobMetadata::Tag::color) - { - throw std::runtime_error { std::format( - "Invalid tag for get_blob_metadata of TextureAsset: {}", - std::to_underlying(tag) - ) }; - } - - return m_pixel_blob_metadata; -} - -} // namespace Assets diff --git a/modules/asset_parser/private/parser.cpp b/modules/asset_parser/private/parser.cpp deleted file mode 100644 index 4511740..0000000 --- a/modules/asset_parser/private/parser.cpp +++ /dev/null @@ -1,5 +0,0 @@ -#include - -namespace Assets { - -} // namespace Assets diff --git a/modules/asset_parser/public/assets/text.hpp b/modules/asset_parser/public/assets/text.hpp deleted file mode 100644 index 768e3a1..0000000 --- a/modules/asset_parser/public/assets/text.hpp +++ /dev/null @@ -1,58 +0,0 @@ -#pragma once - -#include -#include -#include -#include -#include -#include - -namespace Assets { - -class TextAsset: public Asset -{ -public: - struct Metadata - { - uint32_t lines {}; - }; - - /** Data required to pack a text asset */ - struct PackageData - { - Asset::Metadata metadata; - - Metadata text_metadata; - - Blob text_blob; - }; - - static void pack(const PackageData &data, const std::filesystem::path &out_path); - - TextAsset(const std::filesystem::path &path); - - void unpack_blob( - BlobMetadata::Tag tag, - std::byte *destination, - size_t destination_capacity - ) const; - - [[nodiscard]] auto get_asset_metadata() const -> const Asset::Metadata &; - - [[nodiscard]] auto get_metadata() const -> const Metadata &; - - [[nodiscard]] auto get_blob_metadata(BlobMetadata::Tag tag) const -> const BlobMetadata &; - -private: - uint32_t version {}; - - Asset::Metadata m_asset_metadata {}; - - Metadata m_metadata {}; - - BlobMetadata m_text_blob_metadata {}; - - mutable std::ifstream m_stream; -}; - -} // namespace Assets diff --git a/modules/asset_parser/public/assets/texture.hpp b/modules/asset_parser/public/assets/texture.hpp deleted file mode 100644 index 09bcda7..0000000 --- a/modules/asset_parser/public/assets/texture.hpp +++ /dev/null @@ -1,64 +0,0 @@ -#pragma once - -#include -#include -#include -#include -#include -#include - -namespace Assets { - -class TextureAsset: public Asset -{ -public: - enum class Format : uint32_t // NOLINT(performance-enum-size) - { - None = 0, - RGBA8, - }; - - struct Metadata - { - Format format; - - uint32_t num_components; - - std::array pixel_size; - }; - - /** Data required to pack a texture asset */ - struct PackageData - { - Asset::Metadata metadata; - - Metadata texture_metadata; - - Blob pixels; - }; - - static void pack(const PackageData &data, const std::filesystem::path &out_path); - - TextureAsset(const std::filesystem::path &path); - - void unpack_blob(BlobMetadata::Tag tag, std::byte *destination, size_t destination_capacity); - - [[nodiscard]] auto get_asset_metadata() const -> const Asset::Metadata &; - - [[nodiscard]] auto get_metadata() const -> const Metadata &; - - [[nodiscard]] auto get_blob_metadata(BlobMetadata::Tag tag) const -> const BlobMetadata &; - -private: - uint32_t version {}; - - Asset::Metadata m_asset_metadata {}; - - Metadata m_metadata {}; - - BlobMetadata m_pixel_blob_metadata {}; - - std::ifstream m_stream; -}; - -} // namespace Assets diff --git a/modules/asset_parser/public/compressors/compressors.hpp b/modules/asset_parser/public/compressors/compressors.hpp deleted file mode 100644 index dfee965..0000000 --- a/modules/asset_parser/public/compressors/compressors.hpp +++ /dev/null @@ -1,14 +0,0 @@ -#pragma once - -#include - -namespace Assets { - -enum class CompressionType : uint32_t // NOLINT(performance-enum-size) -{ - None, - LZ4, - LZ4HC, -}; - -} diff --git a/modules/asset_parser/public/parser.hpp b/modules/asset_parser/public/parser.hpp deleted file mode 100644 index 43c6832..0000000 --- a/modules/asset_parser/public/parser.hpp +++ /dev/null @@ -1,68 +0,0 @@ -#pragma once - -#include -#include -#include -#include -#include -#include -#include - -namespace Assets { - -constexpr auto current_version = uint32_t { 1 }; - -struct BlobMetadata -{ - enum class Tag : uint8_t - { - text, - color, - depth, - vertices, - indices, - }; - - Tag tag; - - size_t offset; - - CompressionType compression_type; - - size_t compressed_size; - - size_t uncompressed_size; -}; - - -using Blob = std::vector; - -class Asset -{ -public: - enum class Type : uint32_t // NOLINT(performance-enum-size) - { - None, - Texture, - Text, - Mesh, - Material, - }; - - struct Metadata - { - Type type; - }; - - Asset() = default; - - /** Directly unpacks from disk to the destination. - * - * @note The destination MUST have at least blob_metadata.unpacked_size bytes available for - * writing, otherwise segfault could occur! - */ - void unpack_blob(BlobMetadata::Tag blob_tag, std::byte *destination); -}; - - -} // namespace Assets