--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/uiacceltk/hitchcock/Client/src/alfm3gmesh.cpp Wed Nov 03 19:29:22 2010 +0200
@@ -0,0 +1,127 @@
+/*
+* Copyright (c) 2007 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: M3G 3D Mesh
+*
+*/
+
+
+
+#include "alf/alfm3gmesh.h"
+#include "alf/alfenv.h"
+#include "alf/alfgencomponent.h"
+#include "alf/alfconstants.h"
+#include "alflogger.h"
+
+struct CAlfM3GMesh::TM3GMeshPrivateData
+ {
+ CAlfEnv* iEnv; // Not owned
+ CAlfGenComponent* iComms; // Not owned
+ };
+
+// ======== MEMBER FUNCTIONS ========
+
+// ---------------------------------------------------------------------------
+// Exposed constructor
+// ---------------------------------------------------------------------------
+//
+CAlfM3GMesh* CAlfM3GMesh::NewL( CAlfGenComponent& aComms, CAlfEnv& aEnv )
+ {
+ CAlfM3GMesh* self = new( ELeave ) CAlfM3GMesh;
+ CleanupStack::PushL( self );
+ self->ConstructL( aComms, aEnv );
+ CleanupStack::Pop( self );
+ return self;
+ }
+
+// ---------------------------------------------------------------------------
+// First phase constructor
+// ---------------------------------------------------------------------------
+//
+CAlfM3GMesh::CAlfM3GMesh()
+ {
+ }
+
+// ---------------------------------------------------------------------------
+// Second phase constructor
+// ---------------------------------------------------------------------------
+//
+void CAlfM3GMesh::ConstructL( CAlfGenComponent& aComms, CAlfEnv& aEnv )
+ {
+ // Construct the base class
+ CAlfMesh::ConstructL(aComms, EAlfMeshTypeM3G);
+
+ // Create object data.
+ iData = new (ELeave) TM3GMeshPrivateData;
+
+ // Zero all object data
+ iData->iEnv = NULL;
+ iData->iComms = NULL;
+
+ // Fill data
+ iData->iEnv = &aEnv;
+ iData->iComms = &aComms;
+
+ // Create input and output buffers for inter-process communication
+ TBuf8<1> outDummy;
+ TInt param = EAlfMeshTypeM3G;
+ TPckgC<TInt> buf(param);
+
+ // Call a synchronous command to create an associated server-side M3G mesh.
+ TInt err = iData->iComms->DoSynchronousCmd(EAlfMeshVisualCreateMesh, buf, outDummy);
+ if (err)
+ {
+ __ALFLOGSTRING1( "CAlfM3GMesh::ConstructL leave error %d", err )
+ User::Leave( err );
+ }
+ }
+
+// ---------------------------------------------------------------------------
+// Destructor
+// ---------------------------------------------------------------------------
+//
+CAlfM3GMesh::~CAlfM3GMesh()
+ {
+ delete iData;
+ iData = NULL;
+ }
+
+
+// ---------------------------------------------------------------------------
+// Loads a new M3G Mesh scene into this M3G mesh
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CAlfM3GMesh::LoadSceneL(const TDesC& aFileName)
+ {
+ ASSERT(iData != NULL);
+
+ TFileName filename = aFileName;
+
+ // Prepend the image file path to the filename.
+ iData->iEnv->TextureManager().PrependImagePath(filename);
+
+ // Create input and output buffers for inter-process communication
+ TBuf8<1> outDummy;
+ TAlfMeshLoadM3GSceneParams params;
+ params.iFilename = filename;
+
+ TPckg<TAlfMeshLoadM3GSceneParams> paramsPckg(params);
+
+ // Call a synchronous command to load the M3G scene graph
+ TInt err = iData->iComms->DoSynchronousCmd(EAlfMeshLoadM3GScene, paramsPckg, outDummy);
+ if (err)
+ {
+ __ALFLOGSTRING1( "CAlfM3GMesh::LoadSceneL leave error %d", err )
+ User::Leave( err );
+ }
+ }