summaryrefslogtreecommitdiffstats
path: root/src/graphics/engine/engine.cpp
diff options
context:
space:
mode:
authorPiotr Dziwiński <piotrdz@gmail.com>2014-06-24 19:42:25 +0200
committerPiotr Dziwiński <piotrdz@gmail.com>2014-06-24 19:42:25 +0200
commitae13e0a62121d7fc8fa5ec5769ea5e7125443146 (patch)
treee2d5883e04bd01342f51d6457a130d663fc5eafd /src/graphics/engine/engine.cpp
parent52cf9e2815688481f689e03e67c5fc983ed1351b (diff)
parentf5ba2a27d4422401317d814c60048121f9804429 (diff)
downloadcolobot-ae13e0a62121d7fc8fa5ec5769ea5e7125443146.tar.gz
colobot-ae13e0a62121d7fc8fa5ec5769ea5e7125443146.tar.bz2
colobot-ae13e0a62121d7fc8fa5ec5769ea5e7125443146.zip
Merge pull request #304 from MohamedWaheed/dev
Savefile screenshot implementation and screenshot loading bug fix
Diffstat (limited to 'src/graphics/engine/engine.cpp')
-rw-r--r--src/graphics/engine/engine.cpp17
1 files changed, 14 insertions, 3 deletions
diff --git a/src/graphics/engine/engine.cpp b/src/graphics/engine/engine.cpp
index d6e4415..e0861d2 100644
--- a/src/graphics/engine/engine.cpp
+++ b/src/graphics/engine/engine.cpp
@@ -424,9 +424,20 @@ void CEngine::FrameUpdate()
bool CEngine::WriteScreenShot(const std::string& fileName, int width, int height)
{
- // TODO write screenshot: not very important for now
- GetLogger()->Debug("CEngine::WriteSceenShot(): stub!\n");
- return true;
+ void *pixels = m_device->GetFrameBufferPixels();
+ CImage img({width,height});
+
+ img.SetDataPixels(pixels);
+ img.flipVertically();
+
+ if ( img.SavePNG(fileName.c_str()) ){
+ GetLogger()->Info("Save SceenShot Saved Successfully!\n");
+ return true;
+ }
+ else{
+ GetLogger()->Error("%s!\n",img.GetError().c_str());
+ return false;
+ }
}
bool CEngine::GetPause()