mmsharing/livecommsui/lcui/tsrc/mustester/Stubs/mceclientstub/src/mccscreen.cpp
branchRCL_3
changeset 33 bc78a40cd63c
parent 32 73a1feb507fb
child 35 6c57ef9392d2
--- a/mmsharing/livecommsui/lcui/tsrc/mustester/Stubs/mceclientstub/src/mccscreen.cpp	Tue Aug 31 15:12:07 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,402 +0,0 @@
-/*
-* Copyright (c) 2006 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:    
-*
-*/
-
-
-
-
-#include <bitstd.h>
-#include <w32std.h>
-#include <gdi.h>
-
-#include "MccScreen.h"
-#include "muslogger.h"
-
-// EXTERNAL DATA STRUCTURES
-
-// EXTERNAL FUNCTION PROTOTYPES  
-
-// CONSTANTS
-
-_LIT(KMccWindowGroupName,"32MccVideoWindow");
-
-// MACROS
-
-// LOCAL CONSTANTS AND MACROS
-
-// MODULE DATA STRUCTURES
-
-// LOCAL FUNCTION PROTOTYPES
-
-// FORWARD DECLARATIONS
-
-// ============================= LOCAL FUNCTIONS ===============================
-
-
-// ============================ MEMBER FUNCTIONS ===============================
-
-// -----------------------------------------------------------------------------
-// CMccScreen::CMccScreen
-// -----------------------------------------------------------------------------
-//
-CMccScreen* CMccScreen::NewL( 
-    TPoint aPos, 
-    TSize aArea, 
-    TInt aIndex, 
-    TInt aWindowOrdinalPosition,
-	TInt aWindowOrdinalPriority,
-	TSize aViewFinderImageSize )
-	{
-	CMccScreen* self = new ( ELeave ) CMccScreen( aPos, 
-	                                              aArea, 
-	                                              aIndex,
-	                                              aWindowOrdinalPosition,
-	                                              aWindowOrdinalPriority );
-	CleanupStack::PushL( self );
-	self->ConstructL( aViewFinderImageSize );
-	CleanupStack::Pop( self );	
-	return self;
-	}
-
-// -----------------------------------------------------------------------------
-// CMccScreen::CMccScreen
-// -----------------------------------------------------------------------------
-//
-CMccScreen::CMccScreen( 
-    TPoint aPos, 
-    TSize aArea, 
-    TInt aIndex, 
-    TInt aWindowOrdinalPosition,
-	TInt aWindowOrdinalPriority ) :
-	iDeviceIndex( aIndex ), 
-	iPosition( aPos ), 
-	iArea( aArea ),
-	iWindowOrdinalPosition( aWindowOrdinalPosition ),
-	iWindowOrdinalPriority( aWindowOrdinalPriority ),
-	iAborted( ETrue )
-	{
-	}
-
-// -----------------------------------------------------------------------------
-// CMccScreen::CMccScreen
-// -----------------------------------------------------------------------------
-//
-CMccScreen::~CMccScreen()
-	{
-	MUS_LOG( "CMccScreen::~CMccScreen" )
-	
-	DetachFrame(); // Must do bitmap detach before releasing window resources
-	delete iDirectScreenAccess;
-	delete iDev;
-	delete iRw;
-    delete iRwGroup;
-    iRwSession.Close();
-    
-	MUS_LOG( "CMccScreen::~CMccScreen, exit" )
-	}
-
-// -----------------------------------------------------------------------------
-// CMccScreen::CMccScreen
-// -----------------------------------------------------------------------------
-//
-void CMccScreen::ConstructL( TSize aViewFinderImageSize )
-	{
-	MUS_LOG( "CMccScreen::ConstructL" )
-    User::LeaveIfError( iRwSession.Connect() );
-	
-	// Create window group
-	TInt groupId = iRwSession.GetFocusWindowGroup();
-    iRwGroup = new (ELeave) RWindowGroup( iRwSession ) ;	
-	//TInt handle = iRwSession.GetWindowGroupHandle( groupId );
-
-    MUS_LOG1( "CMccScreen::ConstructL, window ordinal pos", iWindowOrdinalPosition )
-    MUS_LOG1( "CMccScreen::ConstructL, window ordinal priority", iWindowOrdinalPriority )
-    
-    iRwGroup->Construct( groupId, EFalse );
-	iRwGroup->SetName( KMccWindowGroupName );
-    
-    iRwGroup->SetOrdinalPosition( iWindowOrdinalPosition, iWindowOrdinalPriority );
-         
-    // Create screen device
-	iDev = new (ELeave) CWsScreenDevice( iRwSession );
-	iDev->Construct( iDeviceIndex ); 
-	
-	TInt currMode = iDev->CurrentScreenMode();
-	MUS_LOG1( "CMccScreen::ConstructL, screen device mode = %d", currMode )
-	                   
-	TPixelsTwipsAndRotation sizeAndRotation;
-    iDev->GetScreenModeSizeAndRotation( currMode, sizeAndRotation );
-	MUS_LOG2( "CMccScreen::ConstructL, screen device size  %d %d", 
-	                   sizeAndRotation.iPixelSize.iWidth, 
-	                   sizeAndRotation.iPixelSize.iHeight )
-
-	MUS_LOG1( "CMccScreen::ConstructL, screen device orientation %d", 
-	                   sizeAndRotation.iRotation )
-	
-	// Create window
-	iRw = new (ELeave) RWindow( iRwSession );
-	
-	iRw->Construct( *iRwGroup, (TUint32) this + 2 );
-    
-    MUS_LOG2( "CMccScreen::ConstructL, window pos %d %d", iPosition.iX, iPosition.iY )
-	MUS_LOG2( "CMccScreen::ConstructL, window size %d %d", iArea.iWidth, iArea.iHeight )
-
-    iRw->SetPosition( iPosition );
-	iRw->SetBackgroundColor( KRgbBlack );
-    iRw->SetSize( iArea );    
-    iRw->SetOrdinalPosition( iWindowOrdinalPosition );
-    iRw->Activate();
-    iRwSession.Flush();
-	
-	// Create direct screen access                                	
-	iDirectScreenAccess = CDirectScreenAccess::NewL( iRwSession, *iDev, *iRw, *this );   
-	
-	UpdateViewFinderArea( aViewFinderImageSize );
-	
-	MUS_LOG2( "CMccScreen::ConstructL, viewfinder pos %d %d", 
-	                   iViewFinderImageRect.iTl.iX, iViewFinderImageRect.iTl.iY )
-	MUS_LOG2( "CMccScreen::ConstructL, viewfinder size %d %d", 
-	                   iViewFinderImageRect.Width(), iViewFinderImageRect.Height() )
-	
-	MUS_LOG( "CMccScreen::ConstructL, exit" )
-	}
-    
-// -----------------------------------------------------------------------------
-// CMccScreen::CMccScreen
-// -----------------------------------------------------------------------------
-//
-void CMccScreen::StartL()
-	{
-	MUS_LOG( "CMccScreen::StartL" )	
-	
-	iAborted = EFalse;
-	
-	iDirectScreenAccess->StartL();
-	iGc = iDirectScreenAccess->Gc();	
-	iFbsDev = iDirectScreenAccess->ScreenDevice();
-	iRegion = iDirectScreenAccess->DrawingRegion();		
-
-#ifdef __MCC_CONTROLLER	
-	if ( iRegion && !iRegion->IsEmpty() )
-	    {
-        for ( TInt i = 0; i < iRegion->Count(); i++ )
-            {
-            const TRect& regionRect = (*iRegion)[ i ];
-            MUS_LOG_INT2( "CMccScreen::StartL, rect tl", regionRect.iTl.iX, regionRect.iTl.iY )
-            MUS_LOG_INT2( "CMccScreen::StartL, rect br", regionRect.iBr.iX, regionRect.iBr.iY )
-            }
-	    }
-#endif	        
-
-    iGc->SetClippingRegion( iRegion );
-    
-    // Fill with black areas which are not covered by viewfinder image.
-    // If viewfinder image has not been yet received and drawn, fill whole area.
-    //
-    iGc->SetBrushColor( KRgbBlack );
-    iGc->SetBrushStyle( CGraphicsContext::ESolidBrush );
-    
-    if ( !iFirstImageDrawn )
-        {
-        // Whole area
-        TPoint pointTl( 0, 0 );
-        TRect rect( pointTl, iArea );
-        iGc->DrawRect( rect );
-        }
-    else
-        {
-        // Upper area
-        TPoint pointTl( 0, 0 );
-        TPoint pointBr( iArea.iWidth, iViewFinderImageRect.iTl.iY );
-        TRect rect( pointTl, pointBr );
-        iGc->DrawRect( rect );
-
-        // Lower area
-        pointTl.SetXY( 0, iViewFinderImageRect.iBr.iY );
-        pointBr.SetXY( iArea.iWidth, iArea.iHeight );
-        rect.SetRect( pointTl, pointBr );
-        iGc->DrawRect( rect );
-        
-        // Left area
-        pointTl.SetXY( 0, iViewFinderImageRect.iTl.iY );
-        pointBr.SetXY( iViewFinderImageRect.iTl.iX, iViewFinderImageRect.iBr.iY );
-        rect.SetRect( pointTl, pointBr );
-        iGc->DrawRect( rect );
-        
-        // Right area
-        pointTl.SetXY( iViewFinderImageRect.iBr.iX, iViewFinderImageRect.iTl.iY );
-        pointBr.SetXY( iArea.iWidth, iViewFinderImageRect.iBr.iY );
-        rect.SetRect( pointTl, pointBr );
-        iGc->DrawRect( rect );
-        }
-        
-    if ( iAttachedFrame )
-        {
-        MUS_LOG( "CMccScreen::StartL, draw attached frame" )
-        
-        TSize viewFinderImageSize = iAttachedFrame->SizeInPixels();
-    	
-    	TPoint corner = UpdateViewFinderArea( viewFinderImageSize );
-        
-        iGc->BitBlt( corner, iAttachedFrame );
-        }
-        
-    DoScreenDeviceUpdate();
-    
-    iGc->SetBrushStyle( CGraphicsContext::ENullBrush );
-        		
-	MUS_LOG( "CMccScreen::StartL, exit" )
-	}
-
-// -----------------------------------------------------------------------------
-// CMccScreen::CMccScreen
-// -----------------------------------------------------------------------------
-//
-void CMccScreen::Stop()
-	{
-	MUS_LOG( "CMccScreen::Stop" )
-	iDirectScreenAccess->Cancel();
-	MUS_LOG( "CMccScreen::Stop, exit" )	
-	}
-	
-// -----------------------------------------------------------------------------
-// CMccScreen::CMccScreen
-// -----------------------------------------------------------------------------
-//
-void CMccScreen::Restart( RDirectScreenAccess::TTerminationReasons /*aReason*/ )
-	{
-	MUS_LOG( "CMccScreen::Restart" )	
-	
-	TRAP_IGNORE( StartL() );
-	}
-
-// -----------------------------------------------------------------------------
-// CMccScreen::CMccScreen
-// -----------------------------------------------------------------------------
-//
-void CMccScreen::AbortNow( RDirectScreenAccess::TTerminationReasons /*aReason*/ )
-	{
-	MUS_LOG( "CMccScreen::AbortNow" )	
-	iDirectScreenAccess->Cancel();
-	
-	iAborted = ETrue;
-	}
-
-// -----------------------------------------------------------------------------
-// CMccScreen::CMccScreen
-// -----------------------------------------------------------------------------
-//
-void CMccScreen::Draw( CFbsBitmap& aFrame )
-	{
-	// When frame draw is requested, attached frame is not anymore drawn
-	DetachFrame();
-	
-	DoDraw( aFrame );
-	}
-
-// -----------------------------------------------------------------------------
-// CMccScreen::AttachFrameL
-// -----------------------------------------------------------------------------
-//
-void CMccScreen::AttachFrameL( CFbsBitmap* aFrame )
-    {
-    MUS_LOG( "CMccScreen::AttachFrameL" )	
-    
-    __ASSERT_ALWAYS( aFrame, User::Leave( KErrArgument ) );
-    
-    DetachFrame();
-    
-    iAttachedFrame = aFrame;
-    
-    DoDraw( *iAttachedFrame );
-
-    MUS_LOG( "CMccScreen::AttachFrameL, exit" )
-    }
-
-// -----------------------------------------------------------------------------
-// CMccScreen::DetachFrame
-// -----------------------------------------------------------------------------
-//		
-void CMccScreen::DetachFrame()
-    {	
-    if ( iAttachedFrame )
-        {
-        MUS_LOG( "CMccScreen::DetachFrame, detaching" )
-        iAttachedFrame->Reset();
-        delete iAttachedFrame;
-        }
-        
-    iAttachedFrame = NULL;
-    }
-    
-// -----------------------------------------------------------------------------
-// CMccScreen::UpdateViewFinderArea
-// -----------------------------------------------------------------------------
-//
-TPoint CMccScreen::UpdateViewFinderArea( TSize aViewFinderImageSize )
-    {
-    TPoint corner( 0, 0 );
-	if ( aViewFinderImageSize.iWidth < iArea.iWidth )
-	    {
-	    // Divide the subtraction by two (i.e. do centering)
-	    corner.iX = ( iArea.iWidth - aViewFinderImageSize.iWidth ) >> 1;
-	    }
-	    
-    if ( aViewFinderImageSize.iHeight < iArea.iHeight )
-	    {
-	    // Divide the subtraction by two (i.e. do centering)
-	    corner.iY = ( iArea.iHeight - aViewFinderImageSize.iHeight ) >> 1;
-	    }
-	    
-	iViewFinderImageRect = TRect( corner, aViewFinderImageSize );
-	
-	return corner;
-    }
-
-// -----------------------------------------------------------------------------
-// CMccScreen::DoDraw
-// -----------------------------------------------------------------------------
-//
-void CMccScreen::DoDraw( CFbsBitmap& aFrame )
-    {	
-    if ( !iAborted && iGc )
-        {
-        iFirstImageDrawn = ETrue;
-        	
-       	TSize viewFinderImageSize = aFrame.SizeInPixels();
-      
-    	TPoint corner = UpdateViewFinderArea( viewFinderImageSize );
-
-        iGc->BitBlt( corner, &aFrame );
-        
-        DoScreenDeviceUpdate();
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CMccScreen::DoScreenDeviceUpdate
-// -----------------------------------------------------------------------------
-//
-void CMccScreen::DoScreenDeviceUpdate()
-    {
-    if ( iFbsDev )
-        {
-        iFbsDev->Update();
-        }
-    }
-    
-// End of file
-