From 250e30d73f09e9da2b5a81d0fbae63744ae12a73 Mon Sep 17 00:00:00 2001 From: chai Date: Tue, 2 Apr 2019 08:47:15 +0800 Subject: *misc --- source/libs/asura-lib-core/graphics/image_data.cpp | 51 ++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 source/libs/asura-lib-core/graphics/image_data.cpp (limited to 'source/libs/asura-lib-core/graphics/image_data.cpp') diff --git a/source/libs/asura-lib-core/graphics/image_data.cpp b/source/libs/asura-lib-core/graphics/image_data.cpp new file mode 100644 index 0000000..b79dfab --- /dev/null +++ b/source/libs/asura-lib-core/graphics/image_data.cpp @@ -0,0 +1,51 @@ +#include "image_data.h" +#include "png_decoder.h" +#include "stb_decoder.h" +#include "image_decoder.h" + +namespace AsuraEngine +{ + namespace Graphics + { + + using namespace std; + + // 解析image的decoder,用来作为解析策略。 + list ImageData::ImageDecoders = { + new PNGDecoder(), // png + new STBDecoder() // jpeg, tga, bmp + }; + + ImageData::ImageData(const IO::DataBuffer& buffer) + : DecodedData(buffer) + { + } + + ImageData::~ImageData() + { + if (pixels) + delete[] pixels; + } + + /// + /// 解析,如果无法成功,抛出异常 + /// + void ImageData::Decode(const IO::DataBuffer& buffer) + { + for (ImageDecoder* decoder : ImageDecoders) + { + if (decoder->CanDecode(buffer)) + { + decoder->Decode(buffer, *this); + return; + } + } + } + + Color ImageData::GetPixel(uint x, uint y) + { + + } + + } +} \ No newline at end of file -- cgit v1.1-26-g67d0