diff -r 000000000000 -r 72b543305e3a mobilemessaging/smilui/mediainc/SmilSVGRenderer.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mobilemessaging/smilui/mediainc/SmilSVGRenderer.h Thu Dec 17 08:44:11 2009 +0200 @@ -0,0 +1,350 @@ +/* +* Copyright (c) 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: Implementation of SmilSVGRenderer. +* +*/ + + + + +#ifndef CSMILSVGRENDERER_H +#define CSMILSVGRENDERER_H + +// INCLUDES +#include +#include +#include "SmilMediaRendererBase.h" + +// CONSTANTS + +// MACROS + +// DATA TYPES + +// FUNCTION PROTOTYPES + +// FORWARD DECLARATIONS +class CGulIcon; +class MMediaFactoryFileInfo; +class MSvgError; +class CSVGTAppObserverUtil; + +// CLASS DECLARATION + +/** +* CSmilSVGRenderer provides SMIL media renderer interface to render +* SVG-T files. +* +* This class is used by SMIL engine to perform the SVG presentation +* playback. +* +* @lib mediarenderer.lib +* @since S60 3.2 +*/ +NONSHARABLE_CLASS( CSmilSVGRenderer ) : public CSmilMediaRendererBase, + public MSvgtAppObserver, + public MSvgRequestObserver + { + public: // Constructors and destructor + + /** + * Two-phased constructor. + * + * @param aFileHandle IN Source file handle. + * @param aMedia IN SMIL media object. + * @param aFileInfo IN File information interface. + * + * @return Initialized SVG renderer. + */ + static CSmilSVGRenderer* NewL( RFile& aFileHandle, + MSmilMedia* aMedia, + MMediaFactoryFileInfo* aFileInfo, + DRMCommon& aDrmCommon, + CDRMHelper& aDrmHelper ); + + /** + * Destructor. + */ + virtual ~CSmilSVGRenderer(); + + public: // Functions from base classes + + /** + * From MSmilMediaRenderer Returns if renderer is visual + * (i.e. draws something to the screen). + * + * @since S60 3.2 + * + * @return Returns ETrue since the media type is visual. + */ + TBool IsVisual() const; + + /** + * From MSmilMediaRenderer Returns the unscalable size of the + * visual media object. + * + * @since S60 3.2 + * + * @return Width in pixels of SVG thumbnail. + */ + TInt IntrinsicWidth() const; + + /** + * From MSmilMediaRenderer Returns the unscalable size of the + * visual media object. + * + * @since S60 3.2 + * + * @return Height in pixels of SVG thumbnail. + */ + TInt IntrinsicHeight() const; + + /** + * From MSmilMediaRenderer Returns the duration of the media object. + * + * @since S60 3.2 + * + * @return Returns duration of SVG thumbnail. + */ + TSmilTime IntrinsicDuration() const; + + /** + * From MSmilMediaRenderer Called by the engine to signal that + * the media is going to be played soon. + * + * @since S60 3.2 + * + * @return void + */ + void PrepareMediaL(); + + /** + * From MSmilMediaRenderer Called by the engine to seek the media + * to given position in its local timeline. + * + * @since S60 3.2 + * + * @param aTime IN Seek position. + * + * @return void + */ + void SeekMediaL( const TSmilTime& aTime ); + + /** + * From MSmilMediaRenderer Called by the engine to start media + * playback and to make visual media visible. + * + * @since S60 3.2 + * + * @return void + */ + void ShowMediaL(); + + /** + * From MSmilMediaRenderer Called by the engine to stop media + * playback and remove visual media from the screen. + * + * @since S60 3.2 + * + * @return void + */ + void HideMedia(); + + /** + * From MSmilMediaRenderer Called by the engine to pause media playback. + * + * @since S60 3.2 + * + * @return void + */ + void FreezeMedia(); + + /** + * From MSmilMediaRenderer Called by the engine to continue paused + * media playback. + * + * @since S60 3.2 + * + * @return void + */ + void ResumeMedia(); + + /** + * From MSmilMediaRenderer Called by the engine to make a media + * renderer draw its content. + * + * @since S60 3.2 + * + * @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 Called by the UI to activate renderer. + * + * @since S60 3.2 + * + * @return void + */ + IMPORT_C void ActivateRendererL(); + + /** + * From MSvgtAppObserver. See SVGTAppObserver.h for more information. + */ + TInt FetchImage( const TDesC& aUri, RFs& aSession, RFile& aFileHandle ); + + /** + * From MSvgtAppObserver. See SVGTAppObserver.h for more information. + */ + TBool LinkActivated( const TDesC& aUri ); + + /** + * From MSvgtAppObserver. See SVGTAppObserver.h for more information. + */ + TBool LinkActivatedWithShow( const TDesC& aUri, const TDesC& aShow ); + + /** + * From MSvgtAppObserver. See SVGTAppObserver.h for more information. + */ + void DisplayDownloadMenuL(); + + /** + * From MSvgtAppObserver. See SVGTAppObserver.h for more information. + */ + void GetSmilFitValue( TDes& aSmilValue ); + + /** + * From MSvgtAppObserver. See SVGTAppObserver.h for more information. + */ + TBool CanShowSave(); + + /** + * From MSvgtAppObserver. See SVGTAppObserver.h for more information. + */ + TBool IsSavingDone(); + + /** + * From MSvgtAppObserver. See SVGTAppObserver.h for more information. + */ + TBool CanShowDownload() const; + + /** + * From MSvgtAppObserver. See SVGTAppObserver.h for more information. + */ + void DoSaveL( TInt aButtonid ); + + /** + * From MSvgtAppObserver. See SVGTAppObserver.h for more information. + */ + TInt NewFetchImageData( const TDesC& aUri ); + + /** + * From MSvgtAppObserver. See SVGTAppObserver.h for more information. + */ + void AssignEmbededDataL( const TDesC& aUri ); + + /** + * From MSvgRequestObserver. See SVGRequestObserver.h for more information. + */ + void UpdateScreen(); + + /** + * From MSvgRequestObserver. See SVGRequestObserver.h for more information. + */ + TBool ScriptCall( const TDesC& aScript, CSvgElementImpl* aCallerElement ); + + /** + * From MSvgRequestObserver. See SVGRequestObserver.h for more information. + */ + TInt FetchFont( const TDesC& aUri, RFs& aSession, RFile& aFileHandle ); + + /** + * From MSvgRequestObserver. See SVGRequestObserver.h for more information. + */ + void UpdatePresentation( const TInt32& aNoOfAnimation ); + /** + * From MSvgtAppObserver. See SVGTAppObserver.h for more information. + */ + TBool ExitWhenOrientationChange(); + private: + + /** + * C++ default constructor. + */ + CSmilSVGRenderer(); + + /** + * C++ constructor. + */ + CSmilSVGRenderer( MSmilMedia* aMedia, + MMediaFactoryFileInfo* aFileInfo, + DRMCommon& aDrmCommon, + CDRMHelper& aDrmHelper ); + + /** + * By default Symbian 2nd phase constructor is private. + */ + void ConstructL( RFile& aFileHandle ); + + /** + * Create thumbnail from SVG file. + */ + void GenerateThumbnailL(); + + /** + * Performs SVG engine error handling. + */ + void HandleSVGEngineErrorL( MSvgError* aError ) const; + + private: // Data + + // Presentation thumbnail bitmap. + CFbsBitmap* iThumbnailBitmap; + + // Presentation thumbnail mask. + CFbsBitmap* iThumbnailMask; + + // Presentation thumbnail indicator icon. + CGulIcon* iIndicatorIcon; + + // Indicates whether renderer is visible. + TBool iVisible; + + // Handle to source file. + RFile iFileHandle; + + // File information interface. + MMediaFactoryFileInfo* iFileInfo; + + // Size of the SVG thumbnail. + TSize iThumbnailSize; + + // Size of the superimposed indicator. + TSize iIndicatorSize; + + // Helper class for SVG-T dialog observer. + CSVGTAppObserverUtil* iObserverUtil; + }; + +#endif // CSMILSVGRENDERER_H + +// End of File