// LogFile.cpp: implementation of the LogFile class. // ////////////////////////////////////////////////////////////////////// #include "stdafx.h" #include "LogFile.h" #ifdef _DEBUG #undef THIS_FILE static char THIS_FILE[]=__FILE__; #define new DEBUG_NEW #endif //***************************************************************************************************************************** //---------------------------------------------------------------PUBLIC------------------------------------------------------- //***************************************************************************************************************************** // LogFile::LogFile() { loaded_ = false; } LogFile::~LogFile() { Close(); } void LogFile::ToggleStatus(bool onoff) { status_ = onoff; } int LogFile::Init(const CString sFile) { //Make sure log file is not already open if (loaded_) return false; //Open file if (status_ == true) { hFile_ = CreateFile (sFile, GENERIC_WRITE, 0, 0, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL,0); if (hFile_ == INVALID_HANDLE_VALUE) return false; //Set file loaded flag loaded_ = true; //Set filename fileName_ = sFile; //Write RTF header WriteString ("{\\rtf1\\ansi\\deff0{\\fonttbl{\\f0 Courier New;}}\\fs20\n"); //Write colour table WriteString ("{\\colortbl;\n"); //Black WriteString ("\\red255\\green255\\blue255;\n"); //White WriteString ("\\red128\\green128\\blue128;\n"); //Grey WriteString ("\\red255\\green0\\blue0;\n"); //Red WriteString ("\\red0\\green255\\blue0;\n"); //Green WriteString ("\\red0\\green0\\blue255;\n"); //Blue WriteString ("\\red0\\green255\\blue255;\n"); //Cyan WriteString ("\\red255\\green255\\blue0;\n"); //Yellow WriteString ("\\red255\\green0\\blue255;\n"); //Magenta WriteString ("\\red128\\green0\\blue0;\n"); //Dark Red WriteString ("\\red0\\green128\\blue0;\n"); //Dark Green WriteString ("\\red0\\green0\\blue128;\n"); //Dark Blue WriteString ("\\red255\\green128\\blue128;\n"); //Light Red WriteString ("\\red128\\green255\\blue128;\n"); //Light Green WriteString ("\\red128\\green128\\blue255;\n"); //Light Blue WriteString ("\\red255\\green128\\blue0;\n"); //Orange WriteString ("}\n"); //Success }; return true; }; int LogFile::Close() { if (!loaded_) return false; //Write closing line //LogString (""); //LogString ("[B]Log Closed.[/B]"); //Write closing brace WriteString ("}"); //Close file CloseHandle (hFile_); //Clear file loaded flag loaded_ = FALSE; //Success return true; }; bool LogFile::GetState() { return(loaded_); }; bool LogFile::LogString(CString sText) { if (!loaded_) return false; //Format string sText = DoFormatting (sText); //Write string to file WriteString (sText); //Success return true; }; bool LogFile::LogMessage(const CString sSource, CString sMessage, const int x,MESSAGETYPE messageType) { CString tmp; tmp.Format(" %i",x); sMessage = sMessage + " " + tmp; return(LogMessage(sSource,sMessage,messageType)); } bool LogFile::LogMessage(const CString sSource, const CString sMessage, MESSAGETYPE messageType) { CString str; switch(messageType) { case MSG_SUCCESS: str = "[BLUE]"; break; case MSG_INFO: str = "[GREY]"; break; case MSG_WARN: str = "[ORANGE]"; break; case MSG_ERROR: str = "[RED]"; break; }; str += "[B]<"; str += sSource; str += ">[/B]"; str += sMessage; return(LogString(str)); }; //-------------------------------------PRIVATE------------------------------------------------------- void LogFile::WriteString(const CString sText) { if (status_ == true) { DWORD bytesWritten; char sTextX[100]; strcpy(sTextX,sText); WriteFile (hFile_, sTextX, (int) sText.GetLength(), &bytesWritten, NULL); }; }; CString LogFile::DoFormatting (CString sText) { //Special Characters sText.Replace("\\","\\\\"); sText.Replace("{","\\{"); sText.Replace("}","\\}"); //Colors sText.Replace("[BLACK]", "\\cf0 "); sText.Replace("[WHITE]", "\\cf1 "); sText.Replace("[GREY]", "\\cf2 "); sText.Replace("[RED]", "\\cf3 "); sText.Replace("[GREEN]", "\\cf4 "); sText.Replace("[BLUE]", "\\cf5 "); sText.Replace("[CYAN]", "\\cf6 "); sText.Replace("[YELLOW]", "\\cf7 "); sText.Replace("[MAGENTA]", "\\cf8 "); sText.Replace("[DARK_RED]", "\\cf9 "); sText.Replace("[DARK_GREEN]", "\\cf10 "); sText.Replace("[DARK_BLUE]", "\\cf11 "); sText.Replace("[LIGHT_RED]", "\\cf12 "); sText.Replace("[LIGHT_GREEN]", "\\cf13 "); sText.Replace("[LIGHT_BLUE]", "\\cf14 "); sText.Replace("[ORANGE]", "\\cf15 "); // Text Style sText.Replace("[PLAIN]","\\plain "); sText.Replace("[B]","\\b "); sText.Replace("[/B]","\\b0 "); sText.Replace("[I]","\\i "); sText.Replace("[/I]","\\i0 "); sText.Replace("[U]","\\ul "); sText.Replace("[/U]","\\ul0 "); sText.Replace("[S]","\\strike "); sText.Replace("[/S]","\\strike0 "); sText.Replace("[SUB]","\\sub "); sText.Replace("[/SUB]","\\sub0 "); sText.Replace("[SUPER]","\\super "); sText.Replace("[/SUPER]","\\super0 "); sText.Replace("[LEFT]", "\\ql "); sText.Replace("[RIGHT]", "\\qr "); sText.Replace("[CENTER]", "\\qc "); sText.Replace("[FULL]", "\\qj "); sText.Replace("[TITLE]", "\\fs40 "); sText.Replace("[/TITLE]", "\\fs20 "); sText.Replace("[H]", "\\fs24 "); sText.Replace("[/H]", "\\fs20 "); sText = "{\\pard " + sText; sText = sText + "\\par}\n"; return(sText); };