diff -r 000000000000 -r 72b543305e3a msg_plat/smil_engine_api/inc/smilmedia.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/msg_plat/smil_engine_api/inc/smilmedia.h Thu Dec 17 08:44:11 2009 +0200 @@ -0,0 +1,211 @@ +/* +* 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: smilmedia declaration +* +*/ + + + +#ifndef SMILMEDIA_H +#define SMILMEDIA_H + +// INCLUDES +#include + +#include +#include + +#include "smiltimecontainer.h" +#include "smilregioninterface.h" + +// FORWARD DECLARATIONS +class MSmilMediaRenderer; +class CSmilTransitionFilter; +class CSmilTransition; +class CSmilArea; + +// CLASS DECLARATION + +class CSmilMedia : public CSmilTimeContainer, public MSmilMedia, public MSmilFocus + { + public: // Constructors and destructor + + virtual const TDesC* ClassName() const { _LIT(KN,"CSmilMedia"); return &KN; } + + static CSmilMedia* NewL(CSmilPresentation* aPresentation); + + virtual ~CSmilMedia(); + + public: // New functions + + /** + * Returns the region where this media is supposed to be rendered on. May be NULL. + */ + MSmilRegion* GetRegion() const; + + /** + * Returns the rectangle (region) where the media is supposed to be rendered on. + */ + TRect GetRectangle() const; + + /** + * Invoked by renderer to ask redrawing of area covered by the media. + * This should be invoked when (visual) media appears, there are changes to it, and + * when it is removed. + */ + void Redraw(); + + /** + * Invoked by a MSmillMediaRenderer object when there is a change + * in (known) state of its intrinsic values. For example, duration of + * video clip is not typically known until it is at least partially + * decoded. This method should be invoked by the renderer when this + * information becomes available. + */ + void RendererDurationChangedL(); + + /** + * Invoked by a MSmillMediaRenderer object when the associated media + * ends (end of the file or stream is reached). Renderer should also + * move to frozen state at this point (that is, to keep showing the last + * frame). + */ + void RendererAtEndL(); + + /** + * Presentation + */ + CSmilPresentation* Presentation() const; + + /** + * Get name media parameter, or empty TPtrC if not found + */ + TPtrC GetParam(const TDesC& aName) const; + + /** + * Returns begin time of media relative to presentation begin time. + */ + TSmilTime MediaBegin() const; + + /** + * Returns end time of media relative to presentation begin time. + */ + TSmilTime MediaEnd() const; + + TPtrC Src() const { return iSrc.Text(); } + TPtrC Alt() const { return iAlt.Text(); } + TPtrC Type() const { return iType.Text(); } + + void SetAltL( const TDesC &aPtr ); + void SetSrcL( const TDesC& aString ); + void SetTypeL( const TDesC& aString ); + + void ForceRepeat( TBool aBool ); + + void SetRegion( MSmilRegion* aRegion ) { iRegion=aRegion; } + + MSmilMediaRenderer* GetRenderer() const { return iRenderer; } + + void TransitionFilterEnd(CSmilTransitionFilter* ); + + void SetFocus(TBool aFocus) { iFocus = aFocus;} + TBool HasFocus() const { return iFocus; } + + TBool IsFocusable() const; + void SetFocusable(TBool aFocusable) { iFocusable = aFocusable;} + + void Unfreeze(); + + virtual void SetPaused(TBool aPaused); + + TPoint Center() const { return GetRectangle().Center(); } + + TSmilTime ClipBegin() { return iClipBegin; } + TSmilTime ClipEnd() { return iClipEnd; } + + void AfterL(MSmilActive* iActive, const TSmilTime& aDelay, TBool aLazy = EFalse); + void CancelActive(MSmilActive* aActive); + + CSmilTransitionFilter* ActiveTransitionFilter() const; + + void AddParamL(const TDesC& aName, const TDesC& aValue); + + TBool IsVisible() const; + TBool IsScrollable() const; + + TSmilTime PredictedRemovalTime() const; + + CSmilArea* GetArea(); + + protected: // Functions from base classes + + CSmilMedia(); + + virtual void ProceedL( const TSmilTime& aTime ); + virtual void ResolveL( const TSmilTime& aTps ); + + virtual void RepeatL( const TSmilTime& aTime ); + virtual void BeginL( const TSmilTime& aTime ); + + virtual void EndL( const TSmilTime& aTime ); + + virtual TSmilTime ImplicitDuration() const; + + TSmilTime NextActivation( const TSmilTime& aTime ) const; + + TBool IsMedia() const { return ETrue; } + + // from MSmilFocus + TRect Rect() const { return GetRectangle(); } + TShape Shape() const { return ERect; } + const CArrayFixFlat* PolyPoints() const { return 0; } + TBool IsSelected() const; + + private: + void CreateRendererL(const TSmilTime& aRecalcTime); + + protected: + RSmilTextBuf iSrc; + RSmilTextBuf iAlt; + RSmilTextBuf iType; + + TBool iFocus; + TBool iFocusable; + + private: // Data + MSmilRegion* iRegion; + MSmilMediaRenderer* iRenderer; + + CSmilTransitionFilter* iTransitionFilter; + + public: + CSmilTransition* iTransitionIn; + CSmilTransition* iTransitionOut; + + struct CNameValuePair + { + ~CNameValuePair() { delete iName; delete iValue; } + HBufC* iName; + HBufC* iValue; + }; + RPointerArray iParams; + + TSmilTime iClipBegin; + TSmilTime iClipEnd; + + }; + +#endif // ?INCLUDE_H + +// End of File