--- a/videditor/ManualVideoEditor/src/VeiEditVideoContainer.cpp Fri Jan 29 14:08:33 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,5936 +0,0 @@
-/*
-* Copyright (c) 2010 Ixonos Plc.
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of the "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:
-* Ixonos Plc
-*
-* Description:
-*
-*/
-
-
-// INCLUDE FILES
-
-// System includes
-#include <manualvideoeditor.rsg>
-#include <manualvideoeditor.mbg>
-#include <videoeditoruicomponents.rsg>
-#include <videoeditoruicomponents.mbg>
-#include <videoeditorbitmaps.mbg>
-#include <gulicon.h>
-#include <stringloader.h>
-#include <aknsdrawutils.h>
-#include <aknsdatacontext.h>
-#include <aknsbasicbackgroundcontrolcontext.h>
-#include <aknquerydialog.h>
-#include <eikprogi.h>
-#include <aknnotewrappers.h>
-#include <errorui.h>
-#include <aknbiditextutils.h>
-#include <gulfont.h>
-#include <akniconutils.h>
-#include <pathinfo.h>
-#include <f32file.h>
-#include <CMGAlbumManager.h>
-#include <vedcommon.h>
-#include <mmf/common/mmferrors.h>
-
-// User includes
-#include "VeiEditVideoContainer.h"
-#include "VeiVideoDisplay.h"
-#include "VeiTextDisplay.h"
-#include "VeiCutterBar.h"
-#include "veiappui.h"
-#include "veiframetaker.h"
-#include "VeiIconBox.h"
-#include "VideoEditorCommon.h"
-#include "VideoEditorUtils.h"
-#include "VideoEditorHelp.hlp.hrh" // Topic contexts (literals)
-#include "VeiEditVideoView.h"
-#include "ManualVideoEditor.hrh"
-#include "VeiSlider.h"
-#include "StoryboardItems.h"
-#include "TransitionInfo.h"
-
-
-// ================= MEMBER FUNCTIONS =======================
-void CleanupRArray( TAny* object )
- {
- (( RImageTypeDescriptionArray*)object)->ResetAndDestroy();
- }
-
-CVeiEditVideoContainer* CVeiEditVideoContainer::NewL( const TRect& aRect,
- CVedMovie& aMovie, CVeiEditVideoView& aView )
- {
- CVeiEditVideoContainer* self = CVeiEditVideoContainer::NewLC( aRect,
- aMovie, aView );
- CleanupStack::Pop( self );
- return self;
- }
-
-CVeiEditVideoContainer* CVeiEditVideoContainer::NewLC( const TRect& aRect,
- CVedMovie& aMovie, CVeiEditVideoView& aView )
- {
- CVeiEditVideoContainer* self = new (ELeave) CVeiEditVideoContainer( aMovie, aView );
- CleanupStack::PushL( self );
- self->ConstructL( aRect );
- return self;
- }
-
-// ---------------------------------------------------------
-// CVeiEditVideoContainer::ConstructL(const TRect& aRect)
-// EPOC two phased constructor
-// ---------------------------------------------------------
-//
-void CVeiEditVideoContainer::ConstructL( const TRect& aRect )
- {
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::ConstructL in");
-
- CreateWindowL();
-
- iMovie.RegisterMovieObserverL( this );
-
- iConverter = CVeiImageConverter::NewL( this );
-
- TFileName mbmPath( VideoEditorUtils::IconFileNameAndPath(KManualVideoEditorIconFileId) );
- TFileName mbmPath2( VideoEditorUtils::IconFileNameAndPath(KVideoEditorUiComponentsIconFileId) );
- TFileName mbmPath3( VideoEditorUtils::IconFileNameAndPath(KVeiNonScalableIconFileId) );
-
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::ConstructL Loading bitmaps..");
-
- // No thumbnail icon (shown when video thumb nail cannot be generated)
- AknIconUtils::CreateIconL( iNoThumbnailIcon, iNoThumbnailIconMask,
- mbmPath2, EMbmVideoeditoruicomponentsQgn_graf_ve_novideo,
- EMbmVideoeditoruicomponentsQgn_graf_ve_novideo_mask );
-
- iAudioIcon = AknIconUtils::CreateIconL( mbmPath,
- EMbmManualvideoeditorQgn_graf_ve_symbol_audio );
-
- // Video timeline icon
-
- AknIconUtils::CreateIconL( iVideoTrackIcon, iVideoTrackIconMask,
- mbmPath, EMbmManualvideoeditorQgn_prop_ve_file_video,
- EMbmManualvideoeditorQgn_prop_ve_file_video_mask );
-
- // Audio timeline icon
-
- AknIconUtils::CreateIconL( iAudioTrackIcon, iAudioTrackIconMask,
- mbmPath, EMbmManualvideoeditorQgn_prop_ve_file_audio,
- EMbmManualvideoeditorQgn_prop_ve_file_audio_mask );
-
- // Audio mixing icon
- iAudioMixingIcon = AknIconUtils::CreateIconL( mbmPath3,
- EMbmVideoeditorbitmapsMix_audio_background );
-
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::ConstructL Bitmaps OK!");
-
- iTransitionInfo = CTransitionInfo::NewL();
-
- iZoomTimer = CPeriodic::NewL( CActive::EPriorityLow );
-
- iVideoDisplayBox = TRect(0,0,100,100);
-
- iVideoDisplay = CVeiVideoDisplay::NewL( iVideoDisplayBox, this, *this );
-
-/* Video Display components for transitioin state*/
- iTransitionDisplayRight = CVeiVideoDisplay::NewL( iVideoDisplayBox, this, *this );
- iTransitionDisplayLeft = CVeiVideoDisplay::NewL( iVideoDisplayBox, this, *this );
-
- iDummyCutBar = CVeiCutterBar::NewL( this, ETrue );
- iDummyCutBarLeft = CVeiCutterBar::NewL( this, ETrue );
-
-/* IconBox */
- iEffectSymbolBox = TRect(0,0,10,10);
- iEffectSymbols = CVeiIconBox::NewL( iEffectSymbolBox, this );
-
- iInfoDisplay = CVeiTextDisplay::NewL( iVideoDisplayBox, this );
- iInfoDisplay->SetMopParent( this );
- iArrowsDisplay = CVeiTextDisplay::NewL( iVideoDisplayBox, this );
-
- SetRect( aRect );
- iBgContext = CAknsBasicBackgroundControlContext::NewL( KAknsIIDQsnBgAreaMain, Rect(), EFalse );
-
- iFrameTaker = CVeiFrameTaker::NewL( *this );
-
- iGradientBitmap = new(ELeave)CFbsBitmap;
- TRgb startColor = TRgb( 0x7a, 0xbe, 0xe7);
- TRgb endColor = TRgb( 0x00, 0x3e, 0x80 );
- TInt breadth = 30;
- ColorUtils::TBitmapOrientation bitmapOrientation = ColorUtils::EBitmapOrientationHorizontal;
- ColorUtils::CreateGradientBitmapL( *iGradientBitmap, iEikonEnv->WsSession(), breadth,
- bitmapOrientation, startColor, endColor );
- LOG(KVideoEditorLogFile, "Gradient bitmap created..");
- SetCursorLocation( ECursorOnEmptyVideoTrack );
-
-/* Timer to keep back light on when user is not giving key events */
- iScreenLight = CVeiDisplayLighter::NewL();
-
- iCurrentPoint = 0;
-/* Timer. Draws playhead */
- iPeriodic = CPeriodic::NewL( CActive::EPriorityStandard );
- iSeekPos = TTimeIntervalMicroSeconds( 0 );
- SetPreviewState(EStateInitializing);
-
- iBlackScreen = EFalse;
-
- CreateScrollBarL(aRect);
-
- AknIconUtils::CreateIconL( iPauseBitmap, iPauseBitmapMask,
- mbmPath2, EMbmVideoeditoruicomponentsQgn_prop_ve_pause,
- EMbmVideoeditoruicomponentsQgn_prop_ve_pause_mask );
-
- EnableDragEvents();
-
- ActivateL();
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::ConstructL: out");
- }
-
-//===========================================================================
-void CVeiEditVideoContainer::CreateScrollBarL(const TRect& aRect)
- {
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::CreateScrollBarL: in");
- // create vertical slider control in the middle of the
- // screen in vertical direction and 10 pixels from the
- // right side of the screen
-
- iVerticalSlider = CVeiVerticalSlider::NewL(aRect, *this);
- iVerticalSlider->SetMinimum( KVolumeSliderMin );
- iVerticalSlider->SetMaximum( KVolumeSliderMax );
- iVerticalSlider->SetStep( KVolumeSliderStep );
-
- iVerticalSlider->SetPosition(0);
-
- iHorizontalSlider = CVeiHorizontalSlider::NewL(aRect, *this);
- iHorizontalSlider->SetMinimum(-10);
- iHorizontalSlider->SetMaximum(10);
- iHorizontalSlider->SetStep(1);
-
- iHorizontalSlider->SetPosition(0);
-
- iVerticalSlider->MakeVisible(EFalse);
- iHorizontalSlider->MakeVisible(EFalse);
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::CreateScrollBarL: out");
- }
-
-//===========================================================================
-CVeiEditVideoContainer::CVeiEditVideoContainer( CVedMovie& aMovie, CVeiEditVideoView& aView )
- :iView( aView ), iMovie( aMovie )
- {
- iCurrentlyProcessedIndex = -1;
- iSelectionMode = EModeNavigation;
- iVideoCursorPos = 0;
- iAudioCursorPos = 0;
-
- iCursorLocation = ECursorOnEmptyVideoTrack;
- iPrevCursorLocation = ECursorOnClip;
- iTakeSnapshot = EFalse;
- iSeeking = EFalse;
- iCloseStream = EFalse;
- iBackKeyPressed = EFalse;
- /* Flag to make sure that engine has finished frame before trying to get next one. */
- iFrameReady = ETrue;
- }
-
-
-CVeiEditVideoContainer::~CVeiEditVideoContainer()
- {
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::~CVeiEditVideoContainer(): In");
- if ( iMovie.MovieObserverIsRegistered( this ) )
- {
- iMovie.UnregisterMovieObserver( this );
- }
-
- if ( iTempVideoInfo )
- {
- iTempVideoInfo->CancelFrame();
- delete iTempVideoInfo;
- iTempVideoInfo = NULL;
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::~CVeiEditVideoContainer(): iTempVideoInfo delete OK..");
- }
-
- if ( iConverter )
- {
- iConverter->CancelEncoding();
- delete iConverter;
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::~CVeiEditVideoContainer(): iConverter delete OK..");
- }
-
- delete iTransitionInfo;
- delete iScreenLight;
- delete iVideoTrackIcon;
- delete iVideoTrackIconMask;
- delete iAudioTrackIcon;
- delete iAudioTrackIconMask;
- delete iAudioIcon;
- delete iAudioMixingIcon;
- delete iNoThumbnailIcon;
- delete iNoThumbnailIconMask;
- delete iGradientBitmap;
- delete iBgContext;
- delete iVideoDisplay;
- delete iTransitionDisplayRight;
- delete iTransitionDisplayLeft;
- delete iDummyCutBar;
- delete iDummyCutBarLeft;
- delete iEffectSymbols;
- delete iInfoDisplay;
- delete iArrowsDisplay;
- delete iFrameTaker;
- delete iRemConTarget;
-
- if ( iZoomTimer )
- {
- iZoomTimer->Cancel();
- delete iZoomTimer;
- }
- iVideoItemArray.ResetAndDestroy();
- iAudioItemArray.ResetAndDestroy();
- iVideoItemRectArray.Close();
-
- if ( iPeriodic )
- {
- iPeriodic->Cancel();
- delete iPeriodic;
- }
-
- if ( iTempFileName )
- {
- delete iTempFileName;
- iTempFileName = NULL;
- }
- if ( iSaveToFileName )
- {
- delete iSaveToFileName;
- iSaveToFileName = NULL;
- }
-
- delete iHorizontalSlider;
- delete iVerticalSlider;
-
- delete iPauseBitmap;
- delete iPauseBitmapMask;
-
- delete iCallBack;
-
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::~CVeiEditVideoContainer(): Out");
- }
-
-// ---------------------------------------------------------
-// CVeiEditVideoContainer::SizeChanged()
-// Called by framework when the view size is changed
-// ---------------------------------------------------------
-//
-void CVeiEditVideoContainer::SizeChanged()
- {
- LOGFMT2(KVideoEditorLogFile, "CVeiEditVideoContainer SizeChanged: In: (%d,%d)", Size().iWidth, Size().iHeight);
-
- TRect rect = Rect();
-
- if ( iBgContext )
- iBgContext->SetRect( rect );
-
- TInt audioTrackBoxTlX = -1;
- TInt audioTrackBoxSizeWidth = -1;
- TInt videoScreenSizeWidth = -1;
- TInt videoScreenSizeHeight = -1;
- TInt effectSymbolBoxTlXPortrait = -1;
- TInt videoScreenXPortrait = -1;
- TInt videoScreenYPortrait = -1;
- TInt infoDisplayBoxSizeHeight = -1;
- TInt thumbnailStartPaneBoxTlY = -1;
- TInt thumbnailStartPaneBoxSizeWidth = -1;
- TInt thumbnailStartPaneBoxSizeHeight = -1;
- TInt thumbnailEndPaneBoxTlY = -1;
- TInt sliderThickness = -1;
-
- switch( rect.iBr.iX )
- {
- case 240:
- case 320:
- audioTrackBoxTlX = 25;
- audioTrackBoxSizeWidth = 204;
- videoScreenSizeWidth = 156;
- videoScreenSizeHeight = 128;
- effectSymbolBoxTlXPortrait = 23;
- videoScreenXPortrait = 47;
- videoScreenYPortrait = 2;
- infoDisplayBoxSizeHeight = 24;
- thumbnailStartPaneBoxTlY = 12;
- thumbnailStartPaneBoxSizeWidth = 78;
- thumbnailStartPaneBoxSizeHeight = 64;
- thumbnailEndPaneBoxTlY = 12;
- sliderThickness = 12;
- break;
- case 176:
- case 208:
- audioTrackBoxTlX = 19;
- audioTrackBoxSizeWidth = rect.iBr.iX-25;//153;
- videoScreenSizeWidth = 96;
- videoScreenSizeHeight = 78;
- effectSymbolBoxTlXPortrait = 25;
- videoScreenXPortrait = 40;
- videoScreenYPortrait = 2;
- infoDisplayBoxSizeHeight = 15;
- thumbnailStartPaneBoxTlY = 8;
- thumbnailStartPaneBoxSizeWidth = 56;
- thumbnailStartPaneBoxSizeHeight = 46;
- thumbnailEndPaneBoxTlY = 8;
- sliderThickness = 8;
- break;
- case 352:
- case 416:
- audioTrackBoxTlX = 38;
- audioTrackBoxSizeWidth = 306;
- videoScreenSizeWidth = 193;
- videoScreenSizeHeight = 158;
- effectSymbolBoxTlXPortrait = 43;
- videoScreenXPortrait = 80;
- videoScreenYPortrait = 4;
- infoDisplayBoxSizeHeight = 31;
- thumbnailStartPaneBoxTlY = 16;
- thumbnailStartPaneBoxSizeWidth = 112;
- thumbnailStartPaneBoxSizeHeight = 93;
- thumbnailEndPaneBoxTlY = 16;
- sliderThickness = 12;
- break;
- default:
- audioTrackBoxTlX = 38;
- audioTrackBoxSizeWidth = 306;
- videoScreenSizeWidth = 193;
- videoScreenSizeHeight = 158;
- effectSymbolBoxTlXPortrait = 43;
- videoScreenXPortrait = 80;
- videoScreenYPortrait = 4;
- infoDisplayBoxSizeHeight = 31;
- thumbnailStartPaneBoxTlY = 16;
- thumbnailStartPaneBoxSizeWidth = 112;
- thumbnailStartPaneBoxSizeHeight = 93;
- thumbnailEndPaneBoxTlY = 16;
- sliderThickness = 12;
- break;
- };
-
- iTransitionMarkerSize.iWidth = 7;
- iTransitionMarkerSize.iHeight = 9;
-
- iAudioBarBox.iTl.iX = (rect.iTl.iX + 1) + iTransitionMarkerSize.iWidth / 2 + 20;
- iAudioBarBox.iTl.iY = rect.iBr.iY - 16;
- iAudioBarBox.iBr.iX = (rect.iBr.iX - 1) - iTransitionMarkerSize.iWidth / 2;
- iAudioBarBox.iBr.iY = rect.iBr.iY - 1;
-
- TPoint audioTrackBoxTl = TPoint(audioTrackBoxTlX,
- STATIC_CAST(TInt, rect.iBr.iY*0.8994 ));
-
- TSize audioTrackBoxSize = TSize(audioTrackBoxSizeWidth,
- STATIC_CAST(TInt, rect.iBr.iY*0.0764 ));
- iAudioTrackBox = TRect( audioTrackBoxTl, audioTrackBoxSize );
-
- iAudioBarIconPos.iX = STATIC_CAST(TInt,0.01137*rect.iBr.iX);//rect.iTl.iX;
- iAudioBarIconPos.iY = iAudioTrackBox.iTl.iY;
-
- AknIconUtils::SetSize( iVideoTrackIcon, TSize( iAudioTrackBox.Height(), iAudioTrackBox.Height() ) );
- AknIconUtils::SetSize( iAudioTrackIcon, TSize( iAudioTrackBox.Height(), iAudioTrackBox.Height() ) );
-
- iAudioBarBox = iAudioTrackBox;
-
- iVideoBarBox.iTl.iX = iAudioBarBox.iTl.iX;
- iVideoBarBox.iTl.iY = iAudioBarBox.iTl.iY - iTransitionMarkerSize.iHeight - 16;
- iVideoBarBox.iBr.iX = iAudioBarBox.iBr.iX;
- iVideoBarBox.iBr.iY = iAudioBarBox.iTl.iY - 10;
-
- TPoint videoTrackBoxTl = TPoint(audioTrackBoxTl.iX,
- STATIC_CAST(TInt,rect.iBr.iY*0.7882 ));
-
- TSize videoTrackBoxSize = TSize(audioTrackBoxSize.iWidth,
- STATIC_CAST(TInt, rect.iBr.iY*0.0764 ));
-
- iVideoTrackBox = TRect( videoTrackBoxTl, videoTrackBoxSize );
-
- iVideoBarIconPos.iX = iAudioBarIconPos.iX;
- iVideoBarIconPos.iY = iVideoTrackBox.iTl.iY;
-
- iVideoBarBox = iVideoTrackBox;
-
- iBarArea.iTl.iX = rect.iTl.iX;
- iBarArea.iTl.iY = iVideoBarBox.iTl.iY;
- iBarArea.iBr.iX = rect.iBr.iX;
- iBarArea.iBr.iY = iAudioBarBox.iBr.iY;
-
- TBool landscape = VideoEditorUtils::IsLandscapeScreenOrientation();
-
- if ( landscape ) //Landscape
- {
- // clip thumbnail pane
- TInt videoScreenX = STATIC_CAST( TInt, rect.iBr.iX*0.0097 );
- TInt videoScreenY = STATIC_CAST( TInt, rect.iBr.iY*0.0139 );
-
- TSize videoScreenSize( videoScreenSizeWidth, videoScreenSizeHeight );
-
- iVideoDisplayBox = TRect( TPoint( videoScreenX, videoScreenY ), videoScreenSize );
- iVideoDisplay->SetRect( iVideoDisplayBox );
-
- //clip cut timeline pane
- TSize cutBarBoxSize = TSize(videoScreenSize.iWidth,
- STATIC_CAST(TInt,rect.iBr.iY*0.09375 ));
- iDummyCutBarBox = TRect( TPoint(iVideoDisplayBox.iTl.iX, iVideoDisplayBox.iBr.iY), cutBarBoxSize );
- iDummyCutBar->SetRect( iDummyCutBarBox );
-
- //clip info pane
- TSize infoDisplayBoxSize = TSize( STATIC_CAST(TInt,rect.iBr.iX*0.4159),STATIC_CAST(TInt,rect.iBr.iY*0.56) );
- iInfoDisplayBox = TRect( TPoint(iVideoDisplayBox.iBr.iX+videoScreenX, iVideoDisplayBox.iTl.iY),
- infoDisplayBoxSize );
-
- //clip indicator pane
- TInt iconHeight = STATIC_CAST( TInt, rect.iBr.iY * 0.0972222222 );
-
- TPoint effectSymbolBoxTl = TPoint( iInfoDisplayBox.iTl.iX, iInfoDisplayBox.iBr.iY/*+videoScreenY*/);
- TSize effectSymbolBoxSize = TSize( STATIC_CAST(TInt,rect.iBr.iX*0.22115385), iconHeight );
-
- iEffectSymbolBox = TRect( effectSymbolBoxTl, effectSymbolBoxSize);
- iEffectSymbols->SetLandscapeScreenOrientation( landscape );
-
- //pause indicator box (for preview state)
- iPauseIconBox = TRect( effectSymbolBoxTl, TSize(iconHeight, iconHeight) );
-
- //slider controls
- if (iVerticalSlider)
- {
- iVerticalSliderSize = TSize(sliderThickness, iVideoDisplayBox.Height() + iDummyCutBarBox.Height());
- iVerticalSliderPoint = TPoint( rect.Width() - sliderThickness * 2, videoScreenY );
- iVerticalSlider->SetExtent( iVerticalSliderPoint, iVerticalSliderSize );
- }
- if (iHorizontalSlider)
- {
- iHorizontalSliderSize = TSize(videoScreenSize.iWidth, sliderThickness);
- iHorizontalSliderPoint = TPoint( videoScreenX, videoScreenY + videoScreenSize.iHeight + sliderThickness);
- iHorizontalSlider->SetExtent( iHorizontalSliderPoint, iHorizontalSliderSize );
- }
-
- //transition
-
- //ved_clip_thumbnail_start_pane
- TPoint thumbnailEndPaneBoxTl = TPoint(videoScreenX,videoScreenY);
-
- TSize thumbnailEndPaneBoxSize = TSize(STATIC_CAST(TInt, 0.3198*rect.iBr.iX),
- STATIC_CAST(TInt,rect.iBr.iY*0.3785));
-
- iTransitionDisplayLeftBox = TRect( thumbnailEndPaneBoxTl, thumbnailEndPaneBoxSize );
- iTransitionDisplayLeft->SetRect( iTransitionDisplayLeftBox );
-
-
- //ved_clip_thumbnail_end_pane
- TPoint thumbnailStartPaneBoxTl = TPoint(STATIC_CAST(TInt, 0.6707*rect.iBr.iX),videoScreenY);
-
- TSize thumbnailStartPaneBoxSize = thumbnailEndPaneBoxSize;
-
- iTransitionDisplayRightBox = TRect( thumbnailStartPaneBoxTl, thumbnailStartPaneBoxSize );
- iTransitionDisplayRight->SetRect( iTransitionDisplayRightBox );
-
- //ved_transition_info_pane
- TPoint transitionArrowsBoxTl = TPoint(STATIC_CAST(TInt, 0.0866*rect.iBr.iX),
- STATIC_CAST(TInt,0.4896*rect.iBr.iY ) );
-
- TSize transitionArrowsBoxSize = TSize(STATIC_CAST(TInt, 0.827*rect.iBr.iX),
- STATIC_CAST(TInt,0.2848*rect.iBr.iY ) );
-
- iTransitionArrowsBox = TRect( transitionArrowsBoxTl, transitionArrowsBoxSize );
-
- TInt SlowMotionBoxTlX = STATIC_CAST( TInt, rect.iBr.iX * 0.1346 );
- TInt SlowMotionBoxTlY = STATIC_CAST( TInt, rect.iBr.iY * 0.6806 );
- TInt SlowMotionBoxBrX = STATIC_CAST( TInt, rect.iBr.iX * 0.4423077 );
- TInt SlowMotionBoxBrY = STATIC_CAST( TInt, rect.iBr.iY * 0.7639 );
-
- iSlowMotionBox = TRect(SlowMotionBoxTlX, SlowMotionBoxTlY, SlowMotionBoxBrX,
- SlowMotionBoxBrY);
-
- TInt widthAndheight = STATIC_CAST( TInt, rect.iBr.iX * 0.057692 );
-
- iArrowsDisplay->SetArrowSize(TSize( widthAndheight, widthAndheight ));
-
- // video display when cursor is on transition.
- iVideoDisplayBoxOnTransition = TRect(TPoint((rect.iBr.iX/2) -
- STATIC_CAST( TInt, 1.19*iTransitionDisplayRightBox.Size().iHeight)/2,
- iTransitionDisplayLeftBox.iTl.iY),
- TSize(STATIC_CAST( TInt, 1.19*iTransitionDisplayRightBox.Size().iHeight),
- iTransitionDisplayRightBox.Size().iHeight)); // w:108, h:91
-
- iDummyCutBarBoxOnTransition = TRect( TPoint(iTransitionDisplayRightBox.iTl.iX,
- iTransitionDisplayRightBox.iBr.iY), TSize( iTransitionDisplayRightBox.Width(),
- iDummyCutBarBox.Height() ));
- }
- else //Portrait
- {
- // clip thumbnail pane
- TInt videoScreenX = videoScreenXPortrait;
- TInt videoScreenY = videoScreenYPortrait;
-
- TSize videoScreenSize( videoScreenSizeWidth, videoScreenSizeHeight );
-
- iVideoDisplayBox = TRect( TPoint( videoScreenX, videoScreenY ), videoScreenSize );
- iVideoDisplay->SetRect( iVideoDisplayBox );
-
- //clip cut timeline pane
- TSize cutBarBoxSize = TSize(videoScreenSize.iWidth, STATIC_CAST(TInt,rect.iBr.iY*0.0938 ));
- iDummyCutBarBox = TRect( TPoint(iVideoDisplayBox.iTl.iX,
- iVideoDisplayBox.iBr.iY - iVideoDisplay->GetBorderWidth()), cutBarBoxSize );
- iDummyCutBar->SetRect( iDummyCutBarBox );
- iDummyCutBarLeft->MakeVisible( EFalse );
-
- //clip info pane
- TPoint infoDisplayBoxTl = TPoint(STATIC_CAST(TInt, rect.iBr.iX*0.074),
- STATIC_CAST(TInt, rect.iBr.iY*0.6598 ));
- TSize infoDisplayBoxSize = TSize(STATIC_CAST(TInt, rect.iBr.iX*0.855),
- infoDisplayBoxSizeHeight );
- iInfoDisplayBox = TRect( infoDisplayBoxTl, infoDisplayBoxSize );
-
- //clip indicator pane
- TInt iconWidth = STATIC_CAST( TInt, rect.iBr.iX * 0.07954545455 );
-
- TInt effectSymbolBoxTlX = effectSymbolBoxTlXPortrait;
- TInt effectSymbolBoxTlY = STATIC_CAST( TInt, rect.iBr.iY * 0.131944444 );
- TSize effectSymbolBoxSize = TSize(iconWidth, STATIC_CAST(TInt,rect.iBr.iY * 0.3194444444 ));
-
- iEffectSymbolBox = TRect( TPoint(effectSymbolBoxTlX, effectSymbolBoxTlY), effectSymbolBoxSize);
- iEffectSymbols->SetLandscapeScreenOrientation( landscape );
-
- //pause indicator box (for preview state)
- iPauseIconBox = TRect( iEffectSymbolBox.iTl, TSize(iconWidth, iconWidth) );
-
- //slider controls
- if (iVerticalSlider)
- {
- iVerticalSliderSize = TSize(sliderThickness, iVideoDisplayBox.Height() + iDummyCutBarBox.Height());
- iVerticalSliderPoint = TPoint( rect.Width() - sliderThickness * 2, videoScreenY );
- iVerticalSlider->SetExtent( iVerticalSliderPoint, iVerticalSliderSize );
- }
- if (iHorizontalSlider)
- {
- iHorizontalSliderSize = TSize(videoScreenSize.iWidth, sliderThickness);
- iHorizontalSliderPoint = TPoint( videoScreenX, videoScreenY + videoScreenSize.iHeight + sliderThickness);
- iHorizontalSlider->SetExtent( iHorizontalSliderPoint, iHorizontalSliderSize );
- }
-
- //transition
-
- //ved_clip_thumbnail_start_pane
- TPoint thumbnailStartPaneBoxTl = TPoint(STATIC_CAST(TInt, 0.6705*rect.iBr.iX),
- thumbnailStartPaneBoxTlY);
-
- TSize thumbnailStartPaneBoxSize = TSize(thumbnailStartPaneBoxSizeWidth,
- thumbnailStartPaneBoxSizeHeight);
-
- iTransitionDisplayRightBox = TRect( thumbnailStartPaneBoxTl, thumbnailStartPaneBoxSize );
- iTransitionDisplayRight->SetRect( iTransitionDisplayRightBox );
-
- //ved_clip_thumbnail_end_pane
- TPoint thumbnailEndPaneBoxTl = TPoint(STATIC_CAST(TInt, 0.0116*rect.iBr.iX),
- thumbnailEndPaneBoxTlY );
-
- TSize thumbnailEndPaneBoxSize = thumbnailStartPaneBoxSize;
-
- iTransitionDisplayLeftBox = TRect( thumbnailEndPaneBoxTl, thumbnailEndPaneBoxSize );
- iTransitionDisplayLeft->SetRect( iTransitionDisplayLeftBox );
-
- TInt SlowMotionBoxTlX = STATIC_CAST( TInt, rect.iBr.iX * 0.3 );
- TInt SlowMotionBoxTlY = STATIC_CAST( TInt, rect.iBr.iY * 0.65 );
- TInt SlowMotionBoxBrX = STATIC_CAST( TInt, rect.iBr.iX * 0.7 );
- TInt SlowMotionBoxBrY = STATIC_CAST( TInt, rect.iBr.iY * 0.76 );
-
- iSlowMotionBox = TRect(SlowMotionBoxTlX, SlowMotionBoxTlY, SlowMotionBoxBrX,
- SlowMotionBoxBrY);
-
- //ved_transition_info_pane
- TPoint transitionArrowsBoxTl = TPoint(STATIC_CAST(TInt, 0.0116*rect.iBr.iX),
- STATIC_CAST(TInt,0.4792*rect.iBr.iY ) );
-
- TSize transitionArrowsBoxSize = TSize(STATIC_CAST(TInt, 0.9773*rect.iBr.iX),
- STATIC_CAST(TInt,0.2848*rect.iBr.iY ) );
-
- iTransitionArrowsBox = TRect( transitionArrowsBoxTl, transitionArrowsBoxSize );
-
-
- TInt widthAndheight = STATIC_CAST( TInt, rect.iBr.iX * 0.068182 );
-
- iInfoDisplay->SetArrowSize(TSize( widthAndheight, widthAndheight ));
- iArrowsDisplay->SetArrowSize(TSize( widthAndheight, widthAndheight ));
-
- // video display when cursor is on transition.
- iVideoDisplayBoxOnTransition = TRect( TPoint(STATIC_CAST( TInt, 0.341*rect.iBr.iX),
- iTransitionDisplayLeftBox.iTl.iY), iTransitionDisplayRightBox.Size() );
-
- iDummyCutBarBoxOnTransition = TRect( TPoint(iTransitionDisplayRightBox.iTl.iX,
- iTransitionDisplayRightBox.iBr.iY - iVideoDisplay->GetBorderWidth()),
- TSize( iTransitionDisplayRightBox.Width(), iDummyCutBarBox.Height() ));
- }
-
- iInfoDisplay->SetRect( iInfoDisplayBox );
- iInfoDisplay->SetLandscapeScreenOrientation( landscape );
- iArrowsDisplay->SetRect(iSlowMotionBox);
-
- AknIconUtils::SetSize( iNoThumbnailIcon, TSize( iVideoDisplayBox.Size() ) );
- AknIconUtils::SetSize( iAudioIcon, TSize( iVideoDisplayBox.Size() ) );
- AknIconUtils::SetSize( iPauseBitmap, TSize( iPauseIconBox.Size() ), EAspectRatioNotPreserved );
-
- // Update iconbox after screen rotation
- iEffectSymbols->SetRect( iEffectSymbolBox );
- if ( CursorLocation() == ECursorOnTransition &&
- iView.EditorState() != CVeiEditVideoView::EPreview )
- {
- SetCursorLocation( CursorLocation() );
- }
-
- iArrowsDisplay->DrawDeferred();
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer SizeChanged: Out");
- }
-
-TInt CVeiEditVideoContainer::CurrentIndex() const
- {
- if ((iCursorLocation == ECursorOnAudio) ||
- (iCursorLocation == ECursorOnEmptyAudioTrack))
- {
- return iAudioCursorPos;
- }
- else
- {
- if ( iCursorLocation == ECursorOnEmptyVideoTrack )
- {
- return iMovie.VideoClipCount() - 1;
- }
-
- return iVideoCursorPos;
- }
- }
-
-TUint CVeiEditVideoContainer::GetAndDecrementCurrentIndex()
- {
- TUint ret = 0;
-
- if ( iCursorLocation == ECursorOnClip )
- {
- ret = iVideoCursorPos;
- if ( iVideoCursorPos > 0 )
- {
- iVideoCursorPos--;
- }
- }
- else if ( iCursorLocation == ECursorOnAudio )
- {
- ret = iAudioCursorPos;
- if ( iAudioCursorPos > 0 )
- {
- iAudioCursorPos--;
- }
- }
- else
- {
- User::Panic( _L("VideoEditor"), 0 );
- }
- return ret;
- }
-
-void CVeiEditVideoContainer::GetThumbAtL( const TTimeIntervalMicroSeconds& aTime )
- {
- LOGFMT(KVideoEditorLogFile, "CVeiEditVideoContainer::GetThumbAtL: In, iFrameReady:%d", iFrameReady);
- if( !iTempVideoInfo || !iFrameReady )
- {
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::GetThumbAtL: 1");
- return;
- }
-
- TSize resolution( iTempVideoInfo->Resolution() );
- TInt frameIndex = iTempVideoInfo->GetVideoFrameIndexL( aTime );
-
- TInt totalFrameCount = iTempVideoInfo->VideoFrameCount();
- iFrameReady = EFalse;
- if ( frameIndex > totalFrameCount )
- {
- frameIndex = totalFrameCount;
- }
-
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::GetThumbAtL: 2");
- /* :
- check out on every phone before releasing whether videodisplay should be stopped before starting
- asynchronous GetFrameL()
- see how EStateGettingFrame is handled in SetPreviewState
- Stopping frees memory and it is needed in memory sensible devices
- */
- iTempVideoInfo->GetFrameL( *this, frameIndex, &resolution );
- SetPreviewState(EStateGettingFrame);
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::GetThumbAtL: Out");
- }
-
-void CVeiEditVideoContainer::StartZooming()
- {
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::StartZooming: In");
-
- const TUint delay = 90000;
-
- if (iView.EditorState() != CVeiEditVideoView::EQuickPreview )
- {
- iZoomFactorX = 0;
- iZoomFactorY = 0;
- }
- else
- {
- iZoomFactorX = KMaxZoomFactorX;
- iZoomFactorY = KMaxZoomFactorY;
- }
-
- if ( iZoomTimer->IsActive() )
- {
- iZoomTimer->Cancel();
- }
- iZoomTimer->Start( delay, delay, TCallBack( CVeiEditVideoContainer::Update, this ) );
-
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::StartZooming: Out");
- }
-
-TKeyResponse CVeiEditVideoContainer::HandleScrollBarL (
- const TKeyEvent & aKeyEvent,
- TEventCode aType
- )
- {
- TKeyResponse ret = EKeyWasNotConsumed;
-
- if (EEventKey == aType)
- {
- switch (aKeyEvent.iCode)
- {
-
- case EKeyDownArrow:
- {
- iVerticalSlider->Increment();
- iVerticalSlider->DrawDeferred();
- ret = EKeyWasConsumed;
- break;
- }
- case EKeyUpArrow:
- {
- iVerticalSlider->Decrement();
- iVerticalSlider->DrawDeferred();
- ret = EKeyWasConsumed;
- break;
- }
-
- case EKeyLeftArrow:
- {
- iHorizontalSlider->Decrement();
- iHorizontalSlider->DrawDeferred();
- ret = EKeyWasConsumed;
- break;
- }
- case EKeyRightArrow:
- {
- iHorizontalSlider->Increment();
- iHorizontalSlider->DrawDeferred();
- ret = EKeyWasConsumed;
- break;
- }
-
- case EKeyOK:
- {
- ret = EKeyWasConsumed;
- break;
- }
-
- /*case EKeyLeftArrow:
- case EKeyRightArrow:
- {
- ret = EKeyWasConsumed;
- break;
- }*/
-
- default:
- {
- break;
- }
- }
- }
-
- return ret;
- }
-
-
-TKeyResponse CVeiEditVideoContainer::OfferKeyEventL(const TKeyEvent& aKeyEvent, TEventCode aType)
- {
- if (EModeMixingAudio == iSelectionMode || EModeAdjustVolume == iSelectionMode)
- {
- CVeiEditVideoView::TEditorState editorState = iView.EditorState();
- if (CVeiEditVideoView::EMixAudio == editorState ||
- CVeiEditVideoView::EAdjustVolume == editorState)
- {
- TKeyResponse ret = HandleScrollBarL(aKeyEvent, aType);
- DrawDeferred();
- return ret;
- }
- }
-
- if ( iSeeking )
- {
- DoUpdatePosition();
- }
-
- if ( aType == EEventKeyDown )
- {
-
- if ( iView.EditorState() == CVeiEditVideoView::EPreview )//large preview
- {
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::OfferKeyEventL preview back");
- iVideoDisplay->Stop( ETrue );
- iBackKeyPressed = ETrue;
- SetBlackScreen( EFalse );
- }
-
- iKeyRepeatCount = 0;
-
- // Shift key check. move clip - state
- TBool shiftKeyPressed = (aKeyEvent.iModifiers & EModifierShift );
- if( shiftKeyPressed )
- {
- if ( (iView.EditorState() == CVeiEditVideoView::EPreview ) &&
- (iPreviewState == EStatePlaying ))//large preview
- {
- iVideoDisplay->Stop( ETrue );
-
- iView.SetFullScreenSelected( EFalse );
- SetBlackScreen( EFalse );
- return EKeyWasConsumed;
- }
- else if (((((iCursorLocation == ECursorOnClip) && (iMovie.VideoClipCount()>1) ) && (iView.EditorState() != CVeiEditVideoView::EQuickPreview)) ||
- ( (iCursorLocation == ECursorOnAudio) && (iMovie.AudioClipCount()>0) ) ) &&
- iSelectionMode == EModeNavigation )
- {
- iView.ProcessCommandL( EVeiCmdEditVideoViewEditVideoMove );
- return EKeyWasConsumed;
- }
- else if (iView.EditorState() == CVeiEditVideoView::EQuickPreview)
- {
- if( iView.IsEnoughFreeSpaceToSaveL() && !iTakeSnapshot )
- {
- /*if (EStatePlaying == iPreviewState)
- {
- PauseVideoL();
- }
- */
- TakeSnapshotL();
- return EKeyWasConsumed;
- }
- }
- return EKeyWasNotConsumed;
- }
- //Check that it's a seeking key and we're in a suitable state.
- if ( iPreviewState != EStatePlaying )
- {
- return EKeyWasNotConsumed;
- }
-
- iSeekPos = iVideoDisplay->PositionL();
-
- return EKeyWasConsumed;
- }
- else if ( aType == EEventKeyUp )
- {
- iBackKeyPressed = EFalse;
-
- if ( (iView.EditorState() == CVeiEditVideoView::EPreview ) &&
- (iPreviewState == EStatePaused ))//large preview
- {
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::OfferKeyEventL preview back");
- iVideoDisplay->Stop( ETrue );
- iBackKeyPressed = ETrue;
- SetBlackScreen( EFalse );
- }
-
-
- if ( iSeeking == EFalse )
- {
- return EKeyWasNotConsumed;
- }
- iLastPosition = iSeekPos;
-
- iSeeking = EFalse;
-
- if ( (iPreviewState == EStatePaused || iPreviewState == EStateStopped) &&
- (iLastKeyCode == EKeyLeftArrow || iLastKeyCode == EKeyRightArrow) )
- {
- GetThumbAtL( iSeekPos );
- return EKeyWasConsumed;
- }
- else if ( iPreviewState == EStatePlaying )
- {
- if ( iTempVideoInfo && (iSeekPos >= iTempVideoInfo->Duration().Int64()) )
- {
- iVideoDisplay->Stop( EFalse );
- }
- else
- {
- iVideoDisplay->SetPositionL( iSeekPos );
- iVideoDisplay->ShowBlackScreen();
- DrawDeferred();
- if ( iTempVideoInfo && !iFrameReady)
- {
- iTempVideoInfo->CancelFrame();
- }
- iVideoDisplay->Play();
- }
- return EKeyWasConsumed;
- }
- else
- {
- return EKeyWasConsumed;
- }
- }
- else if ( aType == EEventKey )
- {
- iLastKeyCode = aKeyEvent.iCode;
- iKeyRepeatCount++;
-
- if( iBackKeyPressed )
- {
- iView.SetFullScreenSelected( EFalse );
- }
-
- if ( iView.EditorState() == CVeiEditVideoView::EPreview )//large preview
- {
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::OfferKeyEventL preview back");
- iVideoDisplay->Stop( ETrue );
- iBackKeyPressed = ETrue;
- SetBlackScreen( EFalse );
- }
-
- switch ( aKeyEvent.iCode )
- {
- case EKeyOK:
- {
- if ( iBackKeyPressed )
- {
- return EKeyWasNotConsumed;
- }
- if ( iView.EditorState() == CVeiEditVideoView::EPreview )
- {
- iView.HandleCommandL( EAknSoftkeyBack );
- return EKeyWasConsumed;
- }
-
- if ( ( iCursorLocation == ECursorOnClip && iMovie.VideoClipCount() == 0 ) ||
- ( iCursorLocation == ECursorOnEmptyVideoTrack ) )
- {
- iView.Popup()->ShowInsertStuffPopupList();
- }
- else if ( ( iSelectionMode == EModeRecordingSetStart ) ||
- ( iSelectionMode == EModeRecording ) ||
- ( iSelectionMode == EModeRecordingPaused ) )
- {
- return EKeyWasConsumed;
- }
- else if ( ( iCursorLocation == ECursorOnAudio && iMovie.AudioClipCount() == 0 ) ||
- ( iCursorLocation == ECursorOnEmptyAudioTrack ) )
- {
- iView.Popup()->ShowInsertAudioPopupList();
- }
- else if ( ( iCursorLocation == ECursorOnClip || iCursorLocation == ECursorOnAudio )
- && ( iSelectionMode == EModeMove ) )
- {
- iView.HandleCommandL( EAknSoftkeyOk );
- }
-
- else if (iCursorLocation == ECursorOnClip && iSelectionMode == EModeDuration)
- {
- iView.HandleCommandL( EAknSoftkeyOk );
- }
- else if( iSelectionMode == EModeSlowMotion && iCursorLocation == ECursorOnClip )
- {
- SetSelectionMode( CVeiEditVideoContainer::EModeSlowMotion );
- iView.HandleCommandL( EAknSoftkeyOk );
- iInfoDisplay->SetSlowMotionOn( EFalse );
- iInfoDisplay->SetLayout( CVeiTextDisplay::ENameAndDuration );
-
- ArrowsControl();
- }
- else if ( iSelectionMode == EModeDuration && iCursorLocation == ECursorOnAudio )
- {
- iView.HandleCommandL( EAknSoftkeyOk );
- }
-
- else
- {
- if (EStateGettingFrame != iPreviewState && EStateBuffering != iPreviewState &&
- EStateTerminating != iPreviewState && EStateOpening != iPreviewState)
- {
- iView.ProcessCommandL( EVeiCmdEditVideoViewContainerShowMenu );
- }
- }
-
- return EKeyWasConsumed;
- }// case EKeyOk
-
- case EKeyRightArrow:
- {
- if ( iView.EditorState() == CVeiEditVideoView::EQuickPreview )
- {
- if ( (iKeyRepeatCount > 2) && (iSeeking == EFalse) )
- {
- if ( iPreviewState == EStatePlaying )
- {
- iLastPosition = iVideoDisplay->PositionL();
- iSeekPos = iVideoDisplay->PositionL();
- }
-
- iVideoDisplay->PauseL();
- if (iPeriodic)
- {
- iPeriodic->Cancel();
- }
- iSeeking = ETrue;
- iKeyRepeatCount = 0;
- }
-
- if ( iSeeking &&( iPreviewState == EStateStopped ) ||
- ( iPreviewState == EStatePlaying ) ||
- ( iPreviewState == EStatePaused ) )
- {
- TInt adjustment = TimeIncrement( iKeyRepeatCount );
-
- TInt64 newPos = iSeekPos.Int64() + adjustment;
-
- if ( iTempVideoInfo && (newPos > iTempVideoInfo->Duration().Int64()) )
- {
- newPos = iTempVideoInfo->Duration().Int64();
- }
-
- iSeekPos = TTimeIntervalMicroSeconds( newPos );
-
- iView.DoUpdateEditNaviLabelL();
- return EKeyWasConsumed;
- }
- }
-
- if ( iView.EditorState() != CVeiEditVideoView::EEdit || iBackKeyPressed )
- {
- return EKeyWasNotConsumed;
- }
- if ( iCursorLocation == ECursorOnClip )
- {
- //SM - RIGHT = MORE
- if((iSelectionMode == EModeSlowMotion) && (iCursorLocation == ECursorOnClip))
- {
- if( iSlowMotionValue < 1000)
- {
- iVideoDisplay->SetFrameIntervalL( -25 );
- iSlowMotionValue = iSlowMotionValue + 50;
- iMovie.VideoClipSetSpeed( CurrentIndex(), iSlowMotionValue );
- iArrowsDisplay->SetSlowMotionPreset( iSlowMotionValue / 10);
- ArrowsControl();
- }
- return EKeyWasConsumed;
- }
-
- if ( iSelectionMode == EModeNavigation )
- {
- if ( iMovie.VideoClipCount() > 0 )
- {
- ++iVideoCursorPos;
- SetCursorLocation( ECursorOnTransition );
- }
- }
- else
- {
- if ( ( iSelectionMode == EModeMove ) && ( iVideoCursorPos < iMovie.VideoClipCount() - 1 ) )
- {
- TInt oldplace = iVideoCursorPos;
- ++iVideoCursorPos;
- iMovie.VideoClipSetIndex( oldplace, iVideoCursorPos );
- }
- }
-
- if (iSelectionMode == EModeDuration)
- {
- CVedVideoClipInfo* info = iMovie.VideoClipInfo( iVideoCursorPos );
-
- TInt64 newDurationInt = iMovie.VideoClipEditedDuration( iVideoCursorPos ).Int64() + TimeIncrement(iKeyRepeatCount);
-
- if (info->Class() == EVedVideoClipClassGenerated)
- {
- if (info->Generator()->Uid() == KUidTitleClipGenerator)
- {
- CVeiTitleClipGenerator* generator = STATIC_CAST(CVeiTitleClipGenerator*, info->Generator());
- generator->SetDuration(TTimeIntervalMicroSeconds(newDurationInt));
- }
- else if (info->Generator()->Uid() == KUidImageClipGenerator)
- {
- CVeiImageClipGenerator* generator = STATIC_CAST(CVeiImageClipGenerator*, info->Generator());
- generator->SetDuration(TTimeIntervalMicroSeconds(newDurationInt));
- }
- }
- }
-
- } // if ( iCursorLocation == ECursorOnClip )
-
- else if ( iCursorLocation == ECursorOnTransition )
- {
- if ( iVideoCursorPos < iMovie.VideoClipCount() )
- {
- SetCursorLocation( ECursorOnClip );
- }
- else
- {
- SetCursorLocation( ECursorOnEmptyVideoTrack );
- }
- }
- else if ( iCursorLocation == ECursorOnAudio )
- {
- if ( iSelectionMode == EModeNavigation )
- {
- if ( iAudioCursorPos < iMovie.AudioClipCount() - 1 )
- {
- ++iAudioCursorPos;
- SetCursorLocation( ECursorOnAudio );
- }
- else
- {
- SetCursorLocation( ECursorOnEmptyAudioTrack );
- }
- }
- else if ( iSelectionMode == EModeMove )
- {
- return MoveAudioRight();
- }
- else if (iSelectionMode == EModeDuration)
- {
-
- TTimeIntervalMicroSeconds clipCutOutTime = iMovie.AudioClipCutOutTime( iAudioCursorPos );
-
- TInt64 newEndTimeInt = clipCutOutTime.Int64() + TimeIncrement(iKeyRepeatCount);
-
- if (iAudioCursorPos < (iMovie.AudioClipCount() - 1))
- {
- TInt64 nextStartTimeInt = iMovie.AudioClipStartTime( iAudioCursorPos + 1 ).Int64();
- TInt64 currentEndTimeInt = iMovie.AudioClipEndTime( iAudioCursorPos ).Int64() + TimeIncrement(iKeyRepeatCount);
-
- if ( currentEndTimeInt > nextStartTimeInt)
- {
- newEndTimeInt = nextStartTimeInt - iMovie.AudioClipStartTime( iAudioCursorPos ).Int64();
- }
- }
- CVedAudioClipInfo* audioclipinfo = iMovie.AudioClipInfo( iAudioCursorPos );
- if (newEndTimeInt > audioclipinfo->Duration().Int64() )
- {
- newEndTimeInt = audioclipinfo->Duration().Int64();
- }
- iMovie.AudioClipSetCutOutTime( iAudioCursorPos, TTimeIntervalMicroSeconds( newEndTimeInt ) );
- }
- } // else if ( iCursorLocation == ECursorOnAudio )
- DrawDeferred();
-
- return EKeyWasConsumed;
- } // case EKeyRightArrow
- case EKeyLeftArrow:
- {
- if ( iView.EditorState() == CVeiEditVideoView::EQuickPreview )
- {
- iKeyRepeatCount++;
-
- if ( (iKeyRepeatCount > 2) && (iSeeking == EFalse) )
- {
-
- if ( iPreviewState == EStatePlaying )
- {
- iLastPosition = iVideoDisplay->PositionL();
- iSeekPos = iVideoDisplay->PositionL();
- }
-
- iVideoDisplay->PauseL();
- if (iPeriodic)
- {
- iPeriodic->Cancel();
- }
- iSeeking = ETrue;
-
- iKeyRepeatCount = 0;
- }
-
- if ( iSeeking&&( iPreviewState == EStateStopped ) ||
- ( iPreviewState == EStatePlaying ) ||
- ( iPreviewState == EStatePaused ) )
- {
- TInt adjustment = TimeIncrement( iKeyRepeatCount );
-
- TInt64 newPos = iSeekPos.Int64() - adjustment;
- if ( newPos < 0 )
- {
- newPos = 0;
- }
- iSeekPos = TTimeIntervalMicroSeconds( newPos );
-
- iView.DoUpdateEditNaviLabelL();
- return EKeyWasConsumed;
- }
- }
-
- if ( iView.EditorState() != CVeiEditVideoView::EEdit || iBackKeyPressed )
- {
- return EKeyWasNotConsumed;
- }
- if ( iCursorLocation == ECursorOnClip )
- {
- // SM - LEFT = LESS
- if(( iSelectionMode == EModeSlowMotion) && (iCursorLocation == ECursorOnClip))
- {
-
- if( iSlowMotionValue > 250)
- {
- iVideoDisplay->SetFrameIntervalL( 25 );
- iSlowMotionValue = iSlowMotionValue - 50;
- iMovie.VideoClipSetSpeed( CurrentIndex(), iSlowMotionValue );
- iArrowsDisplay->SetSlowMotionPreset( iSlowMotionValue / 10);
- ArrowsControl();
- }
- return EKeyWasConsumed;
- }
-
-
- if ( iSelectionMode == EModeNavigation )
- {
- if ( iMovie.VideoClipCount() > 0 )
- {
- SetCursorLocation( ECursorOnTransition );
- }
- }
- else
- {
- if ( ( iSelectionMode == EModeMove ) && ( iVideoCursorPos > 0 ) )
- {
- TInt oldplace = iVideoCursorPos;
- iVideoCursorPos--;
- iMovie.VideoClipSetIndex( oldplace, iVideoCursorPos );
- }
- }
-
- if (iSelectionMode == EModeDuration)
- {
- TInt64 newDurationInt = iMovie.VideoClipEditedDuration(iVideoCursorPos).Int64() - TimeIncrement(iKeyRepeatCount);
-
- if (newDurationInt < 1000000)
- {
- newDurationInt = 1000000;
- }
-
- CVedVideoClipInfo* info = iMovie.VideoClipInfo(iVideoCursorPos);
- if (info->Class() == EVedVideoClipClassGenerated)
- {
- if (info->Generator()->Uid() == KUidTitleClipGenerator)
- {
- CVeiTitleClipGenerator* generator = STATIC_CAST(CVeiTitleClipGenerator*, info->Generator());
- generator->SetDuration(TTimeIntervalMicroSeconds(newDurationInt));
- }
- else if (info->Generator()->Uid() == KUidImageClipGenerator)
- {
- CVeiImageClipGenerator* generator = STATIC_CAST(CVeiImageClipGenerator*, info->Generator());
- generator->SetDuration(TTimeIntervalMicroSeconds(newDurationInt));
- }
- }
- }
-
- }
- else if ( iCursorLocation == ECursorOnTransition )
- {
- if ( iVideoCursorPos > 0 )
- {
- --iVideoCursorPos;
- SetCursorLocation( ECursorOnClip );
- }
- }
- else if ( iCursorLocation == ECursorOnAudio )
- {
- if ( iSelectionMode == EModeNavigation )
- {
- if ( iAudioCursorPos > 0 )
- {
- iAudioCursorPos--;
- SetCursorLocation( ECursorOnAudio );
- }
- }
- else if (iSelectionMode == EModeMove)
- {
- return MoveAudioLeft();
- }
- else if (iSelectionMode == EModeDuration)
- {
-
- TInt64 newDurationInt = iMovie.AudioClipCutOutTime( iAudioCursorPos ).Int64() - TimeIncrement(iKeyRepeatCount);
- if (newDurationInt < 1000000)
- {
- newDurationInt = 1000000;
- }
- TInt64 newEndTimeInt = iMovie.AudioClipStartTime( iAudioCursorPos ).Int64() + newDurationInt;
- for (TInt i = iMovie.VideoClipCount() - 1; i >= 0; i--)
- {
- if ( ( iMovie.AudioClipEndTime( iAudioCursorPos ) > iMovie.VideoClipEndTime( i ) ) &&
- TTimeIntervalMicroSeconds(newEndTimeInt) < iMovie.VideoClipEndTime( i ) )
- {
- newDurationInt = iMovie.VideoClipEndTime( i ).Int64() - iMovie.AudioClipStartTime( iAudioCursorPos ).Int64();
- break;
- }
- }
- if ( newDurationInt < ( iMovie.AudioClipCutInTime( iAudioCursorPos ).Int64() ) )
- {
- newDurationInt = iMovie.AudioClipCutInTime( iAudioCursorPos ).Int64();
- }
- iMovie.AudioClipSetCutOutTime( iAudioCursorPos, TTimeIntervalMicroSeconds( newDurationInt ) );
- }
- }
-
- else if ( iCursorLocation == ECursorOnEmptyVideoTrack )
- {
- if ( iMovie.VideoClipCount() > 0 )
- {
- SetCursorLocation( ECursorOnTransition );
- }
- }
- else if ( iCursorLocation == ECursorOnEmptyAudioTrack )
- {
- if ( iMovie.AudioClipCount() > 0 )
- {
- SetCursorLocation( ECursorOnAudio );
- }
- }
-
- DrawDeferred();
- return EKeyWasConsumed;
- } // EKeyLeftArrow
-
- case EKeyUpArrow:
- case EStdKeyIncVolume:
- {
- if ( iView.EditorState() != CVeiEditVideoView::EEdit || iBackKeyPressed )
- {
- if ( iView.EditorState() == CVeiEditVideoView::EQuickPreview )
- {
- iVideoDisplay->OfferKeyEventL( aKeyEvent, aType );
- return EKeyWasConsumed;
- }
- return EKeyWasNotConsumed;
- }
- if ( ((iCursorLocation==ECursorOnAudio) || (iCursorLocation==ECursorOnEmptyAudioTrack) )
- && (iSelectionMode == EModeNavigation ) )
- {
- SetCursorLocation( iPrevCursorLocation );
- DrawDeferred();
- return EKeyWasConsumed;
- }
- else if ( iCursorLocation == ECursorOnTransition )
- {
- iView.HandleCommandL( EVeiCmdEditVideoViewTransitionKeyUp );
- return EKeyWasConsumed;
- }
- else
- {
- return EKeyWasNotConsumed;
- }
- }
- case EKeyDownArrow:
- case EStdKeyDecVolume:
- {
- if ( iView.EditorState() != CVeiEditVideoView::EEdit || iBackKeyPressed )
- {
- if ( iView.EditorState() == CVeiEditVideoView::EQuickPreview )
- {
- iVideoDisplay->OfferKeyEventL( aKeyEvent, aType );
- return EKeyWasConsumed;
- }
- return EKeyWasNotConsumed;
- }
- if ( iCursorLocation == ECursorOnTransition )
- {
- iView.HandleCommandL( EVeiCmdEditVideoViewTransitionKeyDown );
- return EKeyWasConsumed;
- }
- else if ( (iCursorLocation != ECursorOnAudio )&& (iSelectionMode == EModeNavigation) &&
- (iCursorLocation != ECursorOnEmptyAudioTrack ) )
- {
- iPrevCursorLocation = iCursorLocation;
- SetCursorLocation( ECursorOnAudio );
- DrawDeferred();
- return EKeyWasConsumed;
- }
- else
- {
- return EKeyWasNotConsumed;
- }
- }
- case EKeyBackspace: //Clear 0x08
- {
- if ( iView.EditorState() != CVeiEditVideoView::EEdit || iBackKeyPressed )
- {
- return EKeyWasNotConsumed;
- }
- if ( ( ( iCursorLocation == ECursorOnClip ) || ( iCursorLocation == ECursorOnAudio ) )
- && ( ( iMovie.VideoClipCount() > 0 ) || ( iMovie.AudioClipCount() > 0 ) ) && ( iSelectionMode == EModeNavigation ) )
- {
- iView.ProcessCommandL( EVeiCmdEditVideoViewEditVideoRemove );
- return EKeyWasConsumed;
- }
- else if ((iCursorLocation == ECursorOnTransition) && (iSelectionMode == EModeNavigation))
- {
- iView.ProcessCommandL( EVeiCmdEditVideoViewTransitionNone );
- }
- else if ( ( iSelectionMode == EModeSlowMotion ))
- {
- return EKeyWasNotConsumed;
- }
- return EKeyWasNotConsumed;
- }
- case EKeyYes: //Send 63586
- {
- if ( iView.EditorState() != CVeiEditVideoView::EEdit || iBackKeyPressed )
- {
- return EKeyWasNotConsumed;
- }
- if ( iSelectionMode == EModeNavigation )
- {
- iView.SetSendKey( ETrue );
- iView.ProcessCommandL( EVeiCmdSendMovie );
- return EKeyWasConsumed;
- }
- break;
- }
- default:
- {
- return EKeyWasNotConsumed;
- }
- }
- }
- return EKeyWasNotConsumed;
- }
-
-
-TKeyResponse CVeiEditVideoContainer::MoveAudioLeft()
- {
- TInt i;
-
- TInt index = iAudioCursorPos;
-
- if ( iAudioCursorPos > 0 )
- {
- TTimeIntervalMicroSeconds startTime = iMovie.AudioClipStartTime( iAudioCursorPos ); //second
- TTimeIntervalMicroSeconds prevEndTime = iMovie.AudioClipEndTime( iAudioCursorPos-1 ); //first
-
- if ( startTime == prevEndTime )
- {
- TInt newIndex = iAudioCursorPos - 1;
- while ( newIndex > 0 )
- {
- TTimeIntervalMicroSeconds newNextStartTime = iMovie.AudioClipStartTime( newIndex ); //first
- TTimeIntervalMicroSeconds newPrevEndTime = iMovie.AudioClipEndTime( newIndex - 1);
-
- if ( newPrevEndTime == newNextStartTime )
- {
- newIndex--;
- }
- else
- {
- break;
- }
- }
- if ( ( newIndex == 0 ) && ( iMovie.AudioClipStartTime( 0 ) == TTimeIntervalMicroSeconds(0) ) )
- {
- return EKeyWasConsumed;
- }
-
- TInt64 newEndTimeInt = iMovie.AudioClipStartTime( newIndex ).Int64(); //first
-
- TInt64 newStartTimeInt = newEndTimeInt - iView.OriginalAudioDuration().Int64();
-
- TInt64 newCutOutTimeInt = (newEndTimeInt - newStartTimeInt) + iMovie.AudioClipCutInTime( index ).Int64();
-
- if (newStartTimeInt < 0)
- {
- newStartTimeInt = 0;
- }
-
- if ( newIndex > 0 )
- {
- TInt64 newPrevEndTimeInt = iMovie.AudioClipEndTime( newIndex - 1 ).Int64();
- if ( newStartTimeInt < newPrevEndTimeInt )
- {
- newStartTimeInt = newPrevEndTimeInt;
- }
- }
-
- if ( (newCutOutTimeInt+newStartTimeInt) > iMovie.AudioClipStartTime( index - 1 ).Int64() )
- {
- TInt64 audioStartTime = iMovie.AudioClipStartTime( index - 1 ).Int64();
- newCutOutTimeInt = (audioStartTime - newStartTimeInt) + iMovie.AudioClipCutInTime( index ).Int64();
- }
-
- iMovie.AudioClipSetStartTime( index,TTimeIntervalMicroSeconds( newStartTimeInt ) );
- iMovie.AudioClipSetCutOutTime( newIndex, TTimeIntervalMicroSeconds( newCutOutTimeInt ) );
-
- iAudioCursorPos = newIndex;
-
- DrawDeferred();
-
- return EKeyWasConsumed;
- }
- }
-
- TTimeIntervalMicroSeconds audioclipstart = iMovie.AudioClipStartTime( index );
- TTimeIntervalMicroSeconds audioclipend = iMovie.AudioClipEndTime( index );
- TInt64 audioclipeditedduration = iMovie.AudioClipEditedDuration( index ).Int64();
-
- TInt64 newStartTimeInt = audioclipstart.Int64() - TimeIncrement( iKeyRepeatCount );
-
- if ( newStartTimeInt < 0 )
- {
- newStartTimeInt = 0;
- }
-
- for ( i = iMovie.VideoClipCount() - 1; i >= 0; i-- )
- {
- TTimeIntervalMicroSeconds endtime = iMovie.VideoClipEndTime( i );
-
- if ( ( audioclipstart > endtime ) && TTimeIntervalMicroSeconds(newStartTimeInt) < endtime )
- {
- newStartTimeInt = endtime.Int64();
- break;
- }
- }
-
- TInt64 newEndTimeInt = newStartTimeInt + audioclipeditedduration;
-
- for (i = iMovie.VideoClipCount() - 1; i >= 0; i-- )
- {
- if ((audioclipend > iMovie.VideoClipEndTime(i)) && TTimeIntervalMicroSeconds(newEndTimeInt) < iMovie.VideoClipEndTime(i))
- {
- newStartTimeInt = iMovie.VideoClipEndTime(i).Int64() - audioclipeditedduration;
- break;
- }
- }
-
- if (iAudioCursorPos > 0)
- {
- TInt64 prevEndTimeInt = iMovie.AudioClipEndTime( iAudioCursorPos - 1 ).Int64();
-
- if (newStartTimeInt < prevEndTimeInt)
- {
- newStartTimeInt = prevEndTimeInt;
- }
- }
- iMovie.AudioClipSetStartTime( index, TTimeIntervalMicroSeconds(newStartTimeInt) );
- iAudioCursorPos = index;
- return EKeyWasConsumed;
- }
-
-
-TKeyResponse CVeiEditVideoContainer::MoveAudioRight()
- {
- TInt i;
- TInt index = iAudioCursorPos;
-
- if ( iAudioCursorPos < ( iMovie.AudioClipCount() - 1 ) )
- {
- TTimeIntervalMicroSeconds endTime = iMovie.AudioClipEndTime( iAudioCursorPos );
- TTimeIntervalMicroSeconds nextStartTime = iMovie.AudioClipStartTime( iAudioCursorPos+1 );
-
- if (endTime == nextStartTime)
- {
- TInt newIndex = iAudioCursorPos + 1;
- while ( newIndex < ( iMovie.AudioClipCount() - 1 ) )
- {
- TTimeIntervalMicroSeconds newPrevEndTime = iMovie.AudioClipEndTime( newIndex );
- TTimeIntervalMicroSeconds newNextStartTime = iMovie.AudioClipStartTime( newIndex+1 );
-
- if (newPrevEndTime == newNextStartTime)
- {
- newIndex++;
- }
- else
- {
- break;
- }
- }
-
- TInt64 newStartTimeInt = iMovie.AudioClipEndTime( newIndex ).Int64();
- TInt64 newEndTimeInt = newStartTimeInt + iView.OriginalAudioDuration().Int64();
-
- TInt64 newCutOutTimeInt = (newEndTimeInt - newStartTimeInt) + iMovie.AudioClipCutInTime( index ).Int64();
-
- if ( newIndex < ( iMovie.AudioClipCount()-1 ) )
- {
- TInt64 newNextStartTimeInt = iMovie.AudioClipStartTime(newIndex + 1).Int64();
- if ( newEndTimeInt > newNextStartTimeInt )
- {
- newEndTimeInt = newNextStartTimeInt;
- }
-
- if ( (newCutOutTimeInt+newStartTimeInt) > iMovie.AudioClipStartTime( newIndex + 1 ).Int64() )
- {
- TInt64 audioStartTime = iMovie.AudioClipStartTime( newIndex + 1 ).Int64();
- newCutOutTimeInt = audioStartTime - newStartTimeInt;
- }
- }
-
- iMovie.AudioClipSetStartTime( index,TTimeIntervalMicroSeconds( newStartTimeInt ) );
- iMovie.AudioClipSetCutOutTime( newIndex, TTimeIntervalMicroSeconds( newCutOutTimeInt ) );
-
- iAudioCursorPos = newIndex;
-
- DrawDeferred();
-
- return EKeyWasConsumed;
- }
- }
-
- TInt64 newStartTimeInt = iMovie.AudioClipStartTime( iAudioCursorPos ).Int64() + TimeIncrement( iKeyRepeatCount );
-
- for ( i = 0; i < iMovie.VideoClipCount(); i++ )
- {
- TTimeIntervalMicroSeconds endtime = iMovie.VideoClipEndTime( i );
- TTimeIntervalMicroSeconds audioclipstart = iMovie.AudioClipStartTime( index );
-
- if ( ( audioclipstart < endtime ) && TTimeIntervalMicroSeconds(newStartTimeInt) > endtime )
- {
- newStartTimeInt = endtime.Int64();
- break;
- }
- }
-
- TInt64 audioclipeditedduration = iMovie.AudioClipEditedDuration( index ).Int64();
-
- TInt64 newEndTimeInt = newStartTimeInt + audioclipeditedduration;
- TTimeIntervalMicroSeconds audioclipend = iMovie.AudioClipEndTime( index );
-
- for (i = 0; i < iMovie.VideoClipCount(); i++)
- {
- if ( ( audioclipend < iMovie.VideoClipEndTime(i)) &&
- TTimeIntervalMicroSeconds( newEndTimeInt ) > iMovie.VideoClipEndTime( i ) )
- {
- newStartTimeInt = iMovie.VideoClipEndTime(i).Int64() - audioclipeditedduration;
- break;
- }
- }
-
- if (iAudioCursorPos < (iMovie.AudioClipCount() - 1))
- {
- newEndTimeInt = newStartTimeInt + audioclipeditedduration;
- TInt64 nextStartTimeInt = iMovie.AudioClipStartTime( iAudioCursorPos + 1 ).Int64();
-
- if (newEndTimeInt > nextStartTimeInt)
- {
- newStartTimeInt -= (newEndTimeInt - nextStartTimeInt);
- }
- }
- iMovie.AudioClipSetStartTime( index, TTimeIntervalMicroSeconds(newStartTimeInt) );
- iAudioCursorPos = index;
- return EKeyWasConsumed;
- }
-
-
-TInt CVeiEditVideoContainer::TimeIncrement(TInt aKeyCount) const
- {
- if ( aKeyCount < 3 )
- {
- return 100000;
- }
- else if ( aKeyCount < 4 )
- {
- return 300000;
- }
- else if ( aKeyCount < 5 )
- {
- return 500000;
- }
- else if ( aKeyCount < 19 )
- {
- return 1000000;
- }
- else
- {
- return 5000000;
- }
- }
-
-
-TTimeIntervalMicroSeconds CVeiEditVideoContainer::TotalLength()
- {
- TTimeIntervalMicroSeconds duration = TTimeIntervalMicroSeconds(0);
-
- if ( iVideoDisplay )
- {
- duration = iVideoDisplay->TotalLengthL();
- }
-
- return duration;
- }
-
-// ---------------------------------------------------------
-// CVeiEditVideoContainer::CountComponentControls() const
-// ---------------------------------------------------------
-//
-TInt CVeiEditVideoContainer::CountComponentControls() const
- {
- if (EModeMixingAudio == iSelectionMode || EModeAdjustVolume == iSelectionMode)
- {
- return 9; // return nbr of controls inside this container
- }
- else
- {
- return 10; // return nbr of controls inside this container
- }
- }
-
-// ---------------------------------------------------------
-// CVeiEditVideoContainer::ComponentControl(TInt aIndex) const
-// ---------------------------------------------------------
-//
-CCoeControl* CVeiEditVideoContainer::ComponentControl( TInt aIndex ) const
- {
- switch ( aIndex )
- {
- case 0:
- return iVideoDisplay;
- case 1:
- return iInfoDisplay;
- case 2:
- return iDummyCutBarLeft;
- case 3:
- return iTransitionDisplayLeft;
- case 4:
- return iTransitionDisplayRight;
- case 5:
- return iEffectSymbols;
- case 6:
- return iArrowsDisplay;
- case 7:
- return iVerticalSlider;
- case 8:
- return iHorizontalSlider;
- case 9:
- // this one is not used in modes EModeMixingAudio and EModeAdjustVolume
- if (EModeMixingAudio != iSelectionMode && EModeAdjustVolume != iSelectionMode)
- {
- return iDummyCutBar;
- }
- else
- {
- return NULL;
- }
- default:
- return NULL;
- }
- }
-
-void CVeiEditVideoContainer::SaveSnapshotL()
- {
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::SaveSnapshotL(): in");
-
- //first we have to encode bitmap
- // get encoder types
- RImageTypeDescriptionArray imageTypes;
- iConverter->GetEncoderImageTypesL( imageTypes );
-
- CleanupStack::PushL( TCleanupItem( CleanupRArray, &imageTypes ) );
-
- TInt selectedIdx = 0;
-
- _LIT( KEncoderType, "JPEG" ); // encoder type for image conversion
-
- for( TInt i=0; i<imageTypes.Count(); i++ )
- {
- if ( imageTypes[i]->Description() == KEncoderType )
- {
- selectedIdx = i;
- }
- }
-
- RFs& fs = iEikonEnv->FsSession();
-
- TParse file;
- TFileName newname;
- TFileName snapshotdir;
-
- TVeiSettings saveSettings;
- // Get default snapshot name from settings view
-
- STATIC_CAST( CVeiAppUi*, iEikonEnv->AppUi() )->ReadSettingsL( saveSettings );
-
- CAknMemorySelectionDialog::TMemory memory( saveSettings.MemoryInUse() );
-
- newname.Append( saveSettings.DefaultSnapshotName() );
- newname.Append( _L(".JPEG") );
- file.Set( newname, NULL, NULL );
-
- TInt error = KErrNone;
-
- snapshotdir.Zero();
-
- if ( memory == CAknMemorySelectionDialog::EPhoneMemory )
- {
- snapshotdir.Append( PathInfo::PhoneMemoryRootPath() );
- }
- else
- {
- snapshotdir.Append( PathInfo::MemoryCardRootPath() );
- }
- snapshotdir.Append( PathInfo::ImagesPath() );
-
- error = fs.MkDirAll( file.Path() );
- if ( ( error != KErrAlreadyExists ) && ( error != KErrNone ) )
- {
- return;
- }
-
- newname.Zero();
- newname.Append( file.NameAndExt() );
- newname.Insert( 0, snapshotdir );
- CApaApplication::GenerateFileName( fs, newname );
-
- //for cancellation
- if ( iSaveToFileName )
- {
- delete iSaveToFileName;
- iSaveToFileName = NULL;
- }
- iSaveToFileName = HBufC::NewL( newname.Length() );
- *iSaveToFileName = newname;
-
- // request the actuall save/encode
- // asynchronous, the result is reported via callback NotifyCompletion
- iConverter->StartToEncodeL( newname,
- imageTypes[selectedIdx]->ImageType(), imageTypes[selectedIdx]->SubType() );
-
- /*
- if (iProgressDialog)
- {
- delete iProgressDialog;
- iProgressDialog = NULL;
- }
-
- iProgressDialog =
- new (ELeave) CAknProgressDialog(REINTERPRET_CAST(CEikDialog**,
- &iProgressDialog), ETrue);
- iProgressDialog->SetCallback(this);
- iProgressDialog->ExecuteDlgLD( R_VEI_PROGRESS_NOTE );
-
-
- HBufC* stringholder = StringLoader::LoadLC( R_VEI_PROGRESS_NOTE_SAVING_IMAGE, iEikonEnv );
- iProgressDialog->SetTextL( *stringholder );
- CleanupStack::PopAndDestroy( stringholder );
-
- iProgressDialog->GetProgressInfoL()->SetFinalValue(100);
- */
-
- CleanupStack::PopAndDestroy( &imageTypes );
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::SaveSnapshotL(): out");
- }
-
-
-void CVeiEditVideoContainer::SetFinishedStatus( TBool aStatus )
- {
- iFinished = aStatus;
- iCurrentPoint = 0;
- DrawPlayHead();
- }
-
-TInt CVeiEditVideoContainer::Update( TAny* aThis )
- {
- STATIC_CAST( CVeiEditVideoContainer*, aThis )->DoUpdate();
- return 42;
- }
-
-void CVeiEditVideoContainer::DoUpdate()
- {
- if (iView.EditorState() != CVeiEditVideoView::EQuickPreview )
- {
- iZoomFactorX++;
- iZoomFactorY++;
- if ( iZoomFactorX > KMaxZoomFactorX )
- {
- iZoomFactorX = KMaxZoomFactorX;
- }
- if ( iZoomFactorY > KMaxZoomFactorY )
- {
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::DoUpdate: Zooming completed");
- iZoomTimer->Cancel();
- }
- }
- else
- {
- iZoomFactorX--;
- iZoomFactorY--;
- if ( iZoomFactorX < 0 )
- {
- iZoomFactorX = 0;
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::DoUpdate: Zooming completed");
- iZoomTimer->Cancel();
- }
- if ( iZoomFactorY < 0 )
- {
- iZoomFactorY = 0;
- }
- }
-
- if( iSelectionMode != EModePreview )
- {
- DrawTrackBoxes();
- }
- }
-
-TInt CVeiEditVideoContainer::UpdatePosition( TAny* aThis )
- {
- STATIC_CAST( CVeiEditVideoContainer*, aThis )->DoUpdatePosition();
- return 42;
- }
-
-void CVeiEditVideoContainer::DoUpdatePosition()
- {
-
- TUint time = static_cast<TInt32>(PlaybackPositionL().Int64() / 1000);
-
- //LOGFMT(KVideoEditorLogFile, "CVeiEditVideoContainer::DoUpdatePosition(): 1, time:%d", time);
-
-/** Check if playhead needs to be drawn again*/
- TInt64 barDuration = iMovie.Duration().Int64();
-
- if (barDuration < 30000000)
- {
- barDuration = 30000000;
- }
- else if (barDuration < 45000000)
- {
- barDuration = 45000000;
- }
- else{
- barDuration = ((barDuration / 30000000) + 1) * 30000000;
- }
-
- TInt barWidth = iVideoBarBox.Width();
-
- TInt videoClipCount = iMovie.VideoClipCount();
- TInt audioClipCount = iMovie.AudioClipCount();
- TInt lastVideoClipX(0);
- TTimeIntervalMicroSeconds endTime;
-
- __ASSERT_ALWAYS( ((iMovie.VideoClipCount()>0) || (iMovie.AudioClipCount()>0)),
- User::Panic( _L("VideoEditor" ), 34 ) );
-
-
- if (( videoClipCount > 0 ) && ( audioClipCount > 0 ))
- {
- TTimeIntervalMicroSeconds videoClipEndTime = iMovie.VideoClipEndTime( videoClipCount-1 );
- TTimeIntervalMicroSeconds audioClipEndTime = iMovie.AudioClipEndTime( audioClipCount-1 );
- if ( videoClipEndTime > audioClipEndTime )
- {
- endTime = videoClipEndTime;
- }
- else
- {
- endTime = audioClipEndTime;
- }
- }
- else if ( videoClipCount > 0 )
- {
- endTime = iMovie.VideoClipEndTime( videoClipCount-1 );
- }
- else
- {
- endTime = iMovie.AudioClipEndTime( audioClipCount-1 );
- }
-
- lastVideoClipX = iVideoBarBox.iTl.iX
- + static_cast<TInt32>((((endTime.Int64() * barWidth)) / barDuration)) + 1;
-
- TInt width = lastVideoClipX - iVideoBarBox.iTl.iX;
-
- TUint totalTime = static_cast<TInt32>(iMovie.Duration().Int64() /1000);
- TInt nextPosition = time * width / totalTime + iVideoBarBox.iTl.iX;
-
- if ( nextPosition != iCurrentPointX )
- {
- iCurrentPoint = time;
- DrawPlayHead();
- }
- else
- {
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::DoUpdatePosition 3, drawplayhead skipped");
- }
- }
-
-void CVeiEditVideoContainer::PlayVideoFileL( const TDesC& aFilename, const TBool& aFullScreen )
- {
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::PlayVideoFileL(): In");
-
- if ( iTempFileName )
- {
- delete iTempFileName;
- iTempFileName = NULL;
- }
-
- iTempFileName = HBufC::NewL(KMaxFileName);
- *iTempFileName = aFilename;
-
- // Get default movie name from settings view
-
- TFileName newname;
- TVeiSettings movieSaveSettings;
-
- STATIC_CAST( CVeiAppUi*, iEikonEnv->AppUi() )->ReadSettingsL( movieSaveSettings );
-
- newname.Append( movieSaveSettings.DefaultVideoName() );
- iInfoDisplay->SetName( newname );
-
- TTimeIntervalMicroSeconds movieDuration = iMovie.Duration();
- iInfoDisplay->SetDuration( movieDuration );
-
- if ( iTempVideoInfo )
- {
- delete iTempVideoInfo;
- iTempVideoInfo = 0;
- }
- iFullScreenSelected = aFullScreen;
-
- if ( iCursorLocation == ECursorOnTransition )
- {
- iTransitionDisplayLeft->MakeVisible( EFalse );
- iTransitionDisplayRight->MakeVisible( EFalse );
- iArrowsDisplay->SetUpperArrowVisibility( EFalse );
- iArrowsDisplay->SetLowerArrowVisibility( EFalse );
- iDummyCutBar->SetRect( iDummyCutBarBox );
- }
- iInfoDisplay->MakeVisible( EFalse );
- iDummyCutBar->MakeVisible( EFalse );
- iDummyCutBarLeft->MakeVisible( EFalse );
- iEffectSymbols->MakeVisible( EFalse );
- iVideoDisplay->StopAnimation();
-
- SetPreviewState(EStateOpening);
-
- if ( !iScreenLight->IsActive() )
- {
- iScreenLight->Start();
- }
-
- if ( iFullScreenSelected )
- {
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::PlayVideoFileL: fullscreen selected");
- iView.SetEditorState( CVeiEditVideoView::EPreview);
-
- SetBlackScreen( ETrue );
- iVideoDisplay->OpenFileL( aFilename );
- }
- else
- {
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::PlayVideoFileL: fullscreen not selected");
- iView.SetEditorState( CVeiEditVideoView::EQuickPreview);
- iVideoDisplay->SetRect( iVideoDisplayBox );
- iVideoDisplay->ShowBlackScreen();
- iInfoDisplay->SetRect( iInfoDisplayBox );
-
- iDummyCutBar->MakeVisible( ETrue );
- iDummyCutBar->Dim( ETrue );
- iVideoDisplay->OpenFileL( aFilename );
- }
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::PlayVideoFileL(): Out");
- }
-
-void CVeiEditVideoContainer::PlayVideo(const TDesC& /*aFilename*/, TBool& /*aFullScreen*/ )
- {
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::PlayVideo In");
-
- if ( iVideoDisplay )
- {
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::PlayVideo(): 1");
-
- // associated with, when put into background and back to foreground, play starts from different
- // position it was paused (iSeekPos is not iLastPosition)
- iVideoDisplay->SetPositionL( iSeekPos );
-
- if ( iTempVideoInfo && !iFrameReady)
- {
- iTempVideoInfo->CancelFrame();
- }
- iVideoDisplay->Play();
- }
-
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::PlayVideo(): Out");
- }
-
-void CVeiEditVideoContainer::StopVideo( TBool aCloseStream )
- {
- LOGFMT(KVideoEditorLogFile, "CVeiEditVideoContainer::StopVideo: In, aCloseStream:%d", aCloseStream);
- SetPreviewState(EStateStopped);
- if ( iPeriodic )
- {
- iPeriodic->Cancel();
- }
-
- iSeekPos = TTimeIntervalMicroSeconds( 0 );
-
- iCloseStream = aCloseStream;
-
- iVideoDisplay->Stop( aCloseStream );
-
- iScreenLight->Stop();
- if ( aCloseStream )
- {
- SetPreviewState(EStateClosed);
- }
- else
- {
- SetFinishedStatus( ETrue );
- }
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::StopVideo: out");
- }
-
-void CVeiEditVideoContainer::TakeSnapshotL()
- {
- LOGFMT(KVideoEditorLogFile, "CVeiEditVideoContainer::TakeSnapshotL: In, iFrameReady:%d", iFrameReady);
-
- if( !iTempVideoInfo || !iFrameReady )
- {
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::TakeSnapshotL: 1");
- if (!iFrameReady)
- {
- iTakeSnapshotWaiting = ETrue;
- }
- return;
- }
-
- iTakeSnapshotWaiting = EFalse;
- iTakeSnapshot = ETrue;
- TTimeIntervalMicroSeconds pos = PlaybackPositionL();
-
- TInt frameIndex;
- TInt totalFrameCount;
-
- frameIndex = iTempVideoInfo->GetVideoFrameIndexL( pos );
- totalFrameCount = iTempVideoInfo->VideoFrameCount();
-
- if ( frameIndex > totalFrameCount )
- {
- frameIndex = totalFrameCount;
- }
-
- TRect clipResolution = Rect();
- TSize resol( clipResolution.iBr.iX, clipResolution.iBr.iY );
- TDisplayMode displayMode = ENone;
- iFrameReady = EFalse;
-
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::TakeSnapshotL: 2");
- //iTempVideoInfo->GetFrameL(*this, frameIndex, &resol, displayMode, ETrue);
-
- /* :
- check out on every phone before releasing whether videodisplay should be stopped before starting
- asynchronous GetFrameL()
- see how EStateGettingFrame is handled in SetPreviewState
- Stopping frees memory and it is needed in memory sensible devices
- */
- iTempVideoInfo->GetFrameL(*this, frameIndex, NULL, displayMode, ETrue);
- SetPreviewState(EStateGettingFrame);
-
- StartProgressDialogL(R_VEI_PROGRESS_NOTE_WITH_CANCEL, R_VEI_PROGRESS_NOTE_SAVING_IMAGE);
-
- /*
- if (iProgressDialog)
- {
- delete iProgressDialog;
- iProgressDialog = NULL;
- }
-
- iProgressDialog =
- new (ELeave) CAknProgressDialog(REINTERPRET_CAST(CEikDialog**,
- &iProgressDialog), ETrue);
- iProgressDialog->SetCallback(this);
- iProgressDialog->ExecuteDlgLD( R_VEI_PROGRESS_NOTE_WITH_CANCEL );
-
-
- HBufC* stringholder = StringLoader::LoadLC( R_VEI_PROGRESS_NOTE_SAVING_IMAGE, iEikonEnv );
- iProgressDialog->SetTextL( *stringholder );
- CleanupStack::PopAndDestroy( stringholder );
-
- iProgressDialog->GetProgressInfoL()->SetFinalValue(100);
- */
- // this is good place to start Progress Note, but for some reason this causes some phones to crash
- // that is why progress note is started now in NotifyVideoClipFrameCompleted
- //StartProgressDialogL(R_VEI_PROGRESS_NOTE_WITH_CANCEL, R_VEI_PROGRESS_NOTE_SAVING_IMAGE);
-
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::TakeSnapshotL: Out");
- }
-
-void CVeiEditVideoContainer::PauseVideoL()
- {
- LOGFMT(KVideoEditorLogFile, "CVeiEditVideoContainer::PauseVideoL: In, iPreviewState:%d", iPreviewState);
-
- // if-condition added in order to prevent entering to pause state (icon is showed) from "wrong" state
- // etc. from "stopped" state
- if (EStatePlaying == iPreviewState)
- {
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::PauseVideoL 1");
- iLastPosition = iVideoDisplay->PositionL();
-
- // think whether this should be here?
- iSeekPos = iVideoDisplay->PositionL();
- iVideoDisplay->SetPositionL(iSeekPos);
- }
- iVideoDisplay->PauseL();
- SetPreviewState(EStatePaused);
- iScreenLight->Stop();
- if ( iPeriodic )
- {
- iPeriodic->Cancel();
- }
- iView.StopNaviPaneUpdateL();
-
- #ifdef GET_PAUSE_THUMBNAIL
- GetThumbAtL( iLastPosition );
- #endif
-
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::PauseVideoL out");
- }
-
-TTimeIntervalMicroSeconds CVeiEditVideoContainer::PlaybackPositionL()
- {
- if ( ( iSeeking ) || ( EStateStopped == iPreviewState) )
- {
- return iSeekPos;
- }
- if ( EStatePlaying != iPreviewState )
- {
- return iLastPosition;
- }
-
- iLastPosition = iVideoDisplay->PositionL();
-
- // for what situation is this for?
- if ( ( iLastPosition == TTimeIntervalMicroSeconds( 0 ) ) &&
- ( iSeekPos != TTimeIntervalMicroSeconds( 0 ) ) )
- {
- return iSeekPos;
- }
- // for what situation is this for?
- return iLastPosition;
- }
-
-
-void CVeiEditVideoContainer::SetSelectionMode( TSelectionMode aSelectionMode )
- {
- LOGFMT(KVideoEditorLogFile, "CVeiEditVideoContainer::SetSelectionMode: In, aSelectionMode:%d", aSelectionMode);
- iSelectionMode = aSelectionMode;
-
- if (EModeMixingAudio == iSelectionMode)
- {
- iHorizontalSlider->SetPosition(0);
-
- if (0 != iMovie.GetVideoClipVolumeGainL(KVedClipIndexAll))
- {
- TReal gain = iMovie.GetVideoClipVolumeGainL(KVedClipIndexAll);///(KVolumeMaxGain/10);
- gain = gain/(KVolumeMaxGain/10);
- if (0 < gain)
- {
- gain += 0.5;
- }
- else
- {
- gain -= 0.5;
- }
- iHorizontalSlider->SetPosition( (TInt)(-gain) ); // see impl. of CSliderBar
- }
-
- else if(0 != iMovie.GetAudioClipVolumeGainL(KVedClipIndexAll))
- {
- TReal gain = iMovie.GetAudioClipVolumeGainL(KVedClipIndexAll);///(KVolumeMaxGain/10);
- gain = gain/(KVolumeMaxGain/10);
- if (0 < gain)
- {
- gain += 0.5;
- }
- else
- {
- gain -= 0.5;
- }
- iHorizontalSlider->SetPosition( (TInt)gain );
- }
-
- iHorizontalSlider->MakeVisible(ETrue);
- iVerticalSlider->MakeVisible(EFalse);
- iVideoDisplay->ShowPictureL( *iAudioMixingIcon );
- iInfoDisplay->MakeVisible(EFalse);
-
-
- iVideoDisplay->StopAnimation();
- if ( iCursorLocation == ECursorOnTransition )
- {
- iTransitionDisplayLeft->MakeVisible( EFalse );
- iTransitionDisplayRight->MakeVisible( EFalse );
- iArrowsDisplay->SetUpperArrowVisibility( EFalse );
- iArrowsDisplay->SetLowerArrowVisibility( EFalse );
- iDummyCutBar->SetRect( iDummyCutBarBox );
- }
-
-
- }
- else if (EModeAdjustVolume == iSelectionMode)
- {
-
- iVerticalSlider->SetPosition(0);
-
- if (VideoEditor::ECursorOnClip == CursorLocation())
- {
- if (0 != iMovie.GetVideoClipVolumeGainL(CurrentIndex()))
- {
- TReal adjustVolume = iMovie.GetVideoClipVolumeGainL(CurrentIndex());///(KVolumeMaxGain/10);
- adjustVolume = adjustVolume/(KVolumeMaxGain/10);
-
- if (0 < adjustVolume)
- {
- adjustVolume += 0.5;
- }
- else if (0 > adjustVolume)
- {
- adjustVolume -= 0.5;
- }
- iVerticalSlider->SetPosition(-adjustVolume); // see impl. of CSliderBar
- }
- }
- else if (VideoEditor::ECursorOnAudio == CursorLocation())
- {
- if (0 != iMovie.GetAudioClipVolumeGainL(CurrentIndex()))
- {
- TReal adjustVolume = iMovie.GetAudioClipVolumeGainL(CurrentIndex());///(KVolumeMaxGain/10);
- adjustVolume = adjustVolume/(KVolumeMaxGain/10);
-
- if (0 < adjustVolume)
- {
- adjustVolume += 0.5;
- }
- else if (0 > adjustVolume)
- {
- adjustVolume -= 0.5;
- }
- iVerticalSlider->SetPosition(-adjustVolume);
- }
- }
-
- iHorizontalSlider->MakeVisible(EFalse);
- iVerticalSlider->MakeVisible(ETrue);
- }
- else
- {
- iHorizontalSlider->MakeVisible(EFalse);
- iVerticalSlider->MakeVisible(EFalse);
- }
-
- if ( iSelectionMode == EModeSlowMotion )
- {
- ArrowsControl();
- }
-
- else
- {
- iInfoDisplay->SetSlowMotionOn( EFalse );
- switch(iSelectionMode)
- {
- case EModeRecordingSetStart:
- iEffectSymbols->MakeVisible( ETrue );
- iEffectSymbols->SetPauseAudioIconVisibility( EFalse );
- iEffectSymbols->SetRecAudioIconVisibility( EFalse );
- break;
- case EModeRecordingPaused:
- iEffectSymbols->MakeVisible( ETrue );
- iInfoDisplay->SetLayout( CVeiTextDisplay::ERecordingPaused );
- iEffectSymbols->SetRecAudioIconVisibility( EFalse );
- iEffectSymbols->SetPauseAudioIconVisibility( ETrue );
- iEffectSymbols->DrawNow();
- break;
- case EModeRecording:
- iEffectSymbols->MakeVisible( ETrue );
- iEffectSymbols->SetPauseAudioIconVisibility( EFalse );
- iEffectSymbols->SetRecAudioIconVisibility( ETrue );
- break;
- default:
- iEffectSymbols->SetPauseAudioIconVisibility( EFalse );
- iEffectSymbols->SetRecAudioIconVisibility( EFalse );
- if ( !iFullScreenSelected )
- {
- if ( VideoEditorUtils::IsLandscapeScreenOrientation() ) //Landscape
- {
- iInfoDisplay->SetLayout( CVeiTextDisplay::EEverything );
- }
- else
- {
- iInfoDisplay->SetLayout( CVeiTextDisplay::ENameAndDuration );
- }
- }
- break;
- }
- }
-
- DrawDeferred();
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::SetSelectionMode: Out");
- }
-
-TTypeUid::Ptr CVeiEditVideoContainer::MopSupplyObject( TTypeUid aId )
- {
- if ( aId.iUid == MAknsControlContext::ETypeId && iBgContext )
- {
- return MAknsControlContext::SupplyMopObject( aId, iBgContext );
- }
- return CCoeControl::MopSupplyObject( aId );
- }
-// ---------------------------------------------------------
-// CVeiEditVideoContainer::Draw(const TRect& aRect) const
-// ---------------------------------------------------------
-//
-void CVeiEditVideoContainer::Draw( const TRect& /*aRect*/ ) const
- {
- LOGFMT(KVideoEditorLogFile, "CVeiEditVideoContainer::Draw() In, iPreviewState:%d", iPreviewState);
- CWindowGc& gc = SystemGc();
-
- if(iBlackScreen)
- {
- gc.Clear( Rect() );
- gc.SetPenStyle( CWindowGc::ESolidPen );
- gc.SetBrushColor( KRgbBlack );
- gc.SetBrushStyle( CGraphicsContext::ESolidBrush );
- gc.DrawRect( Rect() );
- gc.SetPenStyle( CWindowGc::ESolidPen );
- gc.DrawRoundRect( Rect(), TSize(4,4));
- }
- else
- {
- // Draw skin background
- MAknsSkinInstance* skin = AknsUtils::SkinInstance();
- MAknsControlContext* cc = AknsDrawUtils::ControlContext( this );
- AknsDrawUtils::Background( skin, cc, this, gc, Rect() );
-
- if ( EStatePaused == iPreviewState )
- {
- gc.BitBltMasked( iPauseIconBox.iTl, iPauseBitmap,
- TRect( TPoint(0,0), iPauseBitmap->SizeInPixels() ),
- iPauseBitmapMask, EFalse );
- }
-
- if (EModeMixingAudio == iSelectionMode && CVeiEditVideoView::EMixAudio != iView.EditorState())
- {
- iHorizontalSlider->MakeVisible(EFalse);
- }
- else if (EModeMixingAudio == iSelectionMode && CVeiEditVideoView::EMixAudio == iView.EditorState())
- {
- iHorizontalSlider->MakeVisible(ETrue);
- TPoint mixAudioVideoIconPoint(iHorizontalSliderPoint.iX, iHorizontalSliderPoint.iY + 20);
- TRect videoTrackIconSourceRect(0, 0, iVideoTrackIcon->SizeInPixels().iWidth,
- iVideoTrackIcon->SizeInPixels().iHeight);
- gc.BitBltMasked( mixAudioVideoIconPoint, iVideoTrackIcon, videoTrackIconSourceRect,
- iVideoTrackIconMask, EFalse);
-
- TPoint mixAudioAudioIconPoint(iHorizontalSliderPoint.iX +
- iHorizontalSliderSize.iWidth - 15, iHorizontalSliderPoint.iY + 20);
- TRect audioTrackIconSourceRect(0, 0, iAudioTrackIcon->SizeInPixels().iWidth,
- iAudioTrackIcon->SizeInPixels().iHeight);
- gc.BitBltMasked(mixAudioAudioIconPoint, iAudioTrackIcon, audioTrackIconSourceRect,
- iAudioTrackIconMask, EFalse);
-
- return;
- }
-
- else if (EModeAdjustVolume == iSelectionMode && CVeiEditVideoView::EAdjustVolume != iView.EditorState())
- {
- iVerticalSlider->MakeVisible(EFalse);
- }
- else if (EModeAdjustVolume == iSelectionMode && CVeiEditVideoView::EAdjustVolume && iView.EditorState())
- {
- iVerticalSlider->MakeVisible(ETrue);
- TPoint pluspoint(iVerticalSliderPoint.iX - 12, iVerticalSliderPoint.iY + 20);
- TPoint minuspoint(iVerticalSliderPoint.iX - 12, iVerticalSliderPoint.iY + iVerticalSliderSize.iHeight);
- _LIT(KPlus, "+");
- _LIT(KMinus, "-");
-
- const CFont* font = AknLayoutUtils::FontFromId( EAknLogicalFontSecondaryFont );
- gc.UseFont( font );
-
- // Get text color from skin
- TRgb textColor( KRgbBlack );
- MAknsSkinInstance* skinInstance = AknsUtils::SkinInstance();
- AknsUtils::GetCachedColor(skinInstance, textColor, KAknsIIDQsnTextColors, EAknsCIQsnTextColorsCG6 );
- gc.SetPenColor( textColor );
-
- gc.DrawText( KPlus, pluspoint );
- gc.DrawText( KMinus, minuspoint );
-
- gc.DiscardFont();
-
- return;
- }
-
- /* Initialize icon & text areas. */
-
- CFbsBitmap* thumbnail = 0;
-
- TInt i;
-
- TSize roundEdgeSize(2,2);
-
- /* Draw bar area. */
-
- TRgb rgbUnselectedBorder = TRgb( 132,132,132 );
-
- TRgb rgbUnselectedTrackFill = TRgb(221,221,221);
- TRgb rgbUnselectedTrackBorder = TRgb( 201,201,201 );
- TRgb rgbUnselectedTrackBorderOuterRect = TRgb( 162,162,162 );
-
- TRgb rgbUnselectedAudioMarker = KRgbWhite;
-
- TRgb rgbUnselectedClip = TRgb( 140,166,198 );
-
- TRgb rgbUnselectedTransition = KRgbWhite;
- TRgb rgbSelectedBorder = TRgb( 94,97,101 );
- TRgb rgbSelectedAudioMarker = KRgbBlack;
- TRgb rgbSelectedClip = TRgb( 108,139,182 );
- TRgb rgbSelectedTransition = TRgb( 0x00, 0x9b, 0xff );
- TRgb rgbActiveBorder = KRgbRed;
- TRgb rgbActiveAudioMarker = KRgbRed;
- TRgb rgbActiveClip = TRgb( 140,166,198 );
-
- TRect videoTrackIconSourceRect(0, 0, iVideoTrackIcon->SizeInPixels().iWidth,
- iVideoTrackIcon->SizeInPixels().iHeight);
-
- gc.BitBltMasked( iVideoBarIconPos, iVideoTrackIcon, videoTrackIconSourceRect,
- iVideoTrackIconMask, EFalse);
-
- TRect audioTrackIconSourceRect(0, 0, iAudioTrackIcon->SizeInPixels().iWidth,
- iAudioTrackIcon->SizeInPixels().iHeight);
- gc.BitBltMasked(iAudioBarIconPos, iAudioTrackIcon, audioTrackIconSourceRect,
- iAudioTrackIconMask, EFalse);
-
- gc.SetPenStyle( CGraphicsContext::ESolidPen );
- gc.SetPenColor( rgbUnselectedTrackBorderOuterRect );
- gc.SetBrushColor( rgbUnselectedTrackFill );
- gc.SetBrushStyle( CGraphicsContext::ESolidBrush );
-
- if ( ( iMovie.VideoClipCount() == 0 ) && ( iCursorLocation != ECursorOnAudio ) &&
- ( iCursorLocation != ECursorOnEmptyAudioTrack ) ||
- ( iCursorLocation == ECursorOnEmptyVideoTrack ) )
- {
- gc.SetPenColor(rgbSelectedBorder);
- gc.SetBrushColor( TRgb( 180,206,238 ) );
- }
-
- gc.DrawRoundRect(iVideoTrackBox, TSize(2,2));
- gc.SetBrushStyle( CGraphicsContext::ENullBrush );
- gc.SetPenColor(rgbUnselectedTrackBorder);
- TRect outerRect(iVideoTrackBox);
- outerRect.Shrink(1,1);
- gc.DrawRoundRect(outerRect, TSize(2,2) );
-
-
- gc.SetPenColor( rgbUnselectedTrackBorderOuterRect );
- gc.SetBrushColor( rgbUnselectedTrackFill );
- gc.SetBrushStyle( CGraphicsContext::ESolidBrush );
-
- if (((iMovie.AudioClipCount() == 0) && (iCursorLocation == ECursorOnAudio) )||
- ( iCursorLocation == ECursorOnEmptyAudioTrack ) )
- {
- gc.SetPenColor(rgbSelectedBorder);
- gc.SetBrushColor( TRgb( 180,206,238 ) );
- }
-
- gc.DrawRoundRect(iAudioTrackBox, TSize(2,2));
-
- gc.SetBrushStyle( CGraphicsContext::ENullBrush );
- gc.SetPenColor(rgbUnselectedTrackBorder);
- outerRect = iAudioTrackBox;
- outerRect.Shrink(1,1);
- gc.DrawRoundRect(outerRect, TSize(2,2) );
-
- gc.SetBrushStyle( CGraphicsContext::ESolidBrush );
-
- TInt64 barDuration = iMovie.Duration().Int64();
- TInt64 audioDuration(0);
- if ( (iMovie.AudioClipCount() != 0) && ((iSelectionMode == EModeRecording ) ||
- (iSelectionMode == EModeRecordingPaused)))
- {
- audioDuration = (iMovie.AudioClipEndTime( iMovie.AudioClipCount() - 1 )).Int64();
- }
-
- audioDuration+= iRecordedAudioDuration.Int64();
-
- if ( audioDuration > barDuration )
- {
- barDuration = audioDuration;
- }
-
- if ( iRecordedAudioStartTime > barDuration )
- {
- barDuration = iRecordedAudioStartTime.Int64();
- }
- if (barDuration < 30000000)
- {
- barDuration = 30000000;
- }
- else if (barDuration < 45000000)
- {
- barDuration = 45000000;
- }
- else{
- barDuration = ((barDuration / 30000000) + 1) * 30000000;
- }
-
- TBool drawSelectedRect = EFalse;
- TInt selectedAudioClipIndex( -1 );
- TRect selectedRect;
-
- gc.SetPenColor(rgbUnselectedBorder);
- gc.SetBrushColor(rgbUnselectedClip);
-
- TRect audioBoxes = TRect();
-
- TRect box;
- box.iTl.iY = iAudioBarBox.iTl.iY;
- box.iBr.iY = iAudioBarBox.iBr.iY;
- TInt barWidth = iAudioBarBox.Width();
- TInt videoIndex = 0;
-
- for (i = 0; i < iMovie.AudioClipCount(); i++)
- {
- box.iTl.iX = iAudioBarBox.iTl.iX
- + static_cast<TInt32>((iMovie.AudioClipStartTime(i).Int64() * barWidth) /
- barDuration);
- box.iBr.iX = iAudioBarBox.iTl.iX
- + static_cast<TInt32>((iMovie.AudioClipEndTime(i).Int64() * barWidth) / barDuration)+ 1;
-
- if ((iCursorLocation == ECursorOnAudio)
- && (i == CurrentIndex()) && (( iSelectionMode == EModeNavigation )
- || ( iSelectionMode == EModeMove ) ||
- ( iSelectionMode == EModeDuration ) ))
- {
- drawSelectedRect = ETrue;
- selectedAudioClipIndex = i;
- selectedRect = box;
- }
- else
- {
- gc.DrawRect(box);
-
- gc.SetPenColor(rgbUnselectedAudioMarker);
-
- audioBoxes.Resize( box.Size() );
-
- if ( ( iMovie.AudioClipCutOutTime( i ).Int64() -
- iMovie.AudioClipCutInTime( i ).Int64() ) <
- iMovie.AudioClipInfo( i )->Duration().Int64() )
- {
- TRect truncateBox;
- truncateBox.iTl.iY = box.iTl.iY + 2;
- truncateBox.iBr.iY = box.iBr.iY - 2;
-
- truncateBox.iTl.iX = box.iBr.iX - 4;
- truncateBox.iBr.iX = truncateBox.iTl.iX + 1;
- if (truncateBox.iTl.iX >= (box.iTl.iX + 2))
- {
- gc.DrawRect(truncateBox);
- }
-
- truncateBox.iTl.iX = box.iBr.iX - 7;
- truncateBox.iBr.iX = truncateBox.iTl.iX + 1;
- if (truncateBox.iTl.iX >= (box.iTl.iX + 2))
- {
- gc.DrawRect(truncateBox);
- }
-
- truncateBox.iTl.iX = box.iBr.iX - 10;
- truncateBox.iBr.iX = truncateBox.iTl.iX + 1;
- if (truncateBox.iTl.iX >= (box.iTl.iX + 2))
- {
- gc.DrawRect(truncateBox);
- }
- }
-
- gc.SetPenColor(rgbUnselectedBorder);
- }
-
- TTimeIntervalMicroSeconds audioClipStartTimeInt = iMovie.AudioClipStartTime(i).Int64() + iMovie.AudioClipCutInTime(i).Int64();
- TTimeIntervalMicroSeconds audioClipEndTimeInt = iMovie.AudioClipEndTime(i).Int64();
-
- if ((audioClipStartTimeInt == TTimeIntervalMicroSeconds(0)) && (iMovie.VideoClipCount() > 0))
- {
- TRect syncBox;
- syncBox.iTl.iX = box.iTl.iX;
- syncBox.iTl.iY = iVideoBarBox.iBr.iY;
- syncBox.iBr.iX = box.iTl.iX + 1;
- syncBox.iBr.iY = iAudioBarBox.iTl.iY;
-
- gc.DrawRect(syncBox);
- }
-
- while (videoIndex < iMovie.VideoClipCount())
- {
- TInt oldIndex = videoIndex;
- if ( iMovie.VideoClipEndTime( oldIndex ) < audioClipStartTimeInt )
- {
- videoIndex++;
- }
- else if ( iMovie.VideoClipEndTime( oldIndex ) == audioClipStartTimeInt )
- {
- TRect syncBox;
- syncBox.iTl.iX = box.iTl.iX;
- syncBox.iTl.iY = iVideoBarBox.iBr.iY;
- syncBox.iBr.iX = box.iTl.iX + 1;
- syncBox.iBr.iY = iAudioBarBox.iTl.iY;
-
- gc.DrawRect(syncBox);
- break;
- }
- else
- {
- break;
- }
- }
-
- while (videoIndex < iMovie.VideoClipCount())
- {
- TInt oldIndex = videoIndex;
-
- if ( iMovie.VideoClipEndTime( oldIndex ) < audioClipEndTimeInt )
- {
- videoIndex++;
- }
- else if ( iMovie.VideoClipEndTime( oldIndex ) == audioClipEndTimeInt )
- {
- TRect syncBox;
- syncBox.iTl.iX = box.iBr.iX - 1;
- syncBox.iTl.iY = iVideoBarBox.iBr.iY;
- syncBox.iBr.iX = box.iBr.iX;
- syncBox.iBr.iY = iAudioBarBox.iTl.iY;
-
- gc.DrawRect(syncBox);
- break;
- }
- else
- {
- break;
- }
- }
- }
-
- if ((iSelectionMode == EModeRecordingSetStart) || (iSelectionMode == EModeRecording)
- || (iSelectionMode == EModeRecordingPaused))
- {
- box.iTl.iX = iAudioBarBox.iTl.iX
- + static_cast<TInt32>((iRecordedAudioStartTime.Int64() * barWidth) / barDuration);
- TInt64 recordedAudioEndTimeInt = iRecordedAudioStartTime.Int64() + iRecordedAudioDuration.Int64();
- box.iBr.iX = iAudioBarBox.iTl.iX
- + static_cast<TInt32>((recordedAudioEndTimeInt * barWidth) / barDuration)+ 1;
-
- gc.SetPenColor(rgbActiveBorder);
- gc.SetBrushColor(rgbSelectedClip);
- gc.DrawRect(box);
- gc.SetPenColor(rgbUnselectedBorder);
- gc.SetBrushColor(rgbUnselectedClip);
- }
-
- box.iTl.iY = iVideoBarBox.iTl.iY;
- box.iBr.iY = iVideoBarBox.iBr.iY;
- barWidth = iVideoBarBox.Width();
-
- TRect videoBoxes = TRect();
-
- for (i = 0; i < iMovie.VideoClipCount(); i++)
- {
- box.iTl.iX = iVideoBarBox.iTl.iX
- + static_cast<TInt32>((iMovie.VideoClipStartTime( i ).Int64() * barWidth) / barDuration);
- box.iBr.iX = iVideoBarBox.iTl.iX
- + static_cast<TInt32>((iMovie.VideoClipEndTime( i ).Int64() * barWidth) / barDuration)+ 1;
-
- videoBoxes.Resize( box.Size() );
-
- if ((iCursorLocation == ECursorOnClip)
- && (i == CurrentIndex()) && ( iView.EditorState() == CVeiEditVideoView::EEdit ))
- {
- drawSelectedRect = ETrue;
- selectedRect = box;
- gc.DrawRect(box);
- }
- else
- {
- gc.DrawRect(box);
- //Draw thumbnail in video box.
- if ( i < iVideoItemArray.Count() )
- {
- thumbnail = iVideoItemArray[i]->iTimelineBitmap;
- }
- if ( thumbnail )
- {
- //TSize thumbnailSizeInPixels = thumbnail->SizeInPixels();
- TPoint pos( box.iTl.iX+1, box.iTl.iY+1 );
- TSize pieceSize = TSize(STATIC_CAST(TInt, (box.Height()-2)*1.22), box.Height()-2);
-
- if ( pieceSize.iWidth >= box.Width()-2 )
- {
- pieceSize.SetSize( box.Width()-2, box.Height()-2 );
- }
- TRect pieceRect( TPoint(0,0), pieceSize );
- gc.BitBlt( pos, thumbnail, pieceRect );
- }
-
-
- //Draw play head.
- if( iPreviewState == EStatePaused || iPreviewState == EStateStopped)
- {
- TRect bar( iBarArea );//bar rect.
-
- const TUint barY = 6;
-
- bar.iTl.iY += barY;
- bar.iTl.iX += barY;
- bar.iTl.iX += iVideoTrackIcon->SizeInPixels().iWidth;
- bar.iBr.iY -= barY / 2;
- bar.iBr.iX -= barY;
-
-
- gc.SetBrushColor( KRgbBlack );
- gc.SetBrushStyle( CGraphicsContext::ESolidBrush );
- gc.SetPenColor( KRgbDarkGray );
- gc.SetPenStyle( CGraphicsContext::ESolidPen );
-
- TPoint inPointList[3];
- inPointList[0] = TPoint( (iCurrentPointX - barY) + 1, iBarArea.iTl.iY - 5 );
- inPointList[1] = TPoint( (iCurrentPointX + barY) - 1, iBarArea.iTl.iY - 5 );
- inPointList[2] = TPoint( iCurrentPointX, bar.iTl.iY - 6 );
- gc.DrawPolygon( inPointList, 3 );
-
- inPointList[0] = TPoint( (iCurrentPointX - barY) + 1, iBarArea.iBr.iY + 5 );
- inPointList[1] = TPoint( (iCurrentPointX + barY) - 1, iBarArea.iBr.iY + 5 );
- inPointList[2] = TPoint( iCurrentPointX, bar.iBr.iY );
- gc.DrawPolygon( inPointList, 3 );
-
- gc.SetPenSize( TSize( 3, 1 ) );
- gc.DrawLine( TPoint( iCurrentPointX, bar.iTl.iY - 5 ),
- TPoint( iCurrentPointX, bar.iBr.iY ) );
-
- gc.SetPenColor(rgbUnselectedBorder);
- gc.SetBrushColor(rgbUnselectedClip);
- gc.SetPenSize( TSize( 1, 1 ) );
- }
- }
- }
-
- if (drawSelectedRect)
- {
- selectedRect.Grow( iZoomFactorX,iZoomFactorY );
-
-
- TRect outerBlackRect = selectedRect;
- outerBlackRect.Grow(1,1);
- gc.SetPenColor( KRgbBlack );
- gc.SetPenStyle( CGraphicsContext::ESolidPen );
- gc.DrawRoundRect( outerBlackRect, TSize(2,2) );
-
-
- if (iSelectionMode == EModeMove ) //Move, draw dashed outline
- {
- gc.SetPenStyle( CGraphicsContext::EDashedPen );
- gc.SetPenColor( KRgbBlack );
- gc.SetBrushColor(rgbActiveClip);
- }
- else
- {
- gc.SetPenColor(rgbSelectedBorder);
- gc.SetBrushColor(rgbSelectedClip);
- }
-
- gc.DrawRoundRect( selectedRect,roundEdgeSize );
-
- selectedRect.Shrink(2,2);
- gc.DrawBitmap( selectedRect, iGradientBitmap );
-
- //Draw thumbnail in video box
- if ( iCursorLocation == ECursorOnClip )
- {
- selectedRect.Grow(2,2);
-
- thumbnail = iVideoItemArray[CurrentIndex()]->iTimelineBitmap;
- if ( thumbnail )
- {
- TPoint pos( selectedRect.iTl.iX+1, selectedRect.iTl.iY+1 );
- TSize pieceSize = TSize(STATIC_CAST(TInt, (selectedRect.Height()-2)*1.22),
- selectedRect.Height()-2);
-
- if ( pieceSize.iWidth >= selectedRect.Width()-2 )
- {
- pieceSize.SetSize( selectedRect.Width()-2, selectedRect.Height()-2 );
- }
- TRect pieceRect( TPoint(0,0), pieceSize );
- gc.BitBlt( pos, thumbnail, pieceRect );
- }
- }
- drawSelectedRect = EFalse;
-
- if (iSelectionMode == EModeNavigation)
- {
- gc.SetPenColor(rgbSelectedAudioMarker);
- }
- else
- {
- gc.SetPenColor(rgbActiveAudioMarker);
- }
-
- if ((selectedAudioClipIndex != -1) &&
- ( ( iMovie.AudioClipCutOutTime( selectedAudioClipIndex ).Int64() -
- iMovie.AudioClipCutInTime( selectedAudioClipIndex ).Int64() ) <
- iMovie.AudioClipInfo( selectedAudioClipIndex )->Duration().Int64() ) )
- {
- TRect truncateBox;
- truncateBox.iTl.iY = selectedRect.iTl.iY + 2;
- truncateBox.iBr.iY = selectedRect.iBr.iY - 2;
-
- truncateBox.iTl.iX = selectedRect.iBr.iX - 4;
- truncateBox.iBr.iX = truncateBox.iTl.iX + 1;
- if (truncateBox.iTl.iX >= (selectedRect.iTl.iX + 2))
- {
- gc.DrawRect(truncateBox);
- }
-
- truncateBox.iTl.iX = selectedRect.iBr.iX - 7;
- truncateBox.iBr.iX = truncateBox.iTl.iX + 1;
- if (truncateBox.iTl.iX >= (selectedRect.iTl.iX + 2))
- {
- gc.DrawRect(truncateBox);
- }
-
- truncateBox.iTl.iX = selectedRect.iBr.iX - 10;
- truncateBox.iBr.iX = truncateBox.iTl.iX + 1;
- if (truncateBox.iTl.iX >= (selectedRect.iTl.iX + 2))
- {
- gc.DrawRect(truncateBox);
- }
- }
- }
-
- gc.SetPenStyle(CGraphicsContext::ESolidPen);
- gc.SetPenColor(rgbUnselectedBorder);
- gc.SetBrushColor(rgbUnselectedTransition);
-
- box.iTl.iY += (box.Height() - iTransitionMarkerSize.iHeight) / 2;
- box.iBr.iY = box.iTl.iY + iTransitionMarkerSize.iHeight;
- for (i = iMovie.VideoClipCount(); (i >= 0) && (iMovie.VideoClipCount() > 0); i--)
- {
- if ((i == 0) && (iMovie.VideoClipCount() > 0))
- {
- box.iTl.iX = iVideoBarBox.iTl.iX
- - (iTransitionMarkerSize.iWidth / 2);
- }
- else
- {
- box.iTl.iX = iVideoBarBox.iTl.iX
- + static_cast<TInt32>((iMovie.VideoClipEndTime( i-1 ).Int64() * barWidth) / barDuration)
- - (iTransitionMarkerSize.iWidth / 2);
- }
-
- box.iBr.iX = box.iTl.iX + iTransitionMarkerSize.iWidth;
-
- if ((iCursorLocation == ECursorOnTransition) && (i == CurrentIndex() ) )
- {
- drawSelectedRect = ETrue;
- selectedRect = box;
- }
- else
- {
- if ( (iCursorLocation == ECursorOnClip) && (i == CurrentIndex() ) &&( iSelectionMode != EModePreview ) )
- {
- box.Move( -iZoomFactorX,0);
- box.Grow(0,iZoomFactorX/2);
- gc.DrawRect(box);
- box.Shrink(0,iZoomFactorX/2);
- box.Move( iZoomFactorX,0 );
- }
- else if ( (iCursorLocation == ECursorOnClip) && (i == CurrentIndex()+1 ) && ( iSelectionMode != EModePreview ) )
- {
- box.Move( iZoomFactorX,0 );
- box.Grow(0,iZoomFactorX/2);
- gc.DrawRect(box);
- box.Shrink(0,iZoomFactorX/2);
- box.Move( -iZoomFactorX,0 );
- }
- else
- {
- gc.DrawRect(box);
- }
- }
- }
-
- if (drawSelectedRect)
- {
- selectedRect.Grow(1,iZoomFactorX/2);
- gc.SetPenColor(rgbSelectedBorder);
- gc.SetBrushColor(rgbSelectedTransition);
- gc.DrawRect(selectedRect);
- }
-
- // draw the new position for the clip when a clip is dragged with touch
- if ( iIsVideoDrag )
- {
- TRgb rgbSelectedBorder = KRgbDarkMagenta;
- TRgb rgbSelectedTransition = KRgbDarkMagenta;
- gc.SetPenColor( rgbSelectedBorder );
- gc.SetBrushColor( rgbSelectedTransition );
-
- box.iTl.iY = iVideoBarBox.iTl.iY;
- box.iBr.iY = iVideoBarBox.iBr.iY;
-
- // clip is moved from right to left
- if ( iClickedClip > iNewClipPosition )
- {
- if ( iNewClipPosition == 0 )
- {
- box.iTl.iX = iVideoItemRectArray[ iNewClipPosition ].iTl.iX;
- box.iBr.iX = iVideoItemRectArray[ iNewClipPosition ].iTl.iX + 5;
- }
- else
- {
- box.iTl.iX = iVideoItemRectArray[ iNewClipPosition ].iTl.iX - 5;
- box.iBr.iX = iVideoItemRectArray[ iNewClipPosition ].iTl.iX + 5;
- }
- gc.DrawRect( box );
- }
- // clip is moved from left to right
- else if ( iClickedClip < iNewClipPosition )
- {
- box.iTl.iX = iVideoItemRectArray[ iNewClipPosition ].iBr.iX - 5;
- box.iBr.iX = iVideoItemRectArray[ iNewClipPosition ].iBr.iX + 5;
- gc.DrawRect( box );
- }
- }
- }//else
- }
-
-void CVeiEditVideoContainer::HandleResourceChange(TInt aType)
- {
- LOGFMT(KVideoEditorLogFile, "CVeiEditVideoContainer::HandleResourceChange() In, aType:%d", aType);
-
- if (KAknsMessageSkinChange == aType)
- {
- HandleComponentControlsResourceChange(aType);
- }
- CCoeControl::HandleResourceChange(aType);
-
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::HandleResourceChange() Out");
- }
-
-void CVeiEditVideoContainer::DrawTrackBoxes() const
- {
- if(!iBlackScreen)
- {
- TRect drawableRect = iBarArea;
- drawableRect.iTl.iX = (iVideoTrackBox.iTl.iX - KMaxZoomFactorX) - 2;
- drawableRect.iBr.iX = (iVideoTrackBox.iBr.iX + KMaxZoomFactorX) + 2;
- drawableRect.iTl.iY = (iVideoTrackBox.iTl.iY - KMaxZoomFactorY) - 2;
- drawableRect.iBr.iY = (iAudioTrackBox.iBr.iY + KMaxZoomFactorY) + 2;
-
- Window().Invalidate( drawableRect );
- ActivateGc();
- //Redraw of the window's invalid region.
- Window().BeginRedraw( drawableRect );
- Draw( drawableRect );
-
- Window().EndRedraw();
- DeactivateGc();
- }
- }
-
-
-
-
-// ----------------------------------------------------------------------------
-// CVeiEditVideoContainer::GetHelpContext(...) const
-//
-// Gets the control's help context. Associates the control with a particular
-// Help file and topic in a context sensitive application.
-// ----------------------------------------------------------------------------
-//
-void CVeiEditVideoContainer::GetHelpContext( TCoeHelpContext& aContext ) const
- {
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::GetHelpContext(): In");
-
- // Set UID of the CS Help file (same as application UID).
- aContext.iMajor = KUidVideoEditor;
-
- // Set the context/topic.
- aContext.iContext = KVED_HLP_EDIT_VIDEO_VIEW;
-
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::GetHelpContext(): Out");
- }
-
-
-void CVeiEditVideoContainer::ArrowsControl() const
- {
-
- iInfoDisplay->SetLayout( CVeiTextDisplay::EOnlyName );
- iInfoDisplay->SetUpperArrowVisibility( EFalse );
- iInfoDisplay->SetLowerArrowVisibility( EFalse );
- iInfoDisplay->SetRightArrowVisibility( EFalse );
- iInfoDisplay->SetLeftArrowVisibility( EFalse );
-
- iArrowsDisplay->MakeVisible( EFalse );
- iArrowsDisplay->SetUpperArrowVisibility( EFalse );
- iArrowsDisplay->SetLowerArrowVisibility( EFalse );
- iArrowsDisplay->SetRightArrowVisibility( EFalse );
- iArrowsDisplay->SetLeftArrowVisibility( EFalse );
-
- iInfoDisplay->SetSlowMotionOn( EFalse );
-
- iDummyCutBar->MakeVisible( ETrue );
-
- if ( iCursorLocation == ECursorOnClip)
- {
- iInfoDisplay->MakeVisible( ETrue );
- iInfoDisplay->SetRect( iInfoDisplayBox );
-
- if( VideoEditorUtils::IsLandscapeScreenOrientation() )
- {
- iInfoDisplay->SetLayout( CVeiTextDisplay::EEverything );
- }
- else
- {
- iInfoDisplay->SetLayout( CVeiTextDisplay::ENameAndDuration );
- }
-
- if (iSelectionMode == EModeSlowMotion)
- {
- iArrowsDisplay->MakeVisible( ETrue );
-
- if( !VideoEditorUtils::IsLandscapeScreenOrientation() )
- {
- iInfoDisplay->MakeVisible( EFalse );
- }
-
- iArrowsDisplay->SetSlowMotionOn( ETrue );
- iArrowsDisplay->SetLayout( CVeiTextDisplay::EArrowsHorizontal );
-
- iDummyCutBar->MakeVisible( EFalse );
-
- if ( iSlowMotionValue < 1000 )
- {
- iArrowsDisplay->SetRightArrowVisibility( ETrue );
- }
- if ( iSlowMotionValue > 250 )
- {
- iArrowsDisplay->SetLeftArrowVisibility( ETrue );
- }
- iArrowsDisplay->SetRect( iSlowMotionBox );
- }
- else
- {
- iVideoDisplay->StopAnimation();
- }
- }
- else if ( iCursorLocation == ECursorOnAudio )
- {
- iInfoDisplay->MakeVisible( ETrue );
- iInfoDisplay->SetRect( iInfoDisplayBox );
-
- if( VideoEditorUtils::IsLandscapeScreenOrientation() )
- {
- iInfoDisplay->SetLayout( CVeiTextDisplay::EEverything );
- }
- else
- {
- iInfoDisplay->SetLayout( CVeiTextDisplay::ENameAndDuration );
- }
-
- }
- else if ( iCursorLocation == ECursorOnTransition )
- {
- iDummyCutBar->MakeVisible( ETrue );
- iInfoDisplay->MakeVisible( ETrue );
-
- iInfoDisplay->SetUpperArrowVisibility( ETrue );
- iInfoDisplay->SetLowerArrowVisibility( ETrue );
- iInfoDisplay->SetLayout( CVeiTextDisplay::EArrowsVertical );
- iInfoDisplay->SetRect( iTransitionArrowsBox );
- }
- if ( iView.EditorState() == CVeiEditVideoView::EMixAudio ||
- iView.EditorState() == CVeiEditVideoView::EAdjustVolume)
- {
- iDummyCutBar->MakeVisible( EFalse );
- }
-
- if ( iView.EditorState() == CVeiEditVideoView::EMixAudio)
- {
- iInfoDisplay->MakeVisible(EFalse);
- }
- if ( iView.EditorState() == CVeiEditVideoView::EAdjustVolume)
- {
- iInfoDisplay->MakeVisible(ETrue);
- }
- }
-
-void CVeiEditVideoContainer::DrawPlayHead()
- {
- CFbsBitmap* thumbnail = 0;
- TRect redrawArea = TRect(iVideoBarIconPos.iX+iVideoTrackIcon->SizeInPixels().iWidth,
- iBarArea.iTl.iY - 5, iBarArea.iBr.iX, iBarArea.iBr.iY + 10 );
-
- Window().Invalidate( redrawArea );
- ActivateGc();
- //Redraw of the window's invalid region.
- Window().BeginRedraw( redrawArea );
- CWindowGc& gc = SystemGc();
-
- // Draw skin background
- MAknsSkinInstance* skin = AknsUtils::SkinInstance();
- MAknsControlContext* cc = AknsDrawUtils::ControlContext( this );
- AknsDrawUtils::Background( skin, cc, this, gc, Rect() );
-
- /* Draw bar area. */
- TInt i;
- TRgb rgbUnselectedBorder = TRgb( 132,132,132 );
- TRgb rgbUnselectedTrackFill = TRgb(221,221,221);
- TRgb rgbUnselectedTrackBorder = TRgb( 201,201,201 );
- TRgb rgbUnselectedTrackBorderOuterRect = TRgb( 162,162,162 );
-
- TRgb rgbUnselectedAudioMarker = KRgbWhite;
- TRgb rgbUnselectedClip = TRgb( 140,166,198 );
- TRgb rgbUnselectedTransition = KRgbWhite;
-
- gc.SetPenStyle( CGraphicsContext::ESolidPen );
- gc.SetPenColor( rgbUnselectedTrackBorderOuterRect );
- gc.SetBrushColor( rgbUnselectedTrackFill );
- gc.SetBrushStyle( CGraphicsContext::ESolidBrush );
- gc.DrawRoundRect(iVideoTrackBox, TSize(2,2));
-
- gc.SetBrushStyle( CGraphicsContext::ENullBrush );
- gc.SetPenColor( rgbUnselectedTrackBorder );
- TRect outerRect( iVideoTrackBox );
- outerRect.Shrink(1,1);
- gc.DrawRoundRect(outerRect, TSize(2,2) );
-
- gc.SetPenColor( rgbUnselectedTrackBorderOuterRect );
- gc.SetBrushColor( rgbUnselectedTrackFill );
- gc.SetBrushStyle( CGraphicsContext::ESolidBrush );
- gc.DrawRoundRect(iAudioTrackBox, TSize(2,2));
-
- gc.SetBrushStyle( CGraphicsContext::ENullBrush );
- gc.SetPenColor(rgbUnselectedTrackBorder);
- outerRect = iAudioTrackBox;
- outerRect.Shrink(1,1);
- gc.DrawRoundRect(outerRect, TSize(2,2) );
-
- gc.SetBrushStyle( CGraphicsContext::ESolidBrush );
-
- TInt64 barDuration = iMovie.Duration().Int64();
- TInt64 audioDuration(0);
- if ( (iMovie.AudioClipCount() != 0) && (iSelectionMode == EModeRecording ))
- {
- audioDuration = (iMovie.AudioClipEndTime( iMovie.AudioClipCount() - 1 )).Int64();
- }
-
- audioDuration+= iRecordedAudioDuration.Int64();
-
- if ( audioDuration > barDuration )
- {
- barDuration = audioDuration;
- }
-
- if ( iRecordedAudioStartTime > barDuration )
- {
- barDuration = iRecordedAudioStartTime.Int64();
- }
- if (barDuration < 30000000)
- {
- barDuration = 30000000;
- }
- else if (barDuration < 45000000)
- {
- barDuration = 45000000;
- }
- else{
- barDuration = ((barDuration / 30000000) + 1) * 30000000;
- }
-
- gc.SetPenColor(rgbUnselectedBorder);
- gc.SetBrushColor(rgbUnselectedClip);
-
- TRect audioBoxes = TRect(0,0,0,0);
-
- TRect box;
- box.iTl.iY = iAudioBarBox.iTl.iY;
- box.iBr.iY = iAudioBarBox.iBr.iY;
- TInt barWidth = iAudioBarBox.Width();
- TInt videoIndex = 0;
-
- for (i = 0; i < iMovie.AudioClipCount(); i++)
- {
- box.iTl.iX = iAudioBarBox.iTl.iX
- + static_cast<TInt32>((iMovie.AudioClipStartTime(i).Int64() * barWidth) /
- barDuration);
- box.iBr.iX = iAudioBarBox.iTl.iX
- + static_cast<TInt32>((iMovie.AudioClipEndTime(i).Int64() * barWidth) / barDuration)+ 1;
-
- {
- gc.DrawRect(box);
-
- gc.SetPenColor(rgbUnselectedAudioMarker);
-
- audioBoxes = box;
-
- gc.SetPenColor(rgbUnselectedAudioMarker);
-
- if ( ( iMovie.AudioClipCutOutTime( i ).Int64() -
- iMovie.AudioClipCutInTime( i ).Int64() ) <
- iMovie.AudioClipInfo( i )->Duration().Int64() )
- {
- TRect truncateBox;
- truncateBox.iTl.iY = box.iTl.iY + 2;
- truncateBox.iBr.iY = box.iBr.iY - 2;
-
- truncateBox.iTl.iX = box.iBr.iX - 4;
- truncateBox.iBr.iX = truncateBox.iTl.iX + 1;
- if (truncateBox.iTl.iX >= (box.iTl.iX + 2))
- {
- gc.DrawRect(truncateBox);
- }
-
- truncateBox.iTl.iX = box.iBr.iX - 7;
- truncateBox.iBr.iX = truncateBox.iTl.iX + 1;
- if (truncateBox.iTl.iX >= (box.iTl.iX + 2))
- {
- gc.DrawRect(truncateBox);
- }
-
- truncateBox.iTl.iX = box.iBr.iX - 10;
- truncateBox.iBr.iX = truncateBox.iTl.iX + 1;
- if (truncateBox.iTl.iX >= (box.iTl.iX + 2))
- {
- gc.DrawRect(truncateBox);
- }
- }
-
- gc.SetPenColor(rgbUnselectedBorder);
- }
-
- TTimeIntervalMicroSeconds audioClipStartTimeInt = iMovie.AudioClipStartTime(i).Int64() + iMovie.AudioClipCutInTime(i).Int64();
- TTimeIntervalMicroSeconds audioClipEndTimeInt = iMovie.AudioClipEndTime(i).Int64();
-
- if ((audioClipStartTimeInt == TTimeIntervalMicroSeconds(0)) && (iMovie.VideoClipCount() > 0))
- {
- TRect syncBox;
- syncBox.iTl.iX = box.iTl.iX;
- syncBox.iTl.iY = iVideoBarBox.iBr.iY;
- syncBox.iBr.iX = box.iTl.iX + 1;
- syncBox.iBr.iY = iAudioBarBox.iTl.iY;
-
- gc.DrawRect(syncBox);
- }
-
- while (videoIndex < iMovie.VideoClipCount())
- {
- TInt oldIndex = videoIndex;
- if ( iMovie.VideoClipEndTime( oldIndex ) < audioClipStartTimeInt )
- {
- videoIndex++;
- }
- else if ( iMovie.VideoClipEndTime( oldIndex ) == audioClipStartTimeInt )
- {
- TRect syncBox;
- syncBox.iTl.iX = box.iTl.iX;
- syncBox.iTl.iY = iVideoBarBox.iBr.iY;
- syncBox.iBr.iX = box.iTl.iX + 1;
- syncBox.iBr.iY = iAudioBarBox.iTl.iY;
-
- gc.DrawRect(syncBox);
- break;
- }
- else
- {
- break;
- }
- }
-
- while (videoIndex < iMovie.VideoClipCount())
- {
- TInt oldIndex = videoIndex;
-
- if ( iMovie.VideoClipEndTime( oldIndex ) < audioClipEndTimeInt )
- {
- videoIndex++;
- }
- else if ( iMovie.VideoClipEndTime( oldIndex ) == audioClipEndTimeInt )
- {
- TRect syncBox;
- syncBox.iTl.iX = box.iBr.iX - 1;
- syncBox.iTl.iY = iVideoBarBox.iBr.iY;
- syncBox.iBr.iX = box.iBr.iX;
- syncBox.iBr.iY = iAudioBarBox.iTl.iY;
-
- gc.DrawRect(syncBox);
- break;
- }
- else
- {
- break;
- }
- }
- }
-
- box.iTl.iY = iVideoBarBox.iTl.iY;
- box.iBr.iY = iVideoBarBox.iBr.iY;
- barWidth = iVideoBarBox.Width();
-
-
- TRect videoBoxes = TRect();
-
- for (i = 0; i < iMovie.VideoClipCount(); i++)
- {
- box.iTl.iX = iVideoBarBox.iTl.iX
- + static_cast<TInt32>((iMovie.VideoClipStartTime( i ).Int64() * barWidth) / barDuration);
- box.iBr.iX = iVideoBarBox.iTl.iX
- + static_cast<TInt32>((iMovie.VideoClipEndTime( i ).Int64() * barWidth) / barDuration) + 1;
-
- videoBoxes.Resize( box.Size() );
-
- gc.DrawRect(box);
- //Draw thumbnail in video boxes on the timeline.
- thumbnail = iVideoItemArray[i]->iTimelineBitmap;
- if ( thumbnail )
- {
- TPoint pos( box.iTl.iX+1, box.iTl.iY+1 );
-
- TSize pieceSize = TSize(STATIC_CAST(TInt, (box.Height()-2)*1.22), box.Height()-2);
-
- if ( pieceSize.iWidth >= box.Width()-2 )
- {
- pieceSize.SetSize( box.Width()-2, box.Height()-2 );
- }
- TRect pieceRect( TPoint(0,0), pieceSize );
- gc.BitBlt( pos, thumbnail, pieceRect );
- }
- }
-
- gc.SetPenStyle(CGraphicsContext::ESolidPen);
- gc.SetPenColor(rgbUnselectedBorder);
- gc.SetBrushColor(rgbUnselectedTransition);
-
- box.iTl.iY += (box.Height() - iTransitionMarkerSize.iHeight) / 2;
- box.iBr.iY = box.iTl.iY + iTransitionMarkerSize.iHeight;
- for (i = iMovie.VideoClipCount(); (i >= 0) && (iMovie.VideoClipCount() > 0); i--)
- {
- if ((i == 0) && (iMovie.VideoClipCount() > 0))
- {
- box.iTl.iX = iVideoBarBox.iTl.iX
- - (iTransitionMarkerSize.iWidth / 2);
- }
- else
- {
- box.iTl.iX = iVideoBarBox.iTl.iX
- + static_cast<TInt32>((iMovie.VideoClipEndTime( i-1 ).Int64() * barWidth) / barDuration)
- - (iTransitionMarkerSize.iWidth / 2);
- }
-
- box.iBr.iX = box.iTl.iX + iTransitionMarkerSize.iWidth;
-
-
- gc.DrawRect(box);
- }
-
- //Draw play head.
- TRect bar( iBarArea );//bar rect.
- const TUint barY = 6;
- TUint width = videoBoxes.Width();
- TInt audioTrackWidth(0);
- if ( audioBoxes.iBr.iX > 0 )
- {
- audioTrackWidth = audioBoxes.iBr.iX - iAudioTrackBox.iTl.iX;
- }
-
- if ( videoBoxes.Width() >= audioTrackWidth )
- {
- width = videoBoxes.Width();
- }
- else
- {
- width = audioTrackWidth;
- }
- TUint totalTime = static_cast<TInt32>(iMovie.Duration().Int64() /1000);//( iVideoDisplay->TotalLengthL().Int64() / 1000 ).Low();
-
- if ( totalTime == 0 )
- {
- totalTime = 1;
- }
-
- TInt currentPointX = iCurrentPoint * width / totalTime + iVideoBarBox.iTl.iX;
- iCurrentPointX = currentPointX;
-
- bar.iTl.iY += barY;
- bar.iTl.iX += barY;
- bar.iTl.iX += iVideoTrackIcon->SizeInPixels().iWidth;
- bar.iBr.iY -= barY / 2;
- bar.iBr.iX -= barY;
-
-
- gc.SetBrushColor( KRgbBlack );
- gc.SetBrushStyle( CGraphicsContext::ESolidBrush );
- gc.SetPenColor( KRgbDarkGray );
- gc.SetPenStyle( CGraphicsContext::ESolidPen );
-
- TPoint inPointList[3];
- inPointList[0] = TPoint( currentPointX - barY + 1, iBarArea.iTl.iY - 5 );
- inPointList[1] = TPoint( currentPointX + barY - 1, iBarArea.iTl.iY - 5 );
- inPointList[2] = TPoint( currentPointX, bar.iTl.iY - 6 );
- gc.DrawPolygon( inPointList, 3 );
-
- inPointList[0] = TPoint( currentPointX - barY + 1, iBarArea.iBr.iY + 5 );
- inPointList[1] = TPoint( currentPointX + barY - 1, iBarArea.iBr.iY + 5 );
- inPointList[2] = TPoint( currentPointX, bar.iBr.iY );
- gc.DrawPolygon( inPointList, 3 );
-
- gc.SetPenSize( TSize( 3, 1 ) );
- gc.DrawLine( TPoint( currentPointX, bar.iTl.iY - 5 ),
- TPoint( currentPointX, bar.iBr.iY ) );
-
- Window().EndRedraw();
- DeactivateGc();
- }
-
-void CVeiEditVideoContainer::DialogDismissedL( TInt aButtonId )
- {
- iTakeSnapshot = EFalse;
- if ( aButtonId == -1 )
- {
- // when pressing cancel button.
- /*if ( iTempVideoInfo && !iFrameReady)
- {
- iTempVideoInfo->CancelFrame();
- }
- */
- CancelSnapshotSave();
- }
- }
-
-void CVeiEditVideoContainer::CancelSnapshotSave()
- {
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::CancelSnapshotSave: in");
- if ( iConverter )
- {
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::CancelSnapshotSave: 1");
- iConverter->Cancel();
- iConverter->CancelEncoding(); //also close the file
- }
- if ( iSaveToFileName )
- {
- LOGFMT(KVideoEditorLogFile, "CVeiEditVideoContainer::CancelSnapshotSave: 2, iSaveToFileName:%S", iSaveToFileName);
-
- RFs& fs = iEikonEnv->FsSession();
- TInt result = fs.Delete( *iSaveToFileName );
- delete iSaveToFileName;
- iSaveToFileName = NULL;
- }
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::CancelSnapshotSave: out");
- }
-
-void CVeiEditVideoContainer::SetCurrentIndex( TInt aCurrentIndex )
- {
- if ( (iCursorLocation == ECursorOnAudio) ||
- (iCursorLocation == ECursorOnEmptyAudioTrack) )
- {
- iAudioCursorPos = aCurrentIndex;
- }
- else
- {
- iVideoCursorPos = aCurrentIndex;
- }
- }
-
-void CVeiEditVideoContainer::NotifyVideoClipAdded( CVedMovie& /*aMovie*/,
- TInt aIndex )
- {
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::NotifyVideoClipAdded: in");
-
- CStoryboardVideoItem* item=0;
-
- if ( iView.WaitMode() == CVeiEditVideoView::EDuplicating )
- {
- TTimeIntervalMicroSeconds cutInTime = iMovie.VideoClipCutInTime( aIndex - 1 );
- TTimeIntervalMicroSeconds cutOutTime = iMovie.VideoClipCutOutTime( aIndex - 1 );
-
- iMovie.VideoClipSetColorEffect( aIndex, iMovie.VideoClipColorEffect( aIndex - 1 ) );
- iMovie.VideoClipSetColorTone( aIndex, iMovie.VideoClipColorTone( aIndex - 1 ) );
- iMovie.SetVideoClipVolumeGainL(aIndex, iMovie.GetVideoClipVolumeGainL(aIndex - 1));
-
- iMovie.VideoClipSetSpeed( aIndex, iMovie.VideoClipSpeed( aIndex - 1 ) );
- iMovie.VideoClipSetMuted( aIndex, iMovie.VideoClipIsMuted( aIndex - 1 ) );
-
- TBool isFile(iMovie.VideoClipInfo( aIndex )->Class() == EVedVideoClipClassFile);
- if ( isFile )
- {
- iMovie.VideoClipSetCutInTime( aIndex, cutInTime );
- iMovie.VideoClipSetCutOutTime( aIndex, cutOutTime );
- }
- /* Copy bitmaps, names etc. to new storyboarditem. */
- TRAP_IGNORE( item = CStoryboardVideoItem::NewL(
- *iVideoItemArray[aIndex-1]->iIconBitmap,
- *iVideoItemArray[aIndex-1]->iIconMask,
- *iVideoItemArray[aIndex-1]->iFilename,
- iVideoItemArray[aIndex-1]->iIsFile,
- *iVideoItemArray[aIndex-1]->iAlbumName ) );
- if (item)
- {
- item->InsertLastFrameL( *iVideoItemArray[aIndex-1]->iLastFrameBitmap,
- *iVideoItemArray[aIndex-1]->iLastFrameMask );
- item->InsertTimelineFrameL( *iVideoItemArray[aIndex-1]->iTimelineBitmap,
- *iVideoItemArray[aIndex-1]->iTimelineMask );
-
- iVideoItemArray.Insert( item, aIndex );
- }
-
- iVideoCursorPos = aIndex;
- iCursorLocation = ECursorOnClip;
- DrawDeferred();
- iView.SetWaitMode( CVeiEditVideoView::ENotWaiting );
- SetCursorLocation( CursorLocation() );
- return;
- }
-
- iCurrentlyProcessedIndex = aIndex;
- TFileName fileName;
-
- TBool isFile(iMovie.VideoClipInfo( aIndex )->Class() == EVedVideoClipClassFile);
- if ( isFile )
- {
- fileName = iMovie.VideoClipInfo( aIndex )->FileName();
- }
- else
- {
- CVedVideoClipInfo* info = iMovie.VideoClipInfo( aIndex );
-
- if (info->Class() == EVedVideoClipClassGenerated)
- {
- if (info->Generator()->Uid() == KUidTitleClipGenerator)
- {
- fileName = iMovie.VideoClipInfo( aIndex )->DescriptiveName();
- }
- else if (info->Generator()->Uid() == KUidImageClipGenerator)
- {
- CVeiImageClipGenerator* generator = STATIC_CAST(CVeiImageClipGenerator*, info->Generator());
- fileName = generator->ImageFilename();
- }
- }
- }
-
- TFileName albumName;
- GetAlbumL( fileName, albumName );
-
- TRAPD( error, (item = CStoryboardVideoItem::NewL( *iNoThumbnailIcon,
- *iNoThumbnailIconMask, fileName, isFile, albumName )) );
-
- if ( error == KErrNone )
- {
- iVideoItemArray.Insert( item, iCurrentlyProcessedIndex );
-
- iVideoCursorPos = aIndex;
- iCursorLocation = ECursorOnClip;
- iZoomFactorX = 0;
- iZoomFactorY = 0;
-
- TRAPD( frameError, StartFrameTakerL( aIndex ) );
- if ( frameError )
- {
- iMovie.RemoveVideoClip( aIndex );
- iView.ShowErrorNote( R_VEI_VIDEO_FAILED );
- iView.CancelWaitDialog();
- iView.AddNext();
- }
- }
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::NotifyVideoClipAdded: out");
- }
-
-void CVeiEditVideoContainer::NotifyVideoClipAddingFailed( CVedMovie&
- /*aMovie*/, TInt DEBUGLOG_ARG(aError) )
- {
- LOGFMT(KVideoEditorLogFile, "CVeiEditVideoContainer::NotifyVideoClipAddingFailed: In and Out, aError:%d", aError);
- }
-
-void CVeiEditVideoContainer::NotifyVideoClipInfoReady( CVedVideoClipInfo& aInfo,
- TInt aError )
- {
- LOGFMT(KVideoEditorLogFile, "CVeiEditVideoContainer::NotifyVideoClipInfoReady: In, aError:%d", aError);
- // video info ready, get thumbnail
- if (KErrNone == aError)
- {
- if (iTempVideoInfo)
- {
- delete iTempVideoInfo;
- iTempVideoInfo = NULL;
- }
- iTempVideoInfo = &aInfo;
- TSize thumbResolution;
- thumbResolution = iVideoDisplay->GetScreenSize();
- /* Check if cursor is on transition. When editvideocontainer is activated
- and right key is pressed very fast application crashes without this check */
-
- TInt currentIndex;
- currentIndex = CurrentIndex();
-
- if ( iCursorLocation == ECursorOnTransition )
- {
- currentIndex--;
- }
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::NotifyVideoClipInfoReady: 1");
- //we are in preview mode.
- if ( iView.EditorState() == CVeiEditVideoView::EQuickPreview )
- {
- return;
- }
-
- TTimeIntervalMicroSeconds cutInTime = iMovie.VideoClipCutInTime( currentIndex );
- TTimeIntervalMicroSeconds cutOutTime = iMovie.VideoClipCutOutTime( currentIndex );
-
- TInt firstThumbNailIndex = iTempVideoInfo->GetVideoFrameIndexL( cutInTime );
- // TInt lastThumbNailIndex = aInfo.GetVideoFrameIndexL( cutOutTime );
- // lastThumbNailIndex--;
-
- TDisplayMode thumbnailDisplayMode( ENone );
-
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::NotifyVideoClipInfoReady: 2");
- /* :
- check out on every phone before releasing whether videodisplay should be stopped before starting
- asynchronous GetFrameL()
- see how EStateGettingFrame is handled in SetPreviewState
- Stopping frees memory and it is needed in memory sensible devices
- */
- TRAPD( err, iTempVideoInfo->GetFrameL( *this, firstThumbNailIndex, &thumbResolution,
- thumbnailDisplayMode ) );
- if (KErrNone == err)
- {
- SetPreviewState(EStateGettingFrame);
- }
- LOGFMT(KVideoEditorLogFile, "CVeiEditVideoContainer::NotifyVideoClipInfoReady: 3, err:%d", err);
- if ( KErrNone != err )
- {
- if ( iProgressDialog )
- {
- iProgressDialog->GetProgressInfoL()->SetAndDraw( 100 );
- TRAP_IGNORE( iProgressDialog->ProcessFinishedL() );
- //iProgressDialog = NULL;
- }
- User::Panic( _L("VideoEditor"), 65 );
- }
- }
-
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::NotifyVideoClipInfoReady: Out");
- }
-
-void CVeiEditVideoContainer::NotifyVideoClipFrameCompleted(CVedVideoClipInfo& /*aInfo*/,
- TInt aError,
- CFbsBitmap* aFrame)
- {
- LOGFMT2(KVideoEditorLogFile, "CVeiEditVideoContainer::NotifyVideoClipFrameCompleted: In, aError:%d, iTakeSnapshot:%d", aError, iTakeSnapshot);
-
- iFrameReady = ETrue;
-
- if (EStateGettingFrame == iPreviewState)
- {
- SetPreviewState(iPreviousPreviewState);
- // SetEditorState is effective because iPreviewState is changed
- iView.SetEditorState( iView.EditorState() );
- }
-
- if(KErrNone == aError && aFrame)
- {
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::NotifyVideoClipFrameCompleted: 3 calling iVideoDisplay->ShowPictureL()");
- //TRAP_IGNORE(iVideoDisplay->ShowPictureL( *aFrame ));
-
- if ( iTakeSnapshot)
- {
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::NotifyVideoClipFrameCompleted: 2");
-
- // For some reason some phones crash in taking snapshot if this progress note is started
- // earlier from TakeSnapshotL, that is why it is started now here
- //StartProgressDialogL(R_VEI_PROGRESS_NOTE_WITH_CANCEL, R_VEI_PROGRESS_NOTE_SAVING_IMAGE);
- iConverter->SetBitmap( aFrame );
- SaveSnapshotL();
- return;
- }
- TRAP_IGNORE(iVideoDisplay->ShowPictureL( *aFrame ));
- delete aFrame;
- aFrame = NULL;
- if (iProgressDialog )
- {
- iProgressDialog->GetProgressInfoL()->SetAndDraw( 100 );
- TRAP_IGNORE( iProgressDialog->ProcessFinishedL() );
- //iProgressDialog = NULL;
- }
- DrawDeferred();
- if (iTakeSnapshotWaiting)
- {
- if (! iCallBack)
- {
- TCallBack cb (CVeiEditVideoContainer::AsyncTakeSnapshot, this);
- iCallBack = new (ELeave) CAsyncCallBack(cb, CActive::EPriorityStandard);
- }
- iCallBack->CallBack();
- }
- return;
- }
-
- if ( aFrame )
- {
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::NotifyVideoClipFrameCompleted: 4");
- delete aFrame;
- aFrame = NULL;
- }
-
- if (iProgressDialog )
- {
- iProgressDialog->GetProgressInfoL()->SetAndDraw( 100 );
- TRAP_IGNORE( iProgressDialog->ProcessFinishedL() );
- //iProgressDialog = NULL;
- }
- else if ( KErrNone == aError)
- {
- iView.HandleCommandL( EAknSoftkeyOk );
- }
-/* In case of an error, we'll do nothing. */
-/* If clip is too short, we won't get new thumbnail, so use old one->return; */
- if (KErrNone != aError)
- {
- iCurrentlyProcessedIndex = -1;
- return;
- }
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::NotifyVideoClipFrameCompleted: Out");
- }
-
-void CVeiEditVideoContainer::NotifyVideoClipGeneratorSettingsChanged(CVedMovie& /*aMovie*/,
- TInt aIndex)
- {
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::NotifyVideoClipGeneratorSettingsChanged: In");
- iCurrentlyProcessedIndex = aIndex;
- StartFrameTakerL( aIndex );
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::NotifyVideoClipGeneratorSettingsChanged: Out");
- }
-
-void CVeiEditVideoContainer::NotifyVideoClipDescriptiveNameChanged(CVedMovie& /*aMovie*/, TInt /*aIndex*/)
- {
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::NotifyVideoClipDescriptiveNameChanged: In");
- TFileName fileName;
- fileName = iMovie.VideoClipInfo( CurrentIndex() )->DescriptiveName();
- iInfoDisplay->SetName(fileName);
- iVideoDisplay->DrawDeferred();
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::NotifyVideoClipDescriptiveNameChanged: Out");
- }
-
-void CVeiEditVideoContainer::NotifyMovieQualityChanged(CVedMovie& /*aMovie*/)
- {
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::NotifyMovieQualityChanged: In and Out");
- }
-void CVeiEditVideoContainer::NotifyVideoClipRemoved(
- CVedMovie& /*aMovie*/, TInt aIndex )
- {
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::NotifyVideoClipRemoved: In");
- CStoryboardVideoItem* item = iVideoItemArray[ aIndex ];
- iVideoItemArray.Remove( aIndex );
- delete item;
- SetCursorLocation( ECursorOnClip );
- DrawDeferred();
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::NotifyVideoClipRemoved: Out");
- }
-
-void CVeiEditVideoContainer::NotifyVideoClipIndicesChanged(
- CVedMovie& /*aMovie*/, TInt aOldIndex, TInt aNewIndex )
- {
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::NotifyVideoClipIndicesChanged: In");
- CStoryboardVideoItem* item = iVideoItemArray[ aOldIndex ];
- iVideoItemArray.Remove( aOldIndex );
- iVideoItemArray.Insert( item, aNewIndex );
- DrawDeferred();
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::NotifyVideoClipIndicesChanged: Out");
- }
-
-void CVeiEditVideoContainer::NotifyVideoClipTimingsChanged(
- CVedMovie& aMovie, TInt aIndex )
- {
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::NotifyVideoClipTimingsChanged: In");
- /* Check is slowmotion on */
- if ( iMovie.VideoClipSpeed( iVideoCursorPos ) != 1000 )
- {
- iEffectSymbols->SetSlowMotionIconVisibility(ETrue);
- }
- else
- {
- // Engine sets mute automatically on if speed is set under 1000, but it does not return
- // mute state to original if speed is reset to 1000, reclaimed to nokia
- // problem is that we should respect user's mute settings prior to slow motion
- // i.e. when removing slow motion mute settings should be reset to user defined value
- // iMovie.VideoClipSetMuted(aIndex, EFalse);
- iEffectSymbols->SetSlowMotionIconVisibility(EFalse);
- }
- /* If SM is on, audio is muted */
- if ((iMovie.VideoClipIsMuted(aIndex) != EFalse) ||
- (iMovie.VideoClipEditedHasAudio(aIndex) == EFalse))
- {
- iEffectSymbols->SetVolumeMuteIconVisibility(ETrue);
- }
- else
- {
- iEffectSymbols->SetVolumeMuteIconVisibility(EFalse);
- }
-
- TTimeIntervalMicroSeconds editedDuration = aMovie.VideoClipEditedDuration( aIndex );
-
- iInfoDisplay->SetDuration( editedDuration );
-
- DrawTrackBoxes();
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::NotifyVideoClipTimingsChanged: Out");
- }
-
-void CVeiEditVideoContainer::NotifyVideoClipColorEffectChanged(
- CVedMovie& /*aMovie*/, TInt aIndex )
- {
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::NotifyVideoClipColorEffectChanged: In");
-
- if ( iView.WaitMode() != CVeiEditVideoView::EDuplicating )
- TRAP_IGNORE( UpdateThumbnailL( aIndex ) );
-
- SetColourToningIcons(aIndex);
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::NotifyVideoClipColorEffectChanged: Out");
- }
-
-void CVeiEditVideoContainer::NotifyVideoClipAudioSettingsChanged(
- CVedMovie& /*aMovie*/, TInt aIndex )
- {
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::NotifyVideoClipAudioSettingsChanged: In");
- /* Check is Mute on */
- if ((iMovie.VideoClipIsMuted(aIndex) != EFalse) ||
- (iMovie.VideoClipEditedHasAudio(aIndex) == EFalse))
- {
- iEffectSymbols->SetVolumeMuteIconVisibility(ETrue);
- }
- else
- {
- iEffectSymbols->SetVolumeMuteIconVisibility(EFalse);
- }
- DrawDeferred();
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::NotifyVideoClipAudioSettingsChanged: Out");
- }
-
-void CVeiEditVideoContainer::NotifyStartTransitionEffectChanged(
- CVedMovie& aMovie )
- {
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::NotifyStartTransitionEffectChanged: In");
- iInfoDisplay->SetName( *iTransitionInfo->StartTransitionName( aMovie.StartTransitionEffect() ) );
-
- ShowStartAnimationL( aMovie.StartTransitionEffect() );
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::NotifyStartTransitionEffectChanged: Out");
- }
-
-void CVeiEditVideoContainer::NotifyMiddleTransitionEffectChanged(
- CVedMovie& aMovie, TInt aIndex )
- {
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::NotifyMiddleTransitionEffectChanged: In");
- iInfoDisplay->SetName( *iTransitionInfo->MiddleTransitionName( aMovie.MiddleTransitionEffect( aIndex ) ) );
-
- ShowMiddleAnimationL( aMovie.MiddleTransitionEffect( aIndex ) );
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::NotifyMiddleTransitionEffectChanged: Out");
- }
-
-void CVeiEditVideoContainer::NotifyEndTransitionEffectChanged(
- CVedMovie& aMovie )
- {
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::NotifyEndTransitionEffectChanged: In");
- iInfoDisplay->SetName( *iTransitionInfo->EndTransitionName( aMovie.EndTransitionEffect() ) );
- ShowEndAnimationL( aMovie.EndTransitionEffect() );
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::NotifyEndTransitionEffectChanged: Out");
- }
-
-void CVeiEditVideoContainer::NotifyAudioClipAdded(
- CVedMovie& aMovie, TInt aIndex )
- {
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::NotifyAudioClipAdded: In");
- CStoryboardAudioItem* item;
-/* When audio clip is duplicated, check if original was recorded.
- TMPXXXXX.XXX name is not shown on main pane if iRecordedAudio is ETrue.
-**/
- if ( (aIndex > 0 ) && (iView.WaitMode() == CVeiEditVideoView::EDuplicating ))
- {
- if ( iAudioItemArray[aIndex-1]->iRecordedAudio == 1 )
- {
- iRecordedAudio = ETrue;
- }
- }
-
- if (CVeiEditVideoView::EDuplicating == iView.WaitMode())
- {
- //copy adjust volume parameter from original clip (aIndex - 1)
- TReal adjustVolume = aMovie.GetAudioClipVolumeGainL(aIndex-1);
- aMovie.SetAudioClipVolumeGainL(aIndex, (TInt)(adjustVolume));
- }
- item = CStoryboardAudioItem::NewLC( iRecordedAudio,
- aMovie.AudioClipInfo( aIndex )->FileName() );
-
- iAudioCursorPos = aIndex;
-
- iAudioItemArray.Insert( item, aIndex );
- CleanupStack::Pop( item );
-
- iView.SetWaitMode( CVeiEditVideoView::ENotWaiting );
- SetCursorLocation( ECursorOnAudio );
- iRecordedAudio = EFalse;
- DrawDeferred();
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::NotifyAudioClipAdded: Out");
- }
-
-void CVeiEditVideoContainer::NotifyAudioClipAddingFailed(
- CVedMovie& /*aMovie*/, TInt DEBUGLOG_ARG(aError) )
- {
- LOGFMT(KVideoEditorLogFile, "CVeiEditVideoContainer::NotifyAudioClipAddingFailed: In, aError:%d", aError);
- DrawDeferred();
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::NotifyAudioClipAddingFailed: Out");
- }
-
-void CVeiEditVideoContainer::NotifyAudioClipRemoved(
- CVedMovie& /*aMovie*/, TInt aIndex )
- {
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::NotifyAudioClipRemoved: In");
- CStoryboardAudioItem* item = iAudioItemArray[aIndex];
- iAudioItemArray.Remove(aIndex);
- delete item;
- SetCursorLocation( ECursorOnAudio );
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::NotifyAudioClipRemoved: Out");
- }
-
-void CVeiEditVideoContainer::NotifyAudioClipIndicesChanged(
- CVedMovie& /*aMovie*/, TInt aOldIndex, TInt aNewIndex )
- {
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::NotifyAudioClipIndicesChanged: In");
- CStoryboardAudioItem* item = iAudioItemArray[ aOldIndex ];
- iAudioItemArray.Remove( aOldIndex );
- TInt err = iAudioItemArray.Insert( item, aNewIndex );
- if ( err != KErrNone )
- {
- TBuf<30>buf;
- buf.Format( _L("Audio clip moving failed (%d)."), err );
- }
-
- iAudioCursorPos = aNewIndex;
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::NotifyAudioClipIndicesChanged: Out");
- }
-
-void CVeiEditVideoContainer::NotifyAudioClipTimingsChanged(
- CVedMovie& /*aMovie*/, TInt /*aIndex*/ )
- {
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::NotifyAudioClipTimingsChanged: In");
- IsAudioClipCutted();
- DrawDeferred();
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::NotifyAudioClipTimingsChanged: Out");
- }
-
-void CVeiEditVideoContainer::NotifyMovieReseted( CVedMovie& /*aMovie*/ )
- {
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::NotifyMovieReseted: In");
- iAudioItemArray.ResetAndDestroy();
- iVideoItemArray.ResetAndDestroy();
- iVideoCursorPos = 0;
- iAudioCursorPos = 0;
- iCursorLocation = ECursorOnClip;
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::NotifyMovieReseted: Out");
- }
-
-void CVeiEditVideoContainer::NotifyMovieOutputParametersChanged(CVedMovie& /*aMovie*/)
- {
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::NotifyMovieOutputParametersChanged: In and Out");
- // @
- }
-
-void CVeiEditVideoContainer::NotifyAudioClipDynamicLevelMarkInserted(CVedMovie& /*aMovie*/,
- TInt /*aClipIndex*/,
- TInt /*aMarkIndex*/)
- {
- // @
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::NotifyAudioClipDynamicLevelMarkInserted: In and out");
- }
-
-void CVeiEditVideoContainer::NotifyAudioClipDynamicLevelMarkRemoved(CVedMovie& /*aMovie*/,
- TInt /*aClipIndex*/,
- TInt /*aMarkIndex*/)
- {
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::NotifyAudioClipDynamicLevelMarkRemoved: In and out");
- // @
- }
-
-void CVeiEditVideoContainer::NotifyVideoClipDynamicLevelMarkInserted(CVedMovie& /*aMovie*/,
- TInt /*aClipIndex*/,
- TInt /*aMarkIndex*/)
- {
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::NotifyVideoClipDynamicLevelMarkInserted: In and out");
- // @
- }
-
-void CVeiEditVideoContainer::NotifyVideoClipDynamicLevelMarkRemoved(CVedMovie& /*aMovie*/,
- TInt /*aClipIndex*/,
- TInt /*aMarkIndex*/)
- {
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::NotifyVideoClipDynamicLevelMarkRemoved: In and out");
- // @
- }
-
-void CVeiEditVideoContainer::UpdateThumbnailL( TInt aIndex )
- {
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::UpdateThumbnailL: In");
- /*HBufC* stringholder;
-
- if (iProgressNote)
- {
- delete iProgressNote;
- iProgressNote = NULL;
- }
-
- iProgressNote =
- new (ELeave) CAknProgressDialog(REINTERPRET_CAST(CEikDialog**,
- &iProgressNote), ETrue);
- iProgressNote->SetCallback(this);
-
- if( iView.WaitMode() == CVeiEditVideoView::EProcessingMovieForCutting )
- {
- stringholder = StringLoader::LoadLC( R_VEI_PROGRESS_NOTE_CUTTING_VIDEO, iEikonEnv );
- }
- else
- {
- stringholder = StringLoader::LoadLC( R_VEI_PROGRESS_NOTE_COLOR_EFFECT, iEikonEnv );
- }
-
- iProgressNote->ExecuteDlgLD( R_VEI_PROGRESS_NOTE );
- iProgressNote->SetTextL( *stringholder );
- CleanupStack::PopAndDestroy( stringholder );
-
- iProgressNote->GetProgressInfoL()->SetFinalValue(100);
- */
- TInt resid;
- if( iView.WaitMode() == CVeiEditVideoView::EProcessingMovieForCutting )
- {
- resid = R_VEI_PROGRESS_NOTE_CUTTING_VIDEO;
- }
- else
- {
- resid = R_VEI_PROGRESS_NOTE_COLOR_EFFECT;
- }
- StartProgressDialogL(R_VEI_PROGRESS_NOTE, resid);
-
- iCurrentlyProcessedIndex = iVideoCursorPos;
-
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::UpdateThumbnailL: 2");
- StartFrameTakerL( aIndex );
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::UpdateThumbnailL: Out");
- }
-
-// ---------------------------------------------------------
-// CVeiEditVideoContainer::ConvertBW(CFbsBitmap& aBitmap)
-// ---------------------------------------------------------
-//
-void CVeiEditVideoContainer::ConvertBW( CFbsBitmap& aBitmap ) const
- {
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::ConvertBW: In");
- TInt width = aBitmap.SizeInPixels().iWidth;
- TInt height = aBitmap.SizeInPixels().iHeight;
-
- TBitmapUtil bitmapUtil( &aBitmap );
- bitmapUtil.Begin( TPoint(0,0) );
-
- for ( TInt y=0;y<height;y++ )
- {
- for ( TInt x=0;x<width;x++ )
- {
- bitmapUtil.SetPos( TPoint( x,y ) );
-
- TUint32 colorr = ( bitmapUtil.GetPixel() );
-
- TRgb vari = TRgb::Color64K( colorr );
-
- TInt red = vari.Red();
- TInt green = vari.Green();
- TInt blue = vari.Blue();
-
- TUint Yy = STATIC_CAST( TUint, red*0.299 + green*0.587 + blue*0.114 );
-
- bitmapUtil.SetPixel( TRgb(Yy,Yy,Yy).Color64K() );
- }
- }
- bitmapUtil.End();
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::ConvertBW: Out");
- }
-
-// ---------------------------------------------------------
-// CVeiEditVideoContainer::ConvertToning(CFbsBitmap& aBitmap)
-// ---------------------------------------------------------
-//
-void CVeiEditVideoContainer::ConvertToning( CFbsBitmap& aBitmap ) const
- {
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::ConvertToning: In");
-// TInt ind = CurrentIndex();
- TRgb toning = iMovie.VideoClipColorTone(CurrentIndex());
-
- TInt width = aBitmap.SizeInPixels().iWidth;
- TInt height = aBitmap.SizeInPixels().iHeight;
-
- TBitmapUtil bitmapUtil( &aBitmap );
- bitmapUtil.Begin( TPoint(0,0) );
-
- TInt R_ct = toning.Red();
- TInt G_ct = toning.Green();
- TInt B_ct = toning.Blue();
-
- /*
- //vihreä
- TInt R_ct = 185;
- TInt G_ct = 255;
- TInt B_ct = 0;
- */
-
- TInt kr = 45808*R_ct - 38446*G_ct - 7362*B_ct + 32768;
- TInt kg = - 19496*R_ct + 26952*G_ct - 3750*B_ct + 32768;
- TInt kb = - 19608*R_ct - 38184*G_ct + 57792*B_ct + 32768;
-
- for ( TInt y=0;y<height;y++ )
- {
- for ( TInt x=0;x<width;x++ )
- {
- bitmapUtil.SetPos( TPoint( x,y ) );
-
- TUint32 colorr = ( bitmapUtil.GetPixel() );
- TRgb vari = TRgb::Color64K( colorr );
-
- TInt alpha = 19668*vari.Red() + 38442*vari.Green() + 7450*vari.Blue();
- TInt R_out = (alpha + kr)>>16;
- TInt G_out = (alpha + kg)>>16;
- TInt B_out = (alpha + kb)>>16;
-
- if(R_out<0) R_out=0; if(R_out>255) R_out=255;
- if(G_out<0) G_out=0; if(G_out>255) G_out=255;
- if(B_out<0) B_out=0; if(B_out>255) B_out=255;
-
- bitmapUtil.SetPixel( TRgb(R_out,G_out,B_out).Color64K() );
- }
- }
- bitmapUtil.End();
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::ConvertToning: Out");
- }
-
-
-// ---------------------------------------------------------
-// CVeiEditVideoContainer::HandleControlEventL(
-// CCoeControl* aControl,TCoeEvent aEventType)
-// ---------------------------------------------------------
-//
-void CVeiEditVideoContainer::HandleControlEventL(
- CCoeControl* /*aControl*/,TCoeEvent /*aEventType*/)
- {
- // : Add your control event handler code here
- }
-
-// ----------------------------------------------------------------------------
-// CVeiEditVideoContainer::HandlePointerEventL
-// From CCoeControl
-// ----------------------------------------------------------------------------
-//
-void CVeiEditVideoContainer::HandlePointerEventL( const TPointerEvent& aPointerEvent )
- {
- LOG( KVideoEditorLogFile, "CVeiEditVideoContainer::HandlePointerEventL(): In" );
-
- if( AknLayoutUtils::PenEnabled() )
- {
- CCoeControl::HandlePointerEventL( aPointerEvent );
-
- switch( aPointerEvent.iType )
- {
- case TPointerEvent::EButton1Down:
- {
- LOG( KVideoEditorLogFile, "CVeiEditVideoContainer::HandlePointerEventL(): EButton1Down" );
-
- // Initialise the touch related member variables
- iIsVideoDrag = EFalse;
- iIsVideoTapped = EFalse;
-
- // the user taps the timeline bar
- if( iVideoBarBox.Contains( aPointerEvent.iPosition ) )
- {
- iCursorLocation = ECursorOnClip;
- HandleVideoTimelineTouchL( aPointerEvent );
- }
- // the user double-taps the cut bar
- else if (( iDummyCutBar->Rect().Contains( aPointerEvent.iPosition )) &&
- ( aPointerEvent.iModifiers & EModifierDoubleClick ))
- {
- // open cut view
- iView.HandleCommandL( EVeiCmdEditVideoViewEditVideoCutting );
- }
- // : the user double taps the thumbnail (wait for the layout data)
- // : the user taps the transition arrows (wait for the layout data)
-
- // the volume adjustment view is active and the user taps the volume slider
- else if (( EModeAdjustVolume == iSelectionMode ) &&
- ( iVerticalSlider->Rect().Contains( aPointerEvent.iPosition )))
- {
- HandleVolumeSliderTouchL( aPointerEvent );
- }
- break;
- }
- case TPointerEvent::EDrag:
- {
- LOGFMT( KVideoEditorLogFile, "CVeiEditVideoContainer::HandlePointerEventL(): \
- EDrag, iIsVideoTapped = %d", iIsVideoTapped );
-
- // video drag takes effect only when the pointer has gone down inside a
- // video clip (i.e. iIsVideoTapped == ETrue)
- if ( iVideoBarBox.Contains( aPointerEvent.iPosition ) && ( iIsVideoTapped ))
- {
- iIsVideoDrag = ETrue;
- HandleVideoTimelineTouchL( aPointerEvent );
- }
- // the volume adjustment view is active and the user taps the volume slider
- else if (( EModeAdjustVolume == iSelectionMode ) &&
- ( iVerticalSlider->Rect().Contains( aPointerEvent.iPosition )))
- {
- HandleVolumeSliderTouchL( aPointerEvent );
- }
- break;
- }
- case TPointerEvent::EButton1Up:
- {
- // pen up event is handled if it was dragged
- if (iIsVideoDrag)
- {
- iIsVideoDrag = EFalse;
- // pressed position is inside the timeline bar
- if( iVideoBarBox.Contains( aPointerEvent.iPosition ) )
- {
- HandleVideoTimelineTouchL( aPointerEvent );
- }
- else
- {
- // the new position indicator has to be removed from the UI
- iNewClipPosition = iClickedClip;
- DrawNow();
- }
- }
-
- break;
- }
- default:
- {
- break;
- }
- }
- }
- LOG( KVideoEditorLogFile, "CVeiEditVideoContainer::HandlePointerEventL(): Out" );
- }
-
-
-// ----------------------------------------------------------------------------
-// CVeiEditVideoContainer::HandleVideoTimelineTouchL
-//
-// ----------------------------------------------------------------------------
-//
-void CVeiEditVideoContainer::HandleVideoTimelineTouchL( TPointerEvent aPointerEvent )
- {
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::HandleVideoTimelineTouchL(): In" );
-
- CVeiEditVideoView::TEditorState state = iView.EditorState();
-
- if (( AknLayoutUtils::PenEnabled() ) &&
- ( state!=CVeiEditVideoView::EPreview ) &&
- ( state!=CVeiEditVideoView::EQuickPreview ))
- {
-
- LOGFMT(KVideoEditorLogFile, "CVeiEditVideoContainer::HandleVideoTimelineTouchL, \
- iClickedClip:%d", iClickedClip );
-
- // move video clip by dragging
- if ( aPointerEvent.iType == TPointerEvent::EDrag )
- {
- LOGFMT(KVideoEditorLogFile, "CVeiEditVideoContainer::HandleVideoTimelineTouchL, EDrag, \
- aPointerEvent.iPosition.iX = %d", aPointerEvent.iPosition.iX );
-
- // Find the clip that includes the current pointer position.
- TInt clipIncludingDrag = FindClickedClip( aPointerEvent.iPosition.iX );
-
- // the pen is inside the same clip where it went down
- if (( clipIncludingDrag == iClickedClip ))
- {
- // the new position indicator has to be removed from UI
- iNewClipPosition = iClickedClip;
- }
-
- // the pen is on the empty part of the timeline
- else if ( aPointerEvent.iPosition.iX > iEmptyVideoTimeLineRect.iTl.iX )
- {
- // the last clip can't be moved right
- if ( iClickedClip < iMovie.VideoClipCount() - 1 )
- {
- iNewClipPosition = iMovie.VideoClipCount() - 1;
- }
- }
- // the pen is on the left end of a video clip
- else if (( clipIncludingDrag >= 0) &&
- ( iVideoItemRectArray[ clipIncludingDrag ].Contains( TPoint( aPointerEvent.iPosition.iX, iVideoBarBox.Center().iY ))) &&
- ( aPointerEvent.iPosition.iX <= iVideoItemRectArray[ clipIncludingDrag ].iTl.iX + iVideoItemRectArray[ clipIncludingDrag ].Width()/2 ))
- {
- // moving a clip from left to right
- if (( iClickedClip < clipIncludingDrag ) && ( iClickedClip < clipIncludingDrag - 1 ))
- {
- iNewClipPosition = clipIncludingDrag - 1;
- }
- // moving a clip from right to left
- else if ( iClickedClip > clipIncludingDrag )
- {
- iNewClipPosition = clipIncludingDrag;
- }
- else
- {
- iNewClipPosition = iClickedClip;
- }
- }
- // the pen is on the right end of a video clip
- else if (( clipIncludingDrag >= 0) &&
- ( iVideoItemRectArray[ clipIncludingDrag ].Contains( TPoint( aPointerEvent.iPosition.iX, iVideoBarBox.Center().iY ))) &&
- ( aPointerEvent.iPosition.iX > iVideoItemRectArray[ clipIncludingDrag ].iTl.iX + iVideoItemRectArray[ clipIncludingDrag ].Width()/2 ))
- {
- // moving a clip from left to right
- if (( iClickedClip < clipIncludingDrag ))
- {
- iNewClipPosition = clipIncludingDrag;
- }
- // moving a clip from right to left
- else if ( iClickedClip > clipIncludingDrag + 1)
- {
- iNewClipPosition = clipIncludingDrag + 1;
- }
- else
- {
- iNewClipPosition = iClickedClip;
- }
- }
- }
-
- // pen up event after dragging
- else if ( aPointerEvent.iType == TPointerEvent::EButton1Up )
- {
- iMovie.VideoClipSetIndex( iClickedClip, iNewClipPosition );
- if ( iVideoCursorPos != iNewClipPosition ) // eliminates blinking of the already selected clip
- {
- iVideoCursorPos = iNewClipPosition;
- SetCursorLocation( ECursorOnClip );
- }
-
- }
- // user taps a clip
- else if ( aPointerEvent.iType == TPointerEvent::EButton1Down )
- {
- CalculateVideoClipRects();
-
- iClickedClip = FindClickedClip( aPointerEvent.iPosition.iX );
- iNewClipPosition = iClickedClip;
-
- if ( iClickedClip >= 0 )
- {
- iIsVideoTapped = ETrue;
- if ( iClickedClip != iVideoCursorPos ) // eliminates blinking of the already selected clip
- {
- iVideoCursorPos = iClickedClip;
- SetCursorLocation( ECursorOnClip );
- }
- }
- }
-
- // : when the user clicks a transition marker, the transition view should open
-
- DrawNow();
- LOG( KVideoEditorLogFile, "CVeiEditVideoContainer::HandleVideoTimelineTouchL(): Out" );
-
- }// PenEnabled
-
- }
-
-
-// ----------------------------------------------------------------------------
-// CVeiEditVideoContainer::HandleVolumeSliderTouchL
-//
-// ----------------------------------------------------------------------------
-//
-void CVeiEditVideoContainer::HandleVolumeSliderTouchL( TPointerEvent aPointerEvent )
- {
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::HandleVolumeSliderTouchL in");
-
- // calculate the new slider position
- TInt newSliderPosition;
- TInt volumeSliderSteps = KVolumeSliderMax - KVolumeSliderMin + 1;
- TInt pointerPosInSlider = aPointerEvent.iPosition.iY - iVerticalSlider->Rect().iTl.iY;
- newSliderPosition = (( volumeSliderSteps * pointerPosInSlider ) / iVerticalSlider->Rect().Height()) + KVolumeSliderMin;
-
- iVerticalSlider->SetPosition( newSliderPosition);
- iVerticalSlider->DrawNow();
-
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::HandleVolumeSliderTouchL out");
- }
-
-
-// ----------------------------------------------------------------------------
-// CVeiEditVideoContainer::ClipContainingClick
-//
-// ----------------------------------------------------------------------------
-//
-TInt CVeiEditVideoContainer::FindClickedClip( TInt aPressedPointX )
- {
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::FindClickedClip in");
- // Video Timeline start and end points, and length
- TInt timelineLeftEnd( iVideoBarBox.iTl.iX );
- TInt timelineRightEnd( iVideoBarBox.iBr.iX );
- TInt totalPBLength( timelineRightEnd - timelineLeftEnd );
-
- // check which part of the timeline contains the click
- TInt clickedClip = -1;
- TInt i = 0;
- while (( clickedClip < 0) && ( i < iMovie.VideoClipCount() ))
- {
- if ( ( aPressedPointX > iVideoItemRectArray[i].iTl.iX ) &&
- ( aPressedPointX < iVideoItemRectArray[i].iBr.iX ))
- {
- clickedClip = i;
- }
- else
- {
- i++;
- }
- }
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::FindClickedClip out");
- return clickedClip;
- }
-
-
-
-void CVeiEditVideoContainer::SetCursorLocation( TCursorLocation aCursorLocation )
- {
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::SetCursorLocation in");
-
- iCursorLocation = aCursorLocation;
-
- if ( iView.EditorState() == CVeiEditVideoView::EMixAudio)
- {
- iVideoDisplay->MakeVisible( ETrue );
- iVideoDisplay->SetRect( iVideoDisplayBox );
- iVideoDisplay->ShowPictureL(*iAudioMixingIcon);
- iInfoDisplay->MakeVisible(EFalse);
- iHorizontalSlider->MakeVisible(ETrue);
- return;
- }
-
- iTransitionDisplayLeft->MakeVisible( EFalse );
- iTransitionDisplayRight->MakeVisible( EFalse );
- iDummyCutBarLeft->MakeVisible( EFalse );
- iInfoDisplay->SetRect( iInfoDisplayBox );
- iEffectSymbols->MakeVisible( EFalse );
- if (CVeiEditVideoContainer::EModeSlowMotion != iSelectionMode)
- {
- // currently slow motion wastes processing time in background
- iVideoDisplay->StopAnimation();
- }
-
- if ( iCursorLocation == ECursorOnClip && iInfoDisplay )
- {
- iVideoDisplay->MakeVisible( ETrue );
- iVideoDisplay->SetRect( iVideoDisplayBox );
-
- if ( iMovie.VideoClipCount() > 0 )
- {
- if ( (iVideoCursorPos > (iMovie.VideoClipCount()-1)))
- {
- iVideoCursorPos--;
- }
-
- TParse parser;
-
- parser.Set( iVideoItemArray[ CurrentIndex() ]->iFilename->Des(), NULL, NULL );
- iVideoDisplay->ShowPictureL( *iVideoItemArray[CurrentIndex()]->iIconBitmap,
- *iVideoItemArray[CurrentIndex()]->iIconMask );
-
- iDummyCutBar->SetRect( iDummyCutBarBox );
- iDummyCutBar->Dim( EFalse );
-
- // : start using LAF data when it is available
- // iDummyCutBar->Rect() == (80, 160, 273, 204) includes the scissor icon and the progress bar
- iDummyCutBar->SetComponentRect( CVeiCutterBar::EProgressBar, TRect(115, 160,273,204));
- iDummyCutBar->SetComponentRect( CVeiCutterBar::ESliderLeftEndIcon, TRect(115, 160,135,204) );
- iDummyCutBar->SetComponentRect( CVeiCutterBar::ESliderMiddleIcon, TRect(135,160,244,204) );
- iDummyCutBar->SetComponentRect( CVeiCutterBar::ESliderRightEndIcon,TRect(244,160,273,204) );
- iDummyCutBar->SetComponentRect( CVeiCutterBar::ESliderSelectedLeftEndIcon, TRect(115, 160,135,204) );
- iDummyCutBar->SetComponentRect( CVeiCutterBar::ESliderSelectedMiddleIcon, TRect(135,160,244,204) );
- iDummyCutBar->SetComponentRect( CVeiCutterBar::ESliderSelectedRightEndIcon,TRect(244,160,273,204) );
- iDummyCutBar->SetComponentRect( CVeiCutterBar::EScissorsIcon, TRect(80, 167,110,197) );
- iDummyCutBar->SetComponentRect( CVeiCutterBar::ECutAreaBorderIcon,TRect(115,160,124,204) );
-
- TTimeIntervalMicroSeconds clipDuration = iMovie.VideoClipInfo( CurrentIndex())->Duration();
- TTimeIntervalMicroSeconds clipCutInTime = iMovie.VideoClipCutInTime( CurrentIndex() );
- TTimeIntervalMicroSeconds clipCutOutTime = iMovie.VideoClipCutOutTime( CurrentIndex() );
-
- iDummyCutBar->SetTotalDuration( clipDuration );
- iDummyCutBar->SetInPoint( clipCutInTime );
- iDummyCutBar->SetOutPoint( clipCutOutTime );
-
- TTime fileModified;
-
- RFs& fs = iEikonEnv->FsSession();
- if ( parser.ExtPresent() )
- {
- fs.Modified( *iVideoItemArray[CurrentIndex()]->iFilename, fileModified );
- }
- else
- {
- fileModified = iVideoItemArray[CurrentIndex()]->iDateModified;
- }
-
- if ( VideoEditorUtils::IsLandscapeScreenOrientation() ) //Landscape
- {
- iInfoDisplay->SetLayout( CVeiTextDisplay::EEverything );
- }
- else
- {
- iInfoDisplay->SetLayout( CVeiTextDisplay::ENameAndDuration );
- }
-
- iInfoDisplay->SetLocation( *iVideoItemArray[CurrentIndex()]->iAlbumName );
-
- TFileName clipName = parser.Name();
- TTimeIntervalMicroSeconds editedDuration = iMovie.VideoClipEditedDuration( CurrentIndex() );
- iInfoDisplay->MakeVisible( ETrue );
-
- if( !CurrentClipIsFile() )
- {
- TFileName fileName;
- fileName = iMovie.VideoClipInfo( CurrentIndex() )->DescriptiveName();
- iInfoDisplay->SetName(fileName);
- }
- else
- {
- iInfoDisplay->SetName( clipName );
- }
-
- iInfoDisplay->SetDuration( editedDuration );
- iInfoDisplay->SetTime( fileModified );
-
- // *** IconBox drawing ****
- // indicator icons are hidden in preview state
- CVeiEditVideoView::TEditorState state = iView.EditorState();
- if (state != CVeiEditVideoView::EPreview && state != CVeiEditVideoView::EQuickPreview)
- {
- if ((iMovie.VideoClipIsMuted(iVideoCursorPos) != EFalse) ||
- (iMovie.VideoClipEditedHasAudio(iVideoCursorPos) == EFalse))
- {
- iEffectSymbols->SetVolumeMuteIconVisibility(ETrue);
- }
- else
- {
- iEffectSymbols->SetVolumeMuteIconVisibility(EFalse);
- }
-
- if ( iMovie.VideoClipSpeed( iVideoCursorPos ) != 1000 )
- {
- iEffectSymbols->SetSlowMotionIconVisibility(ETrue);
- }
- else
- {
- iEffectSymbols->SetSlowMotionIconVisibility(EFalse);
- }
-
- SetColourToningIcons(iVideoCursorPos);
-
- iEffectSymbols->MakeVisible( ETrue );
- iEffectSymbols->SetRect( iEffectSymbolBox );
- }
- }
- else
- {
- iInfoDisplay->SetLayout( CVeiTextDisplay::EOnlyName );
- iVideoDisplay->ShowBlankScreen();
-
- iDummyCutBar->Dim( ETrue );
- HBufC* stringholder = StringLoader::LoadLC( R_VEI_EDIT_VIEW_NO_VIDEO, iEikonEnv );
- iInfoDisplay->SetName( *stringholder );
- CleanupStack::PopAndDestroy( stringholder );
- }
- StartZooming();
- }
- else if ( iCursorLocation == ECursorOnEmptyVideoTrack )
- {
- iVideoDisplay->MakeVisible( ETrue );
- iVideoDisplay->SetRect( iVideoDisplayBox );
- iDummyCutBar->SetRect( iDummyCutBarBox );
- iDummyCutBar->Dim( ETrue );
- iDummyCutBar->MakeVisible( EFalse);
-
- iInfoDisplay->SetLayout( CVeiTextDisplay::EOnlyName );
- iVideoDisplay->ShowBlankScreen();
- iInfoDisplay->MakeVisible( ETrue );
-
- HBufC* stringholder = StringLoader::LoadLC( R_VEI_EDIT_VIEW_NO_VIDEO, iEikonEnv );
- iInfoDisplay->SetName( *stringholder );
- CleanupStack::PopAndDestroy( stringholder );
- }
- else if (( iCursorLocation == ECursorOnAudio ) &&
- (( iSelectionMode == EModeRecordingSetStart ) ||
- ( iSelectionMode == EModeRecording )))
- {
- HBufC* stringholder = StringLoader::LoadLC( R_VEI_EDIT_VIEW_NEW_AUDIO, iEikonEnv );
-
- iVideoDisplay->MakeVisible( ETrue );
- iInfoDisplay->MakeVisible( ETrue );
- iInfoDisplay->SetName( *stringholder );
- iVideoDisplay->ShowPictureL( *iAudioIcon );
-
- iEffectSymbols->SetVolumeMuteIconVisibility( EFalse );
- iEffectSymbols->SetBlackAndWhiteIconVisibility( EFalse );
- iEffectSymbols->SetColourIconVisibility( EFalse );
- iEffectSymbols->SetSlowMotionIconVisibility( EFalse );
-
- iVideoDisplay->SetRect( iVideoDisplayBox );
- iDummyCutBar->SetRect( iDummyCutBarBox );
-
- if ( iSelectionMode == EModeRecordingSetStart )
- {
- TTimeIntervalMicroSeconds duration = TTimeIntervalMicroSeconds(0);
- iInfoDisplay->SetDuration( duration );
- }
- else
- {
- iInfoDisplay->SetDuration( iRecordedAudioDuration );
- }
- CleanupStack::PopAndDestroy( stringholder );
- }
- else if ( iCursorLocation == ECursorOnAudio )
- {
-
- iVideoDisplay->MakeVisible( ETrue );
- iEffectSymbols->SetVolumeMuteIconVisibility( EFalse );
- iEffectSymbols->SetBlackAndWhiteIconVisibility( EFalse );
- iEffectSymbols->SetColourIconVisibility( EFalse );
- iEffectSymbols->SetSlowMotionIconVisibility( EFalse );
-
- iVideoDisplay->SetRect( iVideoDisplayBox );
- iDummyCutBar->SetRect( iDummyCutBarBox );
-
- if ( iMovie.AudioClipCount() > 0 )
- {
-
- CVedAudioClipInfo* audioclipinfo = iMovie.AudioClipInfo( CurrentIndex() );
-
- TTimeIntervalMicroSeconds audioClipEditedDuration = iMovie.AudioClipEditedDuration( CurrentIndex() );
- TTimeIntervalMicroSeconds audioClipDuration = audioclipinfo->Duration();
- TTimeIntervalMicroSeconds audioClipCutInTime = iMovie.AudioClipCutInTime( CurrentIndex() );
- TTimeIntervalMicroSeconds audioClipCutOutTime = iMovie.AudioClipCutOutTime( CurrentIndex() );
-
- iDummyCutBar->Dim( EFalse );
-
- iDummyCutBar->SetTotalDuration( audioClipDuration );
- iDummyCutBar->SetInPoint( audioClipCutInTime );
- iDummyCutBar->SetOutPoint( audioClipCutOutTime );
-
- TParse parser;
- parser.Set( *iAudioItemArray[CurrentIndex()]->iFilename, NULL, NULL );
- iVideoDisplay->ShowPictureL( *iAudioIcon );
-
- TTime fileModified;
-
- RFs& fs = iEikonEnv->FsSession();
- fs.Modified( parser.FullName(), fileModified );
-
- if ( VideoEditorUtils::IsLandscapeScreenOrientation() ) //Landscape
- {
- iInfoDisplay->SetLayout( CVeiTextDisplay::EEverything );
- }
- else
- {
- iInfoDisplay->SetLayout( CVeiTextDisplay::ENameAndDuration );
- }
- TFileName audioClipName;
-
- if ( iAudioItemArray[CurrentIndex()]->iRecordedAudio )
- {
- HBufC* stringholder = StringLoader::LoadLC( R_VEI_EDIT_VIEW_NEW_AUDIO, iEikonEnv );
- audioClipName = *stringholder;
- CleanupStack::PopAndDestroy( stringholder );
- }
- else
- {
- audioClipName = parser.Name();
- }
-
- iInfoDisplay->MakeVisible( ETrue );
- iInfoDisplay->SetName( audioClipName );
- iInfoDisplay->SetDuration( audioClipEditedDuration );
- iInfoDisplay->SetTime( fileModified );
- }
- else
- {
- iVideoDisplay->MakeVisible( ETrue );
- iInfoDisplay->SetLayout( CVeiTextDisplay::EOnlyName );
- iVideoDisplay->ShowBlankScreen();
- iDummyCutBar->Dim( ETrue );
- iInfoDisplay->MakeVisible( ETrue );
- HBufC* stringholder = StringLoader::LoadLC( R_VEI_EDIT_VIEW_NO_AUDIO, iEikonEnv );
- iInfoDisplay->SetName( *stringholder );
- CleanupStack::PopAndDestroy( stringholder );
- }
- StartZooming();
- }
- else if ( iCursorLocation == ECursorOnTransition )
- {
- iVideoDisplay->MakeVisible( ETrue );
- iTransitionDisplayLeft->MakeVisible( ETrue );
- iTransitionDisplayRight->MakeVisible( ETrue );
-
- TTimeIntervalMicroSeconds clipDuration;
- TTimeIntervalMicroSeconds clipCutInTime;
- TTimeIntervalMicroSeconds clipCutOutTime;
-
- TInt nextIndex;
- nextIndex = iVideoCursorPos;
-
- if ( ( nextIndex < iMovie.VideoClipCount() ) ) // video on both sides OR no video on the left hand side
- {
- CStoryboardVideoItem* item = iVideoItemArray[ nextIndex ];
-
- iConverter->ScaleL( item->iIconBitmap, item->iIconBitmap, iTransitionDisplayRight->GetScreenSize() );
-
- clipDuration = iMovie.VideoClipInfo( nextIndex )->Duration();
- clipCutInTime = iMovie.VideoClipCutInTime( nextIndex );
- clipCutOutTime = iMovie.VideoClipCutOutTime( nextIndex );
-
- iDummyCutBar->Dim( EFalse );
- iDummyCutBar->SetTotalDuration( clipDuration );
- iDummyCutBar->SetInPoint( clipCutInTime );
- iDummyCutBar->SetOutPoint( clipCutOutTime );
- }
- else // no video on the right hand side
- {
- iTransitionDisplayRight->ShowBlankScreen();
- iDummyCutBar->Dim( ETrue );
- }
- nextIndex--;
-
- if ( nextIndex >= 0 ) // video on both sides OR no video on the right hand side
- {
- CStoryboardVideoItem* item = iVideoItemArray[ nextIndex ];
- if ( item->iLastFrameBitmap != NULL )
- {
- iTransitionDisplayLeft->ShowPictureL( *item->iLastFrameBitmap, *item->iLastFrameMask);
- }
- iDummyCutBarLeft->Dim( EFalse );
-
- clipDuration = iMovie.VideoClipInfo( nextIndex )->Duration();
- clipCutInTime = iMovie.VideoClipCutInTime( nextIndex );
- clipCutOutTime = iMovie.VideoClipCutOutTime( nextIndex );
-
- iDummyCutBarLeft->SetTotalDuration( clipDuration );
- iDummyCutBarLeft->SetInPoint( clipCutInTime );
- iDummyCutBarLeft->SetOutPoint( clipCutOutTime );
- }
- else // no video on the left hand side
- {
- iTransitionDisplayLeft->ShowBlankScreen();
- iDummyCutBarLeft->Dim( ETrue );
- }
-
- iVideoDisplay->ShowBlankScreen();
-
- iVideoDisplay->SetRect( iVideoDisplayBoxOnTransition );
- iDummyCutBar->SetRect( iDummyCutBarBoxOnTransition );
-
- // : start using LAF data when it is available
- // iDummyCutBar->Rect() == (321, 107, 433, 151) includes the scissor icon and the progress bar
- iDummyCutBar->SetComponentRect( CVeiCutterBar::EProgressBar, TRect(355,107,433,151));
- iDummyCutBar->SetComponentRect( CVeiCutterBar::ESliderLeftEndIcon, TRect(355,107,360 ,151) );
- iDummyCutBar->SetComponentRect( CVeiCutterBar::ESliderMiddleIcon, TRect(360,107,400 ,151) );
- iDummyCutBar->SetComponentRect( CVeiCutterBar::ESliderRightEndIcon,TRect(400,107,433 ,151) );
- iDummyCutBar->SetComponentRect( CVeiCutterBar::ESliderSelectedLeftEndIcon, TRect(355,107,360 ,151) );
- iDummyCutBar->SetComponentRect( CVeiCutterBar::ESliderSelectedMiddleIcon, TRect(360,107,400 ,151) );
- iDummyCutBar->SetComponentRect( CVeiCutterBar::ESliderSelectedRightEndIcon,TRect(400,107,433 ,151) );
- iDummyCutBar->SetComponentRect( CVeiCutterBar::EScissorsIcon, TRect(321,107,350 ,151) );
- iDummyCutBar->SetComponentRect( CVeiCutterBar::ECutAreaBorderIcon,TRect(321,107,350 ,151) );
-
- iDummyCutBarLeft->MakeVisible( ETrue );
- iDummyCutBarLeft->SetPosition( TPoint(iTransitionDisplayLeftBox.iTl.iX,
- iTransitionDisplayLeftBox.iBr.iY- iVideoDisplay->GetBorderWidth() ) );
- iDummyCutBarLeft->SetSize( TSize( iTransitionDisplayLeftBox.Width(), iDummyCutBarBox.Height() ) );
-
- // : start using LAF data when it is available
- // iDummyCutBarLeft->Rect() == (5, 107, 117, 151) includes the scissor icon and the progress bar
- iDummyCutBarLeft->SetComponentRect( CVeiCutterBar::EProgressBar, TRect(35,107,117,151));
- iDummyCutBarLeft->SetComponentRect( CVeiCutterBar::ESliderLeftEndIcon, TRect(35,107,55 ,151) );
- iDummyCutBarLeft->SetComponentRect( CVeiCutterBar::ESliderMiddleIcon, TRect(55,107,100 ,151) );
- iDummyCutBarLeft->SetComponentRect( CVeiCutterBar::ESliderRightEndIcon,TRect(100,107,117 ,151) );
- iDummyCutBarLeft->SetComponentRect( CVeiCutterBar::ESliderSelectedLeftEndIcon, TRect(35,107,55 ,151) );
- iDummyCutBarLeft->SetComponentRect( CVeiCutterBar::ESliderSelectedMiddleIcon, TRect(55,107,100 ,151) );
- iDummyCutBarLeft->SetComponentRect( CVeiCutterBar::ESliderSelectedRightEndIcon,TRect(100,107,117 ,151) );
- iDummyCutBarLeft->SetComponentRect( CVeiCutterBar::EScissorsIcon, TRect(5,107,30 ,151) );
- iDummyCutBarLeft->SetComponentRect( CVeiCutterBar::ECutAreaBorderIcon,TRect(5,107,30 ,151) );
-
- ArrowsControl();
-
- if ( iVideoCursorPos == 0 )
- {
- ShowStartAnimationL( iMovie.StartTransitionEffect() );
- iInfoDisplay->SetName( *iTransitionInfo->StartTransitionName( iMovie.StartTransitionEffect() ) );
- }
- else if ( iVideoCursorPos == iMovie.VideoClipCount() )
- {
- iInfoDisplay->SetName( *iTransitionInfo->EndTransitionName( iMovie.EndTransitionEffect() ) );
- ShowEndAnimationL( iMovie.EndTransitionEffect() );
- }
- else
- {
- iInfoDisplay->SetName( *iTransitionInfo->MiddleTransitionName( iMovie.MiddleTransitionEffect( CurrentIndex() - 1 ) ) );
- ShowMiddleAnimationL( iMovie.MiddleTransitionEffect( CurrentIndex() - 1 ) );
- }
- StartZooming();
- }
- else if ( iCursorLocation == ECursorOnEmptyAudioTrack )
- {
- iVideoDisplay->MakeVisible( ETrue );
- iInfoDisplay->SetLayout( CVeiTextDisplay::EOnlyName );
- iVideoDisplay->ShowBlankScreen();
- iInfoDisplay->MakeVisible( ETrue );
-
- HBufC* stringholder = StringLoader::LoadLC( R_VEI_EDIT_VIEW_NO_AUDIO, iEikonEnv );
- iInfoDisplay->SetName( *stringholder );
- CleanupStack::PopAndDestroy( stringholder );
-
- iVideoDisplay->SetRect( iVideoDisplayBox );
- iDummyCutBar->SetRect( iDummyCutBarBox );
- iDummyCutBar->Dim( ETrue );
- }
- if ( iView.EditorState() == CVeiEditVideoView::EQuickPreview)
- {
- TFileName newname;
- TVeiSettings movieSaveSettings;
- STATIC_CAST( CVeiAppUi*, iEikonEnv->AppUi() )->ReadSettingsL( movieSaveSettings );
- newname.Append( movieSaveSettings.DefaultVideoName() );
- iInfoDisplay->SetName( newname );
-
- TTimeIntervalMicroSeconds tempFileDuration;
- tempFileDuration = iVideoDisplay->TotalLengthL();
- iInfoDisplay->SetDuration( tempFileDuration );
- }
- /*if ( iView.EditorState() == CVeiEditVideoView::EMixAudio)
- {
-
- //iHorizontalSliderSize = TSize(iHorizontalSlider->MinimumSize().iWidth, 50);
- // iHorizontalSliderPoint = TPoint( videoScreenX - 25, + videoScreenY + videoScreenSize.iHeight + 70);
- iHorizontalSlider->SetExtent( iHorizontalSliderPoint, iHorizontalSliderSize );
- iHorizontalSlider->MakeVisible(ETrue);
- iHorizontalSlider->DrawDeferred();
- iVideoDisplay->ShowPictureL(*iAudioMixingIcon);
- }
- */
- }
-
-TBool CVeiEditVideoContainer::CurrentClipIsFile()
- {
- if ( (iCursorLocation == ECursorOnClip) && (iMovie.VideoClipCount() > 0 ) )
- {
- return iVideoItemArray[ CurrentIndex() ]->iIsFile;
- }
- else
- return EFalse;
- }
-
-
-void CVeiEditVideoContainer::ShowMiddleAnimationL( TVedMiddleTransitionEffect aMiddleEffect )
- {
- switch( aMiddleEffect )
- {
- case EVedMiddleTransitionEffectNone:
- iVideoDisplay->StopAnimation();
- break;
- case EVedMiddleTransitionEffectDipToBlack:
- iVideoDisplay->ShowAnimationL( R_VEI_DIP_TO_BLACK_ANIMATION );
- break;
- case EVedMiddleTransitionEffectDipToWhite:
- iVideoDisplay->ShowAnimationL( R_VEI_DIP_TO_WHITE_ANIMATION );
- break;
- case EVedMiddleTransitionEffectCrossfade:
- iVideoDisplay->ShowAnimationL( R_VEI_CROSSFADE_ANIMATION );
- break;
- case EVedMiddleTransitionEffectWipeLeftToRight:
- iVideoDisplay->ShowAnimationL( R_VEI_WIPE_LEFT_ANIMATION );
- break;
- case EVedMiddleTransitionEffectWipeRightToLeft:
- iVideoDisplay->ShowAnimationL( R_VEI_WIPE_RIGHT_ANIMATION );
- break;
- case EVedMiddleTransitionEffectWipeTopToBottom:
- iVideoDisplay->ShowAnimationL( R_VEI_WIPE_TOP_TO_BOTTOM_ANIMATION );
- break;
- case EVedMiddleTransitionEffectWipeBottomToTop:
- iVideoDisplay->ShowAnimationL( R_VEI_WIPE_BOTTOM_TO_TOP_ANIMATION );
- break;
- default:
- break;
- }
- }
-
-
-void CVeiEditVideoContainer::ShowStartAnimationL( TVedStartTransitionEffect aStartEffect )
- {
- switch( aStartEffect )
- {
- case EVedStartTransitionEffectNone:
- iVideoDisplay->StopAnimation();
- break;
- case EVedStartTransitionEffectFadeFromBlack:
- iVideoDisplay->ShowAnimationL( R_VEI_FADE_FROM_BLACK_ANIMATION );
- break;
- case EVedStartTransitionEffectFadeFromWhite:
- iVideoDisplay->ShowAnimationL( R_VEI_FADE_FROM_WHITE_ANIMATION );
- break;
- default:
- break;
- }
- }
-
-void CVeiEditVideoContainer::ShowEndAnimationL( TVedEndTransitionEffect aEndEffect )
- {
- switch( aEndEffect )
- {
- case EVedEndTransitionEffectNone:
- iVideoDisplay->StopAnimation();
- break;
- case EVedEndTransitionEffectFadeToBlack:
- iVideoDisplay->ShowAnimationL( R_VEI_FADE_TO_BLACK_ANIMATION );
- break;
- case EVedEndTransitionEffectFadeToWhite:
- iVideoDisplay->ShowAnimationL( R_VEI_FADE_TO_WHITE_ANIMATION );
- break;
- default:
- break;
- }
- }
-
-
-void CVeiEditVideoContainer::NotifyVideoDisplayEvent( const TPlayerEvent aEvent, const TInt& aInfo )
- {
- LOGFMT4(KVideoEditorLogFile, "CVeiEditVideoContainer::NotifyVideoDisplayEvent() In, \
- aEvent:%d, iFullScreenSelected:%d, iView.EditorState():%d, iPreviewState:%d", \
- aEvent, iFullScreenSelected, iView.EditorState(), iPreviewState);
-
- if (EStateTerminating == iPreviewState)
- {
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::NotifyVideoDisplayEvent(): app is closing...");
- return;
- }
-
- switch (aEvent)
- {
- case MVeiVideoDisplayObserver::ELoadingStarted:
- {
- SetPreviewState(EStateOpening);
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::NotifyVideoDisplayEvent() MVeiVideoDisplayObserver::ELoadingStarted");
- break;
- }
- case MVeiVideoDisplayObserver::EOpenComplete:
- {
- LOGFMT(KVideoEditorLogFile, "CVeiEditVideoContainer::NotifyVideoDisplayEvent() MVeiVideoDisplayObserver::EOpenComplete 1:%Ld", iVideoDisplay->PositionL().Int64());
-
- iCursorPreviousLocation = CursorLocation();
-
- if ( !iFullScreenSelected )
- {
- TRAP_IGNORE( (/*iTempVideoInfo =*/ CVedVideoClipInfo::NewL( *iTempFileName,*this) ) );
-
- //for draw function
- iCursorLocation = ECursorOnClip;
- }
-
- if ( CVeiEditVideoView::EPreview == iView.EditorState() )//Large preview
- {
- TRect wholeScreenRect = iView.ClientOrApplicationRect( iFullScreenSelected );
- SetRect( iView.ClientOrApplicationRect( iFullScreenSelected ) );
- iVideoDisplay->SetRect( wholeScreenRect );
-
- if ( !VideoEditorUtils::IsLandscapeScreenOrientation() ) //Portrait
- {
- iVideoDisplay->SetRotationL( EVideoRotationClockwise90 );
- }
-
- if ( iView.IsForeground() )
- {
- iVideoDisplay->ShowBlackScreen();
- DrawDeferred();
- if ( iTempVideoInfo && !iFrameReady)
- {
- iTempVideoInfo->CancelFrame();
- }
- iVideoDisplay->Play();
- }
- else
- {
- iView.SetEditorState( CVeiEditVideoView::EEdit );
- SetBlackScreen( EFalse );
- iView.SetFullScreenSelected( EFalse );
- iVideoDisplay->Stop( ETrue );
- }
-
- }
- else //Small preview
- {
- iVideoDisplay->SetRect( iVideoDisplayBox );
- iInfoDisplay->SetRect( iInfoDisplayBox );
- iVideoDisplay->SetRotationL( EVideoRotationNone );
-
- if ( !VideoEditorUtils::IsLandscapeScreenOrientation() ) //Portrait
- {
- iInfoDisplay->SetLayout( CVeiTextDisplay::ENameAndDuration );
- iInfoDisplay->MakeVisible( ETrue );
- }
- else //Landscape
- {
- iInfoDisplay->SetLayout( CVeiTextDisplay::EEverything );
- iInfoDisplay->MakeVisible( ETrue );
- }
-
- if ( iView.IsForeground() )
- {
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::NotifyVideoDisplayEvent() MVeiVideoDisplayObserver::EOpenComplete 2");
- iVideoDisplay->ShowBlackScreen();
- DrawDeferred();
- if ( iTempVideoInfo && !iFrameReady)
- {
- iTempVideoInfo->CancelFrame();
- }
- iVideoDisplay->Play();
- }
- else
- {
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::NotifyVideoDisplayEvent() MVeiVideoDisplayObserver::EOpenComplete 3");
- PauseVideoL();
- }
- }
- break;
- }
- case MVeiVideoDisplayObserver::EBufferingStarted:
- {
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::NotifyVideoDisplayEvent() MVeiVideoDisplayObserver::EBufferingStarted");
- SetPreviewState( EStateBuffering );
- if ( iPeriodic )
- {
- iPeriodic->Cancel();
- }
- break;
- }
- case MVeiVideoDisplayObserver::ELoadingComplete:
- {
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::NotifyVideoDisplayEvent() MVeiVideoDisplayObserver::ELoadingComplete 1");
-
- if (EStatePaused == iPreviewState)
- {
- iVideoDisplay->PauseL();
- }
- else
- {
- SetPreviewState( EStatePlaying );
-
- if (iFullScreenSelected)
- {
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::NotifyVideoDisplayEvent() MVeiVideoDisplayObserver::ELoadingComplete 2");
- iView.SetEditorState( CVeiEditVideoView::EPreview);
- }
- else
- {
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::NotifyVideoDisplayEvent() MVeiVideoDisplayObserver::ELoadingComplete 3");
- iView.SetEditorState( CVeiEditVideoView::EQuickPreview);
- DrawDeferred();
- iVideoDisplay->ShowBlackScreen();
- iScreenLight->Start();
- const TUint delay = 100000;
- iPeriodic->Start( delay, delay, TCallBack( CVeiEditVideoContainer::UpdatePosition, this ) );
- TRAP_IGNORE(iView.StartNaviPaneUpdateL());
- }
- }
- break;
- }
- case MVeiVideoDisplayObserver::EPlayComplete:
- {
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::NotifyVideoDisplayEvent() MVeiVideoDisplayObserver::EPlayComplete 1");
- iScreenLight->Stop();
- if ( iPeriodic )
- {
- iPeriodic->Cancel();
- }
-
- if ( !iFullScreenSelected )
- {
- SetPreviewState(EStateStopped);
-
- iLastPosition = iVideoDisplay->TotalLengthL();
- iSeekPos = TTimeIntervalMicroSeconds( 0 );
-
- SetFinishedStatus( ETrue );
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::NotifyVideoDisplayEvent() MVeiVideoDisplayObserver::EPlayComplete 2");
- GetThumbAtL(0);
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::NotifyVideoDisplayEvent() MVeiVideoDisplayObserver::EPlayComplete 3");
-
- iView.SetEditorState( CVeiEditVideoView::EQuickPreview );
- iView.StopNaviPaneUpdateL();
- }
- else
- {
- if (EModeMixingAudio != iSelectionMode)
- {
- iView.SetEditorState( CVeiEditVideoView::EEdit );
- }
- else
- {
- iView.SetEditorState(CVeiEditVideoView::EMixAudio);
- }
-
- SetBlackScreen( EFalse );
- iView.SetFullScreenSelected( EFalse );
- iVideoDisplay->Stop( ETrue );
- DrawDeferred();
- }
-
- if (KErrNoMemory == aInfo || KErrSessionClosed == aInfo)
- {
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::NotifyVideoDisplayEvent() MVeiVideoDisplayObserver::EPlayComplete 4");
- iView.ShowGlobalErrorNote( aInfo );
- StopVideo(ETrue);
- }
-
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::NotifyVideoDisplayEvent() MVeiVideoDisplayObserver::EPlayComplete 5");
- break;
- }
- case MVeiVideoDisplayObserver::EStop:
- {
- LOGFMT3(KVideoEditorLogFile, "CVeiEditVideoContainer::NotifyVideoDisplayEvent() MVeiVideoDisplayObserver::EStop 1, \
- iFullScreenSelected:%d, iSelectionMode:%d, iCloseStream:%d", \
- iFullScreenSelected, iSelectionMode, iCloseStream);
-
- if ( iPeriodic )
- {
- iPeriodic->Cancel();
- }
- iView.StopNaviPaneUpdateL();
-
- if (EStateGettingFrame == iPreviewState)
- {
- break;
- }
- // position must be set here to 0 because state EStateGettingFrame cannot be resoluted in player
- // and position must not be set to 0 in that state
- iVideoDisplay->SetPositionL(TTimeIntervalMicroSeconds( 0 ));
-
- if ( iFullScreenSelected || iCloseStream )
- {
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::NotifyVideoDisplayEvent() MVeiVideoDisplayObserver::EStop 4");
- SetPreviewState(EStateClosed);
- iVideoDisplay->SetBlackScreen( EFalse );
- iDummyCutBar->MakeVisible( ETrue );
-
- if (EModeMixingAudio != iSelectionMode)
- {
- iView.SetEditorState( CVeiEditVideoView::EEdit );
- SetSelectionMode( EModeNavigation );
- }
- else
- {
- iView.SetEditorState(CVeiEditVideoView::EMixAudio);
- break;
- }
- SetCursorLocation( iCursorPreviousLocation );
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::NotifyVideoDisplayEvent() MVeiVideoDisplayObserver::EStop 5");
- DrawDeferred();
- iCloseStream = EFalse;
- break;
- }
-
- if (EModeMixingAudio != iSelectionMode)
- {
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::NotifyVideoDisplayEvent() MVeiVideoDisplayObserver::EStop 2");
- GetThumbAtL(0);
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::NotifyVideoDisplayEvent() MVeiVideoDisplayObserver::EStop 3");
- }
-
- SetPreviewState(EStateStopped);
- iLastPosition = iVideoDisplay->TotalLengthL();
- iSeekPos = TTimeIntervalMicroSeconds( 0 );
- iView.DoUpdateEditNaviLabelL();
- SetFinishedStatus( ETrue );
- iView.SetEditorState( CVeiEditVideoView::EQuickPreview );
- // redraw needed at least to erase pause icon
- DrawDeferred();
- break;
- }
- case MVeiVideoDisplayObserver::EVolumeLevelChanged:
- {
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::NotifyVideoDisplayEvent() MVeiVideoDisplayObserver::EVolumeLevelChanged 1");
- TInt playerVolume = iVideoDisplay->Volume();
- iView.ShowVolumeLabelL( playerVolume );
- break;
- }
- case MVeiVideoDisplayObserver::EError:
- {
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::NotifyVideoDisplayEvent() MVeiVideoDisplayObserver::EError 1");
- iView.ShowGlobalErrorNote( aInfo );
- if (KErrMMAudioDevice == aInfo)
- {
- PauseVideoL();
- }
- else
- {
- StopVideo(ETrue);
- }
- break;
- }
- default:
- {
- LOGFMT(KVideoEditorLogFile, "CVeiEditVideoContainer::NotifyVideoDisplayEvent() default case, aEvent:%d", aEvent);
- };
- }
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::NotifyVideoDisplayEvent() Out");
- }
-
-
-void CVeiEditVideoContainer::StartFrameTakerL( TInt aIndex )
- {
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::StartFrameTakerL: In");
-
-// First frame is shown in main display so it is bigger.. Last frame is always
-// on transition display and one frame for the video timeline.
- TSize firstThumbResolution = iVideoDisplay->GetScreenSize();
- TSize lastThumbResolution = iTransitionDisplayLeft->GetScreenSize();
- TSize timelineThumbResolution = TSize( 34, /*iVideoBarBox.Height()-2*/28 );
-
- TTimeIntervalMicroSeconds cutInTime = iMovie.VideoClipCutInTime( aIndex );
- TTimeIntervalMicroSeconds cutOutTime = iMovie.VideoClipCutOutTime( aIndex );
-
-
- TInt frameCount = iMovie.VideoClipInfo(aIndex)->VideoFrameCount();
-
- TInt firstThumbNailIndex = iMovie.VideoClipInfo(aIndex)->GetVideoFrameIndexL( cutInTime );
- TInt lastThumbNailIndex = iMovie.VideoClipInfo(aIndex)->GetVideoFrameIndexL( cutOutTime );
- if ( lastThumbNailIndex >= frameCount )
- {
- lastThumbNailIndex = frameCount-1;
- }
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::StartFrameTakerL: 2");
-
- iFrameTaker->GetFramesL( *iMovie.VideoClipInfo(aIndex),
- firstThumbNailIndex, &firstThumbResolution,
- lastThumbNailIndex, &lastThumbResolution,
- firstThumbNailIndex, &timelineThumbResolution,
- EPriorityLow );
-
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::StartFrameTakerL: Out");
- }
-
-void CVeiEditVideoContainer::NotifyFramesCompleted( CFbsBitmap* aFirstFrame,
- CFbsBitmap* aLastFrame, CFbsBitmap* aTimelineFrame, TInt aError )
- {
- LOGFMT(KVideoEditorLogFile, "CVeiEditVideoContainer::NotifyFramesCompleted: In, aError:%d", aError);
- CStoryboardVideoItem* item;
- if( aError==KErrNone )
- {
- if ( iMovie.VideoClipColorEffect( iVideoCursorPos ) == EVedColorEffectBlackAndWhite )
- {
- ConvertBW( *aFirstFrame );
- ConvertBW( *aLastFrame );
- ConvertBW( *aTimelineFrame );
- }
- if ( iMovie.VideoClipColorEffect( iVideoCursorPos ) == EVedColorEffectToning )
- {
- //TRgb toning = iMovie.VideoClipColorTone(CurrentIndex());
- ConvertToning(*aFirstFrame);
- ConvertToning(*aLastFrame);
- ConvertToning(*aTimelineFrame);
- }
-
- item = iVideoItemArray[ iCurrentlyProcessedIndex ];
- TRAP_IGNORE(
- item->InsertLastFrameL( *aLastFrame, *aLastFrame );
- item->InsertFirstFrameL( *aFirstFrame, *aFirstFrame );
- item->InsertTimelineFrameL( *aTimelineFrame, *aTimelineFrame );
- iVideoDisplay->ShowPictureL( *item->iIconBitmap, *item->iIconMask);
- );
-
- // UpdateThumbnail launches progressnote.
- if (iProgressDialog )
- {
- iProgressDialog->GetProgressInfoL()->SetAndDraw( 100 );
- TRAP_IGNORE( iProgressDialog->ProcessFinishedL() );
- //iProgressDialog = NULL;
- }
- iView.HandleCommandL( EAknSoftkeyOk );
- }
-
- // UpdateThumbnail launches progressnote.
- if (iProgressDialog )
- {
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::NotifyFramesCompleted: 2");
- iProgressDialog->GetProgressInfoL()->SetAndDraw( 100 );
- TRAP_IGNORE( iProgressDialog->ProcessFinishedL() );
- //iProgressDialog = NULL;
- }
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::NotifyFramesCompleted: 3");
- iCurrentlyProcessedIndex = -1;
- iView.SetWaitMode( CVeiEditVideoView::ENotWaiting );
- SetCursorLocation( CursorLocation() );
-
- iView.CancelWaitDialog(aError);
- iView.AddNext();
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::NotifyFramesCompleted: Out");
- }
-
-void CVeiEditVideoContainer::NotifyCompletion( TInt DEBUGLOG_ARG(aErr) )
- {
- LOGFMT(KVideoEditorLogFile, "CVeiEditVideoContainer::NotifyCompletion: In, err:%d", aErr);
-
- if (EStateTerminating == iPreviewState)
- {
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::NotifyCompletion(): app is closing...");
- return;
- }
-
- if ( iTakeSnapshot )
- {
- // to eliminate previous (wrong) output file from being deleted in CancelSnapshotSave()
- delete iSaveToFileName;
- iSaveToFileName = NULL;
-
- if ( iProgressDialog )
- {
- iProgressDialog->GetProgressInfoL()->SetAndDraw( 100 );
- TRAP_IGNORE( iProgressDialog->ProcessFinishedL() );
- //iProgressDialog = NULL;
- }
- return;
- }
-
- TRAP_IGNORE(iTransitionDisplayRight->ShowPictureL( *iConverter->GetBitmap()));
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::NotifyCompletion: Out");
- }
-
-void CVeiEditVideoContainer::SetSlowMotionStartValueL(TInt aSlowMotionStartValue)
- {
- iSlowMotionValue = aSlowMotionStartValue;
- iArrowsDisplay->SetSlowMotionPreset( iSlowMotionValue / 10 );
-
- TInt frameInterval = (1000-iSlowMotionValue)/2;
-
- iVideoDisplay->ShowAnimationL( R_VEI_SLOW_MOTION_ANIMATION, frameInterval );
- }
-
-void CVeiEditVideoContainer::SetRecordedAudioDuration( const TTimeIntervalMicroSeconds& aDuration )
- {
- iRecordedAudioDuration = aDuration;
-
- if ( (iCursorLocation==ECursorOnTransition) && (CurrentIndex() > 0) )
- {
- iVideoCursorPos--;
- }
- iInfoDisplay->SetLayout( CVeiTextDisplay::ERecording ); // Name and duration RED
- iInfoDisplay->SetDuration( iRecordedAudioDuration );
- }
-
-
-TBool CVeiEditVideoContainer::IsAudioClipCutted()
- {
- TTimeIntervalMicroSeconds audioClipDuration = iMovie.AudioClipInfo( CurrentIndex())->Duration();
- TTimeIntervalMicroSeconds audioClipCutInTime = iMovie.AudioClipCutInTime( CurrentIndex() );
- TTimeIntervalMicroSeconds audioClipCutOutTime = iMovie.AudioClipCutOutTime( CurrentIndex() );
-
- TTimeIntervalMicroSeconds appendTime(500000);
- TTimeIntervalMicroSeconds cuttedAudioDuration = ( audioClipCutOutTime.Int64() - audioClipCutInTime.Int64() ) + appendTime.Int64();
- iInfoDisplay->SetDuration( cuttedAudioDuration );
-
- iDummyCutBar->SetTotalDuration( audioClipDuration );
- iDummyCutBar->SetInPoint( audioClipCutInTime );
- iDummyCutBar->SetOutPoint( audioClipCutOutTime );
- iDummyCutBar->Dim( EFalse );
-
- if ( ( audioClipCutOutTime.Int64() - audioClipCutInTime.Int64() ) == audioClipDuration.Int64() )
- {
- return EFalse;
- }
- else
- {
- return ETrue;
- }
- }
-
-/* Checks if aFilename is belongs to any album. Album name is returned, or KNullDesC
-if aFilename does not belong to album. */
-void CVeiEditVideoContainer::GetAlbumL( const TDesC& aFilename, TDes& aAlbumName ) const
- {
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::GetAlbumL: in");
-
- CMGAlbumManager* albumManager = MGAlbumManagerFactory::NewAlbumManagerL();
- TInt albumCount = albumManager->AlbumCount();
-
- // Get album Id
- for( TInt i=0;i<albumCount;i++ )
- {
- CMGAlbumInfo* albumInfo = albumManager->AlbumInfoLC( i );
- TInt albumId = albumInfo->Id();
- TInt itemCount = albumInfo->ItemCount();
-
- TFileName albumName = albumInfo->Name();
- CleanupStack::PopAndDestroy(albumInfo);
-
- if ( itemCount > 0 )
- {
- TInt itemPos;
- CDesCArrayFlat* filenameArray = new (ELeave) CDesCArrayFlat( itemCount );
- CleanupStack::PushL (filenameArray);
-
- albumManager->GetAlbumFileArrayL( albumId, *filenameArray );
-
- TInt isFound = filenameArray->Find( aFilename, itemPos );
- CleanupStack::PopAndDestroy (filenameArray);
-
- if ( isFound == KErrNone ) /* filename was found on filenamearray */
- {
- delete albumManager;
- aAlbumName.Append(albumName);
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::GetAlbumL: out1");
- return;
- }
- }
- }
- delete albumManager;
-
- aAlbumName = KNullDesC;
-
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::GetAlbumL: out2");
- }
-
-
-void CVeiEditVideoContainer::SetBlackScreen( TBool aBlack )
- {
- LOGFMT(KVideoEditorLogFile, "CVeiEditVideoContainer::SetBlackScreen: In, aBlack:%d", aBlack);
-
- iBlackScreen = aBlack;
-
- // Black backbround for the preview
- if ( iBlackScreen )
- {
- iVideoDisplay->MakeVisible( EFalse );
- /* Video Display components for transitioin state*/
- iTransitionDisplayRight->MakeVisible( EFalse );
- iTransitionDisplayLeft->MakeVisible( EFalse );
-
- iDummyCutBar->MakeVisible( EFalse );
- iDummyCutBarLeft->MakeVisible( EFalse );
-
- /* IconBox */
- iEffectSymbols->MakeVisible( EFalse );
- iInfoDisplay->MakeVisible( EFalse );
- iArrowsDisplay->MakeVisible( EFalse );
-
- iHorizontalSlider->MakeVisible( EFalse );
- iVerticalSlider->MakeVisible( EFalse );
-
- if( iCursorLocation == ECursorOnTransition )
- {
- iVideoDisplay->StopAnimation();
- }
- }
- else
- {
- SetCursorLocation( CursorLocation() );
- }
- DrawDeferred();
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::SetBlackScreen: Out");
- }
-
-TInt CVeiEditVideoContainer::SnapshotSize()
- {
- TInt sizeEstimate = 0;
-
- if( iTempVideoInfo )
- {
- TTimeIntervalMicroSeconds playBackPos = PlaybackPositionL();
- TInt frame = iTempVideoInfo->GetVideoFrameIndexL( playBackPos );
- sizeEstimate = iTempVideoInfo->VideoFrameSizeL( frame );
- }
-
- return sizeEstimate;
- }
-
-TInt CVeiEditVideoContainer::AudioMixingRatio() const
- {
- return iHorizontalSlider->SliderPosition();
- }
-
-
-TInt CVeiEditVideoContainer::Volume() const
- {
- return -(iVerticalSlider->SliderPosition());
- }
-
-//=============================================================================
-void CVeiEditVideoContainer::SetColourToningIcons(TInt /*aIndex*/)
- {
- if ( ( iMovie.VideoClipColorEffect( iVideoCursorPos ) ) == EVedColorEffectBlackAndWhite )
- {
- iEffectSymbols->SetBlackAndWhiteIconVisibility(ETrue);
- }
- else
- {
- iEffectSymbols->SetBlackAndWhiteIconVisibility(EFalse);
- }
- if ( ( iMovie.VideoClipColorEffect( iVideoCursorPos ) ) == EVedColorEffectToning )
- {
- iEffectSymbols->SetColourIconVisibility(ETrue);
- }
- else
- {
- iEffectSymbols->SetColourIconVisibility(EFalse);
- }
- }
-//=======================================================================================================
-void CVeiEditVideoContainer::StartProgressDialogL(const TInt aDialogResId, const TInt aTextResId)
- {
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::StartProgressDialogL: In");
-
- if (iProgressDialog)
- {
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::StartProgressDialogL: 1");
- delete iProgressDialog;
- iProgressDialog = NULL;
- }
-
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::StartProgressDialogL: 2");
-
- iProgressDialog = new (ELeave) CAknProgressDialog(
- reinterpret_cast<CEikDialog**>(&iProgressDialog), ETrue );
- iProgressDialog->PrepareLC(aDialogResId);
- iProgressDialog->SetCallback( this );
-
-
- HBufC* stringholder = StringLoader::LoadLC( aTextResId, iEikonEnv );
- iProgressDialog->SetTextL( *stringholder );
- CleanupStack::PopAndDestroy(stringholder);
-
- iProgressDialog->GetProgressInfoL()->SetFinalValue( 100 );
- iProgressDialog->RunLD();
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::StartProgressDialogL: Out");
- }
-
-//=============================================================================
-void CVeiEditVideoContainer::SetPreviewState(const TPreviewState aNewState)
- {
- LOGFMT3(KVideoEditorLogFile, "CVeiEditVideoContainer::SetPreviewState In, aNewState:%d, iPreviewState:%d, iPreviousPreviewState:%d", aNewState, iPreviewState, iPreviousPreviewState);
-
- if (EStateGettingFrame == aNewState)
- {
- iPreviousPreviewState = iPreviewState;
- }
- iPreviewState = aNewState;
- iSeeking = EFalse;
-
- /*if (EStateTerminating != iPreviewState)
- {
- iView.SetEditorState( iView.EditorState() );
- }
- */
-
- // Make sure that the pause indicator is drawn immediately
- if (EStatePaused == iPreviewState)
- {
- DrawNow();
- }
-
- // While playing, grab the volume keys for adjusting playback volume.
- // In other states let them pass e.g. to the music player.
- if(EStatePlaying == aNewState)
- {
- if (!iRemConTarget)
- {
- // We can ignore the possible error - the if the remote connection
- // fails, we just won't receive volume keys, which is a minor problem.
- TRAPD(err, iRemConTarget = CVeiRemConTarget::NewL( *this ) );
- if (KErrNone != err)
- {
- LOGFMT(KVideoEditorLogFile, "CVeiEditVideoContainer::SetPreviewState: CVeiRemConTarget::NewL failed: %d", err);
- }
- }
- }
- else
- {
- delete iRemConTarget;
- iRemConTarget = NULL;
- }
-
- // : implement #ifdef here to facilitate easy remove of unnecessary stopping
- //#ifdef STOP_PLAYER_DURING_GETFRAME
- if (EStateGettingFrame == aNewState)
- {
- /* :
- check out on every phone before releasing whether videodisplay should be stopped before starting
- asynchronous GetFrameL()
- see how EStateGettingFrame is handled in SetPreviewState
- Stopping frees memory and it is needed in memory sensible devices
- */
- //iVideoDisplay->Stop(ETrue);
- // SetEditorState is effective because iPreviewState is changed
- iView.SetEditorState( iView.EditorState() );
- }
- //#endif
- }
-
-//=============================================================================
-void CVeiEditVideoContainer::HandleVolumeUpL()
- {
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::HandleVolumeUpL: in");
-
- iVideoDisplay->AdjustVolumeL( 1 );
-
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::HandleVolumeUpL: out");
- }
-
-//=============================================================================
-void CVeiEditVideoContainer::HandleVolumeDownL()
- {
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::HandleVolumeDownL: in");
-
- iVideoDisplay->AdjustVolumeL( -1 );
-
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::HandleVolumeDownL: out");
- }
-
-//=============================================================================
-void CVeiEditVideoContainer::PrepareForTerminationL()
- {
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::PrepareForTerminationL: in");
-
- SetPreviewState( EStateTerminating );
- iVideoDisplay->Stop(ETrue);
- iScreenLight->Stop();
-
- LOG(KVideoEditorLogFile, "CVeiEditVideoContainer::PrepareForTerminationL: out");
- }
-
-//=============================================================================
-TInt CVeiEditVideoContainer::AsyncTakeSnapshot(TAny* aThis)
- {
- LOG( KVideoEditorLogFile, "CVeiEditVideoContainer::AsyncTakeSnapshot");
-
- // In the asynchronous version, trap the rest of the functions
- // to make sure that the caller's TRequestStatus is always
- // completed, also in case of failures.
- CVeiEditVideoContainer* container = static_cast<CVeiEditVideoContainer*>(aThis);
- TInt err = KErrNone;
- TRAP(err, container->TakeSnapshotL());
- LOGFMT( KVideoEditorLogFile, "CVeiEditVideoContainer::AsyncTakeSnapshot 1, err:%d", err);
- User::LeaveIfError(err);
- return KErrNone;
- }
-
-//=============================================================================
-void CVeiEditVideoContainer::CalculateVideoClipRects()
- {
- LOG( KVideoEditorLogFile, "CVeiEditVideoContainer::CalculateVideoClipRects: in" );
- iVideoItemRectArray.Reset();
-
- TRect selectedRect; // rect of the highlighted clip
- TRect videoClipRect; // rect of the video clip in timeline
- TInt barWidth = iVideoBarBox.Width();
- TInt64 barDuration = iMovie.Duration().Int64();
-
- TInt64 audioDuration(0);
- if ( (iMovie.AudioClipCount() != 0) && ((iSelectionMode == EModeRecording ) ||
- (iSelectionMode == EModeRecordingPaused)))
- {
- audioDuration = (iMovie.AudioClipEndTime( iMovie.AudioClipCount() - 1 )).Int64();
- }
-
- audioDuration+= iRecordedAudioDuration.Int64();
-
- if ( audioDuration > barDuration )
- {
- barDuration = audioDuration;
- }
- if ( iRecordedAudioStartTime > barDuration )
- {
- barDuration = iRecordedAudioStartTime.Int64();
- }
- if (barDuration < 30000000)
- {
- barDuration = 30000000;
- }
- else if (barDuration < 45000000)
- {
- barDuration = 45000000;
- }
- else{
- barDuration = ((barDuration / 30000000) + 1) * 30000000;
- }
-
- videoClipRect.iTl.iY = iVideoBarBox.iTl.iY;
- videoClipRect.iBr.iY = iVideoBarBox.iBr.iY;
-
- // calculate the rect of each of the video clip
- for (TInt i = 0; i < iMovie.VideoClipCount(); i++ )
- {
- videoClipRect.iTl.iX = iVideoBarBox.iTl.iX
- + static_cast<TInt32>( (iMovie.VideoClipStartTime( i ).Int64() * barWidth ) / barDuration );
- videoClipRect.iBr.iX = iVideoBarBox.iTl.iX
- + static_cast<TInt32>( (iMovie.VideoClipEndTime( i ).Int64() * barWidth ) / barDuration )+ 1;
-
- if ((iCursorLocation == ECursorOnClip)
- && (i == CurrentIndex()) && ( iView.EditorState() == CVeiEditVideoView::EEdit ))
- // the current video clip selected
- {
- LOG( KVideoEditorLogFile, "CVeiEditVideoContainer::CalculateVideoClipRects: selected clip" );
- selectedRect = videoClipRect;
- selectedRect.Grow( iZoomFactorX,iZoomFactorY );
- iVideoItemRectArray.Insert( selectedRect, i );
- }
- else
- {
- iVideoItemRectArray.Insert( videoClipRect, i );
- }
-
- LOGFMT6( KVideoEditorLogFile, "CVeiEditVideoContainer::CalculateVideoClipRects, iVideoItemRectArray.[%d]->Rect(): \
- (%d,%d,%d,%d), barWidth = %d ", \
- i,
- iVideoItemRectArray[i].iTl.iX,
- iVideoItemRectArray[i].iTl.iY,
- iVideoItemRectArray[i].iBr.iX,
- iVideoItemRectArray[i].iBr.iY,
- barWidth );
- }
-
- // Calculate the empty rect of the timeline
- if ( iMovie.VideoClipCount() > 0 )
- {
- iEmptyVideoTimeLineRect.iTl = TPoint ( iVideoItemRectArray[ iMovie.VideoClipCount()-1 ].iBr.iX, iVideoBarBox.iTl.iY );
- iEmptyVideoTimeLineRect.iBr = iVideoBarBox.iBr;
- }
- else
- {
- iEmptyVideoTimeLineRect = iVideoBarBox;
- }
-
- LOGFMT4( KVideoEditorLogFile, "CVeiEditVideoContainer::CalculateVideoClipRects, iEmptyVideoTimeLineRect: \
- (%d,%d,%d,%d) ", \
- iEmptyVideoTimeLineRect.iTl.iX,
- iEmptyVideoTimeLineRect.iTl.iY,
- iEmptyVideoTimeLineRect.iBr.iX,
- iEmptyVideoTimeLineRect.iBr.iY );
-
- LOG( KVideoEditorLogFile, "CVeiEditVideoContainer::CalculateVideoClipRects: out" );
- }
-// End of File