javauis/mmapi_qt/baseline/inc.nga/cmmasurfacewindow.h
branchRCL_3
changeset 18 9ac0a0a7da70
parent 17 0fd27995241b
child 19 71c436fe3ce0
--- a/javauis/mmapi_qt/baseline/inc.nga/cmmasurfacewindow.h	Tue May 11 16:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,364 +0,0 @@
-/*
-* Copyright (c) 2002-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:  This class implements MMMADisplayWindow functionality
-*               in graphics surface based displays for Helix engine.
-*
-*/
-
-#ifndef CMMASURFACEWINDOW_H
-#define CMMASURFACEWINDOW_H
-
-
-//  INCLUDES
-#include <w32std.h>
-//#include <reflcdui.h>
-#include <graphics/surface.h>
-#include <mmf/common/mmfvideosurfacecustomcommands.h>
-#include <mediaclientvideodisplay.h>
-
-#include <e32std.h>
-#include <mmf/common/mmfstandardcustomcommands.h>
-#include "mmmadisplaywindow.h"
-#include "mmafunctionserver.h"
-#include "cmmaplayer.h"
-#include "cmmacanvasdisplay.h"
-
-//  FORWARD DECLARATIONS
-class RWsSession;
-class CWsScreenDevice;
-class RWindowBase;
-class MMMADisplay;
-
-//  CONSTANTS
-const TInt KMMAVideoMinDimension = 32; // minimum video width and height
-
-//  CLASS DECLARATION
-/**
-* This class implements MMMADisplayWindow functionality
-* in video display to graphics surface based displays for Helix engine.
-*/
-NONSHARABLE_CLASS(CMMASurfaceWindow): public CBase,
-        public MMMADisplayWindow/*,
-        public MUiEventConsumer*/
-{
-public:
-    /**
-     * indicates what method needs to be called in UI thread context.
-     */
-    enum TUiCallbackType
-    {
-        ERemoveSurface = 1,
-        ESetDrawRect,
-        EInitVideoDisplay,
-        EResetSurfaceParameters,
-        ESetChangedSurfaceParameters,
-        ECleanVideoDisplay,
-        EDestroyWindow
-    };
-
-private:
-    /**
-     * indicates different video display initialization states
-     *
-     * video display state transition can happen in following order:
-     * 1. when MIDlet code is:
-     * Player player = Manager.createPlayer(..);
-     * player.realize();
-     * VideoControl vc = (VideoControl)player.getControl("VideoControl");
-     * vc.initDisplayMode(..);
-     * player.start();
-     *
-     * EUIResourcesAndSurfaceParametersNotSet
-     * EUIResourcesSetAndSurfaceParametersNotSet
-     * EUIResourcesAndSurfaceParametersSet
-     *
-     *          OR
-     *
-     * 2. when MIDlet code is:
-     * Player player = Manager.createPlayer(..);
-     * player.start();
-     * VideoControl vc = (VideoControl)player.getControl("VideoControl");
-     * vc.initDisplayMode(..);
-     *
-     * EUIResourcesAndSurfaceParametersNotSet
-     * ESurfaceParametersSetAndUIResourcesNotSet
-     * EUIResourcesAndSurfaceParametersSet
-     *
-     * InitVideoDisplayL() should be called only after EUIResourcesAndSurfaceParametersSet
-     * state is reached. ie both UI resources and surface parameters becomes available.
-     *
-     * 3. for below mentioned MIDlet code case:
-     * Player player = Manager.createPlayer(..);
-     * player.start(); // state transition is
-     *
-     * EUIResourcesAndSurfaceParametersNotSet
-     * ESurfaceParametersSetAndUIResourcesNotSet
-     * note that InitVideoDisplayL() is not called and video is not displayed in this case.
-     */
-    enum TVideoDisplayInitState
-    {
-        /**
-         * indicates ui resources and surface parameters are not yet set.
-         * UI resources are RWindowBase, CWsScreenDevice and RWsSession.
-         * Surface parameters are TSurfaceId, TRect and TVideoAspectRatio.
-         */
-        EUIResourcesAndSurfaceParametersNotSet = 1,
-        /**
-         * indicates UI resources are set and surface parameters not yet set.
-         * UI resources are set when initDisplayMode() is called and RWindow becomes available.
-         */
-        EUIResourcesSetAndSurfaceParametersNotSet,
-        /**
-         * indicates UI resources are not yet set and surface parameters are set.
-         * Surface parameters are set when player.start() is called.
-         */
-        ESurfaceParametersSetAndUIResourcesNotSet,
-        /**
-         * indicates UI resources and surface parameters are set.
-         */
-        EUIResourcesAndSurfaceParametersSet
-    };
-
-public:   // Constructors and destructors
-    static CMMASurfaceWindow* NewL(
-        MMAFunctionServer* aEventSource,
-        CMMAPlayer* aPlayer);
-
-    virtual ~CMMASurfaceWindow();
-
-private:  // Constructors and destructors
-    CMMASurfaceWindow(
-        MMAFunctionServer* aEventSource,
-        CMMAPlayer* aPlayer);
-
-public: // Methods derived from MMMADisplayWindow
-    void SetDestinationBitmapL(CFbsBitmap* aBitmap);
-    void DrawFrameL(const CFbsBitmap* aBitmap);
-    void SetDrawRect(const TRect& aRect);
-    void SetDrawRectThread(const TRect& aRect);
-    const TRect& DrawRect();
-    TSize WindowSize();
-    void SetPosition(const TPoint& aPosition);
-    void SetVisible(TBool aVisible, TBool aUseEventServer = ETrue);
-    void SetWindowRect(const TRect& aRect,MMMADisplay::TThreadType aThreadType);
-    void SetVideoCropRegion(const TRect& aRect);
-    void SetRWindowRect(const TRect& aRect, MMMADisplay::TThreadType aThreadType);
-    const TRect& WindowRect();
-    void ContainerDestroyed();
-    void ContainerSet();
-/*
-public: // from base class MUiEventConsumer
-    void MdcDSAResourcesCallback(RWsSession &aWs,
-                                 CWsScreenDevice &aScreenDevice,
-                                 RWindowBase &aWindow);
-								 
-*/								 
-    void UICallback(TInt aCallbackId);
- public: 
-    	 virtual void ProcureWindowResourcesFromQWidget(RWsSession * aWs,
-    																										CWsScreenDevice* aScreenDevice,
-  																													  RWindowBase* aWindow);	
-  																													  
-    virtual CMMAPlayer* UiPlayer();
-
-public: // New methods
-    TBool IsVisible() const;
-    void SetDisplay(MMMADisplay *aDisplay);
-
-    /**
-     * copies surface paramaters and intializes video display if
-     * RWindow is already set, ie if intDisplayMode already called in midlet.
-     * invokes InitVideoDisplayL() in UI thread context.
-     *
-     * @params aSurfaceId, aCropRect, aPixelAspectRatio surface paramaters.
-     */
-    void SetSurfaceParameters(const TSurfaceId& aSurfaceId,
-                              const TRect& aCropRect,
-                              const TVideoAspectRatio& aPixelAspectRatio);
-                              
-    /**
-     * invokes DoRemoveSurface() in UI thread context.
-     */
-    void RemoveSurface();
-
-    /**
-     * updates members variables with new surface parameters and invokes
-     * DoSetChangedSurfaceParameters() in UI thread context.
-     *
-     * @params aSurfaceId, aCropRect, aPixelAspectRatio surface paramaters.
-     */
-    void SetChangedSurfaceParameters(const TSurfaceId& aSurfaceId,
-                                     const TRect& aCropRect,
-                                     const TVideoAspectRatio& aPixelAspectRatio);
-
-private: // New methods
-    /**
-     * scales video to the required size.
-     * This method must always be executed in UI-Thread context.
-     *
-     * @param aRect rectangular size to which the video has to be scaled.
-     */
-    void ScaleVideoL(const TRect& aRect);
-
-    /**
-     * starts video rendering to a graphics surface.
-     * restarts video rendering to a graphics surafce with changed parameters.
-     * This method must always be executed in UI-Thread context.
-     */
-    void RedrawVideoL();
-
-    /**
-     * utility function to invoke RedrawVideoL() function with in a TRAP harness.
-     *
-     * @param aSurfaceWindow reference to CMMASurfaceWindow instance on which RedrawVideoL()
-     * has to be invoked
-     * @return TInt Symbian OS error code, KErrNone if no error
-     */
-    static TInt StaticRedrawVideo(CMMASurfaceWindow& aSurfaceWindow);
-
-    /**
-     * creates new instance of CMediaClientVideoDisplay and intializes it with
-     * surfaces and windows.
-     * This method must always be executed in UI-Thread context.
-     */
-    void InitVideoDisplayL();
-
-    /**
-     * updates CMediaClientVideoDisplay instance with new surface parameters.
-     * This method must always be executed in UI-Thread context.
-     */
-    void DoSetChangedSurfaceParameters();
-
-    /**
-     * resets CMediaClientVideoDisplay instance with new surface parameters.
-     * This method must always be executed in UI-Thread context.
-     */
-    void DoResetSurfaceParameters();
-    
-    /**
-     * Removes Surface from RWindow
-     * This method must always be executed in UI-Thread context.
-     */
-    void DoRemoveSurface();
-
-    /**
-     * removes surfaces and windows from CMediaClientVideoDisplay instance
-     * and deletes the instance.
-     * This method must always be executed in UI-Thread context.
-     */
-    void CleanVideoDisplay();
-
-    /**
-     * Deletes this object.
-     *
-     * @since  S60 v5.2
-     */
-    void Destroy();
-
-private:  // Data
-    /**
-     * drawing area where video is rendered.
-     */
-    TRect iContentRect;
-
-    /**
-         * parent rectangle used for positioning contentRect.
-         */
-    TRect iParentRect;
-
-    /**
-     * Symbian RWindow rect
-     */
-    TRect iRWindowRect;
-
-    /**
-     * not owned, used for switching from UI thread to MMA thread
-     */
-    MMAFunctionServer* iEventSource;
-
-    /**
-     * We must depend on player's state because direct screen access may
-     * not be resumed before player is started.
-     * not owned.
-     */
-    CMMAPlayer* iPlayer;
-
-    /**
-     * crop rectangle of video
-     */
-    TRect iVideoCropRegion;
-
-    /**
-     * owned, used for video display on surface
-     * this instance is created & accessed in UI thread only.
-     */
-    CMediaClientVideoDisplay* iMediaClientVideoDisplay;
-
-    /**
-         * Display instance used to invoke UI callbacks.
-         * Not owned.
-         */
-    MMMADisplay* iDisplay;
-
-    /**
-     * Window server session used by UI thread.
-     * Adjustable and usable from UI thread only.
-     * Not owned.
-     */
-    RWsSession* iWs;
-
-    /**
-     * Screen device used by UI thread.
-     * Adjustable and usable from UI thread only.
-     * Not owned.
-     */
-    CWsScreenDevice* iScreenDevice;
-
-    /**
-     * Window where video is displayed.
-     * Adjustable and usable from UI thread only.
-     * From UI thread.
-     * Not owned.
-     */
-    RWindowBase* iWindow;
-
-    /**
-     * The surface to be created for composition.
-     */
-    TSurfaceId iSurfaceId;
-
-    /**
-         * The dimensions of the crop rectangle, relative to the video image.
-         */
-    TRect iCropRect;
-
-    /**
-         * The pixel aspect ratio to display video picture.
-         */
-    TVideoAspectRatio iPixelAspectRatio;
-
-    /**
-     * indicates the video display initialization state.
-     *
-     */
-    TVideoDisplayInitState iVideoDisplayInitState;
-
-    /**
-     * Indicates if content need to be drawn.
-     */
-    TBool iVisible;
-
-};
-
-#endif // CMMASURFACEWINDOW_H