--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/imagingandcamerafws/imagingfws/src/Test/TImageViewer/TImageViewer.h Tue Feb 02 01:56:55 2010 +0200
@@ -0,0 +1,407 @@
+// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+#ifndef __TVIDEO_H__
+#define __TVIDEO_H__
+
+#include <eikappui.h>
+#include <eikapp.h>
+#include <techview/eikcfdlg.h>
+#include <eikdoc.h>
+
+#include <imageconversion.h>
+#include <bitmaptransforms.h>
+
+#include <timageviewer.rsg>
+#include "TImageViewer.hrh"
+
+const TUid KUidTVideo={ 0x101F45EA };
+
+// class CVideoAppView
+
+class CVideoAppView : public CCoeControl, public MCoeControlBrushContext
+ {
+public:
+ static CVideoAppView* NewL(const TRect& aRect);
+ ~CVideoAppView();
+ void Reset(TDrawNow aDrawNow=EDrawNow);
+ void DrawImage(CFbsBitmap* aBitmap, const TPoint& aOffset, TDrawNow aDrawNow=EDrawNow);
+ void DrawImage(CFbsBitmap* aBitmap, CFbsBitmap* aMask, const TPoint& aOffset, TDrawNow aDrawNow=EDrawNow);
+ TBool ResizeL(const TSize& aNewSize, TBool aClear=ETrue, TDrawNow aDrawNow=EDrawNow);
+ void Clear(TBool aClearFull=ETrue, TDrawNow aDrawNow=EDrawNow);
+ void MoveBy(const TPoint& aRelMove, TDrawNow aDrawNow=EDrawNow);
+ void Center(TDrawNow aDrawNow=EDrawNow);
+ TBool SetBackgroundColor(const TRgb& aColor, TDrawNow aDrawNow=EDrawNow);
+ void SetDisplayModeL(TDisplayMode aDisplayMode, CWsBitmap* aFrame, TDrawNow aDrawNow=EDrawNow);
+ TDisplayMode DisplayMode() const { return iDisplayMode; }
+protected:
+ CVideoAppView();
+ void ConstructL(const TRect& aRect);
+ void ResizeBufferL(const TSize& aNewSize, TDisplayMode aDisplayMode);
+ void EnsureSizeInTwipsSet(CFbsBitmap* aBitmap) const;
+// from CCoeControl
+ void Draw(const TRect& aRect) const;
+protected:
+ CFbsBitmap* iBmBuffer;
+ CFbsDevice* iBmDevice;
+ CFbsBitGc* iBmGc;
+ TRect iBmRect;
+ TRgb iBackgroundColor;
+ TBool iBitmapValid;
+ TDisplayMode iDisplayMode;
+ };
+
+class CPluginInfoArray : public CBase, public MDesCArray
+ {
+public:
+ static CPluginInfoArray* NewL();
+ virtual ~CPluginInfoArray();
+
+ void Reset();
+
+ void RefreshPluginListL();
+ TUid ImageType(TInt aIndex);
+ TUid SubType(TInt aIndex);
+
+ //From MDesCArray
+ TInt MdcaCount() const;
+ TPtrC MdcaPoint(TInt aIndex) const;
+
+private:
+ CPluginInfoArray();
+ void ConstructL();
+
+public:
+ RImageTypeDescriptionArray iPluginArray;
+ };
+
+class TFileSaveInfo
+ {
+public:
+ TUid iImageTypeUid;
+ TInt iBpp;
+ TBool iColor;
+ TInt iQualityFactor;
+ TInt iSampling;
+ TInt iCompression;
+ };
+
+class CVideoWalker;
+
+// CVideoAppUi
+
+class CVideoAppUi : public CEikAppUi
+ {
+ friend class CVideoWalker;
+private:
+ enum TFileType
+ {
+ EFileTypeUnknown,
+ EFileTypeWbmp,
+ EFileTypeOta
+ };
+ enum TState
+ {
+ EIdle,
+ ELoading,
+ EPlaying,
+ EPlayingWait,
+ EScalingMask,
+ EScaling,
+ ERotatingMask,
+ ERotating,
+ ESaving,
+ EStreamOpening,
+ EStreamWaitForFirstFrame,
+ EStreamWaitForDetails,
+ EStreamDecoding,
+ EStreamWaitAndContinue,
+ EStreamDecodeWait,
+ EFolderWait
+ };
+public:
+ void ConstructL();
+ CVideoAppUi();
+ ~CVideoAppUi();
+private:
+ // From CCoeAppUi
+ virtual TKeyResponse HandleKeyEventL(const TKeyEvent& aKeyEvent,TEventCode aType);
+ // From CEikAppUi
+ virtual void HandleCommandL(TInt aCommand);
+ virtual TBool ProcessCommandParametersL(TApaCommand aCommand,TFileName& aDocumentName,const TDesC8& aTail);
+ void DynInitMenuPaneL(TInt aResourceId,CEikMenuPane* aMenuPane);
+ TBool CheckHotKeyNotDimmedL(TInt aCommandId);
+ // New functions
+ void OpenFileL(TFileType aFileType);
+ void LoadFileL();
+ void SaveAsL();
+ void DisplayModeL();
+ void BackgroundColorL();
+ void ExtractFrameL();
+ void PlayClipL();
+ void NextFrameL();
+ void StreamPlayL(TFileType aFileType = EFileTypeUnknown, TBool aMultiFrameStreaming=EFalse);
+ void FrameInfoL();
+ void FrameRotateL(TBool aClockwise);
+ void FrameMirrorL(TBool aHorizontalAxis);
+ void ZoomFrameL(TBool aZoomIn);
+ void SetFrameSizeAndPosL(const TRect& aFrameRect,const TSize& aOverallSize);
+ void DecoderOptionsL();
+ void ExtensionOptionsL();
+
+ void RunL(CVideoWalker* aWalker, TInt aStatus);
+ void DoCancel(CVideoWalker* aWalker);
+ void Cancel();
+
+ void HandleNewlyOpenedImageL();
+ void HandleConvertCompleteL();
+ void DrawConvertedFrameL();
+ void ResizeBitmapsToSuitL();
+ void StartFrameOpen(TState aNextState, TBool aSizeFrame=ETrue);
+ void DoStartFrameOpenL(TBool aSizeFrame);
+ void StartFrameSave();
+
+ TInt ExtendStreamBuffer();
+ void StreamOpenFrameIfPosL();
+ void HandleRunError(CVideoWalker* aWalker, TInt aError);
+
+ void OpenFolderL();
+ void LoadFolderWait();
+ void LoadFolderL(const TDesC& aFolderName);
+ void OpenNextFolderEntry();
+
+ TBool ExtensionIsSetup();
+
+ void UpdateClippingRect(TUint aKeycode);
+
+ static void ReplaceNewlinesWithLineBreaks(TDes& aDes);
+
+private:
+ CWsBitmap iFrame;
+ CWsBitmap iMask;
+ TSize iImageDisplaySize;
+ TPoint iOffset;
+ TInt iFrameNumber;
+ TInt iPrevFrameNumber;
+ CVideoAppView* iAppView;
+ TInt iZoomFactor;
+ TFileName iLoadFileName;
+ TFileName iSaveFileName;
+ TFileSaveInfo iSaveInfo;
+ TTime iTime;
+ TInt iBackgroundColor;
+ TBool iOverrideBackgroundColor;
+ TSize iOverallSize;
+ TBool iAnimating;
+ TFileType iLastFileType;
+ TUint32 iLastFrameFlags;
+ TSize iScaleSize;
+ CBitmapRotator::TRotationAngle iRotateAngle;
+ TBool iViewResized;
+ TBool iDisableMask;
+ TUint iDecoderOptions;
+ TBool iCreateThumbnail;
+ TBool iSaveAsEXIF;
+ TBool iUseNativeDisplayMode;
+
+ CBitmapRotator* iRotator;
+ CBitmapScaler* iScaler;
+ CImageDecoder* iLoadUtil;
+ CImageEncoder* iSaveUtil;
+ CFrameImageData* iFrameImageData;
+ TState iState;
+ CVideoWalker* iWalker;
+ RTimer iTimer;
+
+ // for streaming simulation
+ CVideoWalker* iStreamGen;
+ RTimer iStreamTimer;
+ TPtr8 iStreamBuffer;
+ TInt64 iStreamSeed;
+ TBool iMultiFrameStreaming;
+ TBool iSourceHasGrown;
+
+ // for folder opens
+ TFileName iDirName;
+ CDir* iDir;
+ TInt iDirIndex;
+ TBool iOpeningFolder;
+
+ // extensions
+ TRect iClippingRect; // clipping rectangle
+ RArray<TInt> iOperations; // list of operations
+ TInt iScalingCoefficient; // scaling
+ TImageConvScaler::TScalerQuality iScalingQuality; // scaling
+ TBool iLockAspectRatio; // scaling
+ RArray<TInt> iEncodeOperations; // list of operations
+
+ TBool iUseExtensions;
+ };
+
+// CVideoDisplayModeDialog
+
+class CVideoDisplayModeDialog : public CEikDialog
+ {
+public:
+ CVideoDisplayModeDialog(TDisplayMode& aDisplayMode,TBool& aUseNativeDisplayMode);
+protected:
+ // From CEikDialog
+ void PreLayoutDynInitL();
+ TBool OkToExitL(TInt aButtonId);
+private:
+ TDisplayMode& iDisplayMode;
+ TBool& iUseNativeDisplayMode;
+ };
+
+// CVideoBackgroundColorDialog
+
+class CVideoBackgroundColorDialog : public CEikDialog
+ {
+public:
+ CVideoBackgroundColorDialog(TInt& aColor16, TBool& aOverride);
+protected:
+ // From CEikDialog
+ void PreLayoutDynInitL();
+ TBool OkToExitL(TInt aButtonId);
+ void HandleControlStateChangeL(TInt aControlId);
+private:
+ TInt& iColor16;
+ TBool& iOverride;
+ };
+
+// CVideoCurrentFrameDialog
+
+class CVideoCurrentFrameDialog : public CEikDialog
+ {
+public:
+ CVideoCurrentFrameDialog(TInt& aCurrentFrame,TInt aNumberOfFrames);
+protected:
+ // From CEikDialog
+ void PreLayoutDynInitL();
+ TBool OkToExitL(TInt aButtonId);
+private:
+ TInt& iCurrentFrame;
+ TInt iNumberOfFrames;
+ };
+
+// CVideoSaveAsDialog
+
+class CVideoSaveAsDialog : public CEikFileSaveAsDialog
+ {
+public:
+ CVideoSaveAsDialog(TDes* aFileName,TFileSaveInfo& aSaveInfo,RArray<TInt>& aEncodeOperations,TBool& aCreateThumbnail,TBool& aSaveAsEXIF);
+ virtual SEikControlInfo CreateCustomControlL(TInt aControlType);
+protected:
+ // from CEikDialog
+ void PreLayoutDynInitL();
+ TBool OkToExitL(TInt aButtonId);
+ virtual void HandleControlStateChangeL(TInt aControlId);
+ // new functions
+ void SetTypeL();
+private:
+ TFileSaveInfo& iSaveInfo;
+ RArray<TInt>& iEncodeOperations;
+ TBool* iCreateThumbnail;
+ TBool* iSaveAsEXIF;
+ };
+
+
+// CVideoFormatDialog
+
+class CDecoderOptionsDialog : public CEikDialog
+ {
+public:
+ CDecoderOptionsDialog(TUint& aOptions);
+protected:
+ // from CEikDialog
+ void PreLayoutDynInitL();
+ TBool OkToExitL(TInt aButtonId);
+private:
+ TUint& iOptions;
+ };
+
+class CExtensionOptionsDialog : public CEikDialog, public MEikDialogPageObserver
+ {
+public:
+ CExtensionOptionsDialog(TRect& aClippingRect,
+ RArray<TInt>& aOperations,
+ TInt& aScalingCoefficient,
+ TImageConvScaler::TScalerQuality& aQuality,
+ TBool& aLockAspectRatio);
+ CExtensionOptionsDialog(RArray<TInt>& aOperations);
+
+ virtual void PrepareForFocusTransitionL();
+ virtual void PageChangedL(TInt aPageId);
+ virtual void LineChangedL(TInt /*aControlId*/) {};
+ virtual SEikControlInfo CreateCustomControlL(TInt aControlType);
+ virtual void GetCustomAutoValue(TAny* /*aReturnValue*/,TInt /* aControlType*/,const CCoeControl* /*aControl*/) {};
+
+protected:
+ // from CEikDialog
+ void PreLayoutDynInitL();
+ TBool OkToExitL(TInt aButtonId);
+private:
+ TRect* iClippingRect; // clipping rectangle
+ RArray<TInt>& iOperations; // list of operations
+ // scaling
+ TInt* iScalingCoefficient;
+ TImageConvScaler::TScalerQuality* iScalingQuality;
+ TBool* iLockAspectRatio;
+ CDesCArrayFlat* iSelectedOperations;
+ TBuf<128> operationName[5];
+ TBool iOperationOnly; // only operations tab
+ };
+
+// CVideoFormatDialog
+
+class CVideoFormatDialog : public CEikDialog
+ {
+public:
+ CVideoFormatDialog(TFileSaveInfo& aSaveInfo);
+protected:
+ // from CEikDialog
+ void PreLayoutDynInitL();
+ void HandleControlStateChangeL(TInt aControlId);
+ TBool OkToExitL(TInt aButtonId);
+ // new functions
+ void ValidateControlState();
+private:
+ TFileSaveInfo& iSaveInfo;
+ CPluginInfoArray* iEncoderList; //Not owned
+ };
+
+// CVideoDocument
+
+class CVideoDocument : public CEikDocument
+ {
+public:
+ CVideoDocument(CEikApplication& aApp);
+private:
+ // from CEikDocument
+ CEikAppUi* CreateAppUiL();
+ };
+
+// CVideoApp
+
+class CVideoApp : public CEikApplication
+ {
+private:
+ // from CApaApplication
+ CApaDocument* CreateDocumentL();
+ TUid AppDllUid() const;
+ };
+
+#endif
+