From f51b19548692638434588a6c67f88b6c27d793b1 Mon Sep 17 00:00:00 2001 From: Brian Fiete Date: Mon, 12 Apr 2021 17:22:47 -0400 Subject: [PATCH] Support for loading from memory --- BeefySysLib/gfx/RenderDevice.cpp | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/BeefySysLib/gfx/RenderDevice.cpp b/BeefySysLib/gfx/RenderDevice.cpp index bf7da085..cd21c94d 100644 --- a/BeefySysLib/gfx/RenderDevice.cpp +++ b/BeefySysLib/gfx/RenderDevice.cpp @@ -133,10 +133,26 @@ Texture* RenderDevice::LoadTexture(const StringImpl& fileName, int flags) if (!handled) { imageData->mWantsAlphaPremultiplied = (flags & TextureFlag_NoPremult) == 0; - if (!imageData->LoadFromFile(fileName)) + if (fileName.StartsWith("@")) { - failed = true; - BF_FATAL("Failed to load image"); + int colon = (int)fileName.IndexOf(':'); + String addrStr = fileName.Substring(1, colon - 1); + String lenStr = fileName.Substring(colon + 1); + void* addr = (void*)(intptr)strtoll(addrStr.c_str(), NULL, 16); + int len = (int)strtol(lenStr.c_str(), NULL, 10); + if (!imageData->LoadFromMemory(addr, len)) + { + failed = true; + BF_FATAL("Failed to load image"); + } + } + else + { + if (!imageData->LoadFromFile(fileName)) + { + failed = true; + BF_FATAL("Failed to load image"); + } } }