From 2306f24e42c8ce1dc4f559d6e68de0dfee6672ed Mon Sep 17 00:00:00 2001 From: Jorijn van der Graaf Date: Sat, 11 Apr 2026 13:27:15 +0200 Subject: [PATCH] load into buffer --- interfaces/Crafter.Asset-Texture.cppm | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/interfaces/Crafter.Asset-Texture.cppm b/interfaces/Crafter.Asset-Texture.cppm index 292c242..172fdc2 100644 --- a/interfaces/Crafter.Asset-Texture.cppm +++ b/interfaces/Crafter.Asset-Texture.cppm @@ -32,6 +32,12 @@ export namespace Crafter { Transparent // Color blending is used }; + struct TextureInfo { + std::uint16_t sizeX; + std::uint16_t sizeY; + OpaqueType opaque; + }; + template struct TextureAsset { std::uint16_t sizeX; @@ -62,6 +68,24 @@ export namespace Crafter { return tex; } + static TextureInfo LoadInfo(fs::path path) { + TextureInfo info; + + std::ifstream file(path, std::ios::binary); + + file.read(reinterpret_cast(&info.sizeX), sizeof(info.sizeX)); + file.read(reinterpret_cast(&info.sizeY), sizeof(info.sizeY)); + file.read(reinterpret_cast(&info.opaque), sizeof(info.opaque)); + + return info; + } + + static void Load(fs::path path, T* pixels, std::uint16_t sizeX, std::uint16_t sizeY) { + std::ifstream file(path, std::ios::binary); + file.seekg(sizeof(std::uint16_t) + sizeof(std::uint16_t) + sizeof(std::uint8_t), std::ios::cur); + file.read(reinterpret_cast(pixels), sizeX * sizeY * sizeof(T)); + } + template static TextureAsset LoadPNG(fs::path path) { TextureAsset tex;