CBaseTexture *CBaseTexture::LoadFromFile(const std::string& texturePath, unsigned int idealWidth, unsigned int idealHeight, bool requirePixels, const std::string& strMimeType) { #if defined(TARGET_ANDROID) CURL url(texturePath); if (url.IsProtocol("androidapp")) { XFILE::CFileAndroidApp file; if (file.Open(url)) { unsigned char* inputBuff; unsigned int width; unsigned int height; unsigned int inputBuffSize = file.ReadIcon(&inputBuff, &width, &height); file.Close(); if (!inputBuffSize) return NULL; CTexture *texture = new CTexture(); texture->LoadFromMemory(width, height, width*4, XB_FMT_RGBA8, true, inputBuff); delete [] inputBuff; return texture; } } #endif CTexture *texture = new CTexture(); if (texture->LoadFromFileInternal(texturePath, idealWidth, idealHeight, requirePixels, strMimeType)) return texture; delete texture; return NULL; }
CBaseTexture *CBaseTexture::LoadFromFile(const CStdString& texturePath, unsigned int idealWidth, unsigned int idealHeight, bool autoRotate) { #if defined(TARGET_ANDROID) CURL url(texturePath); if (url.GetProtocol() == "androidapp") { XFILE::CFileAndroidApp file; if (file.Open(url)) { unsigned int imgsize = (unsigned int)file.GetLength(); unsigned char* inputBuff = new unsigned char[imgsize]; unsigned int inputBuffSize = file.Read(inputBuff, imgsize); file.Close(); if (inputBuffSize != imgsize) { delete [] inputBuff; return NULL; } CTexture *texture = new CTexture(); unsigned int width = file.GetIconWidth(); unsigned int height = file.GetIconHeight(); texture->LoadFromMemory(width, height, width*4, XB_FMT_RGBA8, true, inputBuff); delete [] inputBuff; return texture; } } #endif CTexture *texture = new CTexture(); if (texture->LoadFromFileInternal(texturePath, idealWidth, idealHeight, autoRotate)) return texture; delete texture; return NULL; }