From 4c14c3dc578b37b519275b42c907608af1bdd540 Mon Sep 17 00:00:00 2001 From: Yousef Khadadeh Date: Sat, 16 May 2026 21:56:58 +0300 Subject: [PATCH] Switch log types to enum --- include/Helpers/Logger.cpp | 8 +-- include/Helpers/Logger.hpp | 15 ++++- include/Helpers/Networking/NetClient.cpp | 8 +-- include/Helpers/Networking/NetLibrary.cpp | 46 ++++++------- include/Helpers/Networking/NetServer.cpp | 10 +-- src/AndroidJNICalls.cpp | 4 +- src/ClientData.cpp | 2 +- src/DrawingProgram/DrawingProgram.cpp | 4 +- .../DrawingProgramSelection.cpp | 2 +- .../Layers/DrawingProgramLayer.cpp | 2 +- src/DrawingProgram/ToolConfiguration.cpp | 4 +- src/DrawingProgram/Tools/ScreenshotTool.cpp | 1 - src/GUIStuff/Elements/TextBox.impl.hpp | 4 +- src/GUIStuff/GUIManager.cpp | 2 +- src/InputManager.cpp | 4 +- src/MainProgram.cpp | 34 +++++++--- src/MainProgram.hpp | 5 ++ src/NetThreadManager.cpp | 6 +- src/ResourceDisplay/ImageResourceDisplay.cpp | 2 +- src/ResourceManager.cpp | 6 +- src/Screens/FileSelectScreen.cpp | 2 +- src/Screens/PhoneDrawingProgramScreen.cpp | 66 +++++++++++++++++++ src/Screens/PhoneDrawingProgramScreen.hpp | 1 + src/Toolbar.cpp | 18 ++--- src/World.cpp | 18 ++--- src/WorldScreenshot.cpp | 10 +-- src/main.cpp | 24 +++---- 27 files changed, 203 insertions(+), 105 deletions(-) diff --git a/include/Helpers/Logger.cpp b/include/Helpers/Logger.cpp index c65fcd4..06dbd77 100644 --- a/include/Helpers/Logger.cpp +++ b/include/Helpers/Logger.cpp @@ -29,17 +29,15 @@ Logger& Logger::get() { return global; } -void Logger::add_log(const std::string& log, const std::function callback) { +void Logger::set_log_function(LogType log, const std::function callback) { std::scoped_lock logLock(logMutex); logs[log] = callback; } -void Logger::log(const std::string& log, const std::string& text) { +void Logger::log(LogType log, const std::string& text) { std::scoped_lock logLock(logMutex); auto it = logs.find(log); - if(it == logs.end()) - throw std::runtime_error("[Logger::log] Log " + log + " does not exist to log text: " + text); - else + if(it != logs.end()) it->second(text); } diff --git a/include/Helpers/Logger.hpp b/include/Helpers/Logger.hpp index 2baff36..1059fd7 100644 --- a/include/Helpers/Logger.hpp +++ b/include/Helpers/Logger.hpp @@ -24,11 +24,20 @@ class Logger { public: static Logger& get(); - void add_log(const std::string& log, const std::function callback); - void log(const std::string& log, const std::string& text); + enum class LogType { + INFO = 0, + DESKTOP_USERINFO, + PHONE_USERINFO, + USERINFO, + WORLDFATAL, + CHAT, + FATAL + }; + void set_log_function(LogType log, const std::function callback); + void log(LogType log, const std::string& text); void cross_platform_println(const std::string& text); private: static Logger global; std::mutex logMutex; - std::unordered_map> logs; + std::unordered_map> logs; }; diff --git a/include/Helpers/Networking/NetClient.cpp b/include/Helpers/Networking/NetClient.cpp index 7fbed18..dfa99e6 100644 --- a/include/Helpers/Networking/NetClient.cpp +++ b/include/Helpers/Networking/NetClient.cpp @@ -55,7 +55,7 @@ void NetClient::init_channel(const std::string& channelName, std::shared_ptrisDisconnected = true; }); channels[channelName] = channel; - Logger::get().log("INFO", "Client channel setup: " + channelName); + Logger::get().log(Logger::LogType::INFO, "Client channel setup: " + channelName); lastMessageTime = std::chrono::steady_clock::now(); } @@ -63,7 +63,7 @@ void NetClient::update() { if(isDisconnected) return; if(std::chrono::steady_clock::now() - lastMessageTime >= NetLibrary::TIMEOUT_DURATION) { - Logger::get().log("INFO", "[NetClient::update] Connection timed out"); + Logger::get().log(Logger::LogType::INFO, "[NetClient::update] Connection timed out"); isDisconnected = true; return; } @@ -75,11 +75,11 @@ void NetClient::update() { #ifdef NDEBUG } catch(const std::exception& e) { - Logger::get().log("INFO", "[NetClient::update] Exception thrown while parsing and sending messages: " + std::string(e.what())); + Logger::get().log(Logger::LogType::INFO, "[NetClient::update] Exception thrown while parsing and sending messages: " + std::string(e.what())); isDisconnected = true; } catch(...) { - Logger::get().log("INFO", "[NetClient::update] Unknown exception thrown while parsing and sending messages."); + Logger::get().log(Logger::LogType::INFO, "[NetClient::update] Unknown exception thrown while parsing and sending messages."); isDisconnected = true; } #endif diff --git a/include/Helpers/Networking/NetLibrary.cpp b/include/Helpers/Networking/NetLibrary.cpp index 359d693..94d4649 100644 --- a/include/Helpers/Networking/NetLibrary.cpp +++ b/include/Helpers/Networking/NetLibrary.cpp @@ -80,19 +80,19 @@ NetLibrary::LoadP2PSettingsInPathResult NetLibrary::load_p2p_settings_in_path(co void NetLibrary::init_config(const std::filesystem::path& p2pConfigPath) { rtc::InitLogger(rtc::LogLevel::Info, [](rtc::LogLevel level, std::string message) { - Logger::get().log("INFO", "[LibDataChannel Log Level " + std::to_string(static_cast(level)) + "] " + message); + Logger::get().log(Logger::LogType::INFO, "[LibDataChannel Log Level " + std::to_string(static_cast(level)) + "] " + message); }); switch(load_p2p_settings_in_path(p2pConfigPath)) { case LoadP2PSettingsInPathResult::SUCCESS: - Logger::get().log("INFO", "Successfully loaded local P2P configuration"); + Logger::get().log(Logger::LogType::INFO, "Successfully loaded local P2P configuration"); break; case LoadP2PSettingsInPathResult::FAILED_TO_READ: - Logger::get().log("USERINFO", "Invalid custom P2P config, using defaults"); + Logger::get().log(Logger::LogType::DESKTOP_USERINFO, "Invalid custom P2P config, using defaults"); case LoadP2PSettingsInPathResult::FAILED_TO_OPEN: switch(load_p2p_settings_in_path("data/config/default_p2p.json")) { case LoadP2PSettingsInPathResult::SUCCESS: - Logger::get().log("INFO", "Successfully loaded default P2P configuration"); + Logger::get().log(Logger::LogType::INFO, "Successfully loaded default P2P configuration"); break; case LoadP2PSettingsInPathResult::FAILED_TO_READ: throw std::runtime_error("[NetLibrary::init] Failed to read default_p2p.json"); @@ -119,17 +119,17 @@ void NetLibrary::init_websocket() { auto wsFuture = wsPromise.get_future(); ws->onOpen([]() { - Logger::get().log("INFO", "Websocket connected, signaling ready"); + Logger::get().log(Logger::LogType::INFO, "Websocket connected, signaling ready"); wsPromise.set_value(); }); ws->onError([](std::string s) { - Logger::get().log("INFO", "Websocket error: " + s); + Logger::get().log(Logger::LogType::INFO, "Websocket error: " + s); wsPromise.set_exception(std::make_exception_ptr(std::runtime_error(s))); }); ws->onClosed([]() { - Logger::get().log("INFO", "Websocket closed"); + Logger::get().log(Logger::LogType::INFO, "Websocket closed"); destroy_websocket(); }); @@ -154,7 +154,7 @@ void NetLibrary::init_websocket() { if(peerIt != peers.end()) peerConnection = peerIt->second->connection; else if(type == "offer") { - Logger::get().log("INFO", "Websocket answering to " + id); + Logger::get().log(Logger::LogType::INFO, "Websocket answering to " + id); auto peer = setup_peer_connection(config, wws, id); peers[id] = peer; peerConnection = peer->connection; @@ -177,15 +177,15 @@ void NetLibrary::init_websocket() { get_global_id(); - Logger::get().log("INFO", "NetLibrary global id: " + globalID); + Logger::get().log(Logger::LogType::INFO, "NetLibrary global id: " + globalID); const std::string wsPrefix = signalingAddr.find("://") == std::string::npos ? "ws://" : ""; const std::string url = wsPrefix + signalingAddr + "/" + globalID; - Logger::get().log("INFO", "Websocket URL is: " + url); + Logger::get().log(Logger::LogType::INFO, "Websocket URL is: " + url); ws->open(url); - Logger::get().log("INFO", "NetLibrary waiting for signaling to be connected..."); + Logger::get().log(Logger::LogType::INFO, "NetLibrary waiting for signaling to be connected..."); //wsFuture.get(); alreadyInitialized = true; } @@ -193,7 +193,7 @@ void NetLibrary::init_websocket() { void NetLibrary::copy_default_p2p_config_to_path(const std::filesystem::path& newP2PConfigPath) { try { std::string readLocalP2PConfig = read_file_to_string(newP2PConfigPath); // If it doesnt fail, then file exists, so dont copy p2p config - Logger::get().log("INFO", "Local P2P configuration already exists"); + Logger::get().log(Logger::LogType::INFO, "Local P2P configuration already exists"); return; } catch(...) {} @@ -202,11 +202,11 @@ void NetLibrary::copy_default_p2p_config_to_path(const std::filesystem::path& ne std::stringstream newFileSS; newFileSS << std::setw(4) << j; if(SDL_SaveFile(newP2PConfigPath.string().c_str(), newFileSS.view().data(), newFileSS.view().size())) - Logger::get().log("INFO", "New P2P configuration created"); + Logger::get().log(Logger::LogType::INFO, "New P2P configuration created"); else - Logger::get().log("INFO", "[NetLibrary::copy_default_p2p_config_to_path] Could not open new p2p.json to write to"); + Logger::get().log(Logger::LogType::INFO, "[NetLibrary::copy_default_p2p_config_to_path] Could not open new p2p.json to write to"); } catch(...) { - Logger::get().log("INFO", "[NetLibrary::copy_default_p2p_config_to_path] Could not open default_p2p.json"); + Logger::get().log(Logger::LogType::INFO, "[NetLibrary::copy_default_p2p_config_to_path] Could not open default_p2p.json"); } } @@ -246,7 +246,7 @@ void NetLibrary::finish_client_registration(std::shared_ptr client) { client->fullyRegistered = true; } catch(const std::exception& e) { - Logger::get().log("INFO", "Invalid client registration: " + std::string(e.what())); + Logger::get().log(Logger::LogType::INFO, "Invalid client registration: " + std::string(e.what())); client->isDisconnected = true; } } @@ -282,7 +282,7 @@ void NetLibrary::update() { if(p->channel->isOpen()) { while(!p->messageQueue.empty()) { p->channel->send(p->messageQueue.front()); - Logger::get().log("INFO", "Sent main channel message: " + p->messageQueue.front()); + Logger::get().log(Logger::LogType::INFO, "Sent main channel message: " + p->messageQueue.front()); p->messageQueue.pop(); } } @@ -325,7 +325,7 @@ std::shared_ptr NetLibrary::setup_peer_connection(const rt setup_main_data_channel(peer, id); } else { - Logger::get().log("INFO", "Client connected with incorrect first channel name: " + dc->label() + ". Could be from a different version of the program"); + Logger::get().log(Logger::LogType::INFO, "Client connected with incorrect first channel name: " + dc->label() + ". Could be from a different version of the program"); dc->send("REFUSE"); peer->connection->close(); } @@ -340,19 +340,19 @@ std::shared_ptr NetLibrary::setup_peer_connection(const rt void NetLibrary::setup_main_data_channel(std::shared_ptr peer, const std::string& id) { peer->channel->onOpen([id]() { - Logger::get().log("INFO", "Main data channel has opened on " + id); + Logger::get().log(Logger::LogType::INFO, "Main data channel has opened on " + id); }); peer->channel->onClosed([id]() { - Logger::get().log("INFO", "Main data channel has closed on " + id); + Logger::get().log(Logger::LogType::INFO, "Main data channel has closed on " + id); }); peer->channel->onMessage([id, pConWeak = make_weak_ptr(peer->connection)](auto data) { if(!std::holds_alternative(data)) { // Main channel messages will only carry text - Logger::get().log("INFO", "Main data channel received binary message, which is not expected"); + Logger::get().log(Logger::LogType::INFO, "Main data channel received binary message, which is not expected"); return; } std::string message = std::get(data); if(message == "REFUSE") { - Logger::get().log("USERINFO", "Refused connection. Could be on a different version"); + Logger::get().log(Logger::LogType::DESKTOP_USERINFO, "Refused connection. Could be on a different version"); auto pConLock = pConWeak.lock(); if(pConLock) pConLock->close(); @@ -360,7 +360,7 @@ void NetLibrary::setup_main_data_channel(std::shared_ptr peer, const s else { std::string clientLocalID = message.substr(0, LOCALID_LEN); std::string serverLocalID = message.substr(LOCALID_LEN); - Logger::get().log("INFO", "Main data channel received message " + message); + Logger::get().log(Logger::LogType::INFO, "Main data channel received message " + message); auto pConLock = pConWeak.lock(); if(pConLock) assign_client_connection_to_server(serverLocalID, clientLocalID, pConLock); diff --git a/include/Helpers/Networking/NetServer.cpp b/include/Helpers/Networking/NetServer.cpp index cae9f4d..4df9de2 100644 --- a/include/Helpers/Networking/NetServer.cpp +++ b/include/Helpers/Networking/NetServer.cpp @@ -28,7 +28,7 @@ NetServer::NetServer(const std::string& serverLocalID) { localID = serverLocalID; - Logger::get().log("INFO", "[NetServer::NetServer] Server has local id: " + serverLocalID); + Logger::get().log(Logger::LogType::INFO, "[NetServer::NetServer] Server has local id: " + serverLocalID); } void NetServer::update() { @@ -39,7 +39,7 @@ void NetServer::update() { bool timedOut = std::chrono::steady_clock::now() - client->lastMessageTime > NetLibrary::TIMEOUT_DURATION; if(timedOut) { client->setToDisconnect = true; - Logger::get().log("INFO", "Connection timed out"); + Logger::get().log(Logger::LogType::INFO, "Connection timed out"); } if(client->setToDisconnect) disconnectCallback(client); @@ -52,12 +52,12 @@ void NetServer::update() { #ifdef NDEBUG } catch(const std::exception& e) { - Logger::get().log("INFO", "[NetServer::update] Exception thrown while parsing and sending messages for a client: " + std::string(e.what())); + Logger::get().log(Logger::LogType::INFO, "[NetServer::update] Exception thrown while parsing and sending messages for a client: " + std::string(e.what())); client->setToDisconnect = true; disconnectCallback(client); } catch(...) { - Logger::get().log("INFO", "[NetServer::update] Unknown exception thrown while parsing and sending messages for a client."); + Logger::get().log(Logger::LogType::INFO, "[NetServer::update] Unknown exception thrown while parsing and sending messages for a client."); client->setToDisconnect = true; disconnectCallback(client); } @@ -90,7 +90,7 @@ void NetServer::client_connected(std::shared_ptr connection clientsToAdd.emplace_back(newClient); } - Logger::get().log("INFO", "Client connected and creating channels for: " + clientLocalID); + Logger::get().log(Logger::LogType::INFO, "Client connected and creating channels for: " + clientLocalID); newClient->channels.emplace(RELIABLE_COMMAND_CHANNEL, connection->createDataChannel(clientLocalID + RELIABLE_COMMAND_CHANNEL)); newClient->channels.emplace(RESOURCE_COMMAND_CHANNEL, connection->createDataChannel(clientLocalID + RESOURCE_COMMAND_CHANNEL)); rtc::DataChannelInit unreliableCommandInit; diff --git a/src/AndroidJNICalls.cpp b/src/AndroidJNICalls.cpp index 9788576..4a17666 100644 --- a/src/AndroidJNICalls.cpp +++ b/src/AndroidJNICalls.cpp @@ -97,7 +97,7 @@ namespace AndroidJNICalls { } void startNetworkService() { - Logger::get().log("INFO", "[AndroidJNICalls::startNetworkService] Start service"); + Logger::get().log(Logger::LogType::INFO, "[AndroidJNICalls::startNetworkService] Start service"); JNIEnv* env = static_cast(SDL_GetAndroidJNIEnv()); jobject activity = (jobject)SDL_GetAndroidActivity(); jclass clazz = env->GetObjectClass(activity); @@ -108,7 +108,7 @@ namespace AndroidJNICalls { } void stopNetworkService() { - Logger::get().log("INFO", "[AndroidJNICalls::stopNetworkService] Stop service"); + Logger::get().log(Logger::LogType::INFO, "[AndroidJNICalls::stopNetworkService] Stop service"); JNIEnv* env = static_cast(SDL_GetAndroidJNIEnv()); jobject activity = (jobject)SDL_GetAndroidActivity(); jclass clazz = env->GetObjectClass(activity); diff --git a/src/ClientData.cpp b/src/ClientData.cpp index 729b32b..10a0c83 100644 --- a/src/ClientData.cpp +++ b/src/ClientData.cpp @@ -232,7 +232,7 @@ void ClientData::draw_cursor(SkCanvas* canvas, const DrawData& drawData) const { skia::textlayout::ParagraphStyle pStyle; pStyle.setTextAlign(skia::textlayout::TextAlign::kLeft); skia::textlayout::TextStyle tStyle; - tStyle.setFontSize(18.0f); + tStyle.setFontSize(18.0f * drawData.main->g.final_gui_scale()); tStyle.setFontFamilies(drawData.main->g.gui.io.fonts->get_default_font_families()); tStyle.setForegroundPaint(SkPaint{SkColor4f{cursorColor.x(), cursorColor.y(), cursorColor.z(), 0.6f}}); pStyle.setTextStyle(tStyle); diff --git a/src/DrawingProgram/DrawingProgram.cpp b/src/DrawingProgram/DrawingProgram.cpp index a23cd82..3591100 100644 --- a/src/DrawingProgram/DrawingProgram.cpp +++ b/src/DrawingProgram/DrawingProgram.cpp @@ -680,7 +680,7 @@ void DrawingProgram::update_downloading_dropped_files() { NetworkingObjects::NetObjID imageID = world.rMan.add_resource(newResource).get_net_id(); ResourceDisplay* display = world.rMan.get_display_data(imageID); if(display->get_type() == ResourceDisplay::Type::FILE) { - Logger::get().log("WORLDFATAL", "Failed to parse image from URL"); + Logger::get().log(Logger::LogType::WORLDFATAL, "Failed to parse image from URL"); auto& parentLayerComponents = downFile.comp->obj->parentLayer->get_layer().components; parentLayerComponents->erase(parentLayerComponents, downFile.comp->obj->objInfo); } @@ -699,7 +699,7 @@ void DrawingProgram::update_downloading_dropped_files() { return true; } case FileDownloader::DownloadData::Status::FAILURE: { - Logger::get().log("WORLDFATAL", "Failed to download data from URL"); + Logger::get().log(Logger::LogType::WORLDFATAL, "Failed to download data from URL"); auto& parentLayerComponents = downFile.comp->obj->parentLayer->get_layer().components; parentLayerComponents->erase(parentLayerComponents, downFile.comp->obj->objInfo); return true; diff --git a/src/DrawingProgram/DrawingProgramSelection.cpp b/src/DrawingProgram/DrawingProgramSelection.cpp index bd45277..e08e5c6 100644 --- a/src/DrawingProgram/DrawingProgramSelection.cpp +++ b/src/DrawingProgram/DrawingProgramSelection.cpp @@ -769,7 +769,7 @@ void DrawingProgramSelection::paste_clipboard(Vector2f pasteScreenPos) { WorldScalar scaleLimit(0.001); for(auto& c : drawP.world.main.clipboard.components) { if((c->coords.inverseScale / scaleMultiplier) < scaleLimit) { - Logger::get().log("WORLDFATAL", "Some pasted objects will be too small! Scale up the canvas first (zoom in alot)"); + Logger::get().log(Logger::LogType::WORLDFATAL, "Some pasted objects will be too small! Scale up the canvas first (zoom in alot)"); return; } } diff --git a/src/DrawingProgram/Layers/DrawingProgramLayer.cpp b/src/DrawingProgram/Layers/DrawingProgramLayer.cpp index 7cb573d..94e4848 100644 --- a/src/DrawingProgram/Layers/DrawingProgramLayer.cpp +++ b/src/DrawingProgram/Layers/DrawingProgramLayer.cpp @@ -94,7 +94,7 @@ void DrawingProgramLayer::erase_invalid_components() { compsToErase.emplace_back(it); } if(!compsToErase.empty()) { - Logger::get().log("INFO", "[DrawingProgramLayer::erase_invalid_components] Erased " + std::to_string(compsToErase.size()) + " invalid component(s) from layer"); + Logger::get().log(Logger::LogType::INFO, "[DrawingProgramLayer::erase_invalid_components] Erased " + std::to_string(compsToErase.size()) + " invalid component(s) from layer"); components->erase_list(components, compsToErase); } } diff --git a/src/DrawingProgram/ToolConfiguration.cpp b/src/DrawingProgram/ToolConfiguration.cpp index ab11730..14e67d6 100644 --- a/src/DrawingProgram/ToolConfiguration.cpp +++ b/src/DrawingProgram/ToolConfiguration.cpp @@ -90,10 +90,10 @@ void ToolConfiguration::print_relative_width_fail_message(RelativeWidthFailCode case RelativeWidthFailCode::SUCCESS: break; case RelativeWidthFailCode::TOO_ZOOMED_IN: - Logger::get().log("USERINFO", "Zoomed in too much! Unlock size or zoom out"); + Logger::get().log(Logger::LogType::USERINFO, "Zoomed in too much! Unlock size or zoom out"); break; case RelativeWidthFailCode::TOO_ZOOMED_OUT: - Logger::get().log("USERINFO", "Zoomed out too much! Unlock size or zoom in"); + Logger::get().log(Logger::LogType::USERINFO, "Zoomed out too much! Unlock size or zoom in"); break; } } diff --git a/src/DrawingProgram/Tools/ScreenshotTool.cpp b/src/DrawingProgram/Tools/ScreenshotTool.cpp index ee17b7e..72638e1 100644 --- a/src/DrawingProgram/Tools/ScreenshotTool.cpp +++ b/src/DrawingProgram/Tools/ScreenshotTool.cpp @@ -26,7 +26,6 @@ #include #include "../../GridManager.hpp" -#include #include "../../MainProgram.hpp" diff --git a/src/GUIStuff/Elements/TextBox.impl.hpp b/src/GUIStuff/Elements/TextBox.impl.hpp index 99e1259..50af79d 100644 --- a/src/GUIStuff/Elements/TextBox.impl.hpp +++ b/src/GUIStuff/Elements/TextBox.impl.hpp @@ -287,10 +287,8 @@ template bool TextBox::update_data() { } template TextBox::~TextBox() { - if(is_selected()) { - Logger::get().log("INFO", "Destroy"); + if(is_selected()) CustomEvents::emit_event(CustomEvents::RefreshTextBoxInputEvent{}); - } } } diff --git a/src/GUIStuff/GUIManager.cpp b/src/GUIStuff/GUIManager.cpp index 115dede..8736e25 100644 --- a/src/GUIStuff/GUIManager.cpp +++ b/src/GUIStuff/GUIManager.cpp @@ -621,7 +621,7 @@ void GUIManager::single_layout_run() { } void GUIManager::clay_error_handler(Clay_ErrorData errorData) { - Logger::get().log("INFO", "[Clay Error] " + std::string(errorData.errorText.chars)); + Logger::get().log(Logger::LogType::INFO, "[Clay Error] " + std::string(errorData.errorText.chars)); } void GUIManager::in_dynamic_area(const std::function& f) { diff --git a/src/InputManager.cpp b/src/InputManager.cpp index 18bf042..a8576bc 100644 --- a/src/InputManager.cpp +++ b/src/InputManager.cpp @@ -265,10 +265,10 @@ void InputManager::get_clipboard_image_data_SDL(const std::functiongui_layout_run(); }; - Logger::get().add_log("WORLDFATAL", [&](const std::string& text) { + Logger::get().set_log_function(Logger::LogType::WORLDFATAL, [&](const std::string& text) { *logFile << "[WORLDFATAL] " << text << std::endl; std::cout << "[WORLDFATAL] " << text << std::endl; - logMessages.emplace_front(UserLogMessage{text, UserLogMessage::COLOR_ERROR}); + logMessages.emplace_front(UserLogMessage{text, UserLogMessage::COLOR_ERROR, UserLogMessage::DISPLAY_DESKTOP_ONLY}); if(logMessages.size() == LOG_SIZE) logMessages.pop_back(); g.gui.set_to_layout(); }); - Logger::get().add_log("USERINFO", [&](const std::string& text) { + Logger::get().set_log_function(Logger::LogType::USERINFO, [&](const std::string& text) { *logFile << "[USERINFO] " << text << std::endl; std::cout << "[USERINFO] " << text << std::endl; - logMessages.emplace_front(UserLogMessage{text, UserLogMessage::COLOR_NORMAL}); + logMessages.emplace_front(UserLogMessage{text, UserLogMessage::COLOR_NORMAL, UserLogMessage::DISPLAY_FOR_ALL}); if(logMessages.size() == LOG_SIZE) logMessages.pop_back(); g.gui.set_to_layout(); }); - Logger::get().add_log("CHAT", [&](const std::string& text) { + Logger::get().set_log_function(Logger::LogType::DESKTOP_USERINFO, [&](const std::string& text) { + *logFile << "[DESKTOP_USERINFO] " << text << std::endl; + std::cout << "[DESKTOP_USERINFO] " << text << std::endl; + logMessages.emplace_front(UserLogMessage{text, UserLogMessage::COLOR_NORMAL, UserLogMessage::DISPLAY_DESKTOP_ONLY}); + if(logMessages.size() == LOG_SIZE) + logMessages.pop_back(); + g.gui.set_to_layout(); + }); + + Logger::get().set_log_function(Logger::LogType::PHONE_USERINFO, [&](const std::string& text) { + *logFile << "[PHONE_USERINFO] " << text << std::endl; + std::cout << "[PHONE_USERINFO] " << text << std::endl; + logMessages.emplace_front(UserLogMessage{text, UserLogMessage::COLOR_NORMAL, UserLogMessage::DISPLAY_PHONE_ONLY}); + if(logMessages.size() == LOG_SIZE) + logMessages.pop_back(); + g.gui.set_to_layout(); + }); + + Logger::get().set_log_function(Logger::LogType::CHAT, [&](const std::string& text) { *logFile << "[CHAT] " << text << std::endl; std::cout << "[CHAT] " << text << std::endl; }); @@ -198,9 +216,9 @@ void MainProgram::load_config() { void MainProgram::set_vsync_value(int vsyncValue) { if(!SDL_GL_SetSwapInterval(vsyncValue)) { - Logger::get().log("INFO", "Vsync value " + std::to_string(vsyncValue) + " not available. Setting to 1"); + Logger::get().log(Logger::LogType::INFO, "Vsync value " + std::to_string(vsyncValue) + " not available. Setting to 1"); if(vsyncValue == -1) { - Logger::get().log("USERINFO", "Adaptive VSync not available. Setting Vsync to On"); + Logger::get().log(Logger::LogType::DESKTOP_USERINFO, "Adaptive VSync not available. Setting Vsync to On"); vsyncValue = 1; } SDL_GL_SetSwapInterval(1); @@ -272,7 +290,7 @@ void MainProgram::create_new_tab(const CustomEvents::OpenInfiniPaintFileEvent& o newWorld = std::make_shared(*this, openFile); } catch(const std::runtime_error& e) { - Logger::get().log("WORLDFATAL", "Failed to open canvas: " + (openFile.filePathSource.has_value() ? openFile.filePathSource.value().string() : "NO PATH") + " with error: " + e.what()); + Logger::get().log(Logger::LogType::WORLDFATAL, "Failed to open canvas: " + (openFile.filePathSource.has_value() ? openFile.filePathSource.value().string() : "NO PATH") + " with error: " + e.what()); return; } worlds.emplace_back(newWorld); diff --git a/src/MainProgram.hpp b/src/MainProgram.hpp index 7f9cf77..5a447a8 100644 --- a/src/MainProgram.hpp +++ b/src/MainProgram.hpp @@ -52,6 +52,11 @@ struct UserLogMessage { COLOR_NORMAL = 0, COLOR_ERROR } color; + enum { + DISPLAY_FOR_ALL, + DISPLAY_PHONE_ONLY, + DISPLAY_DESKTOP_ONLY + } whereToDisplay = DISPLAY_DESKTOP_ONLY; TimePoint time; }; diff --git a/src/NetThreadManager.cpp b/src/NetThreadManager.cpp index dafbf76..e9f5ece 100644 --- a/src/NetThreadManager.cpp +++ b/src/NetThreadManager.cpp @@ -49,7 +49,7 @@ void NetThreadManager::synchronous_update() { void NetThreadManager::init_thread() { if(t) throw std::runtime_error("[NetThreadManager::init_thread] Thread can't exist when init_thread is called"); - Logger::get().log("INFO", "[NetThreadManager::init_thread] Starting network thread"); + Logger::get().log(Logger::LogType::INFO, "[NetThreadManager::init_thread] Starting network thread"); destroyThread = false; t = std::make_unique([&]{ thread_update(); }); } @@ -77,8 +77,8 @@ void NetThreadManager::thread_update() { void NetThreadManager::destroy_thread() { if(!t) - throw std::runtime_error("[NetThreadManager::init_thread] Thread can't be null when destroy_thread is called"); - Logger::get().log("INFO", "[NetThreadManager::destroy_thread] Stopping network thread"); + throw std::runtime_error("[NetThreadManager::destroy_thread] Thread can't be null when destroy_thread is called"); + Logger::get().log(Logger::LogType::INFO, "[NetThreadManager::destroy_thread] Stopping network thread"); destroyThread = true; t->join(); t = nullptr; diff --git a/src/ResourceDisplay/ImageResourceDisplay.cpp b/src/ResourceDisplay/ImageResourceDisplay.cpp index 356fd8d..40ac885 100644 --- a/src/ResourceDisplay/ImageResourceDisplay.cpp +++ b/src/ResourceDisplay/ImageResourceDisplay.cpp @@ -170,7 +170,7 @@ bool ImageResourceDisplay::load(ResourceManager& rMan, const std::string& fileNa } if(rotate) { - Logger::get().log("INFO", "Image loaded is rotated, so must rotate dimensions"); + Logger::get().log(Logger::LogType::INFO, "Image loaded is rotated, so must rotate dimensions"); imageInfo = imageInfo.makeDimensions(SkISize(imageInfo.height(), imageInfo.width())); } codec = nullptr; diff --git a/src/ResourceManager.cpp b/src/ResourceManager.cpp index 3daaa97..575d279 100644 --- a/src/ResourceManager.cpp +++ b/src/ResourceManager.cpp @@ -114,11 +114,11 @@ NetworkingObjects::NetObjTemporaryPtr ResourceManager::add_resourc *resource.data = read_file_to_string(filePath); } catch(...) { - Logger::get().log("INFO", "[ResourceManager::add_resource_file] Could not open file " + filePath.string()); + Logger::get().log(Logger::LogType::INFO, "[ResourceManager::add_resource_file] Could not open file " + filePath.string()); return {}; } - Logger::get().log("INFO", "[ResourceManager::add_resource_file] Successfully read file " + filePath.string()); + Logger::get().log(Logger::LogType::INFO, "[ResourceManager::add_resource_file] Successfully read file " + filePath.string()); return add_resource(resource); } @@ -128,7 +128,7 @@ const NetworkingObjects::NetObjOwnerPtr& ResourceManager::add_reso return p->data == resource.data || (*p->data) == (*resource.data); }); if(it != resourceList.end()) { - Logger::get().log("INFO", "[ResourceManager::add_resource] File " + std::string(resource.name) + " is a duplicate"); + Logger::get().log(Logger::LogType::INFO, "[ResourceManager::add_resource] File " + std::string(resource.name) + " is a duplicate"); return *it; } auto& resourceInsert = resourceList.emplace_back(world.netObjMan.make_obj_direct(resource)); diff --git a/src/Screens/FileSelectScreen.cpp b/src/Screens/FileSelectScreen.cpp index a5fb21e..0a4d3e0 100644 --- a/src/Screens/FileSelectScreen.cpp +++ b/src/Screens/FileSelectScreen.cpp @@ -102,7 +102,7 @@ void FileSelectScreen::update_file_list(std::vector& fL, const std::fi if(daysSinceMovedToTrash >= DAYS_TO_DELETION) { // Remove file and thumbnail std::filesystem::path thumbnailPath = folderPath / (fileInfoToAdd.fileName + ".jpg"); - Logger::get().log("INFO", "Deleting file in trash: " + fullPath.string() + " with thumbnail: " + thumbnailPath.string()); + Logger::get().log(Logger::LogType::INFO, "Deleting file in trash: " + fullPath.string() + " with thumbnail: " + thumbnailPath.string()); SDL_RemovePath(fullPath.string().c_str()); SDL_RemovePath(thumbnailPath.string().c_str()); saveInfo.trash.files.erase(it); diff --git a/src/Screens/PhoneDrawingProgramScreen.cpp b/src/Screens/PhoneDrawingProgramScreen.cpp index 26cbae5..71d34c0 100644 --- a/src/Screens/PhoneDrawingProgramScreen.cpp +++ b/src/Screens/PhoneDrawingProgramScreen.cpp @@ -40,6 +40,14 @@ PhoneDrawingProgramScreen::PhoneDrawingProgramScreen(MainProgram& m): {} void PhoneDrawingProgramScreen::update() { + std::erase_if(main.logMessages, [&](auto& logM) { + logM.time.update_time_since(); + if(logM.time > UserLogMessage::FADE_START_TIME) { + main.g.gui.set_to_layout(); + return logM.time >= UserLogMessage::DISPLAY_TIME; + } + return false; + }); DrawingProgramScreen::update(); } @@ -352,6 +360,63 @@ void PhoneDrawingProgramScreen::top_toolbar_settings_popup() { } } +void PhoneDrawingProgramScreen::global_log() { + auto& gui = main.g.gui; + auto& io = gui.io; + + float notificationSize = std::min(300.0f, gui.io.safeWindowRect.width() - 20.0f); + + gui.new_id("Global log popup list", [&] { + CLAY_AUTO_ID({ + .layout = { + .sizing = {.width = CLAY_SIZING_FIXED(notificationSize), .height = CLAY_SIZING_FIT(0) }, + .childGap = io.theme->childGap1, + .childAlignment = { .x = CLAY_ALIGN_X_RIGHT, .y = CLAY_ALIGN_Y_TOP}, + .layoutDirection = CLAY_TOP_TO_BOTTOM + }, + .floating = {.offset = {0, 10}, .attachPoints = {.element = CLAY_ATTACH_POINT_RIGHT_TOP, .parent = CLAY_ATTACH_POINT_RIGHT_BOTTOM}, .attachTo = CLAY_ATTACH_TO_PARENT} + }) { + for(size_t i = 0; i < main.logMessages.size(); i++) { + auto& logM = main.logMessages[i]; + logM.time.update_time_since(); + if(logM.time < UserLogMessage::DISPLAY_TIME) { + if(logM.whereToDisplay == UserLogMessage::DISPLAY_DESKTOP_ONLY) + continue; + float a = 1.0f - lerp_time(logM.time, UserLogMessage::DISPLAY_TIME, UserLogMessage::FADE_START_TIME); + gui.new_id(i, [&] { + gui.element("Global log message", [&] (LayoutElement*, const Clay_ElementId& lId) { + CLAY(lId, { + .layout = { + .sizing = {.width = CLAY_SIZING_FIT(notificationSize), .height = CLAY_SIZING_FIT(0) }, + .padding = CLAY_PADDING_ALL(io.theme->padding1), + .childGap = 0, + .childAlignment = { .x = CLAY_ALIGN_X_LEFT, .y = CLAY_ALIGN_Y_TOP}, + .layoutDirection = CLAY_TOP_TO_BOTTOM + }, + .backgroundColor = convert_vec4(color_mul_alpha(io.theme->backColor1, a)), + .cornerRadius = CLAY_CORNER_RADIUS(io.theme->windowCorners1) + }) { + SkColor4f c{0, 0, 0, 0}; + switch(logM.color) { + case UserLogMessage::COLOR_NORMAL: + c = io.theme->frontColor1; + break; + case UserLogMessage::COLOR_ERROR: + c = io.theme->errorColor; + break; + } + text_label_color(gui, logM.text, color_mul_alpha(c, a)); + } + }); + }); + } + else + break; + } + } + }); +} + void PhoneDrawingProgramScreen::top_toolbar() { auto& gui = main.g.gui; auto& io = gui.io; @@ -381,6 +446,7 @@ void PhoneDrawingProgramScreen::top_toolbar() { } }); top_toolbar_remaining_area(); + global_log(); top_toolbar_settings_popup(); } }); diff --git a/src/Screens/PhoneDrawingProgramScreen.hpp b/src/Screens/PhoneDrawingProgramScreen.hpp index 5385e66..02cf32e 100644 --- a/src/Screens/PhoneDrawingProgramScreen.hpp +++ b/src/Screens/PhoneDrawingProgramScreen.hpp @@ -85,6 +85,7 @@ class PhoneDrawingProgramScreen : public DrawingProgramScreen { Vector4f* colorPickerPtr = nullptr; ColorSelectorData colorPickerData; + void global_log(); void gui_layout_safety_checks(); void hidden_gui(); void center_message(const char* id, const std::string& m); diff --git a/src/Toolbar.cpp b/src/Toolbar.cpp index 84f3c1c..68403a3 100644 --- a/src/Toolbar.cpp +++ b/src/Toolbar.cpp @@ -689,23 +689,23 @@ void Toolbar::update_notification_check() { VersionNumber& newV = newVersion.value(); VersionNumber& currentV = currentVersion.value(); updateCheckerData.newVersionStr = version_numbers_to_version_str(newV); - Logger::get().log("INFO", "Latest online version is v" + updateCheckerData.newVersionStr); + Logger::get().log(Logger::LogType::INFO, "Latest online version is v" + updateCheckerData.newVersionStr); if(newV > currentV) { updateCheckerData.showGui = true; main.g.gui.set_to_layout(); } else if(newV == currentV) - Logger::get().log("INFO", "Current version is up to date"); + Logger::get().log(Logger::LogType::INFO, "Current version is up to date"); else - Logger::get().log("INFO", "Local version has larger version number than the latest online one"); + Logger::get().log(Logger::LogType::INFO, "Local version has larger version number than the latest online one"); } else - Logger::get().log("INFO", "Update notification file couldn't be converted to version numbers"); + Logger::get().log(Logger::LogType::INFO, "Update notification file couldn't be converted to version numbers"); updateCheckerData.versionFile = nullptr; break; } case FileDownloader::DownloadData::Status::FAILURE: - Logger::get().log("INFO", "Failed to check for updates"); + Logger::get().log(Logger::LogType::INFO, "Failed to check for updates"); updateCheckerData.updateCheckDone = true; updateCheckerData.versionFile = nullptr; break; @@ -1013,6 +1013,8 @@ void Toolbar::global_log() { auto& logM = main.logMessages[i]; logM.time.update_time_since(); if(logM.time < UserLogMessage::DISPLAY_TIME) { + if(logM.whereToDisplay == UserLogMessage::DISPLAY_PHONE_ONLY) + continue; float a = 1.0f - lerp_time(logM.time, UserLogMessage::DISPLAY_TIME, UserLogMessage::FADE_START_TIME); gui.new_id(i, [&] { gui.element("Global log message", [&] (LayoutElement*, const Clay_ElementId& lId) { @@ -1393,9 +1395,9 @@ void Toolbar::options_menu() { left_to_right_line_layout(gui, [&]() { text_button_wide("connect", "Connect", [&] { if(serverToConnectTo.length() != (NetLibrary::LOCALID_LEN + NetLibrary::GLOBALID_LEN)) - Logger::get().log("USERINFO", "Connect issue: Incorrect address length"); + Logger::get().log(Logger::LogType::DESKTOP_USERINFO, "Connect issue: Incorrect address length"); else if(serverToConnectTo.substr(0, NetLibrary::GLOBALID_LEN) == NetLibrary::get_global_id()) - Logger::get().log("USERINFO", "Connect issue: Can't connect to your own address"); + Logger::get().log(Logger::LogType::DESKTOP_USERINFO, "Connect issue: Can't connect to your own address"); else { CustomEvents::emit_event({ .isClient = true, @@ -1842,7 +1844,7 @@ void Toolbar::file_picker_gui_refresh_entries() { break; } catch(const std::exception& e) { - Logger::get().log("INFO", e.what()); + Logger::get().log(Logger::LogType::INFO, e.what()); if(main.conf.currentSearchPath == main.homePath) // The home path must exist. If we get errors on the home path, we have a real problem throw e; main.conf.currentSearchPath = main.homePath; diff --git a/src/World.cpp b/src/World.cpp index 344fe7e..b0c5899 100644 --- a/src/World.cpp +++ b/src/World.cpp @@ -115,9 +115,11 @@ Vector3f World::get_random_cursor_color() { void World::init_client_data_list_callbacks() { clients->set_insert_callback([&](const NetworkingObjects::NetObjOwnerPtr& objPtr) { add_chat_message(objPtr->get_display_name(), "joined", Toolbar::ChatMessage::Type::JOIN); + Logger::get().log(Logger::LogType::PHONE_USERINFO, objPtr->get_display_name() + " joined"); }); clients->set_erase_callback([&](const NetworkingObjects::NetObjOwnerPtr& objPtr) { add_chat_message(objPtr->get_display_name(), "left", Toolbar::ChatMessage::Type::JOIN); + Logger::get().log(Logger::LogType::PHONE_USERINFO, objPtr->get_display_name() + " left"); }); } @@ -209,7 +211,7 @@ void World::focus_update() { bool World::connection_update() { if(netServer) { if(netServer->is_disconnected()) { - Logger::get().log("USERINFO", "Host connection failed"); + Logger::get().log(Logger::LogType::USERINFO, "Host connection failed"); netSource.clear(); netServer = nullptr; netObjMan.disconnect(); @@ -224,7 +226,7 @@ bool World::connection_update() { } else if(netClient) { if(netClient->is_disconnected()) { - Logger::get().log("USERINFO", "Client connection failed"); + Logger::get().log(Logger::LogType::USERINFO, "Client connection failed"); netObjMan.disconnect(); main.set_tab_to_close(this); netClient = nullptr; @@ -383,7 +385,7 @@ void World::send_chat_message(const std::string& message) { } void World::add_chat_message(const std::string& name, const std::string& message, Toolbar::ChatMessage::Type type) { - Logger::get().log("CHAT", type == Toolbar::ChatMessage::JOIN ? (name + " " + message) : ("[" + name + "] " + message)); + Logger::get().log(Logger::LogType::CHAT, type == Toolbar::ChatMessage::JOIN ? (name + " " + message) : ("[" + name + "] " + message)); chatMessages.emplace_front(Toolbar::ChatMessage{name, message, type}); if(chatMessages.size() == CHAT_SIZE) chatMessages.pop_back(); @@ -523,11 +525,11 @@ void World::save_to_file(const std::filesystem::path& filePathToSaveAt) { } #endif - Logger::get().log("USERINFO", "File saved"); + Logger::get().log(Logger::LogType::DESKTOP_USERINFO, "File saved"); undo.set_save_action(); } catch(const std::exception& e) { - Logger::get().log("WORLDFATAL", std::string("Save error: ") + e.what()); + Logger::get().log(Logger::LogType::WORLDFATAL, std::string("Save error: ") + e.what()); } } @@ -573,12 +575,12 @@ void World::load_from_file(const std::filesystem::path& filePathToLoadFrom, std: ByteMemStream f((char*)uncompressedDataView.data(), uncompressedDataView.size()); - Logger::get().log("INFO", "Loading file from version " + version_numbers_to_version_str(fileVersion)); + Logger::get().log(Logger::LogType::INFO, "Loading file from version " + version_numbers_to_version_str(fileVersion)); cereal::PortableBinaryInputArchive a(f); load_file(a, fileVersion); - Logger::get().log("USERINFO", "File loaded"); + Logger::get().log(Logger::LogType::DESKTOP_USERINFO, "File loaded"); set_name(filePath.stem().string()); } @@ -621,7 +623,7 @@ void World::scale_up_step() { } void World::scale_up(const WorldScalar& scaleUpAmount) { - Logger::get().log("USERINFO", "Canvas scaled up"); + Logger::get().log(Logger::LogType::DESKTOP_USERINFO, "Canvas scaled up"); bMan.scale_up(scaleUpAmount); gridMan.scale_up(scaleUpAmount); drawData.cam.scale_up(*this, scaleUpAmount); diff --git a/src/WorldScreenshot.cpp b/src/WorldScreenshot.cpp index df2c401..efeba68 100644 --- a/src/WorldScreenshot.cpp +++ b/src/WorldScreenshot.cpp @@ -67,7 +67,7 @@ void world_take_screenshot(const std::shared_ptr& w, const WorldScreensho sk_sp surface = w->main.create_native_surface(w->main.window.size, true); SkCanvas* screenshotCanvas = surface->getCanvas(); if(!screenshotCanvas) { - Logger::get().log("INFO", "Screenshot Tool could not make canvas"); + Logger::get().log(Logger::LogType::INFO, "[world_take_screenshot] Could not make canvas"); return; } @@ -92,7 +92,7 @@ void world_take_screenshot(const std::shared_ptr& w, const WorldScreensho break; } if(!success) { - Logger::get().log("WORLDFATAL", "[ScreenshotTool::take_screenshot] Could not encode and write screenshot"); + Logger::get().log(Logger::LogType::WORLDFATAL, "[world_take_screenshot] Could not encode and write screenshot"); return; } out.flush(); @@ -104,7 +104,7 @@ void world_take_screenshot(const std::shared_ptr& w, const WorldScreensho throw std::runtime_error("SDL_SaveFile failed with error: " + std::string(SDL_GetError())); } catch(const std::exception& e) { - Logger::get().log("WORLDFATAL", std::string("[ScreenshotTool::take_screenshot] Save screenshot error: ") + e.what()); + Logger::get().log(Logger::LogType::WORLDFATAL, std::string("[world_take_screenshot] Save screenshot error: ") + e.what()); } #else if(success) { @@ -133,7 +133,7 @@ void world_take_screenshot(const std::shared_ptr& w, const WorldScreensho throw std::runtime_error("SDL_SaveFile failed with error: " + std::string(SDL_GetError())); } catch(const std::exception& e) { - Logger::get().log("WORLDFATAL", std::string("[ScreenshotTool::take_screenshot] Save screenshot error: ") + e.what()); + Logger::get().log(Logger::LogType::WORLDFATAL, std::string("[world_take_screenshot] Save screenshot error: ") + e.what()); } #else auto skData = out.detachAsData(); @@ -210,7 +210,7 @@ void take_screenshot_area_hw(const std::shared_ptr& w, const sk_spreadPixels(aaImgData, 0, 0)) - throw std::runtime_error("[ScreenshotTool::take_screenshot_area_hw] Error copy pixmap"); + throw std::runtime_error("[take_screenshot_area_hw] Error copy pixmap"); } std::string world_screenshot_info_get_extension_from_type(WorldScreenshotInfo::ScreenshotType t) { diff --git a/src/main.cpp b/src/main.cpp index c2af887..21b2e13 100755 --- a/src/main.cpp +++ b/src/main.cpp @@ -300,7 +300,7 @@ void initialize_sdl(MainStruct& mS, int wWidth, int wHeight) { glGetIntegerv(GL_FRAMEBUFFER_BINDING, &mS.defaultFBO); #endif - Logger::get().log("INFO", "GL Version: " + std::string(reinterpret_cast(glGetString(GL_VERSION)))); + Logger::get().log(Logger::LogType::INFO, "GL Version: " + std::string(reinterpret_cast(glGetString(GL_VERSION)))); #endif #endif @@ -375,18 +375,18 @@ void init_logs(MainStruct& mS) { SDL_free(configPathSDL); #endif mS.logFile = std::ofstream(mS.configPath / "log.txt"); - Logger::get().add_log("FATAL", [&, mS = &mS](const std::string& text) { + Logger::get().set_log_function(Logger::LogType::FATAL, [&, mS = &mS](const std::string& text) { mS->logFile << "[FATAL] " << text << std::endl; std::cerr << "[FATAL] " << text << std::endl; mS->logFile.close(); }); - Logger::get().add_log("INFO", [&, mS = &mS](const std::string& text) { + Logger::get().set_log_function(Logger::LogType::INFO, [&, mS = &mS](const std::string& text) { mS->logFile << "[INFO] " << text << std::endl; Logger::get().cross_platform_println("[INFO] " + text); }); - Logger::get().log("INFO", "Home Path: " + mS.homePath.string()); - Logger::get().log("INFO", "Config Path: " + mS.configPath.string()); + Logger::get().log(Logger::LogType::INFO, "Home Path: " + mS.homePath.string()); + Logger::get().log(Logger::LogType::INFO, "Config Path: " + mS.configPath.string()); } SDL_AppResult SDL_AppInit(void **appstate, int argc, char **argv) { @@ -572,7 +572,7 @@ SDL_AppResult SDL_AppInit(void **appstate, int argc, char **argv) { #ifdef NDEBUG } catch(const std::exception& e) { - Logger::get().log("FATAL", e.what()); + Logger::get().log(Logger::LogType::FATAL, e.what()); return SDL_APP_FAILURE; } #endif @@ -648,7 +648,7 @@ SDL_AppResult SDL_AppIterate(void *appstate) { #ifdef NDEBUG } catch(const std::exception& e) { - Logger::get().log("FATAL", e.what()); + Logger::get().log(Logger::LogType::FATAL, e.what()); return SDL_APP_FAILURE; } #endif @@ -666,16 +666,16 @@ SDL_AppResult SDL_AppEvent(void *appstate, SDL_Event *event) { #endif switch(event->type) { case SDL_EVENT_QUIT: - Logger::get().log("INFO", "[SDL_AppEvent] Quit"); + Logger::get().log(Logger::LogType::INFO, "[SDL_AppEvent] Quit"); if(mS.m->app_close_requested()) return SDL_APP_SUCCESS; break; case SDL_EVENT_WILL_ENTER_BACKGROUND: - Logger::get().log("INFO", "[SDL_AppEvent] Entering background"); + Logger::get().log(Logger::LogType::INFO, "[SDL_AppEvent] Entering background"); mS.m->input_app_about_to_go_to_background_callback(); break; case SDL_EVENT_WILL_ENTER_FOREGROUND: - Logger::get().log("INFO", "[SDL_AppEvent] Entering foreground"); + Logger::get().log(Logger::LogType::INFO, "[SDL_AppEvent] Entering foreground"); mS.m->input_app_about_to_go_to_foreground_callback(); break; case SDL_EVENT_WINDOW_CLOSE_REQUESTED: @@ -835,7 +835,7 @@ SDL_AppResult SDL_AppEvent(void *appstate, SDL_Event *event) { #ifdef NDEBUG } catch(const std::exception& e) { - Logger::get().log("FATAL", e.what()); + Logger::get().log(Logger::LogType::FATAL, e.what()); return SDL_APP_FAILURE; } #endif @@ -861,7 +861,7 @@ void SDL_AppQuit(void *appstate, SDL_AppResult result) { sdl_terminate(mS); } catch(const std::exception& e) { - Logger::get().log("FATAL", e.what()); + Logger::get().log(Logger::LogType::FATAL, e.what()); } delete (&mS);