svgtviewer/SvgtViewerPlugin/ScreenSaverPluginSrc/SvgRenderFrameControl.cpp
branchRCL_3
changeset 13 e52958d06c29
parent 10 1882882c7f9c
child 14 20b99a6d6175
--- a/svgtviewer/SvgtViewerPlugin/ScreenSaverPluginSrc/SvgRenderFrameControl.cpp	Tue May 25 12:28:38 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,510 +0,0 @@
-/*
-* Copyright (c) 2005 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:  This file implements a control which displays svg files using 
-*                renderframes engine api, used by Screen Saver application 
-*
-*/
-
-
-#include <eikenv.h>
-#include <eikappui.h>
-#include <gdi.h>
-#include <AknUtils.h>
-#include <SVGEngineInterfaceImpl.h>
-#include <SVGTUIDialog.hrh>
-#include <SVGTAppObserver.h>
-#include <flogger.h>
-
-#include "SvgRenderFrameControl.h"
-#include "SvgRenderFrameTimer.h"
-
-const TUint KConvertToMicroSecond = 1000;
-const TInt  KMilliSecondsBetweenFrame = 50;
-
-// Font Ids for use with Engine-Init
-const TInt KApacFontId = EApacPlain16;
-const TInt KLatintFontId = ELatinBold12;
-
-// Duration const returned by engine when indefinite animations are present
-const TUint KIndefiniteDur = 0xffffffff;
-
-#ifdef _DEBUG
-_LIT( KFileLoggingDir, "ScreenSaver" );
-_LIT( KFileLog, "FromSvgPlugin.txt" );
-#endif
-
-// ============================ MEMBER FUNCTIONS ===============================
-
-// -----------------------------------------------------------------------------
-// CSvgRenderFrameControl::NewL
-// -----------------------------------------------------------------------------
-//
-CSvgRenderFrameControl* CSvgRenderFrameControl::NewL( 
-                                             const CCoeControl* aParent, 
-                                             RFile& aFileHandle ,
-                                             MSvgtAppObserver* aObserver )
-    {
-    CSvgRenderFrameControl* self = CSvgRenderFrameControl::NewLC( aParent,
-                                                                  aFileHandle,
-                                                                  aObserver );   
-    CleanupStack::Pop( self );
-    return self;
-    }
-    
-// -----------------------------------------------------------------------------
-// CSvgRenderFrameControl::NewL
-// -----------------------------------------------------------------------------
-//
-CSvgRenderFrameControl* CSvgRenderFrameControl::NewLC( 
-                                             const CCoeControl* aParent, 
-                                             RFile& aFileHandle ,
-                                             MSvgtAppObserver* aObserver )
-    {
-    CSvgRenderFrameControl* self = new (ELeave) CSvgRenderFrameControl(
-                                   aFileHandle, aObserver );
-    CleanupStack::PushL( self );
-    self->ConstructL( aParent );    
-    return self;
-    }    
-
-// -----------------------------------------------------------------------------
-// CSvgRenderFrameControl::~CSvgRenderFrameControl
-// -----------------------------------------------------------------------------
-//   
-CSvgRenderFrameControl::~CSvgRenderFrameControl()
-    {     
-    DeleteEngine();  
-    delete iBmap;  
-    delete iRenderFrameTimer;          
-    }
-
-// -----------------------------------------------------------------------------
-// CSvgRenderFrameControl::SizeChanged
-// -----------------------------------------------------------------------------
-// 
-void CSvgRenderFrameControl::SizeChanged()
-    {
-    iRect = iParent->Rect();
-    
-    }
-// -----------------------------------------------------------------------------
-// CSvgRenderFrameControl::UpdateScreen
-// -----------------------------------------------------------------------------
-//
-void CSvgRenderFrameControl::UpdateScreen()
-    {
-    }
-    
-// -----------------------------------------------------------------------------
-// CSvgRenderFrameControl::ScriptCall
-// -----------------------------------------------------------------------------
-//    
-TBool CSvgRenderFrameControl::ScriptCall( const TDesC& /*aScript*/,
-                                          CSvgElementImpl* /*aCallerElement*/ )
-    {    
-    return ETrue;
-    }
-
-// -----------------------------------------------------------------------------
-// CSvgRenderFrameControl::FetchImage
-// -----------------------------------------------------------------------------
-//    
-TInt CSvgRenderFrameControl::FetchImage( const TDesC& aUri, RFs& aSession, 
-                                         RFile& aFileHandle )
-    {
-    if ( iAppObserver )
-        {
-        return iAppObserver->FetchImage( aUri, aSession, aFileHandle );        
-        }
-    else
-        {
-        return KErrNotFound;
-        }
-    
-    }
-
-TInt CSvgRenderFrameControl::FetchFont( const TDesC& /* aUri */, 
-                                    RFs& /* aSession */, RFile& /* aFileHandle */ )
-    {
-    return KErrNotSupported;
-    }
-// -----------------------------------------------------------------------------
-// CSvgRenderFrameControl::GetSmilFitValue
-// -----------------------------------------------------------------------------
-//
-void CSvgRenderFrameControl::GetSmilFitValue(TDes& /*aSmilValue*/)
-    {
-    }
-
-// -----------------------------------------------------------------------------
-// CSvgRenderFrameControl::UpdatePresentation
-// -----------------------------------------------------------------------------
-//    
-void CSvgRenderFrameControl::UpdatePresentation( const TInt32&  
-                                                 /*aNoOfAnimation*/ )
-    {
-    }
-
-// -----------------------------------------------------------------------------
-// CSvgRenderFrameControl::Draw
-// -----------------------------------------------------------------------------
-// 
-void CSvgRenderFrameControl::Draw(const TRect& /*aRect*/) const
-    {       
-       
-    // Calculate rectangle for the whole bitmap
-    TRect bmpPieceRect(TPoint(0,0), iRect.Size() );    
-    
-    // Get the standard graphics context
-    CWindowGc& gc = SystemGc();    
-    
-    gc.SetBrushColor(CGraphicsContext::ENullBrush );
-    gc.SetPenColor( CGraphicsContext::ENullPen );
-    
-    gc.BitBlt( TPoint(0,0),iBitmapFrames[iCurrentFrame],
-              bmpPieceRect );       
-    }
-    
-// -----------------------------------------------------------------------------
-// CSvgRenderFrameControl::SetTimer
-// -----------------------------------------------------------------------------
-// 
-void CSvgRenderFrameControl::SetTimer()    
-    {    
-    if ( !iRenderFrameTimer )
-        {        
-        TRAP_IGNORE( iRenderFrameTimer = 
-                    CSvgRenderFrameTimer::NewL( this ) );
-        }
-    if ( iCanPlay )               
-        {
-        // Since the number of delay intervals is one less than 
-        // the number of bitmaps need to have a bound check
-        iRenderFrameTimer->SetTimeOut( iDelayIntervals[
-           iCurrentFrame >= iDelayIntervals.Count() ? 0 : iCurrentFrame]
-           * KConvertToMicroSecond );       
-        }  
-    }
- 
-// -----------------------------------------------------------------------------
-// CSvgRenderFrameControl::CancelTimer
-// -----------------------------------------------------------------------------
-//      
-void CSvgRenderFrameControl::CancelTimer()
-    {
-    if (iRenderFrameTimer)
-        {
-        iRenderFrameTimer->Cancel();
-        delete iRenderFrameTimer;
-        iRenderFrameTimer = NULL;
-        }
-    }
-    
-// -----------------------------------------------------------------------------
-// CSvgRenderFrameControl::ProcessViewerCommandL
-// -----------------------------------------------------------------------------
-//    
-void CSvgRenderFrameControl::ProcessViewerCommandL( TInt aCommandId )
-    {
-    if ( aCommandId == ESvgtDlgPlayCommand )
-        {
-         _LIT(msg1, "start event " );    
-        PrintDebugMsg( msg1 );    
-        iCanPlay = ETrue;
-        SetTimer();
-        }
-    if ( aCommandId == ESvgtDlgPauseCommand )
-        {
-         _LIT(msg1, "end event " );    
-        PrintDebugMsg( msg1 );    
-        iCanPlay = EFalse;
-        CancelTimer();
-        }        
-    }
-
-// -----------------------------------------------------------------------------
-// CSvgRenderFrameControl::GetCurrentIndex
-// -----------------------------------------------------------------------------
-//
-TInt CSvgRenderFrameControl::GetCurrentIndex() const
-    {
-    return iCurrentFrame;
-    }
-
-// -----------------------------------------------------------------------------
-// CSvgRenderFrameControl::SetCurrentIndex
-// -----------------------------------------------------------------------------
-//        
-void CSvgRenderFrameControl::SetCurrentIndex( TInt aIndex )
-    {
-    iCurrentFrame = aIndex;
-    }
-
-// -----------------------------------------------------------------------------
-// CSvgRenderFrameControl::AnimationTimeOut
-// -----------------------------------------------------------------------------
-//     
-void CSvgRenderFrameControl::AnimationTimeOut()
-    {   
-    DrawNow();
-    SetTimer();
-    MoveIndex();    
-    }
-
-// -----------------------------------------------------------------------------
-// CSvgRenderFrameControl::InitializeEngineL
-// -----------------------------------------------------------------------------
-//  
-void CSvgRenderFrameControl::InitializeEngineL( TBool aCheckFile,
-                                     MSvgRequestObserver* aObserver )
-    {    
-    
-    iBmap =  new ( ELeave ) CFbsBitmap();    
-    TSize dummyScreenSize( 10,10  );    
-    iBmap->Create( dummyScreenSize, EColor16MU );    
-           
-    if ( !iSvgEngine )
-        {
-        TInt fontId = KLatintFontId;
-    
-        switch ( AknLayoutUtils::Variant() )
-            {
-            case EApacVariant:
-                {
-                fontId = KApacFontId;
-                }
-                break;
-            case EEuropeanVariant:
-            default:
-                break;
-            }
-        const CFont* font = AknLayoutUtils::FontFromId( fontId );
-        TFontSpec spec = font->FontSpecInTwips();
-
-        iSvgEngine = CSvgEngineInterfaceImpl::NewL( iBmap,
-                                                    aObserver,
-                                                    spec );                    
-                                                        
-        if ( iSvgEngine && !iSvgDom  )
-            {       
-            if ( aCheckFile )
-                {
-                /* Set Thumbnail Mode if check file mode
-                 * so that the rights wont be consumed 
-                 */
-                iSvgEngine->SetThumbNailMode( ETrue );
-                }
-                
-            MSvgError* parseResult = iSvgEngine->PrepareDom( *iFileHandle, 
-                                                             iSvgDom );
-            
-            if ( aCheckFile )
-                {
-                /* Reset Thumbnail Mode */                
-                iSvgEngine->SetThumbNailMode( EFalse );
-                }                                               
-                                                               
-            if ( parseResult && 
-                 parseResult->HasError() && 
-                 !parseResult->IsWarning() )
-                {   
-                if ( parseResult->HasError() == ESvgNoMemory )
-                    {
-                    User::Leave( KErrNoMemory );        
-                    }
-                else
-                    {
-                    User::Leave( KErrGeneral );
-                    }
-                }        
-            if ( !aCheckFile )
-                {
-                MSvgError* pResult = iSvgEngine->UseDom( iSvgDom, iBmap );
-                if ( pResult->HasError() && !pResult->IsWarning() )
-                    {                
-                    User::Leave( KErrGeneral );
-                    }               
-                }
-            }
-        else
-            {
-            User::Leave( KErrGeneral );
-            }
-        }
-    else
-        {
-        User::Leave( KErrGeneral );
-        }
-    return;
-    
-    }
-
-// -----------------------------------------------------------------------------
-// CSvgRenderFrameControl::DeleteEngine
-// -----------------------------------------------------------------------------
-//  
-void CSvgRenderFrameControl::DeleteEngine()
-    {       
-    for ( TInt i = 0; i < iBitmapFrames.Count(); i++ )
-        {
-        delete iBitmapFrames[i];
-        }        
-
-    for ( TInt i = 0; i < iMaskFrames.Count(); i++ )
-        {
-        delete iMaskFrames[i];
-        }        
-
-    iBitmapFrames.Reset();
-    iMaskFrames.Reset();
-    iDelayIntervals.Reset();
-    
-    iBitmapFrames.Close();
-    iMaskFrames.Close();
-    iDelayIntervals.Close();
-    
-    iCurrentFrame = 0; 
-    iDuration = 0;
-    
-    if ( iSvgDom )
-        {
-        iSvgEngine->DeleteDom( iSvgDom );
-        iSvgDom = 0;
-        }
-    delete iSvgEngine;    
-    iSvgEngine = NULL;
-    
-    }   
-
-// -----------------------------------------------------------------------------
-// CSvgRenderFrameControl::RenderMyFrames
-// -----------------------------------------------------------------------------
-//  
-TInt CSvgRenderFrameControl::RenderMyFrames()
-    {
-    
-    TUint interval = iSvgEngine->Duration();   
-   
-    if ( interval == KIndefiniteDur || interval > KMaxTimeDuration )
-        {
-        // Infinite content
-        // Dont try to handle using Render Frames
-        // return Error
-        return KErrGeneral;     
-        }
-
-    
-    
-    MSvgError* result = iSvgEngine->RenderFrames(
-                                       iSvgDom,
-                                       iRect.Size(),
-                                       0, 
-                                       interval,
-                                       KMilliSecondsBetweenFrame,
-                                       EColor64K, EGray2,
-                                       iBitmapFrames,
-                                       iMaskFrames,
-                                       iDelayIntervals,
-                                       ETrue /*Remove redundant frames*/ );
-                                          
-                                       
-    if ( result->HasError() && !result->IsWarning() )
-        {
-        return KErrGeneral;
-        } 
-    else
-        {
-        return KErrNone;
-        }
-    }
-   
-
-// -----------------------------------------------------------------------------
-// CSvgRenderFrameControl::MoveIndex
-// -----------------------------------------------------------------------------
-//     
-void CSvgRenderFrameControl::MoveIndex()
-    {
-    
-    TBuf<64> buffer1;
-    _LIT(msg1, "Index is : %d" );
-    buffer1.Format( msg1, iCurrentFrame );
-    PrintDebugMsg( buffer1 );    
-    
-    iCurrentFrame++;    
-    if ( iCurrentFrame == iBitmapFrames.Count() )
-        {
-        iCurrentFrame = 0;
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CSvgRenderFrameControl::CSvgRenderFrameControl
-// -----------------------------------------------------------------------------
-//
-CSvgRenderFrameControl::CSvgRenderFrameControl( RFile& aFileHandle,
-                                                MSvgtAppObserver* aObserver )
-    {
-    iCurrentFrame = 0;
-    iDuration = 0; 
-    iSvgEngine = NULL;
-    iSvgDom = 0;    
-    iFileHandle = &aFileHandle;
-    iCanPlay = EFalse;  
-    iParent = NULL; 
-    iAppObserver = aObserver; 
-    }
- 
-// -----------------------------------------------------------------------------
-// CSvgRenderFrameControl::ConstructL
-// -----------------------------------------------------------------------------
-//    
-void CSvgRenderFrameControl::ConstructL( const CCoeControl* aParent )
-    {       
-    
-    if ( aParent )
-        {
-        CreateWindowL(aParent); 
-        iParent = aParent;
-        iRect = aParent->Rect();
-        }    
-     
-    InitializeEngineL( EFalse /*Not checkFile mode*/  , this );    
-       
-    User::LeaveIfError(RenderMyFrames()); 
-    
-    SetRect( iRect );
-    
-    ActivateL();
-    
-    }
-    
-// -----------------------------------------------------------------------------
-// CScreenSaverAnimPlugin::PrintDebugMsg
-// -----------------------------------------------------------------------------
-//
-#ifndef _DEBUG        
-void CSvgRenderFrameControl::PrintDebugMsg( const TDesC&  /* aMsg */ ) const
-#else
-void CSvgRenderFrameControl::PrintDebugMsg( const TDesC&  aMsg ) const
-#endif
-    {
-#ifdef _DEBUG        
-    RFileLogger::Write( KFileLoggingDir, KFileLog, 
-                        EFileLoggingModeAppend, aMsg );
-#endif    
-    }  
-          
-// End Of file.
-