Files
CosmicEngine/src/Engine/Core/Context/CContext.cpp
2026-02-13 19:15:05 +01:00

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
}