From a020d1b653f94fbcaac06c15f9dbab4521fda355 Mon Sep 17 00:00:00 2001 From: BlockMen Date: Sun, 21 Sep 2014 02:23:55 +0200 Subject: Allow taking screenshots of formspecs and move message to chat --- src/client.cpp | 34 ++++++++++++++++++++++++++++++---- 1 file changed, 30 insertions(+), 4 deletions(-) (limited to 'src/client.cpp') diff --git a/src/client.cpp b/src/client.cpp index 30280369f..accff4b01 100644 --- a/src/client.cpp +++ b/src/client.cpp @@ -2538,16 +2538,14 @@ void Client::typeChatMessage(const std::wstring &message) // Show locally if (message[0] == L'/') { - m_chat_queue.push_back( - (std::wstring)L"issued command: "+message); + m_chat_queue.push_back((std::wstring)L"issued command: " + message); } else { LocalPlayer *player = m_env.getLocalPlayer(); assert(player != NULL); std::wstring name = narrow_to_wide(player->getName()); - m_chat_queue.push_back( - (std::wstring)L"<"+name+L"> "+message); + m_chat_queue.push_back((std::wstring)L"<" + name + L"> " + message); } } @@ -2732,6 +2730,34 @@ float Client::getAvgRate(void) m_con.getLocalStat(con::AVG_DL_RATE)); } +void Client::makeScreenshot(IrrlichtDevice *device) +{ + irr::video::IVideoDriver *driver = device->getVideoDriver(); + irr::video::IImage* const raw_image = driver->createScreenShot(); + if (raw_image) { + irr::video::IImage* const image = driver->createImage(video::ECF_R8G8B8, + raw_image->getDimension()); + + if (image) { + raw_image->copyTo(image); + irr::c8 filename[256]; + snprintf(filename, sizeof(filename), "%s" DIR_DELIM "screenshot_%u.png", + g_settings->get("screenshot_path").c_str(), + device->getTimer()->getRealTime()); + std::stringstream sstr; + if (driver->writeImageToFile(image, filename)) { + sstr << "Saved screenshot to '" << filename << "'"; + } else { + sstr << "Failed to save screenshot '" << filename << "'"; + } + m_chat_queue.push_back(narrow_to_wide(sstr.str())); + infostream << sstr << std::endl; + image->drop(); + } + raw_image->drop(); + } +} + // IGameDef interface // Under envlock IItemDefManager* Client::getItemDefManager() -- cgit v1.2.3