uiaccelerator_plat/alf_extended_visual_api/inc/alf/AlfTransEffectPlugin.h
changeset 0 15bf7259bb7c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/uiaccelerator_plat/alf_extended_visual_api/inc/alf/AlfTransEffectPlugin.h	Tue Feb 02 07:56:43 2010 +0200
@@ -0,0 +1,237 @@
+/*
+* 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:   Transition effect framework plugin interface
+*
+*/
+
+
+
+
+#ifndef M_ALFTRANSEFFECTPLUGIN_H
+#define M_ALFTRANSEFFECTPLUGIN_H
+
+#include <ecom/ecom.h>
+#include <implementationproxy.h>
+#include <avkondomainpskeys.h>
+#include <alf/AlfTransEffectPlugin.hrh>
+#include "alfuids.h"
+
+class CAlfSrvEffectEnv;
+
+// CONSTANTS
+
+// Common UID that identifies all effect plugins
+const TUid KAlfTransEffectPluginInterfaceUid = {KAlfTransEffectPluginInterfaceUidValue};
+
+const TUid KAlfGfxPluginInterfaceUId = {KAlfGfxPluginInterfaceUIdValue};
+
+// Common string that identifies all effect plugins
+_LIT8( KAlfTransEffectPluginTypeStringDesc, KAlfTransEffectPluginTypeString);
+
+// We define the PubSub keys here for testing purposes.
+// If the system works as intended, we need to create a separate file for the pubsub keys
+
+const TUid KPSAlfDomain = { KAlfAppServerInterfaceUid3 };
+
+/**
+ * Indicates the status of the transition
+ *
+ * 0 transition ongoing
+ * 1 transition finished - reserved windows can be released.
+ */
+const TUint32 KAlfTransitionStatus = 0x00000001; 
+
+
+/**
+ * This interface class is used for a callbacks from the effect plugins.
+ *
+ */
+class MAlfTransEffectObserver
+    {
+	public:
+    	virtual TInt AlfTransEffectCallback(TInt aEvent, TInt aState = 0, const TDesC8* aParams = NULL) = 0;
+	};
+	
+class MAlfGfxEffectPlugin
+    {
+    // Currently this class only contains the enumeration of the operations that are supported
+    // No actual interface at the moment.
+    // All commands are routed via HandleMessageL function
+    public:
+    
+// New enums are added when needed, this is just a list of those that
+// are currently rerouted in new gfxtransenginetfx
+
+// In order to route also the registration commands from tfxsrvplugin that Akn skin server
+// starts, more operations are added.
+
+// The whole message structure is a memory stream to handle varying parameters
+// The operation code defines what parameters will be present.
+
+// It is also possible to get back data, the return data must be a memory stream
+// that has length and some type indicator in the beginning.
+// Different operations may return different kind of data.
+// For example EBeginFullScreen will return error code KErrAbort if full screen effects are disabled.
+
+        enum TOp
+	        {
+	        ENoOp,
+	        // full screen effect operations
+	        EBeginFullscreen,
+	        EEndFullscreen,
+	        EAbortFullscreen,
+	        // control effects
+	        EBeginComponentTransition,
+	        EAbortComponentTransition,
+	        // full screen transition server operations
+	        ERegisterFullScreenEffectFile,
+	        EUnregisterFullScreenEffectFile,
+	        EBlockFullScreenUid,
+	        EUnregisterAllEffects,
+	        // operations coming via CAlfTransitionServerClient
+	        ETfxServerOpAddFullscreenKML,
+	        ETfxServerOpRemoveFullscreenKML,
+	        ETfxServerOpListBoxRegisterKML,
+	        ETfxServerOpListBoxUnregisterKML,
+	        ETfxServerOpListBoxSetFrameTime,
+	        ETfxServerOpListBoxSetMinFrameTime,
+	        ETfxServerOpControlSetFrameTime,
+	        ETfxServerOpControlSetMinFrameTime,
+	        ETfxServerOpBlockFullscreenUid,
+	        ETfxServerOpControlPolicyUpdate,
+	        ETfxServerOpControlPolicyRemove,
+	        ETfxServerOpRegisterControlKml,
+	        ETfxServerOpRegisterControlKmlEx,
+	        ETfxServerOpRemoveAllKml,
+	        ETfxServerOpRemoveControlKml,
+	        ETfxServerOpBeginGroup,
+	        ETfxServerOpEndGroup,
+	        ETfxServerOpSetWantedTime,
+	        ETfxServerOpSetMinTime,
+	        ETfxServerOpAddFullscreenKMLEx,
+	        ETfxServerVerifyConnection,
+	        ETfxServerOpFreeRam,
+	        ETfxServerOpMemoryGood,
+	        // policy update requests
+	        ETfxServerOpControlPolicyRequest,
+	        ETfxServerOpControlPolicyGet,
+	        ETfxServerOpControlCancelPolicyUpdate
+	        };
+     
+    };
+
+/**
+ * This interface class is implmented by plugins for Alf transition effect framework 
+ */
+class MAlfTransEffectPlugin
+	{
+	public:
+
+    	/**
+     	 * Default phase numbers for the effects
+     	 */
+		enum TPhase
+			{
+			EPhaseNone,
+			EFirstPhase,
+			ESecondPhase,
+			};
+
+	    /**
+	     * System effect contexts 
+	     */
+		enum TContext
+			{
+			EContextNone,
+			EContextFocusGained,
+			EContextFocusLost,
+			EContextStart,
+			EContextExit,
+			EContextEmbeddedStart,
+			EContextEmbeddedExit
+			};
+			
+        /**
+         * Types of data that may be returned by CAlfGfxEffects::HandleMessageL
+         * The caller 
+         */		
+	    enum TReturnParameterTypes
+	        {
+	        };
+    
+	public:
+	
+    	/**
+         * Creates the plugin implementation.
+     	 *
+     	 * @param aImplementationUid UID of the effect plugin implementation.
+     	 * @return Plugin implementation.
+     	 */
+ 		static MAlfTransEffectPlugin* NewExtensionL( TUid aImplementationUid );
+
+        /**
+        * Virtual destructor. 
+        * @since 2.8
+        */
+		virtual ~MAlfTransEffectPlugin() { REComSession::DestroyedImplementation (iDtor_ID_Key); };
+		
+    	/**
+         * Get all effect IDs that are supported.
+     	 *
+     	 * @param aSupportedEffectIds Array of supported effect IDs.
+     	 * @return System error code.
+     	 */
+    	virtual TInt GetSupportedEffects( RArray<TInt>& aSupportedEffectIds ) = 0;
+    
+    	/**
+         * Starts a new phase in the effect.
+     	 *
+     	 * @param aPhaseId Phase that is started.
+      	 * @param aEffectId Effect ID.
+     	 * @param aEffectEnv Effect environment for this session.
+     	 * @param aParams Other parameters.
+     	 * @return System error code.
+     	 */
+    	virtual TInt StartPhase( TInt aPhaseId, TInt aEffectId, CAlfSrvEffectEnv& aEffectEnv, const TDesC8* aParams = NULL ) = 0;
+    
+    	/**
+     	 * Not yet implemented
+     	 */
+    	virtual TInt Abort() = 0;
+    
+
+    	/**
+     	 * Not yet implemented
+     	 */
+    	virtual TInt AddEventObserver( MAlfTransEffectObserver* aObserver, TInt aEvents, const TDesC8* aParams = NULL ) = 0;
+    
+    	/**
+     	 * Not yet implemented
+     	 */
+   		virtual TInt RemoveEventObserver( MAlfTransEffectObserver* aObserver, TInt aEvents ) = 0;
+    
+    	/**
+     	 * Not yet implemented
+     	 */
+   		virtual TInt GetEventState( TInt aEvent, TInt* aState, TDes8* aParams = NULL ) = 0;
+    
+
+	public:
+
+		// The ID used by ECom for destroying this dll
+		TUid	iDtor_ID_Key;
+	};
+
+
+#endif // M_ALFTRANSEFFECTPLUGIN_H