diff options
Diffstat (limited to 'source/modules/asura-core/image/image_data.cpp')
-rw-r--r-- | source/modules/asura-core/image/image_data.cpp | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/source/modules/asura-core/image/image_data.cpp b/source/modules/asura-core/image/image_data.cpp new file mode 100644 index 0000000..1a6d3a2 --- /dev/null +++ b/source/modules/asura-core/image/image_data.cpp @@ -0,0 +1,62 @@ +#include "image_data.h" +#include "png_decoder.h" +#include "stb_decoder.h" +#include "image_decoder.h" + +namespace AsuraEngine +{ + namespace Graphics + { + + using namespace std; + + // imagedecoderΪԡ + list<ImageDecoder*> ImageData::ImageDecoders = { + new PNGDecoder(), // png + new STBDecoder() // jpeg, tga, bmp + }; + + ImageData::ImageData() + : pixels(nullptr) + , size(0) + , width(0) + , height(0) + , format(COLOR_FORMAT_UNKNOWN) + { + } + + ImageData::~ImageData() + { + if (pixels) + delete[] pixels; + } + + void ImageData::Decode(IO::DataBuffer& buffer) + { + for (ImageDecoder* decoder : ImageDecoders) + { + if (decoder->CanDecode(buffer)) + { + decoder->Decode(buffer, *this); + return; + } + } + } + + Color ImageData::GetPixel(uint x, uint y) + { + return Color(); + } + + void ImageData::Lock() + { + mMutex.Lock(); + } + + void ImageData::Unlock() + { + mMutex.Unlock(); + } + + } +}
\ No newline at end of file |