86 lines
2.6 KiB
C++
86 lines
2.6 KiB
C++
#include "CContext.hpp"
|
|
|
|
bool CContext::m_screenSaver = false;
|
|
|
|
void CContext::init(unsigned int sdlFlags, unsigned int imageFlags) {
|
|
// Log initialisation.
|
|
initLog();
|
|
DEBUG_LOG(trace, "Kernel", "Context", "Log initialized!")
|
|
|
|
// SDL Initialization.
|
|
DEBUG_LOG(trace, "Kernel", "Context", "SDL initialization...")
|
|
if (SDL_Init(sdlFlags) < 0) {
|
|
SDL_Quit();
|
|
HandleException(CLibException(std::string("Unable to initialize SDL: ") + SDL_GetError()), true);
|
|
}
|
|
DEBUG_LOG(trace, "Kernel", "Context", "SDL initialized!")
|
|
|
|
|
|
// SDL_Image Initialization.
|
|
int initted = IMG_Init(imageFlags);
|
|
DEBUG_LOG(trace, "Kernel", "Context", "SDL_Image initialization...")
|
|
if ((initted & imageFlags) != imageFlags) {
|
|
HandleException(CLibException(std::string("Unable to initialize SDL Image: ") + IMG_GetError()), true);
|
|
}
|
|
DEBUG_LOG(trace, "Kernel", "Context", "SDL_Image initialized!")
|
|
|
|
// SDL_TTF Initialization.
|
|
DEBUG_LOG(trace, "Kernel", "Context", "SDL_TTF initialization...")
|
|
if (TTF_Init() == -1) {
|
|
HandleException(CLibException(std::string("Unable to initialize SDL TTF: ") + TTF_GetError()), true);
|
|
}
|
|
DEBUG_LOG(trace, "Kernel", "Context", "SDL_TTF initialized!")
|
|
}
|
|
|
|
bool CContext::isScreenSaverEnable(void) {
|
|
return m_screenSaver;
|
|
}
|
|
|
|
void CContext::setScreenSaverEnable(bool newScreenSaver) {
|
|
m_screenSaver = newScreenSaver;
|
|
if (m_screenSaver) {
|
|
SDL_EnableScreenSaver();
|
|
}
|
|
else {
|
|
SDL_DisableScreenSaver();
|
|
}
|
|
}
|
|
|
|
void CContext::quit(void) {
|
|
TTF_Quit();
|
|
IMG_Quit();
|
|
SDL_Quit();
|
|
}
|
|
|
|
void CContext::initLog(void) {
|
|
static const std::string COMMON_FMT("[%TimeStamp%][%Severity%]%Message%");
|
|
|
|
boost::log::register_simple_formatter_factory< boost::log::trivial::severity_level, char >("Severity");
|
|
|
|
// Output message to console.
|
|
boost::log::add_console_log(
|
|
std::cout,
|
|
boost::log::keywords::format = COMMON_FMT,
|
|
boost::log::keywords::auto_flush = true
|
|
);
|
|
|
|
// Output message to file, rotates when file reached 1mb or at midnight every day. Each log file
|
|
// is capped at 1mb and total is 50mb.
|
|
boost::log::add_file_log(
|
|
boost::log::keywords::file_name = LOG_FILE,
|
|
boost::log::keywords::rotation_size = LOG_ROTATION_SIZE,
|
|
boost::log::keywords::max_size = LOG_MAX_SIZE,
|
|
boost::log::keywords::time_based_rotation = boost::log::sinks::file::rotation_at_time_point(0, 0, 0),
|
|
boost::log::keywords::format = COMMON_FMT,
|
|
boost::log::keywords::auto_flush = true
|
|
);
|
|
|
|
boost::log::add_common_attributes();
|
|
|
|
// Only output message with INFO or higher severity in Release.
|
|
#ifndef _DEBUG
|
|
boost::log::core::get()->set_filter(
|
|
boost::log::trivial::severity >= boost::log::trivial::info
|
|
);
|
|
#endif
|
|
} |