00001 #include "flGlobal.h"
00002 #if FL_TEXTURE_PNG != 0
00003 #include <stdlib.h>
00004 #include <string.h>
00005 #include <pspgu.h>
00006
00007 #if FL_INCLUDE_ALL_C == 0
00008 #include "flTexturePNG.h"
00009 #include "flFile.h"
00010 #include "flMemory.h"
00011
00012 #if FL_DEBUG != 0
00013 #include "flDebug.h"
00014 #endif
00015 #endif
00016
00017 Texture* texLoadPNG(char* inPath) {
00018 #if FL_FILE != 0
00019 File* tempFile = fileOpen(inPath, FILE_MODE_READ | FILE_MODE_BINARY);
00020 #else
00021 FILE* tempFile = fopen(inPath, "rb");
00022 #endif
00023 if(!tempFile) {
00024 #if FL_DEBUG_WARNING != 0
00025 char tempString[256];
00026 sprintf(tempString, "PNG load error (%s).\nFile cannot be opened.", inPath);
00027 debugWarning(tempString);
00028 #endif
00029 return NULL;
00030 }
00031
00032 u8* tempPngHeader[8];
00033 fileRead(tempPngHeader, 8, tempFile);
00034 if(png_sig_cmp(tempPngHeader, 0, 8);) {
00035 #if FL_DEBUG_WARNING != 0
00036 char tempString[256];
00037 sprintf(tempString, "PNG load error (%s).\nFile is not in png format.", inPath);
00038 debugWarning(tempString);
00039 #endif
00040 return NULL;
00041 }
00042
00043
00044 fileClose(tempFile);
00045
00046 Texture* tempOut = texCreate(inWidth, inHeight, inPixelFormat);
00047 if(!tempOut) {
00048 fileClose(tempFile);
00049 #if FL_DEBUG_ERROR != 0
00050 char tempString[256];
00051 sprintf(tempString, "Couldn't create texture struct, while loading \"%s\".\nOut of memory.", inPath);
00052 debugError(tempString);
00053 #endif
00054 return NULL;
00055 }
00056
00057 return tempOut;
00058 }
00059
00060 bool texSavePNG(Texture* inTex, char* inPath) {
00061 #if FL_DEBUG_ERROR != 0
00062 debugError("PNG saving not yet supported.");
00063 #endif
00064
00065 return false;
00066 }
00067
00068 #endif