openvg/openvgrefimplementation/sfopenvg/test/src/tigerContainer.cpp
changeset 43 7579f232bae7
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/openvg/openvgrefimplementation/sfopenvg/test/src/tigerContainer.cpp	Fri Apr 30 17:15:32 2010 +0100
@@ -0,0 +1,161 @@
+/*
+* Copyright (c) 2009 Symbian Foundation Ltd
+* This component and the accompanying materials are made available
+* under the terms of the License "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:
+* Symbian Foundation Ltd - initial contribution.
+* 
+* Contributors:
+*
+* Description:
+* Implementation of CTigerContainer class
+*/
+
+
+// INCLUDE FILES
+#include "TigerContainer.h"
+
+// ================= MEMBER FUNCTIONS =======================
+
+// ---------------------------------------------------------
+// CTigerContainer::ConstructL(const TRect& aRect)
+// EPOC two phased constructor
+// ---------------------------------------------------------
+//
+void CTigerContainer::ConstructL(const TRect& /*aRect*/)
+    {
+//    iOpenGlInitialized = EFalse;
+    CreateWindowL();
+
+    SetExtentToWholeScreen();                // Take the whole screen into use
+    ActivateL();
+            
+    TSize size;
+    size = this->Size();
+
+    iTiger = CTiger::NewL(size.iWidth, size.iHeight ); // Create an instance of Tiger
+    
+    iTiger->AppInit(Window());
+    
+    return;
+    }
+
+// Destructor
+CTigerContainer::~CTigerContainer()
+    {
+    /* AppExit call is made to release
+       any allocations made in AppInit. */
+    if ( iTiger )
+        {
+        iTiger->AppExit();
+        delete iTiger;
+        }
+    }
+
+// ---------------------------------------------------------
+// CTigerContainer::SizeChanged()
+// Called by framework when the view size is changed
+// ---------------------------------------------------------
+//
+void CTigerContainer::SizeChanged()
+    {
+    if( iTiger )
+        {
+        TSize size;
+        size = this->Size();
+        iTiger->SetScreenSize( size.iWidth, size.iHeight );
+        }
+    }
+
+
+// ---------------------------------------------------------
+// CTigerContainer::HandleResourceChange(
+//     TInt aType)
+// Dynamic screen resize changes by calling the
+// SetExtentToWholeScreen() method again.
+// ---------------------------------------------------------
+//
+ void CTigerContainer::HandleResourceChange(TInt aType)
+    {
+	switch( aType )
+    	{
+	    case KEikDynamicLayoutVariantSwitch:
+		    SetExtentToWholeScreen();
+		    break;
+	    }
+    }
+
+// ---------------------------------------------------------
+// CTigerContainer::CountComponentControls() const
+// ---------------------------------------------------------
+//
+TInt CTigerContainer::CountComponentControls() const
+    {
+    return 0;
+    }
+
+// ---------------------------------------------------------
+// CTigerContainer::ComponentControl(TInt aIndex) const
+// ---------------------------------------------------------
+//
+CCoeControl* CTigerContainer::ComponentControl(TInt /*aIndex*/ ) const
+    {
+    return NULL;
+    }
+
+// ---------------------------------------------------------
+// CTigerContainer::Draw(const TRect& aRect) const
+// ---------------------------------------------------------
+//
+void CTigerContainer::Draw(const TRect& aRect ) const
+    {
+    
+    CWindowGc& gc = SystemGc();
+    TRgb color(KRgbRed);
+    gc.SetBrushColor(color);
+	gc.SetPenStyle(CGraphicsContext::ENullPen);
+	gc.SetBrushStyle(CGraphicsContext::ESolidBrush);
+	gc.DrawRect(Rect());
+	
+	//set up destination CFbsBitmap object
+	CFbsBitmap* bitmap=NULL;
+	TRAPD(err, bitmap = new(ELeave)CFbsBitmap;);
+	if(bitmap)
+		{
+		const TDisplayMode dispMode = Window().DisplayMode();
+			//copy from source (EGL) to target(CFbsBitmap) buffer
+		iTiger->AppRender(aRect, bitmap);		
+		RenderBitmap(gc, bitmap);
+		delete bitmap;
+		}
+	}
+
+void  CTigerContainer::RenderBitmap(CWindowGc& aGc, CFbsBitmap* aBitmap) const
+	{
+	//draw bitmap
+	// calculate position for top left of bitmap so it is centered
+	TSize bmpSizeInPixels=aBitmap->SizeInPixels();
+	TRect rect=Rect(); // a centered rectangle of the default size
+	TInt xDelta=(rect.Width()-bmpSizeInPixels.iWidth)/2;
+	TInt yDelta=(rect.Height()-bmpSizeInPixels.iHeight)/2;
+	TPoint pos=TPoint(xDelta,yDelta); // displacement vector
+	pos+=rect.iTl; // bitmap top left corner position
+	aGc.BitBlt(pos, aBitmap); // CWindowGc member function	
+	}
+
+
+
+// ---------------------------------------------------------
+// CTigerContainer::HandleControlEventL(
+//     CCoeControl* aControl,TCoeEvent aEventType)
+// ---------------------------------------------------------
+//
+void CTigerContainer::HandleControlEventL(
+    CCoeControl* /*aControl*/,TCoeEvent /*aEventType*/)
+    {
+    }
+
+// End of File