void CustomColorsSystem::SaveTexture(const DAVA::FilePath &filePath) { if(filePath.IsEmpty()) return; Sprite* customColorsSprite = drawSystem->GetCustomColorsProxy()->GetSprite(); Texture* customColorsTexture = customColorsSprite->GetTexture(); Image* image = customColorsTexture->CreateImageFromMemory(RenderState::RENDERSTATE_2D_BLEND); ImageSystem::Instance()->Save(filePath, image); SafeRelease(image); StoreSaveFileName(filePath); drawSystem->GetCustomColorsProxy()->ResetChanges(); }
bool CustomColorsSystem::LoadTexture( const DAVA::FilePath &filePath, bool createUndo /* = true */ ) { if(filePath.IsEmpty()) return false; Vector<Image*> images; ImageSystem::Instance()->Load(filePath, images); if(images.empty()) return false; Image* image = images.front(); if(image) { Texture* texture = Texture::CreateFromData(image->GetPixelFormat(), image->GetData(), image->GetWidth(), image->GetHeight(), false); Sprite* sprite = Sprite::CreateFromTexture(texture, 0, 0, texture->GetWidth(), texture->GetHeight()); if (createUndo) { StoreOriginalState(); } RenderManager::Instance()->SetRenderTarget(drawSystem->GetCustomColorsProxy()->GetSprite()); Sprite::DrawState drawState; sprite->Draw(&drawState); RenderManager::Instance()->RestoreRenderTarget(); AddRectToAccumulator(Rect(Vector2(0.f, 0.f), Vector2(texture->GetWidth(), texture->GetHeight()))); SafeRelease(sprite); SafeRelease(texture); for_each(images.begin(), images.end(), SafeRelease<Image>); if (createUndo) { ((SceneEditor2*)GetScene())->BeginBatch("Load custom colors texture"); StoreSaveFileName(filePath); CreateUndoPoint(); ((SceneEditor2*)GetScene())->EndBatch(); } } return true; }
void LandscapeEditorCustomColors::SaveTextureAction(const FilePath &pathToFile) { if(pathToFile.IsEmpty()) return; if(colorSprite) { Image *img = colorSprite->GetTexture()->CreateImageFromMemory(); if(img) { StoreSaveFileName(pathToFile.GetAbsolutePathname()); ImageLoader::Save(img, pathToFile.GetAbsolutePathname()); SafeRelease(img); unsavedChanges = false; } } }
void LandscapeEditorCustomColors::LoadTextureAction(const FilePath &pathToFile) { if(pathToFile.IsEmpty()) return; Vector<Image*> images = ImageLoader::CreateFromFile(pathToFile); if(images.empty()) return; Image* image = images.front(); if(image) { Texture* texture = Texture::CreateFromData(image->GetPixelFormat(), image->GetData(), image->GetWidth(), image->GetHeight(), false); SafeRelease(colorSprite); colorSprite = Sprite::CreateAsRenderTarget(texSurf->GetWidth(), texSurf->GetHeight(), FORMAT_RGBA8888); Sprite* sprite = Sprite::CreateFromTexture(texture, 0, 0, texture->GetWidth(), texture->GetHeight()); StoreOriginalState(); RenderManager::Instance()->SetRenderTarget(colorSprite); sprite->Draw(); RenderManager::Instance()->RestoreRenderTarget(); PerformLandscapeDraw(); SafeRelease(sprite); SafeRelease(texture); for_each(images.begin(), images.end(), SafeRelease<Image>); StoreSaveFileName(pathToFile); CreateUndoPoint(); } }