msg_plat/smil_engine_api/inc/smilplayerinterface.h
author Stefan Karlsson <stefan.karlsson@nokia.com>
Sun, 28 Mar 2010 16:36:08 +0100
branchCompilerCompatibility
changeset 19 022fc9a9f172
parent 0 72b543305e3a
permissions -rw-r--r--
Fixed "extra qualification" syntax errors.

/*
* Copyright (c) 2003 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: smilplayerinterface  declaration
*
*/



#ifndef SMILPLAYERINTERFACE
#define SMILPLAYERINTERFACE

#include <e32std.h>
#include <gdi.h>

#include <smiltime.h>
#include <smilanchor.h>

#include <smilmediafactoryinterface.h>

class CCoeControl;
class CSmilPresentation;
class MSmilTransitionFactory;

/**
 * Callback interface between SMIL engine and player application.
 */
class MSmilPlayer
	{
	public:
		/**	
		* Return the media factory object that is responsible of 
		* creating the media renderers
		*/
		virtual MSmilMediaFactory* GetMediaFactory(const CSmilPresentation* aPres) const = 0;

		/**	
		* Return the transition factory object that is responsible of 
		* creating the transition renderers
		*/
		virtual MSmilTransitionFactory* GetTransitionFactory(const CSmilPresentation* aPres) const = 0;

		/**	
		* Evaluate a content control attribute for true or false. 
		* Attributes 
		*		systemOperatingSystem
		*		systemCPU
		*		systemScreenSize 
		*		systemScreenDepth 
		* are handled inside the SMIL engine, the rest are passed to this method.
		*/
		virtual TBool EvaluateContentControlAttribute(const TDesC& aName, const TDesC& aValue) = 0;

		/**	
		* Return the dimensions of the drawing surface
		*/
		virtual TRect GetDimensions(const CSmilPresentation* aPres)	= 0;

		/**	
		* Return the EIKON GUI control that is used as the view for the given 
		* presentation.
		*
		* SMIL Engine never calls this method. It might be used by 
		* implementations of MSmilMediaRenderer interface.
		*/
		virtual CCoeControl* GetControl(const CSmilPresentation* aPres) = 0;

		/**	
		* The engine calls this method to initiate redrawing of the given area. 
		* Implementation of this method should in turn call Draw method of the 
		* given presentation object.
		*/
		virtual void Redraw(TRect aArea, CSmilPresentation* aPres) = 0;

		/**	
		* This method is called by the engine as a result of hyperlink activation.
		* Player should open the given (relative to the presentation base) url. 
		* However, the current presentation MUST NOT be deleted during execution 
		* of this method, as this method is invoked by the current presentation,
		* 
		* aAnchor - contains addition information about the link. can be 0.
		*
		* source/destination states: 
		* EPlay - (continue) play the presentation
		* EStop - stop the source presentation or open destination presentation in stopped state
		* EPause - pause the source presentation, continue it after, destination finishes
		*
		* 3GPP profile does not require respecting these states, aAnchor may be ignored
		*/
		
		virtual void OpenDocumentL(const TDesC& aUrl, const CSmilAnchor* aAnchor, const CSmilPresentation* aPres) = 0;

		enum TEventType
			{
			EStarted,
			EStopped,
			EPaused,
			EResumed,
			ESeeked,
			EStalled,
			EMediaNotFound,
			EEndReached,
			ELastSlideReached
			};

		/**	
		* Invoked when a presentation state changes. aEvent is 
		* EStarted - presentation started playing,
		* EStopped - presentation was stopped,
		* EPaused - presentation was paused
		* EResumed - paused presentation was resumed
		* ESeeked - presentation was seeked to a new position on timeline
		* EMediaNotFound - opening media failed, aText contains the media url
		* or
		* EEndReached - presentation has reached its end time. whether it is paused or stopped depends
		* on EndAction setting.
		* one of the negative system wide error codes (from a trapped leave inside engine RunL() method). 
		* In this case the playing presentation is stopped automatically and the presentation can not
		* be restarted.
		*/

		virtual void PresentationEvent(TInt aEvent, const CSmilPresentation* aPres, const TDesC& aText = TPtrC()) = 0;


	};
#include <smiltransitionfactoryinterface.h>

#endif