summaryrefslogtreecommitdiff
path: root/source/modules/asura-core/image/stb_decoder.cpp
diff options
context:
space:
mode:
authorchai <chaifix@163.com>2019-08-02 20:51:00 +0800
committerchai <chaifix@163.com>2019-08-02 20:51:00 +0800
commitbad78945ceba425f6a80e3b8dca2414d592970eb (patch)
tree8bf7540766349c534bf9e5746b24fd7507ba034e /source/modules/asura-core/image/stb_decoder.cpp
parent99b90496765df21c5f377f42b9ed073ccb34c1fd (diff)
*修改文件名格式
Diffstat (limited to 'source/modules/asura-core/image/stb_decoder.cpp')
-rw-r--r--source/modules/asura-core/image/stb_decoder.cpp73
1 files changed, 0 insertions, 73 deletions
diff --git a/source/modules/asura-core/image/stb_decoder.cpp b/source/modules/asura-core/image/stb_decoder.cpp
deleted file mode 100644
index ed61aa4..0000000
--- a/source/modules/asura-core/image/stb_decoder.cpp
+++ /dev/null
@@ -1,73 +0,0 @@
-#include <asura-utils/exceptions/exception.h>
-
-#include "stb_decoder.h"
-
-#define STB_IMAGE_IMPLEMENTATION
-#include <stb/stb_image.h>
-
-using namespace AEGraphics;
-
-namespace_begin(AsuraEngine)
-namespace_begin(Image)
-
-bool STBDecoder::CanDecode(IO::DataBuffer& buffer)
-{
- int w = 0;
- int h = 0;
- int comp = 0;
-
- int status = stbi_info_from_memory((const stbi_uc*)buffer.GetData(), buffer.GetSize(), &w, &h, &comp);
-
- return status == 1 && w > 0 && h > 0;
-}
-
-void STBDecoder::Decode(IO::DataBuffer& db, ImageData& imageData)
-{
- const stbi_uc *buffer = (const stbi_uc *)db.GetData();
- // databufferݳ
- int bufferlen = db.GetSize();
-
- int width, height;
- int comp = 0;
- byte* data = nullptr;
- ColorFormat format = COLOR_FORMAT_UNKNOWN;
- std::size_t size = 0;
-
- if (stbi_is_hdr_from_memory(buffer, bufferlen))
- {
- // 4channelfloat
- data = (byte*)stbi_loadf_from_memory(buffer, bufferlen, &width, &height, &comp, STBI_rgb_alpha);
- format = COLOR_FORMAT_RGBA32F;
- size = width * height * 4 * sizeof(float);
- }
- else
- {
- data = (byte*)stbi_load_from_memory(buffer, bufferlen, &width, &height, &comp, STBI_rgb_alpha);
- format = COLOR_FORMAT_RGBA8;
- size = width * height * 4;
- }
- if (data)
- {
- imageData.Lock();
-
- if (imageData.pixels)
- free(imageData.pixels);
- imageData.pixels = (byte*)data;
- imageData.format = format;
- imageData.width = width;
- imageData.height = height;
- imageData.size = size;
-
- imageData.Unlock();
- }
- else
- {
- const char *err = stbi_failure_reason();
- if (err == nullptr)
- err = "unknown error";
- throw Exception("Could not decode image with stb_image (%s).", err);
- }
-}
-
-namespace_end
-namespace_end \ No newline at end of file