diff options
-rw-r--r-- | include/cru/common/platform/win/DebugLogTarget.h | 25 | ||||
-rw-r--r-- | include/cru/win/DebugLogger.h | 24 | ||||
-rw-r--r-- | include/cru/win/StdOutLogger.h | 23 | ||||
-rw-r--r-- | include/cru/win/gui/Clipboard.h | 1 | ||||
-rw-r--r-- | src/common/CMakeLists.txt | 3 | ||||
-rw-r--r-- | src/common/log/Logger.cpp | 8 | ||||
-rw-r--r-- | src/common/log/StdioLogTarget.cpp | 5 | ||||
-rw-r--r-- | src/common/platform/win/DebugLogTarget.cpp | 10 | ||||
-rw-r--r-- | src/win/ForDllExport.cpp | 2 | ||||
-rw-r--r-- | src/win/gui/Clipboard.cpp | 17 | ||||
-rw-r--r-- | src/win/gui/UiApplication.cpp | 7 | ||||
-rw-r--r-- | src/win/gui/Window.cpp | 10 |
12 files changed, 64 insertions, 71 deletions
diff --git a/include/cru/common/platform/win/DebugLogTarget.h b/include/cru/common/platform/win/DebugLogTarget.h new file mode 100644 index 00000000..8257f637 --- /dev/null +++ b/include/cru/common/platform/win/DebugLogTarget.h @@ -0,0 +1,25 @@ +#pragma once + +#include "../../PreConfig.h" +#ifdef CRU_PLATFORM_WINDOWS + +#include "WinPreConfig.h" + +#include "../../log/Logger.h" + +namespace cru::platform::win { + +class CRU_BASE_API WinDebugLogTarget : public ::cru::log::ILogTarget { + public: + WinDebugLogTarget() = default; + + CRU_DELETE_COPY(WinDebugLogTarget) + CRU_DELETE_MOVE(WinDebugLogTarget) + + ~WinDebugLogTarget() = default; + + void Write(::cru::log::LogLevel level, StringView s) override; +}; +} // namespace cru::platform::win + +#endif diff --git a/include/cru/win/DebugLogger.h b/include/cru/win/DebugLogger.h deleted file mode 100644 index 43e08f20..00000000 --- a/include/cru/win/DebugLogger.h +++ /dev/null @@ -1,24 +0,0 @@ -#pragma once -#include "Base.h" - -#include "cru/common/log/Logger.h" - -namespace cru::platform::win { - -class CRU_WIN_API WinDebugLoggerSource : public ::cru::log::ILogSource { - public: - WinDebugLoggerSource() = default; - - CRU_DELETE_COPY(WinDebugLoggerSource) - CRU_DELETE_MOVE(WinDebugLoggerSource) - - ~WinDebugLoggerSource() = default; - - void Write(::cru::log::LogLevel level, StringView s) override { - CRU_UNUSED(level) - - String m = s.ToString(); - ::OutputDebugStringW(reinterpret_cast<const wchar_t*>(m.c_str())); - } -}; -} // namespace cru::platform::win diff --git a/include/cru/win/StdOutLogger.h b/include/cru/win/StdOutLogger.h deleted file mode 100644 index d6009bb3..00000000 --- a/include/cru/win/StdOutLogger.h +++ /dev/null @@ -1,23 +0,0 @@ -#pragma once -#include "Base.h" - -#include "cru/common/log/Logger.h" - -namespace cru::platform::win { -class CRU_WIN_API WinStdOutLoggerSource : public ::cru::log::ILogSource { - public: - WinStdOutLoggerSource() = default; - - CRU_DELETE_COPY(WinStdOutLoggerSource) - CRU_DELETE_MOVE(WinStdOutLoggerSource) - - ~WinStdOutLoggerSource() = default; - - void Write(::cru::log::LogLevel level, StringView s) override { - CRU_UNUSED(level) - - String m = s.ToString(); - std::fputws(reinterpret_cast<const wchar_t*>(m.c_str()), stdout); - } -}; -} // namespace cru::platform::win diff --git a/include/cru/win/gui/Clipboard.h b/include/cru/win/gui/Clipboard.h index 7580642b..ef05e0f1 100644 --- a/include/cru/win/gui/Clipboard.h +++ b/include/cru/win/gui/Clipboard.h @@ -6,6 +6,7 @@ namespace cru::platform::gui::win { class WinClipboard : public WinNativeResource, public virtual IClipboard { + CRU_DEFINE_CLASS_LOG_TAG(u"WinClipboard") public: explicit WinClipboard(WinUiApplication* application); diff --git a/src/common/CMakeLists.txt b/src/common/CMakeLists.txt index 330c7226..ae418f6b 100644 --- a/src/common/CMakeLists.txt +++ b/src/common/CMakeLists.txt @@ -37,8 +37,9 @@ if (WIN32) target_sources(cru_base PRIVATE platform/win/BridgeComStream.cpp platform/win/ComAutoInit.cpp - platform/win/StreamConvert.cpp + platform/win/DebugLogTarget.cpp platform/win/Exception.cpp + platform/win/StreamConvert.cpp platform/win/Win32FileStream.cpp ) diff --git a/src/common/log/Logger.cpp b/src/common/log/Logger.cpp index bcafde21..e13cb122 100644 --- a/src/common/log/Logger.cpp +++ b/src/common/log/Logger.cpp @@ -5,12 +5,20 @@ #include <cstdlib> #include <ctime> +#ifdef CRU_PLATFORM_WINDOWS +#include "cru/common/platform/win/DebugLogTarget.h" +#endif + namespace cru::log { Logger *Logger::GetInstance() { static Logger logger; logger.AddLogTarget(std::make_unique<StdioLogTarget>()); +#ifdef CRU_PLATFORM_WINDOWS + logger.AddLogTarget(std::make_unique<platform::win::WinDebugLogTarget>()); +#endif + return &logger; } diff --git a/src/common/log/StdioLogTarget.cpp b/src/common/log/StdioLogTarget.cpp index ad29a3ce..7f99dbd1 100644 --- a/src/common/log/StdioLogTarget.cpp +++ b/src/common/log/StdioLogTarget.cpp @@ -9,6 +9,11 @@ StdioLogTarget::~StdioLogTarget() {} void StdioLogTarget::Write(log::LogLevel level, StringView s) { #ifdef CRU_PLATFORM_WINDOWS + if (level == log::LogLevel::Error) { + std::wcerr.write(reinterpret_cast<const wchar_t*>(s.data()), s.size()); + } else { + std::wcout.write(reinterpret_cast<const wchar_t*>(s.data()), s.size()); + } #else std::string m = s.ToUtf8(); diff --git a/src/common/platform/win/DebugLogTarget.cpp b/src/common/platform/win/DebugLogTarget.cpp new file mode 100644 index 00000000..92d26449 --- /dev/null +++ b/src/common/platform/win/DebugLogTarget.cpp @@ -0,0 +1,10 @@ +#include "cru/common/platform/win/DebugLogTarget.h" + +namespace cru::platform::win { +void WinDebugLogTarget::Write(::cru::log::LogLevel level, StringView s) { + CRU_UNUSED(level) + + String m = s.ToString(); + ::OutputDebugStringW(reinterpret_cast<const wchar_t*>(m.c_str())); +} +} // namespace cru::platform::win diff --git a/src/win/ForDllExport.cpp b/src/win/ForDllExport.cpp index db1a7cad..e69de29b 100644 --- a/src/win/ForDllExport.cpp +++ b/src/win/ForDllExport.cpp @@ -1,2 +0,0 @@ -#include "cru/win/DebugLogger.h" -#include "cru/win/StdOutLogger.h" diff --git a/src/win/gui/Clipboard.cpp b/src/win/gui/Clipboard.cpp index 7ecc9dea..6eab903c 100644 --- a/src/win/gui/Clipboard.cpp +++ b/src/win/gui/Clipboard.cpp @@ -1,5 +1,4 @@ #include "cru/win/gui/Clipboard.h" -#include <winuser.h> #include "cru/common/log/Logger.h" #include "cru/win/gui/GodWindow.h" #include "cru/win/gui/UiApplication.h" @@ -14,25 +13,25 @@ String WinClipboard::GetText() { auto god_window = application_->GetGodWindow(); if (!::OpenClipboard(god_window->GetHandle())) { - log::Warn(u"Failed to open clipboard."); + CRU_LOG_WARN(u"Failed to open clipboard."); return {}; } if (!::IsClipboardFormatAvailable(CF_UNICODETEXT)) { - log::Warn(u"Clipboard format for text is not available."); + CRU_LOG_WARN(u"Clipboard format for text is not available."); return {}; } auto handle = ::GetClipboardData(CF_UNICODETEXT); if (handle == nullptr) { - log::Warn(u"Failed to get clipboard data."); + CRU_LOG_WARN(u"Failed to get clipboard data."); return {}; } auto ptr = ::GlobalLock(handle); if (ptr == nullptr) { - log::Warn(u"Failed to lock clipboard data."); + CRU_LOG_WARN(u"Failed to lock clipboard data."); ::CloseClipboard(); return {}; } @@ -49,21 +48,21 @@ void WinClipboard::SetText(String text) { auto god_window = application_->GetGodWindow(); if (!::OpenClipboard(god_window->GetHandle())) { - log::Warn(u"Failed to open clipboard."); + CRU_LOG_WARN(u"Failed to open clipboard."); return; } auto handle = GlobalAlloc(GMEM_MOVEABLE, (text.size() + 1) * sizeof(wchar_t)); if (handle == nullptr) { - log::Warn(u"Failed to allocate clipboard data."); + CRU_LOG_WARN(u"Failed to allocate clipboard data."); ::CloseClipboard(); return; } auto ptr = ::GlobalLock(handle); if (ptr == nullptr) { - log::Warn(u"Failed to lock clipboard data."); + CRU_LOG_WARN(u"Failed to lock clipboard data."); ::GlobalFree(handle); ::CloseClipboard(); return; @@ -74,7 +73,7 @@ void WinClipboard::SetText(String text) { ::GlobalUnlock(handle); if (::SetClipboardData(CF_UNICODETEXT, handle) == nullptr) { - log::Warn(u"Failed to set clipboard data."); + CRU_LOG_WARN(u"Failed to set clipboard data."); } ::CloseClipboard(); diff --git a/src/win/gui/UiApplication.cpp b/src/win/gui/UiApplication.cpp index 8c2dfae7..1c9321b6 100644 --- a/src/win/gui/UiApplication.cpp +++ b/src/win/gui/UiApplication.cpp @@ -4,8 +4,6 @@ #include "WindowManager.h" #include "cru/common/log/Logger.h" #include "cru/platform/Check.h" -#include "cru/win/DebugLogger.h" -#include "cru/win/StdOutLogger.h" #include "cru/win/graphics/direct/Factory.h" #include "cru/win/gui/Base.h" #include "cru/win/gui/Clipboard.h" @@ -33,11 +31,6 @@ WinUiApplication::WinUiApplication() { ::SetThreadDpiAwarenessContext(DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE); - log::Logger::GetInstance()->AddSource( - std::make_unique<::cru::platform::win::WinDebugLoggerSource>()); - log::Logger::GetInstance()->AddSource( - std::make_unique<::cru::platform::win::WinStdOutLoggerSource>()); - graph_factory_ = std::make_unique< cru::platform::graphics::win::direct::DirectGraphicsFactory>(); diff --git a/src/win/gui/Window.cpp b/src/win/gui/Window.cpp index 9c86441e..cc2038ec 100644 --- a/src/win/gui/Window.cpp +++ b/src/win/gui/Window.cpp @@ -235,9 +235,9 @@ void WinNativeWindow::SetCursor(std::shared_ptr<ICursor> cursor) { if (!::SetClassLongPtrW(hwnd_, GCLP_HCURSOR, reinterpret_cast<LONG_PTR>(cursor_->GetHandle()))) { CRU_LOG_WARN( - u"Failed to set cursor because failed to set class long. Last " - u"error code: {}.", - ::GetLastError()); + u"Failed to set cursor because failed to set class long. Last " + u"error code: {}.", + ::GetLastError()); return; } @@ -245,7 +245,7 @@ void WinNativeWindow::SetCursor(std::shared_ptr<ICursor> cursor) { auto lg = [](StringView reason) { CRU_LOG_WARN( - + u"Failed to set cursor because {} when window is visible. (We need to " u"update cursor if it is inside the window.) Last error code: {}.", reason, ::GetLastError()); @@ -477,7 +477,7 @@ void WinNativeWindow::RecreateWindow() { if (dpi == 0) throw Win32Error(::GetLastError(), u"Failed to get dpi of window."); dpi_ = static_cast<float>(dpi); - log::Debug(u"Dpi of window is {}.", dpi_); + CRU_LOG_DEBUG(u"Dpi of window is {}.", dpi_); window_manager->RegisterWindow(hwnd_, this); |