diff -r 951a5db380a0 -r d87d32eab1a9 videditor/ManualVideoEditor/inc/VeiEditVideoContainer.h --- a/videditor/ManualVideoEditor/inc/VeiEditVideoContainer.h Fri Jan 29 14:08:33 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,837 +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: -* -*/ - - -#ifndef VEDEDITVIDEOCONTAINER_H -#define VEDEDITVIDEOCONTAINER_H - -#include -#include -#include -#include -#include -#include -#include - -#include "veivideodisplay.h" -#include "veiframetaker.h" -#include "veicutterbar.h" -#include "VeiDisplayLighter.h" -#include "VeiImageClipGenerator.h" -#include "VeiTitleClipGenerator.h" -#include "VeiImageConverter.h" -#include "VeiRemConTarget.h" -#include "VideoEditorCommon.h" - -const TInt KMaxZoomFactorX = 4; -const TInt KMaxZoomFactorY = 2; - -const TInt KVolumeSliderMin = -10; -const TInt KVolumeSliderMax = 10; -const TInt KVolumeSliderStep = 1; - -class CVedMovie; -class CVeiEditVideoView; -class CAknProgressDialog; -class CEikProgressInfo; -class CAknsBasicBackgroundControlContext; -class CVeiVideoDisplay; -class CVeiTextDisplay; -class CVeiCutterBar; -class CPeriodic; -class CVeiIconBox; -class CAknNavigationDecorator; -class CVeiSlider; -class CStoryboardVideoItem; -class CStoryboardAudioItem; -class CTransitionInfo; - -using namespace VideoEditor; - - -/** - * CVeiEditVideoContainer container control class. - * - */ -class CVeiEditVideoContainer: public CCoeControl, - public MCoeControlObserver, - public MVedMovieObserver, - public MVedVideoClipFrameObserver, - public MVedVideoClipInfoObserver, - public MProgressDialogCallback, - public MConverterController, - public MVeiVideoDisplayObserver, - public MVeiFrameTakerObserver, - public MVeiMediakeyObserver - - -{ -public: - - /** - * Creates a CVeiEditVideoContainer object, which will draw - * itself to aRect. - * - * @param aRect Frame rectangle for container. - * @param aMovie movie being edited - * @param aView owner - * - * @return a pointer to the created instance of CVeiEditVideoContainer - */ - static CVeiEditVideoContainer* NewL( const TRect& aRect, - CVedMovie& aMovie, - CVeiEditVideoView& aView ); - - /** - * Creates a CVeiEditVideoContainer object, which will draw - * itself to aRect. - * Leaves the created object in the cleanup stack. - * - * @param aRect Frame rectangle for container. - * @param aMovie movie being edited - * @param aView owner - * - * @return a pointer to the created instance of CVeiEditVideoContainer - */ - static CVeiEditVideoContainer* NewLC( const TRect& aRect, - CVedMovie& aMovie, - CVeiEditVideoView& aView ); - - /** - * Constructor. - * - * @param aMovie instance of CVedMovie - * @param aView instance of Edit Video View - */ - CVeiEditVideoContainer( CVedMovie& aMovie, CVeiEditVideoView& aView ); - - /** - * Default constructor. - * @param aRect Frame rectangle for container. - */ - void ConstructL( const TRect& aRect ); - - /** - * Destructor. - */ - virtual ~CVeiEditVideoContainer(); - - /** - * Enumeration for selection mode - */ - enum TSelectionMode - { - EModeNavigation = 0, - EModeMove, - EModeDuration, - EModeRecordingSetStart, - EModeRecording, - EModeRecordingPaused, - EModeSlowMotion, - EModePreview, - EModeMixingAudio, - EModeAdjustVolume - }; - - /** - * Enumeration for preview state - */ - enum TPreviewState - { - EStateInitializing = 0, - EStateOpening, - EStateStopped, - EStatePlaying, - EStatePaused, - EStateClosed, - EStateBuffering, - EStateGettingFrame, - EStateTerminating - }; - - TBool CurrentClipIsFile(); - - /** - * Sets cursor position to aCurrentIndex. If cursor is on audio track, - * audio index is set and if in video track, video cursor is set. - * - * @param aCurrentIndex Cursor position - */ - void SetCurrentIndex( TInt aCurrentIndex ); - - /** - * Returns the current index. - * - * @return current index - */ - TInt CurrentIndex()const; - - /** - * Updates thumbnail in video array. - * - * @aIndex Index in video array - */ - void UpdateThumbnailL( TInt aIndex ); - - /** - * Sets the selected status. - * - * @param aSelected status - */ - void SetSelectionMode( TSelectionMode aSelectionMode ); - - /** - * Control iInfoDisplay's arrows visibility . - */ - void ArrowsControl()const; - - /** - * Returns the current index and decrements index. - * - * @return current index - */ - TUint GetAndDecrementCurrentIndex(); - - void SetCursorLocation( TCursorLocation aCursorLocation ); - - void PlayVideoFileL( const TDesC& aFilename, const TBool& aFullScreen ); - - void PauseVideoL(); - - /** - * Starts playing video - */ - void PlayVideo( const TDesC& aFilename, TBool& aFullScreen ); - - void StopVideo( TBool aCloseStream ); - - /** - * Set starting value of slow motion. - * - * @param aSlowMotionStartValue slow motion value - */ - void SetSlowMotionStartValueL( TInt aSlowMotionStartValue ); - - void SetRecordedAudioDuration( const TTimeIntervalMicroSeconds& aDuration ); - void DrawTrackBoxes()const; - -public: - - /** - * Update function that is called by the static callback method. - */ - void DoUpdate(); - /** - * - */ - void SetFinishedStatus( TBool aStatus ); - /** - * - */ - void TakeSnapshotL(); - - /** - * Saves snapshot. - */ - void SaveSnapshotL(); - /** - * Gets intra frame bitmap from video clip. - * - * @param aTime intra frame time. - */ - void GetThumbAtL( const TTimeIntervalMicroSeconds& aTime ); - - /** - * - */ - TTimeIntervalMicroSeconds TotalLength(); - - /** - * Returns the playback position. - * @return playback position - */ - TTimeIntervalMicroSeconds PlaybackPositionL(); - - - /** - * Sets hole screen to black - * - * - */ - void SetBlackScreen( TBool aBlack ); - - - /** - * Returns snapshots size by bytes. - * - * - */ - TInt SnapshotSize(); - - /** - * Returns audio mixing ratio between original and imported track. - * Used in EModeMixAudio - * - */ - TInt AudioMixingRatio()const; - - /** - * Returns clip volume, used in EModeAdjustVolume - * - */ - TInt Volume()const; - - /** - * Prepares the control for termination; stops video playback - * and set the state to EStateTerminating. - * - */ - void PrepareForTerminationL(); - -private: - - /** - * Callback function for the timer. - * - * @param aThis self pointer - * - * @return dummy value 42 - */ - static TInt Update( TAny* aThis ); - - void StartZooming(); - - void ShowMiddleAnimationL( TVedMiddleTransitionEffect aMiddleEffect ); - - void ShowEndAnimationL( TVedEndTransitionEffect aEndEffect ); - - void ShowStartAnimationL( TVedStartTransitionEffect aStartEffect ); - - void SetColourToningIcons( TInt aIndex ); - - /** - * Handles video item timeline touch events - * @param aPointerEvent pointer event - */ - void HandleVideoTimelineTouchL( TPointerEvent aPointerEvent ); - - /** - * Handles volume slider touch events - * @param aPointerEvent pointer event - */ - void HandleVolumeSliderTouchL( TPointerEvent aPointerEvent ); - - /** - * Calculates the rects for the video items in the timeline - * and adds them to iVideoItemRectArray - */ - void CalculateVideoClipRects(); - - /** - * Goes through the table iVideoItemRectArray and - * finds the clip that the user has clicked. - * @param aPressedPointX The x coordinate value that was pressed - * inside the timeline - * @return index of the clip that the user has clicked or -1 if - * the click was in the empty part of the timeline - */ - TInt FindClickedClip( TInt aPressedPointX ); - -private: - - /** - * Gets album from aFilename. If file belongs to album, album name is - * returned in aAlbumName, otherwise KNullDesc. - */ - void GetAlbumL( const TDesC& aFilename, TDes& aAlbumName )const; - - /** - * Starts active object which takes thumbnails from videoclip. - * When completed -> NotifyFramesCompleted(...) - */ - void StartFrameTakerL( TInt aIndex ); - - /** - * - */ - void ConvertBW( CFbsBitmap& aBitmap )const; - - /** - * - */ - void ConvertToning( CFbsBitmap& aBitmap )const; - - - /** - * Gets an object whose type is encapsulated by the specified TTypeUid - * object. - * - * @param aId Encapsulates the Uid that identifies the type of object - * required. - * - * @return - */ - virtual TTypeUid::Ptr MopSupplyObject( TTypeUid aId ); - - - virtual void NotifyFramesCompleted( CFbsBitmap* aFirstFrame, - CFbsBitmap* aLastFrame, - CFbsBitmap* aTimelineFrame, - TInt aError ); - - - virtual void NotifyVideoDisplayEvent( const TPlayerEvent aEvent, - const TInt& aInfo = 0 ); - /** - * From MVedVideoClipInfoObserver - */ - virtual void NotifyVideoClipInfoReady( CVedVideoClipInfo& aInfo, - TInt aError ); - void NotifyCompletion( TInt aErr ); - - /** - * From MVedMovieObserver - */ - virtual void NotifyVideoClipAdded( CVedMovie& aMovie, TInt aIndex ); - - virtual void NotifyVideoClipAddingFailed( CVedMovie& aMovie, TInt aError ); - - virtual void NotifyVideoClipRemoved( CVedMovie& aMovie, TInt aIndex ); - - virtual void NotifyVideoClipIndicesChanged( CVedMovie& aMovie, - TInt aOldIndex, - TInt aNewIndex ); - - virtual void NotifyVideoClipTimingsChanged( CVedMovie& aMovie, - TInt aIndex ); - - virtual void NotifyVideoClipColorEffectChanged( CVedMovie& aMovie, - TInt aIndex ); - - virtual void NotifyVideoClipAudioSettingsChanged( CVedMovie& aMovie, - TInt aIndex ); - - virtual void NotifyStartTransitionEffectChanged( CVedMovie& aMovie ); - - virtual void NotifyMiddleTransitionEffectChanged( CVedMovie& aMovie, - TInt aIndex ); - - virtual void NotifyEndTransitionEffectChanged( CVedMovie& aMovie ); - - virtual void NotifyAudioClipAdded( CVedMovie& aMovie, - TInt aIndex ); - - virtual void NotifyAudioClipAddingFailed( CVedMovie& aMovie, - TInt aError ); - - virtual void NotifyAudioClipRemoved( CVedMovie& aMovie, - TInt aIndex ); - - virtual void NotifyAudioClipIndicesChanged( CVedMovie& aMovie, - TInt aOldIndex, - TInt aNewIndex ); - - virtual void NotifyAudioClipTimingsChanged( CVedMovie& aMovie, - TInt aIndex ); - - virtual void NotifyMovieReseted( CVedMovie& aMovie ); - - virtual void NotifyVideoClipFrameCompleted( CVedVideoClipInfo& aInfo, - TInt aError, - CFbsBitmap* aFrame ); - - virtual void NotifyVideoClipGeneratorSettingsChanged( CVedMovie& aMovie, - TInt aIndex ); - - virtual void NotifyVideoClipDescriptiveNameChanged( CVedMovie& aMovie, - TInt aIndex ); - - virtual void NotifyMovieQualityChanged( CVedMovie& aMovie ); - - virtual void NotifyMovieOutputParametersChanged( CVedMovie& aMovie ); - - virtual void NotifyAudioClipDynamicLevelMarkInserted( CVedMovie& aMovie, - TInt aClipIndex, - TInt aMarkIndex ); - - virtual void NotifyAudioClipDynamicLevelMarkRemoved( CVedMovie& aMovie, - TInt aClipIndex, - TInt aMarkIndex ); - - virtual void NotifyVideoClipDynamicLevelMarkInserted( CVedMovie& aMovie, - TInt aClipIndex, - TInt aMarkIndex ); - - virtual void NotifyVideoClipDynamicLevelMarkRemoved( CVedMovie& aMovie, - TInt aClipIndex, - TInt aMarkIndex ); - - virtual void DialogDismissedL( TInt aButtonId ); - - /** - * Moves selected audio clip right. Only for OfferKeyEventL use. - * - * @return EKeyWasConsumed if key event was processed and - * EKeyWasNotConsumed if it was not. - */ - TKeyResponse MoveAudioRight(); - - /** - * Moves selected audio clip left. Only for OfferKeyEventL use. - * - * @return EKeyWasConsumed if key event was processed and - * EKeyWasNotConsumed if it was not. - */ - TKeyResponse MoveAudioLeft(); - - - /** - * Time increment. - * - * @return Time in milliseconds - */ - TInt TimeIncrement( TInt aKeyCount )const; - - /* - * From CoeControl,SizeChanged. - */ - void SizeChanged(); - - TKeyResponse OfferKeyEventL( const TKeyEvent& aKeyEvent, TEventCode aType ); - /** - * From CoeControl,CountComponentControls. - */ - TInt CountComponentControls()const; - - /** - * From CCoeControl,ComponentControl. - */ - CCoeControl* ComponentControl( TInt aIndex )const; - - /** - * From CCoeControl,Draw. - */ - void Draw( const TRect& aRect )const; - - /** - * From CCoeControl. Handles a change to the control's resources. - * @param aType A message UID value. - */ - void HandleResourceChange( TInt aType ); - - /** - * From CCoeControl, gets the control's help context. Associates the - * control with a particular Help file and topic in a context sensitive - * application. - * - * @param aContext Control's help context. - */ - void GetHelpContext( TCoeHelpContext& aContext )const; - - /** - * Draws play head when previewing video - */ - void DrawPlayHead() /*const*/; - - /** - * From MCoeControlObserver, called when there is a control event - * to handle. - * - * @param aControl control originating the event - * @param aEventType event type - */ - void HandleControlEventL( CCoeControl* aControl, TCoeEvent aEventType ); - - /** - * From CCoeControl - * - * @param aPointerEvent pointer event - */ - void HandlePointerEventL( const TPointerEvent& aPointerEvent ); - - /** - * Callback function for the playhead timer. - * @param aThis self pointer - * @return dummy value 42 - */ - static TInt UpdatePosition( TAny* aThis ); - - /** - * Update function that is called by the static - * callback method - UpdatePosition. - */ - void DoUpdatePosition(); - - /** - * Returns the boolean is audioclip cutted. - * - * @return TBool - */ - TBool IsAudioClipCutted(); - - TKeyResponse HandleScrollBarL( const TKeyEvent& aKeyEvent, - TEventCode aType ); - - void CreateScrollBarL( const TRect& aRect ); - - /** - * Cancels saving of the snapshot. - */ - void CancelSnapshotSave(); - - /** - * Starts progress dialog - * - * @param aDialogResId resource id of the dialog - * @param aTextResId text of dialog - */ - void StartProgressDialogL( const TInt aDialogResId, const TInt aTextResId ); - - void SetPreviewState( const TPreviewState aNewState ); - - /** HandleVolumeUpL - * - * @see MVeiMediakeyObserver - */ - virtual void HandleVolumeUpL(); - - /** HandleVolumeDownL - * - * @see MVeiMediakeyObserver - */ - virtual void HandleVolumeDownL(); - - /** Callback function */ - static TInt AsyncTakeSnapshot( TAny* aThis ); - -private: - CVeiDisplayLighter* iScreenLight; - /** View eg.owner*/ - CVeiEditVideoView& iView; - - /** Movie being edited. */ - CVedMovie& iMovie; - - /** Currently processed thumbnail index. */ - TInt iCurrentlyProcessedIndex; - - /** Video cursor position. */ - TInt iVideoCursorPos; - - /** Audio cursor position. */ - TInt iAudioCursorPos; - - /** No thumbnail icon. */ - CFbsBitmap* iNoThumbnailIcon; - CFbsBitmap* iNoThumbnailIconMask; - - /** Audio icon. */ - CFbsBitmap* iAudioIcon; - - /** Audio mixing icon. */ - CFbsBitmap* iAudioMixingIcon; - - CFbsBitmap* iAudioTrackIcon; - CFbsBitmap* iAudioTrackIconMask; - /** Video track icon. */ - CFbsBitmap* iVideoTrackIcon; - CFbsBitmap* iVideoTrackIconMask; - - /** Array of video items. */ - RPointerArray < CStoryboardVideoItem > iVideoItemArray; - - /** Array of audio items. */ - RPointerArray < CStoryboardAudioItem > iAudioItemArray; - - /** Array of video item rects. */ - RArray < TRect > iVideoItemRectArray; - - /** The index of the clip that the user has clicked. */ - TInt iClickedClip; - - /** The part of the timeline that doesn't include video clips. - If there are no video clips, the rect is the same as the - whole timeline (=iVideoBarBox) */ - TRect iEmptyVideoTimeLineRect; - - /** Cursor location. */ - TCursorLocation iCursorLocation; - - /** Selection mode. */ - TSelectionMode iSelectionMode; - - /** Transition info. */ - CTransitionInfo* iTransitionInfo; - - /** Previous cursor location. */ - TCursorLocation iPrevCursorLocation; - - /** Key repeat count. Incremented in OfferKeyEventL() */ - TInt iKeyRepeatCount; - - TSize iTransitionMarkerSize; - TRect iVideoBarBox; - TRect iAudioBarBox; - TPoint iAudioBarIconPos; - TRect iAudioTrackBox; - TPoint iVideoBarIconPos; - TRect iVideoTrackBox; - TRect iBarArea; - TRect iTextArea; - TInt iTextBaseline; - TRect iIconArea; - TRect iIconTopEmptyArea; - TRect iIconBottomEmptyArea; - TInt iIconTextBaseline; - TPoint iHorizontalSliderPoint; - TSize iHorizontalSliderSize; - TPoint iVerticalSliderPoint; - TSize iVerticalSliderSize; - - CAknProgressDialog* iProgressDialog; - //CEikProgressInfo* iProgressInfo; - - /** Background context. Skin stuff. */ - CAknsBasicBackgroundControlContext* iBgContext; - - TTimeIntervalMicroSeconds iRecordedAudioStartTime; - TTimeIntervalMicroSeconds iRecordedAudioDuration; - - TBool iRecordedAudio; - - TInt iZoomFactorX; - TInt iZoomFactorY; - CPeriodic* iZoomTimer; - - CVeiVideoDisplay* iVideoDisplay; - - CVeiVideoDisplay* iTransitionDisplayLeft; // left hand side - CVeiVideoDisplay* iTransitionDisplayRight; // right hand side - TRect iTransitionDisplayLeftBox; - TRect iTransitionDisplayRightBox; - - CVeiTextDisplay* iInfoDisplay; - CVeiTextDisplay* iArrowsDisplay; - - TRect iVideoDisplayBox; - TRect iVideoDisplayBoxOnTransition; - TRect iInfoDisplayBox; - TRect iSlowMotionBox; - TRect iTransitionArrowsBox; - - CVeiCutterBar* iDummyCutBar; - CVeiCutterBar* iDummyCutBarLeft; - - /* Iconbox */ - CVeiIconBox* iEffectSymbols; - TRect iEffectSymbolBox; - - TRect iDummyCutBarBox; - TRect iDummyCutBarBoxOnTransition; - - CFbsBitmap* iGradientBitmap; - - TBool iFinished; - TBool iTakeSnapshot; - HBufC* iSaveToFileName; - - /** Seek thumbnail position in video clip. */ - TTimeIntervalMicroSeconds iSeekPos; - - /** Seek - flag. */ - TBool iSeeking; - - /** Last keycode, used in OfferKeyEventL(); */ - TUint iLastKeyCode; - - /** Last position. */ - TTimeIntervalMicroSeconds iLastPosition; - - - /** Periodic timer used for playhead update . */ - CPeriodic* iPeriodic; - /** Current point. This is where the horizontal bar is drawn. */ - TUint iCurrentPoint; - CVeiImageConverter* iConverter; - - TInt iSlowMotionValue; - - //** Preview flag. */ - TBool iFullScreenSelected; - - CVeiFrameTaker* iFrameTaker; - - //** GetFrame-flag for seeking functionality. */ - TBool iSeekingFrame; - - HBufC* iTempFileName; - - CVedVideoClipInfo* iTempVideoInfo; - - /** Current preview state. */ - TPreviewState iPreviewState; - /** Previous preview state. */ - TPreviewState iPreviousPreviewState; - - TInt iCurrentPointX; - TBool iCloseStream; - TBool iFrameReady; - TBool iBackKeyPressed; - /** Previous cursor location for preview. */ - TCursorLocation iCursorPreviousLocation; - - /** Flag indicating to draw the screen black. */ - TBool iBlackScreen; - - /** Horizontal slider component. */ - CVeiSlider* iHorizontalSlider; - /** Vertical slider component. */ - CVeiSlider* iVerticalSlider; - - /** Flag telling whether video file must be reopened in preview. */ - TBool iMustBeReopened; - - /** Pause indicator. */ - TRect iPauseIconBox; - CFbsBitmap* iPauseBitmap; - CFbsBitmap* iPauseBitmapMask; - - /** Remote connection API used to handle the volume keys. */ - CVeiRemConTarget* iRemConTarget; - - TBool iTakeSnapshotWaiting; - - /** Callback utility */ - CAsyncCallBack* iCallBack; - - /** ETrue if user is dragging a video clip with touch, - EFalse otherwise */ - TBool iIsVideoDrag; - - /** ETrue if the pen goes down inside a timeline video clip - EFalse otherwise */ - TBool iIsVideoTapped; - - /** The position where the user is dragging the clip into */ - TInt iNewClipPosition; - -#include "veieditvideocontainer.inl" -}; - -#endif -// End of File