00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #include "renderers/IrrlichtRenderer/IrrlichtResourceProvider.h"
00027
00028 #include "CEGUIExceptions.h"
00029
00030
00031
00032 #include <IReadFile.h>
00033
00034
00035 namespace CEGUI
00036 {
00037
00038 IrrlichtResourceProvider::IrrlichtResourceProvider(irr::io::IFileSystem* fsys_)
00039 : ResourceProvider(), fsys(fsys_)
00040 {
00041 if(fsys!=0)fsys->grab();
00042 }
00043
00044 IrrlichtResourceProvider::~IrrlichtResourceProvider(void)
00045 {
00046 if(fsys!=0)fsys->drop();
00047 }
00048
00049 void IrrlichtResourceProvider::loadRawDataContainer(const String& filename, RawDataContainer& output, const String& resourceGroup)
00050 {
00051 if(!fsys->existFile(filename.c_str()))
00052 {
00053 String sMsg=(utf8*)"IrrlichtResourceProvider::loadRawDataContainer - Filename supplied for loading must be valid";
00054 sMsg+=(utf8*)" ["+filename+(utf8*)"]";
00055 throw InvalidRequestException(sMsg);
00056 }
00057 else
00058 {
00059 irr::u8* input;
00060 irr::u32 input_size;
00061 irr::io::IReadFile* f=fsys->createAndOpenFile(filename.c_str());
00062 input_size=f->getSize();
00063 input= new irr::u8[input_size];
00064 f->read(input,input_size);
00065
00066 output.setData(input);
00067 output.setSize(input_size);
00068 }
00069 }
00070 }