camerauis/cameraapp/generic/inc/cameracontroller/camcameracontrollertypes.h
branchRCL_3
changeset 24 bac7acad7cb3
parent 0 1ddebce53859
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/camerauis/cameraapp/generic/inc/cameracontroller/camcameracontrollertypes.h	Wed Sep 01 12:30:54 2010 +0100
@@ -0,0 +1,281 @@
+/*
+* Copyright (c) 2007-2008 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:  Data type definitions for Camera Controller.
+*
+*/
+
+
+#ifndef CAM_CONTROLLERTYPES_H
+#define CAM_CONTROLLERTYPES_H
+
+#include "camcameracontrollerflags.hrh"
+#include "camcamerarequests.h"
+#ifdef CAMERAAPP_CAPI_V2_ADV
+  #include <ecamadvsettings.h>
+#endif
+
+// Max video recording time is 1:29:59
+// To be moved to a separate constants header.
+const TInt64 KMaxRecordingLength = MAKE_TINT64( 1, 0x41CE33C0 );
+
+typedef RArray<TCamCameraRequestId> RCamRequestArray;
+
+
+enum TCamCameraStateFlags
+  {
+  ECamIdle      =    0,
+  ECamReserved  = 1<<0,
+  ECamPowerOn   = 1<<1,
+  ECamVFOn      = 1<<2,
+  ECamImageOn   = 1<<3,
+  ECamVideoOn   = 1<<4
+//  ECamCaptureOn = 1<<5
+  };
+
+enum TCamCameraCaptureState
+  {
+  ECamCaptureOff,
+  ECamCaptureOn,
+  ECamCapturePaused
+  };
+
+enum TCamCameraTriState
+  {
+  ECamTriIdle,
+  ECamTriInactive,
+  ECamTriActive
+  };
+
+enum TCamCameraReadyState
+  {
+  ECamUnknown,
+  ECamNotReady,
+  ECamReady
+  };
+
+enum TCamViewfinderMode
+  {
+  ECamViewfinderNone,
+  ECamViewfinderBitmap,
+  ECamViewfinderDirect
+  };
+
+enum TCamCameraControllerBusyFlags
+  {
+  ECamBusyOff      = 0,
+  ECamBusySequence = 1,
+  ECamBusySingle   = 2,
+  ECamBusySetting  = 4
+  };
+
+class TCamVideoRecordingTimes
+  {
+  public:
+    TTimeIntervalMicroSeconds iTimeElapsed;
+    TTimeIntervalMicroSeconds iTimeRemaining;
+  };
+
+
+/**
+* Camera controller information
+*/
+class TCamControllerInfo
+  {
+  // ===================================
+  public:
+
+    TCamControllerInfo();
+
+    void Reset( TBool aPreserveBusyFlag    = EFalse,
+                TBool aPreserveCameraIndex = EFalse );
+
+    void PrintInfo() const;
+
+  // ===================================
+  // Data
+  public:
+
+    /** 
+    * Current camera index 
+    */
+    TInt  iCurrentCamera;
+
+    /**
+    * Controller overall state.
+    * TCamCameraStateFlags ORed.
+    */
+    TUint                  iState;
+
+    /**
+    * Current state of capturing image or video.
+    */
+    TCamCameraCaptureState iCaptureState;  //< Is capture on, off or paused
+    TInt                   iCaptureLimit;  //< Amount of captures  (images) requested
+    TInt                   iCaptureCount;  //< Amount of captures  (images) received
+    TInt                   iSnapshotCount; //< Amount of snapshots (images) received
+    
+    /** 
+    * Viewfinder details
+    */
+    TCamViewfinderMode iVfMode;
+    TCamCameraTriState iVfState;
+    TSize              iViewfinderSize;
+    CCamera::TFormat   iViewfinderFormat;
+
+    /** 
+    * Snapshot details
+    */
+    TCamCameraTriState iSsState;
+    TSize              iSnapshotSize;
+    CCamera::TFormat   iSnapshotFormat;
+    TBool              iSnapshotAspectMaintain;
+
+#ifdef CAMERAAPP_CAPI_V2_ADV
+    /**
+    * Autofocus range
+    */
+    CCamera::CCameraAdvancedSettings::TFocusRange iCurrentFocusRange;    
+#endif // CAMERAAPP_CAPI_V2_ADV
+
+
+    /** 
+    * Is controller busy handling requests?
+    * New requests can not be issued if this is not EBusyOff.
+    * CancelSequence and CancelRequest can still be used.
+    */
+    TUint iBusy;
+
+  // ===================================
+  };
+
+
+#ifdef CAMERAAPP_CAPI_V2_ADV
+/**
+* Information on advanced settings.
+* (These use CCameraAdvancedSettings.)
+*
+*/
+class TCamAdvancedSettingInfo
+  {
+  // ===================================
+  public:
+
+    TCamAdvancedSettingInfo();
+    ~TCamAdvancedSettingInfo();
+
+    void Reset();
+    void PrintInfo() const;
+
+  // ===================================
+  // Data
+  //
+  // NOTE: Remember to modify Reset() if members are added.
+  public:
+
+    // Camera index which this info matches
+    TInt         iForCameraIndex;
+
+    // Exposure compenstion support
+    TInt         iEvModesSupport;
+    RArray<TInt> iEvStepsSupport;
+    TValueInfo   iEvStepsValueInfo;
+
+    // ISO rate support
+    RArray<TInt> iIsoRatesSupport;
+
+    // Digital zoom steps support
+    RArray<TInt> iDigitalZoomSupport;
+    TValueInfo   iDigitalZoomValueInfo;
+
+#ifdef CAMERAAPP_CAPI_V2_IP
+    // Colour fx support
+    RArray<TInt> iColourEffectSupport;
+    TValueInfo   iColourEffectValueInfo;
+
+    // Sharpness support
+    RArray<TInt> iSharpnessSupport;
+    TValueInfo   iSharpnessValueInfo;
+#endif
+
+    // Stabilization support
+    TInt         iStabilizationModeSupport;
+    TInt         iStabilizationEffectSupport;
+    TInt         iStabilizationComplexitySupport;
+
+  // ===================================
+  };
+#endif // CAMERAAPP_CAPI_V2_ADV
+
+/**
+* Container for CCamera supported resolutions
+* for certain camera index and format.
+*/
+class TCamCameraResolutionSupport
+  {
+  // ===================================
+  public:
+
+    TCamCameraResolutionSupport();
+    ~TCamCameraResolutionSupport();
+
+    void Reset();    
+
+  // ===================================
+  // Data
+  public:
+
+    TInt             iForCameraIndex;
+    TInt             iForCameraFormat;
+    RArray<TSize>    iResolutions;
+
+  // ===================================
+  };
+
+
+
+// ===========================================================================
+// Debug strings
+#ifdef _DEBUG
+const TUint16* const KCamCameraCaptureStateNames[] =
+  {
+  (const TUint16* const)_S16("ECamCaptureOff"),
+  (const TUint16* const)_S16("ECamCaptureOn"),
+  (const TUint16* const)_S16("ECamCapturePaused")
+  };
+
+const TUint16* const KCamCameraTriStateNames[] =
+  {
+  (const TUint16* const)_S16("ECamTriIdle"),
+  (const TUint16* const)_S16("ECamTriInactive"),
+  (const TUint16* const)_S16("ECamTriActive")
+  };
+
+const TUint16* const KCamCameraReadyStateNames[] =
+  {
+  (const TUint16* const)_S16("ECamUnknown"),
+  (const TUint16* const)_S16("ECamNotReady"),
+  (const TUint16* const)_S16("ECamReady")
+  };
+
+const TUint16* const KCamViewfinderModeNames[] =
+  {
+  (const TUint16* const)_S16("ECamViewfinderNone"),
+  (const TUint16* const)_S16("ECamViewfinderBitmap"),
+  (const TUint16* const)_S16("ECamViewfinderDirect")
+  };
+#endif // _DEBUG
+
+#endif // CAM_CONTROLLERTYPES_H
+
+// end of file