void MapBackground::CreateMapTileImage(MapTile* pMapTile, void* gResult, uint32 gResultLen, bool isJpg) { if (!IsTileVisible(pMapTile)) { return; } CIwImage image; if (!isJpg) { //pMapTile->pTexture = g_pNotFoundTexture; s3eFile* tempfile = s3eFileOpenFromMemory((void*)gResult, gResultLen); image.ReadFile(tempfile); //image.LoadFromFile("tiles/r0302322130033033130.png"); if (image.GetWidth()) { pMapTile->pTexture = new CIwTexture; pMapTile->pTexture->CopyFromImage(&image); pMapTile->pTexture->Upload(); } s3eFileClose(tempfile); } else { JPEGImage(gResult, gResultLen, image); pMapTile->pTexture = new CIwTexture; pMapTile->pTexture->CopyFromImage(&image); pMapTile->pTexture->Upload(); } }
bool CCImage::_initWithPngData(void * pData, int nDatalen) { IW_CALLSTACK("CCImage::_initWithPngData"); bool bRet = false; s3eFile* pFile = s3eFileOpenFromMemory(pData, nDatalen); IwAssert(GAME, pFile); CIwImage *image = NULL; image = new CIwImage; image->ReadFile( pFile); s3eFileClose(pFile); // init image info m_bPreMulti = true; m_bHasAlpha = image->HasAlpha(); unsigned int bytesPerComponent = 3; if (m_bHasAlpha) { bytesPerComponent = 4; } m_nHeight = (unsigned int)image->GetHeight(); m_nWidth = (unsigned int)image->GetWidth(); m_nBitsPerComponent = (unsigned int)image->GetBitDepth()/bytesPerComponent; tImageSource imageSource; imageSource.data = (unsigned char*)pData; imageSource.size = nDatalen; imageSource.offset = 0; m_pData = new unsigned char[m_nHeight * m_nWidth * bytesPerComponent]; unsigned int bytesPerRow = m_nWidth * bytesPerComponent; if(m_bHasAlpha) { unsigned char *src = NULL; src = (unsigned char *)image->GetTexels(); unsigned char *tmp = (unsigned char *) m_pData; for(unsigned int i = 0; i < m_nHeight*bytesPerRow; i += bytesPerComponent) { *(tmp + i + 0) = (*(src + i + 0) * *(src + i + 3) + 1) >> 8; *(tmp + i + 1) = (*(src + i + 1) * *(src + i + 3) + 1) >> 8; *(tmp + i + 2) = (*(src + i + 2) * *(src + i + 3) + 1) >> 8; *(tmp + i + 3) = *(src + i + 3); } } else { for (int j = 0; j < (m_nHeight); ++j)
bool Texture2DLoader::loadFromMemory(IResource * outResource, uint64 size, const void* data) { Texture2D * texPtr = (Texture2D*)outResource; assert(texPtr != nullptr); CIwImage image; s3eFile * f = s3eFileOpenFromMemory((void*)data, (size_t)size); image.ReadFile(f); s3eFileClose(f); return texPtr->uploadToGPU(image); }
bool CIwGameImage::Init(void* memory_file, int memory_file_size) { CIwGameFile file; if (file.Open(memory_file, memory_file_size)) { // Load the image CIwImage image; image.ReadFile((s3eFile*)file.getFileHandle()); // if required format is different then convert it if (FormatSet && image.GetFormat() != Format) { CIwImage* new_image = ConvertToFormat(image, Format); Image2D = Iw2DCreateImage(*new_image); delete new_image; } else Image2D = Iw2DCreateImage(image); if (FilterSet) setFilter(Filter); if (Image2D == NULL || image.GetFormat() == CIwImage::FORMAT_UNDEFINED) { #if defined(_DEBUG) CIwGameError::LogError("Error: CIwGameImage::Init() - Could not create image!"); #endif // _DEBUG return false; } else { Width = Image2D->GetWidth(); Height = Image2D->GetHeight(); #if defined(_DEBUG) CIwGameError::LogError("Info: CIwGameImage::Init() - Size = ", CIwGameString(memory_file_size).c_str()); CIwGameError::LogError("Info: CIwGameImage::Init() - Width = ", CIwGameString(Width).c_str()); CIwGameError::LogError("Info: CIwGameImage::Init() - Height = ", CIwGameString(Height).c_str()); CIwGameError::LogError("Info: CIwGameImage::Init() - Bit depth = ", CIwGameString(image.GetBitDepth()).c_str()); CIwGameError::LogError("Info: CIwGameImage::Init() - Format = ", CIwGameString(image.GetFormat()).c_str()); #endif // _DEBUG } } // Sanity check if (Width <= 0 || Height <= 0 || Width > 16384 || Height > 16384) return false; State = State_Loaded; return true; }
CIwMaterial* ResourceManager::load(const char* name, int* w, int* h) { int width = 0, height = 0; char res[MAX_RES_NAME] = {0}; sprintf(res, "images/%s/%s", desktop.getDevPath(), name); IIter p = imgs->find(res); if (p != imgs->end()) { if (w != NULL) { *w = p->second.width; } if (h != NULL) { *h = p->second.height; } return p->second.mat; } CIwTexture* texture = new CIwTexture; CIwImage image; s3eFile* pFile = s3eFileOpen(res, "rb"); if (pFile) { image.ReadFile(pFile); width = image.GetWidth(); height = image.GetHeight(); s3eFileClose(pFile); texture->CopyFromImage(&image); texture->Upload(); } else { delete texture; texture = NULL; } CIwMaterial* mat = new CIwMaterial; mat->SetTexture(texture); SImg s; s.texture = texture; s.mat = mat; s.width = width; s.height = height; imgs->insert(IPair(string(res), s)); if (w != NULL) { *w = width; } if (h != NULL) { *h = height; } return mat; }
CzTexture CzPlatformImaging::CreateTexture(void* memory_file, int memory_file_size) { CzFile file; if (file.Open(memory_file, memory_file_size)) { // Load the image CIwImage* image = new CIwImage(); image->ReadFile((s3eFile*)file.getFileHandle()); CIwTexture* texture = new CIwTexture(); texture->_SetFlags( CIwTexture::NO_CHROMA_KEY_F ); texture->CopyFromImage(image); delete image; return (CzTexture)texture; } return NULL; }