diff -r 819e59dfc032 -r 2d9cac8919d3 screengrabber/inc/sgengine.h --- a/screengrabber/inc/sgengine.h Mon Oct 04 10:09:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,271 +0,0 @@ -/* -* Copyright (c) 2010 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 SGENGINE_H -#define SGENGINE_H - - -// INCLUDES -#include -#include -#include -#include -#include -#include - - -class CFrameImageData; -class CDictionaryFileStore; -class CImageEncoder; -class EngineWrapper; - - -// setting keys (do not change uids of existing keys to maintain compatibility to older versions!) -const TUid KSGSettingCaptureMode = { 0x00 }; - -const TUid KSGSettingSingleCaptureHotkey = { 0x01 }; -const TUid KSGSettingSingleCaptureImageFormat = { 0x02 }; -const TUid KSGSettingSingleCaptureMemoryInUseMultiDrive = { 0x04 }; -const TUid KSGSettingSingleCaptureFileName = { 0x05 }; - -const TUid KSGSettingSequantialCaptureHotkey = { 0x06 }; -const TUid KSGSettingSequantialCaptureImageFormat = { 0x07 }; -const TUid KSGSettingSequantialCaptureDelay = { 0x08 }; -const TUid KSGSettingSequantialCaptureMemoryInUseMultiDrive = { 0x0A }; -const TUid KSGSettingSequantialCaptureFileName = { 0x0B }; - -const TUid KSGSettingVideoCaptureHotkey = { 0x0C }; -const TUid KSGSettingVideoCaptureVideoFormat = { 0x0D }; -const TUid KSGSettingVideoCaptureMemoryInUseMultiDrive = { 0x0F }; -const TUid KSGSettingVideoCaptureFileName = { 0x10 }; - -const TUid KUidScreenGrabber = { 0x101FB751 }; - - -#define TRANSPARENCY_INDEX 30 -#define TRANSPARENCY_ALTERNATIVE_INDEX 24 - -enum TScreenGrabberSettingCaptureModes - { - ECaptureModeSingleCapture = 0, - ECaptureModeSequantialCapture, - ECaptureModeVideoCapture - }; - -enum TScreenGrabberSettingHotkeys - { - EHotkeySendKey = 0, - EHotkeyPowerKey, - EHotkeySideKey, - EHotkeyCameraKey1 - }; - -enum TScreenGrabberSettingImageFormats - { - EImageFormatPNG = 0, - EImageFormatJPGHQ, - EImageFormatJPGLQ, - EImageFormatBMP, - EImageFormatGIF, - EImageFormatMBM - }; - -enum TScreenGrabberSettingVideoFormats - { - EVideoFormatAnimatedGIF = 0 - }; - -enum TScreenGrabberSettingMultiDrive - { - EPhoneMemory = 0, - EMemoryCard - }; - - -class TGrabSettings - { -public: - TInt iCaptureMode; - - TInt iSingleCaptureHotkey; - TInt iSingleCaptureImageFormat; - TInt iSingleCaptureMemoryInUseMultiDrive; - TFileName iSingleCaptureFileName; - - TInt iSequantialCaptureHotkey; - TInt iSequantialCaptureImageFormat; - TInt iSequantialCaptureDelay; - TInt iSequantialCaptureMemoryInUseMultiDrive; - TFileName iSequantialCaptureFileName; - - TInt iVideoCaptureHotkey; - TInt iVideoCaptureVideoFormat; - TInt iVideoCaptureMemoryInUseMultiDrive; - TFileName iVideoCaptureFileName; - }; - -class TVideoFrame - { -public: - TUint iWidth; - TUint iHeight; - TUint iXPos; - TUint iYPos; - TUint iDelay; // 1000 = 1 sec - TBool iEnableTransparency; - TBool iFillsWholeScreen; - TFileName iFileStorePath; - }; - - -typedef CArrayFixSeg CVideoFrameArray; - -/** - * CEngine - * - */ -class SGEngine : public CActive //, public MMdaAudioToneObserver - { - - // active object states - - enum TState - { - EIdle = 0, // do nothing - EEncodingImage, // ICL encoding of an image - ESequenceDelay, // waiting till next capture - ECancelCapturing, // asking to cancel capturing - ENextVideoFrame, // get next frame for video - ECancelVideoCapturing, // asking to cancel video capturing - EQueryDelay // waiting till to remove query - }; - -public: - // Constructors and destructor - - /** - * Destructor. - */ - ~SGEngine(); - - /** - * Two-phased constructor. - */ - static SGEngine* NewL(EngineWrapper *aEngineWrapper); - - /** - * Two-phased constructor. - */ - static SGEngine* NewLC(EngineWrapper *aEngineWrapper); - - /** - * returns current settings - */ - inline TGrabSettings GrabSettings(){ return iGrabSettings; }; - - /** - * saves settings to engine - */ - void SaveSettingsL(TGrabSettings aGrabSettings); - - /** - * takes one screen shot - */ - bool TakeScreenShotAndSaveL(); - - TBool DriveOK(TDriveNumber aNumber); - - TBool IsDriveMMC(TDriveNumber aDrive); - -#if defined(HB_QT_S60_EVENT_FILTER) - TBool HandleCaptureCommandsL(const TWsEvent* aEvent); -#else - TBool HandleCaptureCommandsL(const QSymbianEvent *event); -#endif - - - void ActivateModelL(); - void DeActivateModelL(); - void ActivateCaptureKeysL(TBool aChangeKey=EFalse); - void EnableRcpOfFoc(TBool aState); - void LoadSettingsL(); - -private: - - void CapturingFinishedL(TInt aErr); - - void RunL(); - void DoCancel(); - void SaveVideoL(TInt aErr); - void CleanTemporaryFilesL(); - void LoadDFSValueL(CDictionaryFileStore* aDicFS, const TUid& aUid, TInt& aValue); - void LoadDFSValueL(CDictionaryFileStore* aDicFS, const TUid& aUid, TDes& aValue); - - void SaveDFSValueL(CDictionaryFileStore* aDicFS, const TUid& aUid, const TInt& aValue); - void SaveDFSValueL(CDictionaryFileStore* aDicFS, const TUid& aUid, const TDes& aValue); - - void CancelCapturing(); - void CaptureFrameForVideoL(); - - - /** - * Constructor for performing 1st stage construction - */ - SGEngine(); - - /** - * EPOC default constructor for performing 2nd stage construction - */ - void ConstructL(EngineWrapper *aEngineWrapper); - - -private: - RFs iFileSession; - - CActiveScheduler* iActiveScheduler; - CActiveSchedulerWait* iWait; - - TGrabSettings iGrabSettings; // a simple class to store the settings used in the screen capture - RWindowGroup iRootWin; // application's window group - TInt iCapturedKey; // a handle to the key which is captured - TInt iCapturedKeyUnD; // a handle to the key which is captured, up and down - TInt iCapturedKeyHash; // a handle to the hash key which is captured - TInt iCapturedKeyHashUnD; // a handle to the hash key which is captured, up and down - TBool iHashKeyCapturingActivated; // captures hash key is activated - CFbsBitmap* iPreviouslyCapturedBitmap; // a previously captured bitmap - TFileName iSaveFileName; - CImageEncoder* iImageEncoder; // engine from ICL to do the image conversion// target filename of the taken screen shot - CFrameImageData* iFrameImageData; // frame and image block data needed by ICL - TState iState; // state of this active object - TBool iHashKeyDown; // stores state if hash key is currently down - TBool iCapturingInProgress; // boolean to check if capturing is in progress - TBool iStopCapturing; // boolean to specify if to ask capturing - TUint iNumberOfTakenShots; // a number of the taken screen shots in the sequantial mode - RTimer iTimer; // a timer for async delays - TUint iCurrentFrameNumber; // a number of taken frames in video mode - TTime iPreviousFrameTaken; // time when the last frame was taken - TSize iVideoDimensions; // dimension of the video - TSize iPreviousFrameScreenDimension; // dimension of the screen in previous frame - CVideoFrameArray* iVideoFrameArray; // the frames of the video - EngineWrapper* iEngineWrapper; // Eninewrapper that is used for communicating between QT and Symbian - }; - - - - - -#endif // SGENGINE_H