msg_plat/smil_engine_api/inc/smilregioninterface.h
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Wed, 31 Mar 2010 21:25:02 +0300
branchRCL_3
changeset 21 c6838af47512
parent 0 72b543305e3a
permissions -rw-r--r--
Revision: 201011 Kit: 201013

/*
* 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: smilregioninterface  declaration
*
*/



#ifndef SMILREGIONINTERFACE
#define SMILREGIONINTERFACE

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


class CSmilMedia;

/**
 * Interface representing a drawing region
 */
class MSmilRegion
	{
	public:
		enum TFit
			{
			EFill,
			EMeet,	
			ESlice,	
			EScroll,
			EHidden
			};

		enum TBgMode
			{
			EAlways,
			EWhenActive
			};

		/**
		* Coordinates of the drawing area
		*/
		virtual TRect GetRectangle() const = 0;

		/**
		* Coordinates of the media object within the rectangle. 
		* Empty rect if the media is not visible on the region
		*/
		virtual TRect GetRectangle(const CSmilMedia* aMedia) const = 0;

		/**
		* z-index of the region. Regions with higher z-index are 
		* drawn on top of lower ones
		*/
		virtual TInt GetZIndex() const = 0;

		/**
		* Value of SMIL fit attribute. Values are:
		*
		* EFill - media on this regions is scaled to fill it
		* EMeet - media is scaled so that it fills the region in 
		*		one direction while maintaining the aspect ratio
		* ESlice - scale media to fill the region, while 
		*		maintaining the aspect ration and slicing off 
		*		the overflowing part 
		* EScroll - provide scrolling mechanism for the media
		* EHidden - don't scale, slice off the overflow
		*/
		virtual TFit GetFit() const = 0;

		/**
		* Foreground color
		*/
		virtual TRgb GetForeground() const = 0;

		/**
		* Background color
		*/
		virtual TRgb GetBackground() const = 0;

		/**
		* Is background transparent?
		*/
		virtual TBool BackgroundTransparent() const = 0;

		/**
		* Background mode of the region. Values match those of
		* SMIL showBackground attribute:
		* 
		* EAlways - background is always drawn
		* EWhenActive - background is drawn when some media is 
		*			active on the region
		*/
		virtual TBgMode GetBackgroundMode() const = 0;

		/**
		* Requests redrawing of this region and its visible contents
		*/
		virtual void Redraw()=0;

		/**
		* Requests redrawing of this region and its visible contents.
		* Update area is given in the coordinate space of the region
		*/
		virtual void Redraw(TRect aUpdate)=0;

		/**
		*Return the parent region
		*/
		virtual MSmilRegion* Parent() const = 0;

		/**
		* Return the root region
		*/
		virtual MSmilRegion* Root() const = 0;

		/**
		* Called to by the Engine to tell that a piece of media 
		* is currently visible on this region
		*/
		virtual void AddMediaL(CSmilMedia* aMedia)=0;

		/**
		* Called to by the Engine to tell that a piece of media is 
		* no longer visible on this region
		*/
		virtual void RemoveMedia(CSmilMedia* aMedia)=0;

		/**
		* Is the media currently visible on the region?
		*/
		virtual TBool ContainsMedia(const CSmilMedia* aMedia) const = 0;

		/**
		* True if this is the root region
		*/
		virtual TBool IsRoot() const = 0;

		/**
		* Called to by the Engine to tell that a piece of media
		* on the region has ended its transition 
		* (and fill=transition semantics should be applied)
		*/
		virtual void MediaTransitionEnd(CSmilMedia* aMedia)=0;
	};

#endif