--- 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 <coecntrl.h>
-#include <eiksbobs.h>
-#include <VedMovie.h>
-#include <VedVideoClipInfo.h>
-#include <aknprogressdialog.h>
-#include <aknutils.h>
-#include <aknlayoutdef.h>
-
-#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