--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/accessoryservices/pluggeddisplay/pluggeddisplayengine/src/tvstandbyfigure.cpp Tue Feb 02 00:53:00 2010 +0200
@@ -0,0 +1,181 @@
+/*
+ * Copyright (c) 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: GSServer is responsible for initializing the TV
+ * driver during the boot and always when the cable is connected.
+ *
+ */
+
+
+// INCLUDE FILES
+#include "tvstandbyfigure.h"
+#include "TVOutStandbyFigure.mbg"
+#include <e32std.h>
+#include <fbs.h>
+#include <f32file.h>
+#include <bitdev.h>
+#include <gdi.h>
+//#include <r_display.h>
+
+// EXTERNAL DATA STRUCTURES
+
+// EXTERNAL FUNCTION PROTOTYPES
+
+// CONSTANTS
+
+// MACROS
+
+// LOCAL CONSTANTS AND MACROS
+
+// MODULE DATA STRUCTURES
+
+// LOCAL FUNCTION PROTOTYPES
+
+// FORWARD DECLARATIONS
+
+// ============================= LOCAL FUNCTIONS ===============================
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CTvStandbyFigure::CTvStandbyFigure
+// Empty default constructor.
+// -----------------------------------------------------------------------------
+//
+CTvStandbyFigure::CTvStandbyFigure()
+ {
+ }
+
+
+// -----------------------------------------------------------------------------
+// CTvStandbyFigure::ConstructL
+// Open the needed sessions, load the original bitmap and draw over it.
+// -----------------------------------------------------------------------------
+//
+void CTvStandbyFigure::ConstructL(
+ const TDesC& aFilename,
+ TInt aImageNumber )
+ {
+ // Setup the font and bitmap server and open session to it
+ User::LeaveIfError( FbsStartup() );
+ User::LeaveIfError( RFbsSession::Connect() );
+
+ // Create and load a bitmap from the given file, then draw the text over it
+ iBitmap = new (ELeave) CFbsBitmap();
+ TInt err = iBitmap->Load( aFilename, aImageNumber );
+ User::LeaveIfError( err );
+ }
+
+
+// -----------------------------------------------------------------------------
+// CTvStandbyFigure::NewLC
+// Two-phased constructor.
+// -----------------------------------------------------------------------------
+//
+CTvStandbyFigure* CTvStandbyFigure::NewLC(
+ const TDesC& aFilename,
+ TInt aImageNumber )
+ {
+ CTvStandbyFigure* self = new (ELeave) CTvStandbyFigure();
+ CleanupStack::PushL( self );
+ self->ConstructL( aFilename, aImageNumber );
+ return self;
+ }
+
+
+// -----------------------------------------------------------------------------
+// CTvStandbyFigure::NewL
+// Two-phased constructor.
+// -----------------------------------------------------------------------------
+//
+CTvStandbyFigure* CTvStandbyFigure::NewL(
+ const TDesC& aFilename,
+ TInt aImageNumber )
+ {
+ CTvStandbyFigure* self = CTvStandbyFigure::NewLC(
+ aFilename,
+ aImageNumber );
+ CleanupStack::Pop( self );
+ return self;
+ }
+
+
+// -----------------------------------------------------------------------------
+// CTvStandbyFigure::NewL
+// Release the bitmap and close the session.
+// -----------------------------------------------------------------------------
+//
+CTvStandbyFigure::~CTvStandbyFigure()
+ {
+ if ( iBitmap )
+ {
+ iBitmap->Reset();
+ delete iBitmap;
+ RFbsSession::Disconnect();
+ }
+ }
+
+
+// -----------------------------------------------------------------------------
+// CTvStandbyFigure::RgbConvertL
+// Convert bitmap to RGB565.
+// -----------------------------------------------------------------------------
+//
+TUint16* CTvStandbyFigure::RgbConvertL()
+ {
+ TSize drawingSize( iBitmap->SizeInPixels() );
+ TInt pixels = drawingSize.iWidth * drawingSize.iHeight;
+ TUint16* RGB565Data = new(ELeave) TUint16[pixels];
+ CleanupStack::PushL(RGB565Data);
+
+ //This is needed to lock the bitmap object before
+ //manipulating the object using TBitmapUtil object
+ iBitmap->LockHeapLC();
+ TBitmapUtil bitmapUtil( iBitmap );
+ bitmapUtil.Begin( TPoint( 0, 0 ) );
+
+ for (TInt y = 0; y < drawingSize.iHeight; ++y)
+ {
+ bitmapUtil.SetPos( TPoint( 0, y ) );
+ for (TInt x = 0; x < drawingSize.iWidth; ++x)
+ {
+ TUint32 pixelValue = bitmapUtil.GetPixel();
+ TUint r = (pixelValue >> 16) & 0xff;
+ TUint g = (pixelValue >> 8) & 0xff;
+ TUint b = pixelValue & 0xff;
+ RGB565Data[x + y * drawingSize.iWidth] =
+ (( r >> 3) << 11) +
+ (( g >> 2) << 5) +
+ (b >> 3);
+ bitmapUtil.IncXPos();
+ }
+ }
+
+ bitmapUtil.End();
+
+ CleanupStack::PopAndDestroy(); // bitmapUtil
+ CleanupStack::Pop(RGB565Data);
+ return RGB565Data;
+ }
+
+
+// -----------------------------------------------------------------------------
+// CTvStandbyFigure::GetFigureSize
+// -----------------------------------------------------------------------------
+//
+void CTvStandbyFigure::GetFigureSize( TSize& aSize )
+ {
+ aSize = iBitmap->SizeInPixels();
+ }
+
+// End of File