windowing/windowserver/tcrx/tcrx.cpp
changeset 110 7f25ef56562d
parent 98 bf7481649c98
child 111 29ddb8a72f0e
--- a/windowing/windowserver/tcrx/tcrx.cpp	Fri Jun 11 14:58:47 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,393 +0,0 @@
-// Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies).
-// All rights reserved.
-// This component and the accompanying materials are made available
-// under the terms of "Eclipse Public License v1.0"
-// which accompanies this distribution, and is available
-// at the URL "http://www.eclipse.org/legal/epl-v10.html".
-//
-// Initial Contributors:
-// Nokia Corporation - initial contribution.
-//
-// Contributors:
-//
-// Description:
-//
-
-/**
- @file
- @test
- @internalComponent - Internal Symbian test code
-*/
-
-#include <gdi.h>
-#include "tcrx.h"
-#include "wsredir.h"
-#include "wslisten.h"
-
-static TRedirectorInfo TheInfo;
-
-class CTwoWindow: public CBase
-	{
-public:
-	static CTwoWindow* NewL();
-	~CTwoWindow();
-private:
-	void ConstructL();
-private:
-	RWsSession iWs;
-	CWsScreenDevice* iScr;
-	CWindowGc* iGc;
-	RWindowGroup iGroup;
-	RWindow iBg;
-	RWindow iFg;
-	};
-
-CTwoWindow* CTwoWindow::NewL()
-	{
-	CTwoWindow* tw = new(ELeave) CTwoWindow;
-	CleanupStack::PushL(tw);
-	tw->ConstructL();
-	CleanupStack::Pop(tw);
-	return tw;
-	}
-
-CTwoWindow::~CTwoWindow()
-	{
-	iFg.Close();
-	iBg.Close();
-	iGroup.Close();
-	delete iGc;
-	delete iScr;
-	iWs.Close();	
-	}
-
-void CTwoWindow::ConstructL()
-	{
-	User::LeaveIfError(iWs.Connect());
-	iScr = new(ELeave) CWsScreenDevice(iWs);
-	User::LeaveIfError(iScr->Construct());
-	User::LeaveIfError(iScr->CreateContext(iGc));
-	iGroup = RWindowGroup(iWs);
-	User::LeaveIfError(iGroup.Construct(0xc0de,ETrue));
-	
-	iBg = RWindow(iWs);
-	User::LeaveIfError(iBg.Construct(iGroup,0xc0debabe));
-	iBg.SetRequiredDisplayMode(EColor64K);
-	iBg.Activate();
-	iWs.Flush();
-
-	iBg.BeginRedraw();
-	iGc->Activate(iBg);
-	iGc->SetBrushColor(KRgbGreen);
-	iGc->SetBrushStyle(CGraphicsContext::ESolidBrush);
-	TRect rect(iScr->SizeInPixels());
-	iGc->DrawRect(rect);
-	iGc->SetBrushColor(KRgbBlue);
-	iGc->DrawEllipse(rect);
-	iGc->Deactivate();
-	iBg.EndRedraw();
-	iWs.Flush();
-	
-	iFg = RWindow(iWs);
-	User::LeaveIfError(iFg.Construct(iGroup,0xc0decafe));
-	iFg.SetRequiredDisplayMode(EColor64K);
-	iFg.SetTransparencyAlphaChannel();
-	iFg.SetBackgroundColor(TRgb(0xff,0x55,0x55,0x80));
-	iFg.Activate();
-	iWs.Flush();
-	}
-
-CClient* CClient::NewL()
-	{
-	CClient* self = new(ELeave) CClient;
-	CleanupStack::PushL(self);
-	self->ConstructL();
-	CleanupStack::Pop(self);
-	
-	return self;
-	}
-
-CClient::CClient(): CActive(CActive::EPriorityStandard)
-	{
-	}
-
-void CClient::ConstructL()
-	{
-	CActiveScheduler::Add(this);
-	User::LeaveIfError(iWs.Connect());
-	iScreen = new(ELeave) CWsScreenDevice(iWs);
-	User::LeaveIfError(iScreen->Construct(0));
-	iGroup = RWindowGroup(iWs);
-	User::LeaveIfError(iGroup.Construct(0xCAFE, ETrue));
-	iGc = new(ELeave) CWindowGc(iScreen);
-	User::LeaveIfError(iGc->Construct());
-	iWin = new(ELeave) CWindow(this);
-	iWin->ConstructL(NULL, EFalse);
-	iRedraw = CRedrawHandler::NewL(this);
-
-	iRedir = CWsRedir::NewL();
-	iListen = CWsListen::NewL();
-		
-	MakeRequest();
-	}
-
-void CClient::HandleCommand(TInt aCmd)
-	{
-	switch (aCmd)
-		{
-		case 1:
-		iRedir->Redirect(CWsRedir::EFrontBuffer, ETrue);
-		break;
-
-		case 2:
-		iRedir->Redirect(CWsRedir::EBackBuffer, ETrue);
-		break;
-
-		case 3:
-		iRedir->Redirect(CWsRedir::EFrontBuffer, EFalse);
-		break;
-
-		case 4:
-		iRedir->Redirect(CWsRedir::EBackBuffer, EFalse);
-		break;
-
-		case 5:
-		iListen->Enable(ETrue);
-		break;
-
-		case 6:
-		iListen->Enable(EFalse);
-		break;
-
-		case 7:
-		iRedir->QueryPlugin(TheInfo);
-		break;
-		
-		case 8:
-		iBlank.Close();
-		iBlank = RBlankWindow(iWs);
-		iBlank.Construct(iGroup, 0xbeef);
-		iBlank.SetRequiredDisplayMode(EColor64K);
-		iBlank.SetColor(KRgbRed);
-		iBlank.SetExtent(TPoint(20,20),TSize(100,100));
-		iBlank.Activate();
-		break;
-		
-		case 9:
-		ClearTwoWindow();
-		DrawTwoWindow();
-		break;
-		
-		case 10:
-		CActiveScheduler::Stop();
-		break;
-		}
-	}
-	
-CClient::~CClient()
-	{	
-	Deque();
-	ClearTwoWindow();
-	iBlank.Close();
-	
-	delete iListen;
-	delete iRedir;
-	delete iWin;
-	delete iRedraw;
-	delete iGc;
-	delete iScreen;
-	
-	iGroup.Close();
-	iWs.Close();
-	}
-
-void CClient::DrawTwoWindow()
-	{
-	TRAP_IGNORE(iTwo = CTwoWindow::NewL());
-	}
-
-void CClient::ClearTwoWindow()
-	{
-	delete iTwo;
-	iTwo = NULL;	
-	}
-
-void CClient::RunL()
-	{
-	iWs.GetEvent(iEvent);
-	if (iEvent.Type()==EEventKey)
-		HandleCommand(iEvent.Key()->iCode-'0');
-	MakeRequest();
-	}
-
-void CClient::DoCancel()
-	{
-	iWs.EventReadyCancel();
-	}
-
-void CClient::MakeRequest()
-	{
-	iWs.EventReady(&iStatus);
-	SetActive();
-	}
-
-CRedrawHandler* CRedrawHandler::NewL(CClient* aClient)
-	{
-	CRedrawHandler* self=new(ELeave) CRedrawHandler(aClient);
-	CleanupStack::PushL(self);
-	self->ConstructL();
-	CleanupStack::Pop(self);
-	
-	return self;
-	}
-
-CRedrawHandler::CRedrawHandler(CClient* aClient) : CActive(CActive::EPriorityStandard), iClient(aClient)
-	{
-	}
-
-void CRedrawHandler::ConstructL()
-	{
-	CActiveScheduler::Add(this);
-	MakeRequest();
-	}
-
-CRedrawHandler::~CRedrawHandler()
-	{
-	Cancel();
-	}
-
-void CRedrawHandler::RunL()
-	{
-	TWsRedrawEvent event;
-	iClient->Ws().GetRedraw(event);
-	CWindow* win = (CWindow*)event.Handle();
-	if (win) 
-		{
-		TRect rect=event.Rect();
-		iClient->Gc().Activate(win->Window());
-		win->Window().BeginRedraw(rect);
-		win->Draw(rect);
-		win->Window().EndRedraw();
-		iClient->Gc().Deactivate();
-		}
-		
-	MakeRequest();
-	}
-
-void CRedrawHandler::MakeRequest()
-	{
-	iClient->Ws().RedrawReady(&iStatus);
-	SetActive();
-	}
-
-void CRedrawHandler::DoCancel()
-	{
-	iClient->Ws().RedrawReadyCancel();
-	}
-
-CWindow::CWindow(CClient* aClient) : iClient(aClient)
-	{
-	}
-
-CWindow::~CWindow()
-	{
-	iWin.Close();
-	}
-
-void CWindow::ConstructL(CWindow* aParent, TBool aTransparentFlag)
-	{
-	iParent = aParent;
-	iWin = RWindow(iClient->Ws());
-	RWindowTreeNode* node=iParent? &iParent->Window() : (RWindowTreeNode*)&iClient->Group();
-	User::LeaveIfError(iWin.Construct(*node, (TUint32)this));
-	iWin.SetRequiredDisplayMode(EColor64K);
-	if (aTransparentFlag)
-		{
-		iWin.SetBackgroundColor(TRgb(0,0,0,0x80));
-		iWin.SetTransparencyAlphaChannel();
-		}
-	iWin.SetExtent(TPoint(0,0),TSize(240,240));
-	iWin.Activate();
-	}
-
-void CWindow::Draw(const TRect& aRect) const
-	{
-	CWindowGc& gc = iClient->Gc();
-	gc.SetBrushStyle(CGraphicsContext::ESolidBrush);
-	gc.SetBrushColor(TRgb(0,0,0xff,0xff));	
-	gc.DrawRect(TRect(aRect.iTl.iX,aRect.iTl.iY,aRect.iBr.iX,aRect.iBr.iY/2));
-	gc.SetBrushColor(TRgb(0,0,0xff,0x80));	
-	gc.DrawRect(TRect(aRect.iTl.iX,aRect.iBr.iY/2,aRect.iBr.iX,aRect.iBr.iY));	
-	DrawMenu();
-	
-	gc.DrawWsGraphic(iClient->WsRedir()->Id(),TRect(aRect.iTl.iX,aRect.iBr.iY/2,aRect.iBr.iX,aRect.iBr.iY));
-	}
-
-_LIT(KMenu1, "1. Redirect screen");
-_LIT(KMenu2, "2. Redirect flickerfree");
-_LIT(KMenu3, "3. Restore screen");
-_LIT(KMenu4, "4. Restore flickerfree");
-_LIT(KMenu5, "5. Register event listener");
-_LIT(KMenu6, "6. Unregister listener");
-_LIT(KMenu7, "7. Test send receive msg");
-_LIT(KMenu8, "8. Test blank window");
-_LIT(KMenu9, "9. Test two window");
-_LIT(KMenuA, "A. Exit");
-
-const TBufC<32> TheMenu[] = 
-	{
-	(const TDesC&)KMenu1,
-	(const TDesC&)KMenu2,
-	(const TDesC&)KMenu3,
-	(const TDesC&)KMenu4,
-	(const TDesC&)KMenu5,
-	(const TDesC&)KMenu6,
-	(const TDesC&)KMenu7,
-	(const TDesC&)KMenu8,
-	(const TDesC&)KMenu9,
-	(const TDesC&)KMenuA
-	};
-	
-_LIT(KTypeFace, "DejaVu Sans Condensed");
-
-void CWindow::DrawMenu() const
-	{
-	CWsScreenDevice* scr = iClient->Screen();
-	CFont* font = NULL;
-	TFontSpec fs(KTypeFace, 15);
-	scr->GetNearestFontInPixels(font, fs);
-	CWindowGc& gc = iClient->Gc();
-	gc.UseFont(font);
-	TInt h = font->HeightInPixels();
-	gc.SetPenColor(KRgbYellow);
-	TInt nMenu = sizeof(TheMenu)/sizeof(TheMenu[0]);
-	for (TInt ii=0; ii<nMenu; ++ii)
-		gc.DrawText(TheMenu[ii], TPoint(10,(ii+1)*h));
-	gc.DiscardFont();
-	scr->ReleaseFont(font);
-	}
-
-void MainL()
-	{
-	CClient* client=CClient::NewL();
-	CActiveScheduler::Start();
-	
-	delete client;
-	}
-
-GLDEF_C TInt E32Main()
-	{
-	CTrapCleanup* trap=CTrapCleanup::New();
-	if (!trap)
-		return KErrNoMemory;
-	CActiveScheduler* scheduler = new(ELeave) CActiveScheduler;
-	CActiveScheduler::Install(scheduler);
-	
-	__UHEAP_MARK;	
-	TRAPD(err, MainL());
-	__UHEAP_MARKEND;	
-	
-	delete scheduler;
-	delete trap;
-	return err;
-	}