00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011 #include "gui.h"
00012
00013
00014
00015
00016 GuiImageData::GuiImageData(const u8 * img)
00017 {
00018 data = NULL;
00019 width = 0;
00020 height = 0;
00021
00022 if(img)
00023 {
00024 PNGUPROP imgProp;
00025 IMGCTX ctx = PNGU_SelectImageFromBuffer(img);
00026
00027 if(!ctx)
00028 return;
00029
00030 int res = PNGU_GetImageProperties(ctx, &imgProp);
00031
00032 if(res == PNGU_OK)
00033 {
00034 int len = imgProp.imgWidth * imgProp.imgHeight * 4;
00035 if(len%32) len += (32-len%32);
00036 data = (u8 *)memalign (32, len);
00037
00038 if(data)
00039 {
00040 res = PNGU_DecodeTo4x4RGBA8 (ctx, imgProp.imgWidth, imgProp.imgHeight, data, 255);
00041
00042 if(res == PNGU_OK)
00043 {
00044 width = imgProp.imgWidth;
00045 height = imgProp.imgHeight;
00046 DCFlushRange(data, len);
00047 }
00048 else
00049 {
00050 free(data);
00051 data = NULL;
00052 }
00053 }
00054 }
00055 PNGU_ReleaseImageContext (ctx);
00056 }
00057 }
00058
00059
00060
00061
00062 GuiImageData::~GuiImageData()
00063 {
00064 if(data)
00065 {
00066 free(data);
00067 data = NULL;
00068 }
00069 }
00070
00071 u8 * GuiImageData::GetImage()
00072 {
00073 return data;
00074 }
00075
00076 int GuiImageData::GetWidth()
00077 {
00078 return width;
00079 }
00080
00081 int GuiImageData::GetHeight()
00082 {
00083 return height;
00084 }