Separate window displayer message stringify

This commit is contained in:
kaetemi 2016-01-15 17:10:39 +01:00
parent fe6cc6656b
commit 8f61c6dfa9
2 changed files with 26 additions and 13 deletions

View file

@ -64,6 +64,8 @@ public:
virtual void getWindowPos (uint32 &x, uint32 &y, uint32 &w, uint32 &h) { x=y=w=h=0; } 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: protected:
// display a string (MT) // display a string (MT)

View file

@ -116,26 +116,20 @@ void CWindowDisplayer::create (string windowNameEx, bool iconified, sint x, sint
_Thread->start (); _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; bool needSpace = false;
//stringstream ss; //stringstream ss;
string str; string str;
uint32 color = 0xFF000000;
if (args.LogType != CLog::LOG_NO) if (args.LogType != CLog::LOG_NO)
{ {
str += logTypeToString(args.LogType); str += CWindowDisplayer::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;
needSpace = true; needSpace = true;
} }
// Write thread identifier // Write thread identifier
if ( args.ThreadId != 0 ) if (args.ThreadId != 0)
{ {
if (needSpace) { str += " "; needSpace = false; } if (needSpace) { str += " "; needSpace = false; }
#ifdef NL_OS_WINDOWS #ifdef NL_OS_WINDOWS
@ -173,7 +167,7 @@ void CWindowDisplayer::doDisplay (const NLMISC::CLog::TDisplayInfo &args, const
uint nbl = 1; uint nbl = 1;
char *npos, *pos = const_cast<char *>(message); char *npos, *pos = const_cast<char *>(message);
while ((npos = strchr (pos, '\n'))) while ((npos = strchr(pos, '\n')))
{ {
*npos = '\0'; *npos = '\0';
str += pos; str += pos;
@ -181,13 +175,13 @@ void CWindowDisplayer::doDisplay (const NLMISC::CLog::TDisplayInfo &args, const
str += "\r"; str += "\r";
str += "\n"; str += "\n";
*npos = '\n'; *npos = '\n';
pos = npos+1; pos = npos + 1;
nbl++; nbl++;
} }
str += pos; str += pos;
pos = const_cast<char *>(args.CallstackAndLog.c_str()); pos = const_cast<char *>(args.CallstackAndLog.c_str());
while ((npos = strchr (pos, '\n'))) while ((npos = strchr(pos, '\n')))
{ {
*npos = '\0'; *npos = '\0';
str += pos; str += pos;
@ -195,11 +189,28 @@ void CWindowDisplayer::doDisplay (const NLMISC::CLog::TDisplayInfo &args, const
str += "\r"; str += "\r";
str += "\n"; str += "\n";
*npos = '\n'; *npos = '\n';
pos = npos+1; pos = npos + 1;
nbl++; nbl++;
} }
str += pos; 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<std::list<std::pair<uint32, std::string> > >::CAccessor access (&_Buffer); CSynchronized<std::list<std::pair<uint32, std::string> > >::CAccessor access (&_Buffer);
if (_HistorySize > 0 && access.value().size() >= (uint)_HistorySize) if (_HistorySize > 0 && access.value().size() >= (uint)_HistorySize)