uiaccelerator_plat/alf_visual_api/inc/alf/alfscreenbuffer.h
changeset 0 15bf7259bb7c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/uiaccelerator_plat/alf_visual_api/inc/alf/alfscreenbuffer.h	Tue Feb 02 07:56:43 2010 +0200
@@ -0,0 +1,224 @@
+/*
+* 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:   Screen buffer class
+*
+*/
+
+
+
+#ifndef C_ALFSCREENBUFFER_H
+#define C_ALFSCREENBUFFER_H
+
+#include <e32base.h>
+
+class CAlfEnv;
+
+/**
+ * @deprecated 
+ *  Observer class for screen buffer.
+ */
+class MAlfScreenBufferObserver
+    {
+    /**
+     * Screen buffer Events.
+     */
+public:     
+        enum TAlfScreenBufferEvent
+            {
+            ENone,
+            ECreated,  			// Buffer created 
+            EDeleted, 			// Buffer deleted
+            ERestored, 			// Not yet implemented
+            EReleased, 			// Not yet implemented
+            EBufferDrawComplete // Buffer has been drawn to window
+            };
+    
+    /**
+     * Alf calls this when all the content have been draw to the back buffer.
+     * If EFalse is returned, the buffer is locked until the observer calls RequestNextBuffer().
+     * If ETrue is returned, the RequestNextBuffer() is called automatically, immediately after this method returns.
+     *
+     * @param aBufferUid Unique id of the buffer.
+     * @param aDisplayRect Screen buffer rect.
+     * @param aDirtyRect Dirty rect for the buffer.
+     * @return Return True, if buffer can be freed automatically after this call.
+     */
+    virtual TBool BufferComplete(TUid aBufferUid, TRect& aDisplayRect, TRect& aDirtyRect) = 0;
+    
+    /**
+     * Alf calls this when e.g. the back buffer is created or deleted.
+     *
+     * @param aId The unique id of the buffer.
+     * @param aEvent @see MAlfScreenBufferObserver::TAlfScreenBufferEvent
+     */
+    virtual void HandleScreenBufferEvent(TUid aBufferUid, TInt aEvent) = 0;
+    };
+
+
+/**
+ * This interface is to be used when drawing the buffer to the window etc.      
+ */
+class MAlfBufferDrawer
+    {
+public:
+    /**
+     * Clean all resources (usually delete this).
+     */
+    virtual void ReleaseDrawer() = 0;    
+    };
+
+/**
+ * @deprecated 
+ * This interface is to be used when modifying the buffer (sent back to server).      
+ * Could be attached to special content visual.
+ */
+class MAlfBufferGc
+    {
+    public:
+    /**
+     * Clean all resources (usually delete this).
+     */
+    virtual void ReleaseGc() = 0;
+    };
+
+
+/**
+ * @deprecated 
+ * The class for managing screen buffers.
+ *
+ * Usage:
+ * @code
+ * 
+ * //Create screen buffer and observer
+ * CAlfScreenBuffer* screenBuffer = CAlfScreenBuffer::NewL( *iEnv );
+ * CallbackObserver* observer = new (ELeave) CallbackObserver();
+ * 
+ * // Add observer
+ * screenBuffer->AddObserverL( testScreenBufferUid, observer );
+ * MAlfBufferDrawer* drawer = screenBuffer->GetDrawingInterface( SYMBIAN_BUFFER_DRAWER_UID, 
+ * 																	testScreenBufferUid );
+ * 
+ * //Request for next sceenbuffer
+ * screenBuffer->RequestNextBuffer( testScreenBufferUid );
+ * 
+ * drawer->ReleaseDrawer();
+ * drawer = NULL; 
+ * 
+ * //Remove observer
+ * 	screenBuffer->RemoveObserver( testScreenBufferUid );
+ * 
+ * //Clean up
+ *  delete screenBuffer;
+ *  delete observer;
+ * 
+ * @endcode
+ */
+NONSHARABLE_CLASS(CAlfScreenBuffer): public CBase
+    {
+public:
+	enum TAlfScreenBufferFlags 
+		{
+		EFlagNone = 0,
+		EFlagDisableDrawToWindow = 1 // Do not automatically draw buffer content to the window
+		};
+
+    /**
+     * Constructor.
+     *
+     * @param aEnv Alf environment.
+     */
+    IMPORT_C static CAlfScreenBuffer* NewL(CAlfEnv& aEnv);
+    
+    /**
+     * Constructor.
+     * 
+     * Creates own Alf environment
+     */
+    IMPORT_C static CAlfScreenBuffer* NewL();
+    
+    /**
+     * Destructor.
+     *
+     * If Alf environment is owned, it is deleted.
+     */
+    IMPORT_C virtual ~CAlfScreenBuffer();
+    
+    /**
+     * Returns an instance of an interface for drawing the buffer e.g. to a window. 
+     *
+     * @param aInterfaceUid Unique id of the interface.
+     * @param aBufferUid Unique id of the buffer.
+     */
+    IMPORT_C MAlfBufferDrawer* GetDrawingInterface(TUid aInterfaceUid, TUid aBufferUid);
+    
+    /**
+     * Returns an instance of an interface for drawing to the buffer. 
+     *
+     * @param aInterfaceUid Unique id of the interface.
+     * @param aBufferUid Unique id of the buffer.
+     */
+    IMPORT_C MAlfBufferGc* GetGraphicsContext(TUid aInterfaceUid, TUid aBufferUid);  
+    
+    /**
+     * Request next buffer from the server. Unlocks buffer for drawing.
+     *
+     * @param aBufferUid Unique id of the buffer.
+     */
+    IMPORT_C void RequestNextBuffer(TUid aBufferUid);  
+    
+    /**
+     * Request the server to draw the screen buffer to the window.
+     *
+     * @param aBufferUid Unique id of the buffer.
+     */
+    IMPORT_C void RequestBufferDraw(TUid aBufferUid);  
+    
+    /**
+     * Add an observer for a buffer.
+     *
+     * @param aBufferUid Unique id of the buffer.
+     * @param aObserver Pointer to the observer.
+     * @param aPriority Not yet implemented.
+     */
+    IMPORT_C void AddObserverL(TUid aBufferUid, MAlfScreenBufferObserver* aObserver, TInt aPriority = 0  );  
+    
+    /**
+     * Add an observer for a buffer.
+     *
+     * @param aBufferUid Unique id of the buffer.
+     * @param aFlags Screen buffer flags.
+     * @param aObserver Pointer to the observer.
+     * @param aPriority Not yet implemented.
+     */
+    IMPORT_C void AddObserverL(TUid aBufferUid, TUint aFlags, MAlfScreenBufferObserver* aObserver, TInt aPriority = 0  );  
+    
+    /**
+     * Remove observer from the buffer.
+     *
+     * @param aBufferUid Unique id of the buffer.
+     */
+    IMPORT_C void RemoveObserver(TUid aBufferId);  
+
+private: 
+    	CAlfScreenBuffer();
+    	CAlfScreenBuffer(CAlfEnv& aEnv);
+		void ConstructL(CAlfEnv* aEnv, TBool aIsAlfEnvOwned);
+		void ConstructL();
+		
+private:    
+        class CPrivateData;
+        CPrivateData* iData; 
+    };
+
+#endif // C_ALFSCREENBUFFER_H
\ No newline at end of file