videditor/VideoEditorCommon/inc/VeiTitleClipGenerator.h
changeset 9 d87d32eab1a9
parent 0 951a5db380a0
--- a/videditor/VideoEditorCommon/inc/VeiTitleClipGenerator.h	Fri Jan 29 14:08:33 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,586 +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 __VEITITLECLIPGENERATOR_H__
-#define __VEITITLECLIPGENERATOR_H__
-
-#include <e32base.h>
-
-#include <VedVideoClipGenerator.h>
-
-/*
- * UID of this generator. The Uids are only used to identify generators
- * in UI, the Engine does not use Uids for any purpose.
- */
-#define KUidTitleClipGenerator TUid::Uid(0x00000002)
-
-
-// Forward declarations
-
-class CVeiTitleClipGenerator;
-//class CVeiTitleClipMainTitleFrameOperation;
-//class CVeiTitleClipScrollerFrameOperation;
-class CVeiTitleClipImageDecodeOperation;
-class CFbsBitmap;
-class CBitmapScaler;
-class CImageDecoder;
-class CFont;
-
-// Enumerations
-
-/**
- * Title clip style.
- */
-enum TVeiTitleClipVerticalAlignment 
-	{
-	EVeiTitleClipVerticalAlignmentTop,
-	EVeiTitleClipVerticalAlignmentBottom,
-	EVeiTitleClipVerticalAlignmentCenter
-	};
-
-/**
- * Title clip justification.
- */
-enum TVeiTitleClipHorizontalAlignment
-	{
-	EVeiTitleClipHorizontalAlignmentLeft,
-	EVeiTitleClipHorizontalAlignmentRight,
-	EVeiTitleClipHorizontalAlignmentCenter
-	};
-
-/**
- * Title clip transition.
- */
-enum TVeiTitleClipTransition 
-	{
-	EVeiTitleClipTransitionNone = 0,
-	EVeiTitleClipTransitionScrollLeftToRight,
-	EVeiTitleClipTransitionScrollRightToLeft,
-	EVeiTitleClipTransitionScrollTopToBottom,
-	EVeiTitleClipTransitionScrollBottomToTop,
-	EVeiTitleClipTransitionFade
-	};
-
-
-
-/**
- * Observer for title clip generator.
- */
-class MVeiTitleClipGeneratorObserver
-	{
-public:
-	/**
-	 * Notifies that the title clip generator has finished loading and
-	 * preparing the background image.
-	 *
-	 * @param aGenerator  generator that caused the event
-	 * @param aError      error code
-	 */
-	virtual void NotifyTitleClipBackgroundImageLoadComplete(CVeiTitleClipGenerator& aGenerator, TInt aError) = 0;
-	};
-
-/**
- * Title clip generator.
- */
-class CVeiTitleClipGenerator : public CVedVideoClipGenerator
-	{
-public:
-
-	/* Constructors / destructors. */
-
-	IMPORT_C static CVeiTitleClipGenerator* NewL(const TSize& aMaxResolution, 
-		TVeiTitleClipTransition aTransition, 
-		TVeiTitleClipHorizontalAlignment aHorizontalAlignment,
-		TVeiTitleClipVerticalAlignment aVerticalAlignment);
-
-	IMPORT_C static CVeiTitleClipGenerator* NewLC(const TSize& aMaxResolution,
-		TVeiTitleClipTransition aTransition,
-		TVeiTitleClipHorizontalAlignment aHorizontalAlignment,
-		TVeiTitleClipVerticalAlignment aVerticalAlignment);
-
-	IMPORT_C virtual ~CVeiTitleClipGenerator();
-
-	/* Property methods. */
-
-	IMPORT_C virtual TPtrC DescriptiveName() const;
-
-	IMPORT_C virtual TUid Uid() const;
-	
-    IMPORT_C virtual TTimeIntervalMicroSeconds Duration() const;
-
-
-	/* Video frame property methods. */
-
-    IMPORT_C virtual TInt VideoFrameCount() const;
-
-	IMPORT_C virtual TTimeIntervalMicroSeconds VideoFrameStartTime(TInt aIndex) const;
-
-	IMPORT_C virtual TTimeIntervalMicroSeconds VideoFrameEndTime(TInt aIndex) const;
-
-	IMPORT_C virtual TTimeIntervalMicroSeconds VideoFrameDuration(TInt aIndex) const;
-
-    IMPORT_C virtual TInt GetVideoFrameIndex(TTimeIntervalMicroSeconds aTime) const;
-
-	IMPORT_C virtual TInt VideoFirstFrameComplexityFactor() const;
-
-	IMPORT_C virtual TInt VideoFrameDifferenceFactor(TInt aIndex) const;
-
-
-	/* Frame methods. */
-
-	IMPORT_C virtual void GetFrameL(MVedVideoClipGeneratorFrameObserver& aObserver,
-                           TInt aIndex,
-		                   TSize* const aResolution,
-						   TDisplayMode aDisplayMode,
-						   TBool aEnhance,
-						   TInt aPriority);
-    
-	IMPORT_C virtual void CancelFrame();
-		
-
-
-	/* New methods. */
-
-	/**
-	 * Sets the text for the generator.
-	 *
-	 * @param aText  text for the generator
-	 */
-	IMPORT_C void SetTextL(const TDesC& aText);
-
-	/**
-	 * Returns the text for this generator.
-	 *
-	 * @return  text for the generator
-	 */
-	IMPORT_C TPtrC Text() const;
-
-	/**
-	 * Returns the transition of this title screen clip.
-	 *
-	 * @return  transition
-	 */
-	IMPORT_C TVeiTitleClipTransition Transition() const;
-
-	/**
-	 * Returns the horizontal alignment.
-	 * 
-	 * @return  horizontal alignment
-	 */
-	IMPORT_C TVeiTitleClipHorizontalAlignment HorizontalAlignment() const;
-
-	/**
-	 * Returns the vertical alignment.
-	 * 
-	 * @return  vertical alignment
-	 */
-	IMPORT_C TVeiTitleClipVerticalAlignment VerticalAlignment() const;
-
-	/**
-	 * Sets the transiton and alignments. They are all tied together
-	 * to allow them to be set at once to avoid generating several 
-	 * thumbnails when setting many options at the same time.
-	 *
-	 * @param aTransition  transition for the generator.
-	 * @param aHorizontalAlignment  horizontal alignment
-	 * @param aVerticalAlignment  vertical alignment
-	 */
-	IMPORT_C void SetTransitionAndAlignmentsL(TVeiTitleClipTransition aTransition,
-		TVeiTitleClipHorizontalAlignment aHorizontalAlignment,
-		TVeiTitleClipVerticalAlignment aVerticalAlignment);
-
-	/**
-	 * Returns the background color.
-	 *
-	 * @return  background color.
-	 */
-	IMPORT_C TRgb BackgroundColor() const;
-
-	/**
-	 * Sets the background color. This is used only if no background image
-	 * is set.
-	 *
-	 * @param aBacgroundColor  background color
-	 */ 
-	IMPORT_C void SetBackgroundColorL(const TRgb& aBackgroundColor);
-
-	/**
-	 * Returns the text color.
-	 *
-	 * @return  text color.
-	 */
-	IMPORT_C TRgb TextColor() const;
-
-	/**
-	 * Sets the text color. 
-	 *
-	 * @param aBacgroundColor  text color
-	 */ 
-	IMPORT_C void SetTextColorL(const TRgb& aTextColor);
-
-	/**
-	 * Sets the background image. Transfers the ownership of the bitmap
-	 * to the generator.
-	 *
-	 * @param aBackgroundImage  background image
-	 */
-	IMPORT_C void SetBackgroundImageL(const CFbsBitmap* aBackgroundImage);
-
-	/**
-	 * Sets the background image from the specified file. 
-	 *
-	 * @param aFilename  filename for the image to load
-	 * @param aObserver  observer to notify when loading is complete
-	 */
-	IMPORT_C void SetBackgroundImageL(const TDesC& aFilename, MVeiTitleClipGeneratorObserver& aObserver);
-
-	/**
-	 * Returns the background image.
-	 *
-	 * @return  background image
-	 */
-	IMPORT_C CFbsBitmap* BackgroundImage() const;
-
-	/**
-	 * Sets the duration.
-	 *
-	 * @param aDuration  duration
-	 */
-	IMPORT_C void SetDuration(const TTimeIntervalMicroSeconds& aDuration);
-
-	/**
-	 * Sets the descriptive name.
-	 *
-	 * @param aDescriptiveName  descriptive name
-	 */
-	IMPORT_C void SetDescriptiveNameL(const TDesC& aDescriptiveName);
-
-private: 
-	// from MVedVideoClipGeneratorFrameObserver	
-	void NotifyVideoClipGeneratorFrameCompleted(CVedVideoClipGenerator& aGenerator, TInt aError, CFbsBitmap* aBitmap);
-
-private: // constructors
-	
-	/**
-	 * First-phase constructor. 
-	 * 
-	 * @param aMaxResolution		maximum resolution
-	 * @param aTransition			transition
-	 * @param aHorizontalAlignment	horizontal alignment
-	 * @param aVerticalAlignment	vertical alignment
-	 */
-	CVeiTitleClipGenerator(const TSize& aMaxResolution, 
-						   TVeiTitleClipTransition aTransition, 
-						   TVeiTitleClipHorizontalAlignment aHorizontalAlignment,
-						   TVeiTitleClipVerticalAlignment aVerticalAlignment);
-
-	/**
-	 * Second-phase constructor.
-	 */
-	void ConstructL();
-
-private: // new methods
-
-	/**
-	 * Wrap the input text into lines.
-	 */
-	void WrapTextToArrayL(const TDesC& aText);
-
-	/**
-	 * Updates the first frame complexity factor value.
-	 */
-	void UpdateFirstFrameComplexityFactorL();
-
-	/**
-	 * Calculates the fading transition start and end indices.
-	 *
-	 * @param  aInEndFrame     for returning the end frame of in-transition
-	 * @param  aOutStartFrame  for returning the start frame of out-transition
-	 * @param  aNumberOfFrames for returning number of frames
-	 */
-	void CalculateTransitionFrameIndices(TInt& aInEndFrame, TInt& aOutStartFrame) const;
-
-	/**
-	 * Gets the text font suitable for the current frame resolution.
-	 */
-	void GetTextFont(TInt aFontDivisor = 0);
-
-	/**
-	 * Draws wrapped texts on the specified bitmap.
-	 *
-	 * @param aBitmap       bitmap to draw on
-	 * @param aTextPoint    text starting point
-	 * @param aTextColor    text color
-	 * @param aBgColor      background color
-	 * @param aShadowColor  shadow color
-	 */
-	void DrawWrappedTextL(CFbsBitmap& aBitmap, const TPoint& aTextPoint, const TRgb& aTextColor,
-		const TRgb& aBgColor, const TRgb& aShadowColor, TBool aDrawBackground);
-
-	/**
-	 * Finishes the GetFrameL() call.
-	 */
-	CFbsBitmap* FinishGetFrameL(TInt aError = KErrNone);
-
-	/**
-	 * Synchronous method for getting the first frame for complexity
-	 * calculation.
-	 *
-	 * @return  first frame
-	 */
-	CFbsBitmap* GetFirstFrameL();
-
-	/**
-	 * Draws the main title frame on a specified bitmap.
-	 *
-	 * @param aBitmap  bitmap to draw on
-	 * @param aIndex   index of the frame to draw
-	 */
-	void DrawMainTitleFrameL(CFbsBitmap& aBitmap, TInt aIndex);
-
-	/**
-	 * Draws the scroll title frame on a specified bitmap.
-	 *
-	 * @param aBitmap  bitmap to draw on
-	 * @param aIndex   index of the frame to draw
-	 */
-	void DrawScrollTitleFrameL(CFbsBitmap& aBitmap, TInt aIndex);
-
-	/**
-	 * Get the maximum frame rate, which is either the movie's 
-	 * frame rate, of the hard-coded maximum value.
-	 *
-	 * @return  max frames per second
-	 */
-	TInt MaximumFramerate() const;
-
-private:
-    // Member variables
-
-	/** First frame complexity factor. */
-	TInt iFirstFrameComplexityFactor;
-
-	/** Text. */
-	HBufC* iText;
-
-	/** Font for the text */
-	const CFont* iTextFont;
-
-	/** Resolution used to calculate font size. */
-	TSize iGetFontResolution;
-
-	/** Desciptive name. */
-	HBufC* iDescriptiveName;
-
-	/** Wrapped text pointer array. */
-	CArrayFix<TPtrC>* iWrappedArray;
-
-	/** Height of the wrapped text box. */
-	TInt iWrappedTextBoxHeight;
-
-	/** Resolution. */
-	TSize iMaxResolution;
-
-	/** Duration. */
-	TTimeIntervalMicroSeconds iDuration;
-
-	/** Transition. */
-	TVeiTitleClipTransition iTransition;
-
-	/** Horizontal alignment. */
-	TVeiTitleClipHorizontalAlignment iHorizontalAlignment;
-
-	/** Vertical alignment. */
-	TVeiTitleClipVerticalAlignment iVerticalAlignment;
-
-	/** Background image decode operation. */
-	CVeiTitleClipImageDecodeOperation* iDecodeOperation;
-	
-	/** Background color. */
-	TRgb iBackgroundColor;
-	
-	/** Text color. */
-	TRgb iTextColor;
-
-	/** Flag for notifying setting change. */
-	TBool iSettingsChanged;
-
-	/** Background image. */
-	CFbsBitmap* iBackgroundImage;
-
-	/** Scaled background image. */
-	CFbsBitmap* iScaledBackgroundImage;
-
-	/** Flag indicating that we should use the scaled bitmap. */
-	TBool iUseScaledImage;
-
-
-	/* 
-	 * Following member variables are temporary storage for the two-phase 
-	 * GetFrameL. 
-	 */
-
-	/** Observer. */
-	MVedVideoClipGeneratorFrameObserver* iGetFrameObserver;
-	/**	Index. */
-    TInt iGetFrameIndex;
-	/** Resolution. */
-	TSize iGetFrameResolution;
-	/** DisplayMode. */
-	TDisplayMode iGetFrameDisplayMode;
-	/** Enhance flag. */
-	TBool iGetFrameEnhance;
-	/** Priority. */
-	TInt iGetFramePriority;
-
-	/* Operation classes need to be our friends. */
-	friend class CVeiTitleClipImageDecodeOperation;
-	};
-
-/**
- * Image decode operation. Helper class for decoding the image and 
- * performing first-stage resizing.
- */
-class CVeiTitleClipImageDecodeOperation : public CActive
-	{
-	public: 
-		/**
-		 * Factory constructor method. Constructs a decode operation.
-		 *
-		 * @param aGenerator  generator that owns this operation 
-		 * @param aObserver   observer that will be notified when the
-		 *                    operation is complete
-		 * @param aFilename   filename of the image to be decoded
-		 * @param aPriority   priority of the active object
-		 *
-		 * @return  constructed instance of decode operation
-		 */
-		static CVeiTitleClipImageDecodeOperation* NewL(CVeiTitleClipGenerator& aGenerator,
-													   MVeiTitleClipGeneratorObserver& aObserver,
-													   const TDesC& aFilename,
-													   TInt aPriority = CActive::EPriorityStandard);
-
-
-		/**
-		 * Factory constructor method. Constructs a decode operation.
-		 *
-		 * @param aGenerator  generator that owns this operation 
-		 * @param aSourceBitmap source bitmap
-		 * @param aPriority   priority of the active object
-		 *
-		 * @return  constructed instance of decode operation
-		 */
-		static CVeiTitleClipImageDecodeOperation* NewL(CVeiTitleClipGenerator& aGenerator,
-													   CFbsBitmap* aSourceBitmap,
-													   TInt aPriority = CActive::EPriorityStandard);
-
-		/**
-		 * Destructor.
-		 */
-		virtual ~CVeiTitleClipImageDecodeOperation();
-
-		virtual void RunL();
-		virtual void DoCancel();
-		virtual TInt RunError(TInt aError);
-
-		/**
-		 * Starts the loading operation. 
-		 * 
-		 * @param aMaxResolution  maximum resolution that will be used
-		 */
-		void StartLoadOperationL(const TSize& aMaxResolution);
-
-		/**
-		 * Starts the scaling operation. 
-		 * 
-		 * @param aResolution  resolution for the image
-		 */
-		void StartScalingOperationL(const TSize& aResolution);
-
-	private: // methods
-		/**
-		 * EPOC first-phase constructor.
-		 *
-		 * @param aGenerator  generator that owns this decode operation
-		 * @param aObserver   observer to notify when the operation is
-		 *                    complete
-		 * @param aPriority   priority for the active object
-		 */
-		CVeiTitleClipImageDecodeOperation(CVeiTitleClipGenerator& aGenerator,
-										  MVeiTitleClipGeneratorObserver& aObserver,
-										  TInt aPriority = CActive::EPriorityStandard);
-
-		/**
-		 * EPOC first-phase constructor.
-		 *
-		 * @param aGenerator    generator that owns this decode operation
-		 * @param aSourceBitmap source bitmap
-		 * @param aPriority     priority for the active object
-		 */
-		CVeiTitleClipImageDecodeOperation(CVeiTitleClipGenerator& aGenerator, 
-										  CFbsBitmap* aSourceBitmap,
-										  TInt aPriority = CActive::EPriorityStandard);
-		/**
-		 * EPOC second-phase constructor.
-		 * 
-		 * @param aFilename  filename to decode.
-		 */
-		void ConstructL(const TDesC& aFilename);
-
-	private: // members
-
-		/**
-		 * Enumeration for the decode phase.
-		 */
-		enum TDecodePhase 
-			{
-			EPhaseNotStarted = 0,
-			EPhaseLoading,
-			EPhaseScaling,
-			EPhaseComplete
-			};
-
-		/** Decode phase. */
-		TDecodePhase iDecodePhase;
-
-		/** Generator that owns this decoder operation. */
-		CVeiTitleClipGenerator& iGenerator;
-
-		/** Observer.*/
-		MVeiTitleClipGeneratorObserver* iObserver;
-
-		/** Decoder. */
-		CImageDecoder* iDecoder;
-
-		/** Bitmap. */
-		CFbsBitmap* iBitmap;
-
-		/** Scaler. */
-		CBitmapScaler* iScaler;
-
-		/** Flag indicating whether to notify observer. */
-		TBool iNotifyObserver;
-	};
-
-
-
-
-#endif // __VEITITLECLIPGENERATOR_H__
-