1 #include "logbuffer.h" 2 Instance()3Logbuffer* Logbuffer::Instance () 4 { 5 static Logbuffer t; 6 return &t; // _instance isn't needed in this case 7 } 8 Logbuffer()9Logbuffer::Logbuffer() 10 { 11 maxMessages = 5; 12 msgLifetime = 3000; 13 } 14 add(const stringstream & streamptr)15void Logbuffer::add(const stringstream& streamptr) 16 { 17 msg *Msg = new msg; 18 Msg->str = streamptr.str(); 19 Msg->appeartime = Timer::Instance()->sdl_lasttime; 20 Msg->len = Textprinter::Instance()->getWidth(Msg->str); 21 messages.push_back(Msg); 22 23 // to prevent overfilling: 24 deleteExpiredMsg(); 25 getLongest(); 26 } 27 deleteExpiredMsg()28void Logbuffer::deleteExpiredMsg() 29 { 30 if ( !messages.empty() ) 31 { 32 if ( 33 messages.size() > maxMessages 34 || ( msgLifetime > 0.0f && (Timer::Instance()->sdl_lasttime - messages[0]->appeartime) > msgLifetime ) 35 // || ( msgLifetime > 0.0f && Timer::Instance()->timediff( Timer::Instance()->lasttime, messages[0]->appeartime ) > msgLifetime ) 36 ) 37 { 38 delete messages[0]; 39 messages.erase(messages.begin()+0); 40 } 41 } 42 } 43 getLongest()44void Logbuffer::getLongest() 45 { 46 longestLength = 0; 47 for ( unsigned int i=0; i < messages.size(); i++ ) 48 { 49 if ( messages[i]->len > longestLength ) 50 longestLength = messages[i]->len; 51 } 52 } 53 54