summaryrefslogtreecommitdiff
path: root/source/modules/asura-core/Image/ImageData.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/ImageData.cpp
parent99b90496765df21c5f377f42b9ed073ccb34c1fd (diff)
*修改文件名格式
Diffstat (limited to 'source/modules/asura-core/Image/ImageData.cpp')
-rw-r--r--source/modules/asura-core/Image/ImageData.cpp62
1 files changed, 62 insertions, 0 deletions
diff --git a/source/modules/asura-core/Image/ImageData.cpp b/source/modules/asura-core/Image/ImageData.cpp
new file mode 100644
index 0000000..c75166f
--- /dev/null
+++ b/source/modules/asura-core/Image/ImageData.cpp
@@ -0,0 +1,62 @@
+#include "ImageData.h"
+#include "PngDecoder.h"
+#include "StbDecoder.h"
+#include "ImageDecoder.h"
+
+using namespace std;
+
+using namespace AEGraphics;
+
+namespace_begin(AsuraEngine)
+namespace_begin(Image)
+
+// 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()
+{
+ m_Mutex.Lock();
+}
+
+void ImageData::Unlock()
+{
+ m_Mutex.Unlock();
+}
+
+namespace_end
+namespace_end \ No newline at end of file