⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 console.cpp

📁 java实现的简单的分形树。简单易学!是学习分形知识的很好的例子。其java语法简单
💻 CPP
字号:
// --------------------------------------------------------------------------
// Dingus project - a collection of subsystems for game/graphics applications
// --------------------------------------------------------------------------
#include "stdafx.h"

#include "Console.h"
#include <time.h>

using namespace dingus;

CConsole* CConsole::mSingleInstance = 0;


CConsoleChannel& CConsole::CON_WARNING	= CConsole::getChannel( "warning" );
CConsoleChannel& CConsole::CON_ERROR	= CConsole::getChannel( "error" );


//---------------------------------------------------------------------------
// CConsole
//---------------------------------------------------------------------------

CConsole::CConsole()
:	mDefaultRenderingCtx( NULL ),
	mDefaultFilter( NULL )
{
}

CConsole::~CConsole()
{
	for( TChannelList::iterator i = mChannels.begin(); i != mChannels.end(); ++i )
		delete *i;
}

CConsoleChannel& CConsole::openChannel( const std::string& name )
{
	CConsoleChannel* channel = NULL;

	for( TChannelList::iterator i = mChannels.begin(); i != mChannels.end(); ++i ) {
		if( (*i)->getName() == name )
			channel = *i;
	}

	if( !channel ) {
		channel = new CConsoleChannel( *this, name, mDefaultRenderingCtx, mDefaultFilter );
		mChannels.push_back( channel );
	}

	return *channel;
}

void CConsole::closeChannel( CConsoleChannel& channel )
{
	for( TChannelList::iterator i = mChannels.begin(); i != mChannels.end(); ++i ) {
		if( *i == &channel ) {
			delete *i;
			i = mChannels.erase( i );
		}
	}
}

void CConsole::setDefaultRenderingContext( IConsoleRenderingContext& ctx )
{ 
	mDefaultRenderingCtx = &ctx;

	for( TChannelList::iterator i = mChannels.begin(); i != mChannels.end(); ++i ) {
		if( !(*i)->getRenderingContext() )
			(*i)->setRenderingContext( ctx );
	}
}


//---------------------------------------------------------------------------
// CConsoleChannel
//---------------------------------------------------------------------------

CConsoleChannel::CConsoleChannel( CConsole& console, const std::string& name, IConsoleRenderingContext* renderingCtx, IConsoleFilter* filter )
:	mParentConsole( console ),
	mName( name ),
	mRenderingCtx( renderingCtx ),
	mFilter( filter ),
	mWritingChannel( true ),
	mLoggingTime( false )
{
}

CConsoleChannel::~CConsoleChannel()
{
}

void CConsoleChannel::write( const std::string& methodName, const std::string& message )
{
	write( message );
}

void CConsoleChannel::write( const std::string& message )
{
	if( !mRenderingCtx )
		return;

	if( mFilter && !mFilter->apply( *this, message ) )
		return;

	if( mLoggingTime ) {
		time_t clockTime;
		time( &clockTime );
		const tm* t = localtime( &clockTime );
		char buf[100];
		sprintf( buf, "%i:%i:%i ", t->tm_hour, t->tm_min, t->tm_sec );
		mRenderingCtx->write( buf );
	}
	if( mWritingChannel ) {
		mRenderingCtx->write( mName + "> " );
	}
	mRenderingCtx->write( message );
	mRenderingCtx->write( "\n" );
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -