--- 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;
- }