From 7a3de546f6f73df1d6bcceda12da71eda4a21bdf Mon Sep 17 00:00:00 2001 From: kaetemi Date: Fri, 15 Jan 2016 17:10:39 +0100 Subject: [PATCH] Separate window displayer message stringify --- code/nel/include/nel/misc/window_displayer.h | 2 ++ code/nel/src/misc/window_displayer.cpp | 37 +++++++++++++------- 2 files changed, 26 insertions(+), 13 deletions(-) diff --git a/code/nel/include/nel/misc/window_displayer.h b/code/nel/include/nel/misc/window_displayer.h index de05b25d5..4fc86c2b0 100644 --- a/code/nel/include/nel/misc/window_displayer.h +++ b/code/nel/include/nel/misc/window_displayer.h @@ -64,6 +64,8 @@ public: virtual void getWindowPos (uint32 &x, uint32 &y, uint32 &w, uint32 &h) { x=y=w=h=0; } + static std::string stringifyMessage(const NLMISC::CLog::TDisplayInfo &args, const char *message, bool needSlashR = false); + protected: // display a string (MT) diff --git a/code/nel/src/misc/window_displayer.cpp b/code/nel/src/misc/window_displayer.cpp index 5c9227933..c36ff6f58 100644 --- a/code/nel/src/misc/window_displayer.cpp +++ b/code/nel/src/misc/window_displayer.cpp @@ -116,26 +116,20 @@ void CWindowDisplayer::create (string windowNameEx, bool iconified, sint x, sint _Thread->start (); } -void CWindowDisplayer::doDisplay (const NLMISC::CLog::TDisplayInfo &args, const char *message) +std::string CWindowDisplayer::stringifyMessage(const NLMISC::CLog::TDisplayInfo &args, const char *message, bool needSlashR) { bool needSpace = false; //stringstream ss; string str; - uint32 color = 0xFF000000; - if (args.LogType != CLog::LOG_NO) { - str += logTypeToString(args.LogType); - if (args.LogType == CLog::LOG_ERROR || args.LogType == CLog::LOG_ASSERT) color = 0x00FF0000; - else if (args.LogType == CLog::LOG_WARNING) color = 0x00800000; - else if (args.LogType == CLog::LOG_DEBUG) color = 0x00808080; - else color = 0; + str += CWindowDisplayer::logTypeToString(args.LogType); needSpace = true; } // Write thread identifier - if ( args.ThreadId != 0 ) + if (args.ThreadId != 0) { if (needSpace) { str += " "; needSpace = false; } #ifdef NL_OS_WINDOWS @@ -173,7 +167,7 @@ void CWindowDisplayer::doDisplay (const NLMISC::CLog::TDisplayInfo &args, const uint nbl = 1; char *npos, *pos = const_cast(message); - while ((npos = strchr (pos, '\n'))) + while ((npos = strchr(pos, '\n'))) { *npos = '\0'; str += pos; @@ -181,13 +175,13 @@ void CWindowDisplayer::doDisplay (const NLMISC::CLog::TDisplayInfo &args, const str += "\r"; str += "\n"; *npos = '\n'; - pos = npos+1; + pos = npos + 1; nbl++; } str += pos; pos = const_cast(args.CallstackAndLog.c_str()); - while ((npos = strchr (pos, '\n'))) + while ((npos = strchr(pos, '\n'))) { *npos = '\0'; str += pos; @@ -195,11 +189,28 @@ void CWindowDisplayer::doDisplay (const NLMISC::CLog::TDisplayInfo &args, const str += "\r"; str += "\n"; *npos = '\n'; - pos = npos+1; + pos = npos + 1; nbl++; } str += pos; + return str; +} + +void CWindowDisplayer::doDisplay (const NLMISC::CLog::TDisplayInfo &args, const char *message) +{ + uint32 color = 0xFF000000; + + if (args.LogType != CLog::LOG_NO) + { + if (args.LogType == CLog::LOG_ERROR || args.LogType == CLog::LOG_ASSERT) color = 0x00FF0000; + else if (args.LogType == CLog::LOG_WARNING) color = 0x00800000; + else if (args.LogType == CLog::LOG_DEBUG) color = 0x00808080; + else color = 0; + } + + std::string str = stringifyMessage(args, message, needSlashR); + { CSynchronized > >::CAccessor access (&_Buffer); if (_HistorySize > 0 && access.value().size() >= (uint)_HistorySize)