mobilemessaging/smilui/mediainc/SmilMediaRendererBase.h
changeset 0 72b543305e3a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mobilemessaging/smilui/mediainc/SmilMediaRendererBase.h	Thu Dec 17 08:44:11 2009 +0200
@@ -0,0 +1,363 @@
+/*
+* Copyright (c) 2002-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:  
+*       Base class for SMIL Player media renderers
+*
+*/
+
+
+
+
+#ifndef CSMILMEDIARENDERERBASE_H
+#define CSMILMEDIARENDERERBASE_H
+
+#include <coecntrl.h>
+#include <smilmediarendererinterface.h>
+#include <caf/caftypes.h>
+#include <DRMCommon.h>
+
+#include <MsgMedia.hrh>
+
+// CONSTANTS
+const TInt KFocusSize = 2;
+const TInt KScrollBarSize = 5;
+const TInt KScrollElevatorSize = 3;
+
+// MACROS
+
+// FORWARD DECLARATIONS
+class DRMCommon;
+class CDRMHelper;
+class MSmilMedia;
+
+/**
+* Base class for SMIL Player media renderers
+*
+* @lib smilmediarenderer.lib
+* @since 2.0
+*/
+NONSHARABLE_CLASS(CSmilMediaRendererBase) : public CCoeControl,
+                                            public MSmilMediaRenderer
+    {
+    public:
+
+        /**
+        * Destructor.
+        *
+        * @since 2.0
+        */
+        virtual ~CSmilMediaRendererBase();
+
+    public: // New functions
+
+        /**
+        * Return renderer type.
+        *
+        * @since 2.0
+        *
+        * @return Media type of the class. 
+        */
+        IMPORT_C TMsgMediaType MediaType() const;
+        
+        /**
+        * Called by the UI to activate renderer.
+        *
+        * @since 3.0
+        *
+        * @return void
+		*/
+        IMPORT_C virtual void ActivateRendererL();
+    
+    public: // Methods from base classes
+    
+        /**
+        * From MSmilMediaRenderer Called by the SMIL engine to signal
+        * that the engine is no more referencing renderer. Default
+        * implementation deletes the renderer.
+        *
+        * @since 2.0
+        *
+        * @return void
+        */
+        void Close();
+
+        /**
+        * From MSmilMediaRenderer Returns if renderer is visual 
+        * (i.e. draws something to the screen).
+        *
+        * @since 2.0
+        * 
+        * @return Default implementation returns EFalse.
+        */
+        TBool IsVisual() const;
+
+        /**
+        * From MSmilMediaRenderer Returns if renderer is non-transparent
+        * (i.e. fills all the pixels on specied region).
+        *
+        * @since 2.0
+        *
+        * @return Default implementation returns EFalse.
+        */
+        TBool IsOpaque() const;
+
+        /**
+        * From MSmilMediaRenderer Returns if renderer is scrollable.
+        *
+        * @since 2.0
+        *
+        * @return Default implementation returns EFalse.
+        */
+        TBool IsScrollable() const;
+
+        /**
+        * From MSmilMediaRenderer Returns if renderer is Symbian control.
+        *
+        * @since 2.0
+        *
+        * @return Default implementation returns ETrue since all the 
+        * renderers are implemented as controls.
+        */
+        TBool IsControl() const;
+
+        /**
+        * From MSmilMediaRenderer Returns the unscalable size of the
+        * visual media object.
+        *
+        * @since 2.0
+        * 
+        * @return Default implementation returns zero.
+        */
+        TInt IntrinsicWidth() const;
+
+        /**
+        * From MSmilMediaRenderer Returns the unscalable size of the
+        * visual media object.
+        *
+        * @since 2.0
+        * 
+        * @return Default implementation returns zero.
+        */
+        TInt IntrinsicHeight() const;
+
+        /**
+        * From MSmilMediaRenderer Returns the duration of the media object.
+        *
+        * @since 2.0
+        *
+        * @return Default implementation returns zero.
+        */
+        TSmilTime IntrinsicDuration() const;
+
+        /**
+        * From MSmilMediaRenderer Called by the engine to make a media
+        * renderer draw its content. Default implementation is empty.
+        *
+        * @since 2.0
+        *
+        * @param aGc    IN      Graphical context performing the drawing.
+        * @param aRect  IN      Target rectangle.
+        * @param aTransitionFilter IN Transition effects if present.
+        * @param aFocus IN      Focus indication if focussed.
+        *
+        * @return void
+        */
+        void Draw( CGraphicsContext& aGc,
+                   const TRect& aRect,
+                   CSmilTransitionFilter* aTransitionFilter,
+                   const MSmilFocus* aFocus );
+
+        /**
+        * From MSmilMediaRenderer Move scrollable media to given position.
+        * Default implementation is empty.
+        *
+        * @since 2.0
+        *
+        * @param aDirX  IN  Amount of pixels to move on X direction.
+        * @param aDirY  IN  Amount of pixels to move on Y direction.
+        *
+        * @return void
+        */
+        void Scroll( TInt aDirX, TInt aDirY );
+
+        /**
+        * From MSmilMediaRenderer Set volume of the audio media.
+        * Default implmenetation is empty.
+        *
+        * @since 2.0
+        *
+        * @param aVolume    IN  A percentage value from maximum value that
+        *                       the volume should be set.
+        * @return void
+        */
+        void SetVolume( TInt aVolume );
+    
+        /**
+        * From CCoeControl. Handles key events.
+        *
+        * @param aKeyEvent  IN The key event.
+        * @param aType      IN The type of key event
+        *
+        * @return Indicates whether or not the key event was used by this control.
+        */
+        TKeyResponse OfferKeyEventL( const TKeyEvent& aKeyEvent,
+                                     TEventCode aType );
+        
+    protected:
+        
+        /**
+        * C++ default contsructor.
+        */
+        CSmilMediaRendererBase();
+        
+        /**
+        * Constructor.
+        *
+        * @param aMediaType  IN     Renderer's media type.
+        * @param aMedia      IN     SMIL media object.
+        * @param aDrmCommon  IN     DRM Common
+        * @param aDrmHelper  IN     DRM Helper
+        *
+        * @since 2.0
+        */
+        CSmilMediaRendererBase( TMsgMediaType aMediaType,
+                                MSmilMedia* aMedia, 
+                                DRMCommon& aDrmCommon, 
+                                CDRMHelper& aDrmHelper );
+        
+        /**
+        * Symbian 2nd phase base class constructor.
+        *
+        * @param aFileHandle IN  Source file handle.
+        *
+        * @return void
+        */
+        void BaseConstructL( RFile& aFileHandle );
+
+        /**
+        * Common focus drawing function for all renderers.
+        *
+        * @param aGc    IN  Reference to graphics context
+        * @param aFocus IN  Pointer to focus object
+        *
+        * @return void
+        */
+        void DrawFocus( CGraphicsContext& aGc,
+                        const MSmilFocus* aFocus ) const;
+
+        /**
+        * Common scroll bar drawing function for all renderers
+        * Draws scroll bar(s) only if necessary.
+        *
+        * @param aGc         IN  Reference to graphics context
+        * @param aRegionRect IN  Rect of the region
+        * @param aMedaRect   IN  Rect of the full media bitmap
+        *
+        * @return void
+        */
+        void DrawScrollBars( CGraphicsContext& aGc,
+                             const TRect& aRegionRect,
+                             const TRect& aMediaRect ) const;
+        
+        /**
+        * Starts CActiveSchedulerWait
+        *
+        * @return void
+        */
+        void BeginActiveWait();
+        
+        /**
+        * Stops CActiveSchedulerWait
+        *
+        * @return void
+        */
+        void EndActiveWait();
+        
+        /**
+        * Returns correct access intent for the specified media type.
+        *
+        * @return ContentAccess::EPlay,
+        *         ContentAccess::EView, 
+        *         ContentAccess::EExecute, 
+        *         ContentAccess::EPrint or
+        *         ContentAccess::EInstall 
+        */
+        ContentAccess::TIntent Intent() const;
+        
+        /**
+        * Consumes DRM rights from media object if it is DRM protected.
+        *
+        * @return EOk if rights were consumed ok. Otherwise error value.
+        *         For error values see DRMCommon.h.
+        */
+        TInt ConsumeDRMRightsL();
+        
+        /**
+        * Checks DRM rights from media object if it is DRM protected.
+        *
+        * @return EOk if rights were checked ok. Otherwise error value.
+        *         For error values see DRMCommon.h.
+        */
+        TInt CheckDRMRights();
+        
+        /**
+        * Retrieves correct icon size from LAF. 
+        */
+        TSize RetrieveIconSize() const;
+        
+        /**
+        * Returns if sending DRM file is allowed
+        *
+        * @since 3.0
+        *
+        * @param aFileHandle     IN  Handle to file that preview is wanted.
+        * 
+        * @return ETrue if sending is allowed. Otherwise EFalse.
+        */
+        TBool SendingDrmFileAllowedL( RFile& aFileHandle );
+
+    protected: //data
+        
+        /** Wait loop for active wait. */
+        CActiveSchedulerWait iWait;
+
+        /** Renderer type. */
+        TMsgMediaType iMediaType;
+
+        /** DRM common. */
+        DRMCommon& iDrmCommon;
+        
+        /** DRM Helper. */
+        CDRMHelper& iDrmHelper;
+        
+        /** DRM file URI. */
+        HBufC8* iDrmUri;
+        
+        /** Specifies if DRM right has been consumed. */
+        TBool iDrmRightConsumed;
+        
+        /** Specifies what drm protectoin is used on media object. */
+        DRMCommon::TContentProtection iDrmProtection;
+        
+        // Event array to store key events.
+        CArrayFixFlat<TKeyEvent>* iEventArray;
+        
+        // SMIL media object.
+        MSmilMedia* iMedia;
+        
+        // Focus rectangle.
+        TRect iFocusRect;
+    };
+
+#endif // CSMILMEDIARENDERERBASE_H