summaryrefslogtreecommitdiffstats
path: root/src/imports/multimedia/qdeclarativecamera_p.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/imports/multimedia/qdeclarativecamera_p.h')
-rw-r--r--src/imports/multimedia/qdeclarativecamera_p.h302
1 files changed, 302 insertions, 0 deletions
diff --git a/src/imports/multimedia/qdeclarativecamera_p.h b/src/imports/multimedia/qdeclarativecamera_p.h
new file mode 100644
index 000000000..e477538b2
--- /dev/null
+++ b/src/imports/multimedia/qdeclarativecamera_p.h
@@ -0,0 +1,302 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the plugins of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef QDECLARATIVECAMERA_H
+#define QDECLARATIVECAMERA_H
+
+//
+// W A R N I N G
+// -------------
+//
+// This file is not part of the Qt API. It exists for the convenience
+// of other Qt classes. This header file may change from version to
+// version without notice, or even be removed.
+//
+// We mean it.
+//
+
+#include "qgraphicsvideoitem.h"
+#include <QtCore/qbasictimer.h>
+#include <QtDeclarative/qdeclarativeitem.h>
+#include <QtCore/QTime>
+
+#include <qcamera.h>
+#include <qcameraimageprocessing.h>
+#include <qcameraimagecapture.h>
+
+
+QT_BEGIN_HEADER
+
+QT_BEGIN_NAMESPACE
+
+class QTimerEvent;
+class QVideoSurfaceFormat;
+
+
+class QDeclarativeCamera : public QDeclarativeItem
+{
+ Q_OBJECT
+ Q_PROPERTY(State cameraState READ cameraState WRITE setCameraState NOTIFY cameraStateChanged)
+ Q_PROPERTY(LockStatus lockStatus READ lockStatus NOTIFY lockStatusChanged)
+ Q_PROPERTY(QString errorString READ errorString NOTIFY errorChanged)
+
+ Q_PROPERTY(QString capturedImagePath READ capturedImagePath NOTIFY imageSaved)
+
+ Q_PROPERTY(int iso READ isoSensitivity WRITE setManualIsoSensitivity NOTIFY isoSensitivityChanged)
+ Q_PROPERTY(qreal shutterSpeed READ shutterSpeed NOTIFY shutterSpeedChanged)
+ Q_PROPERTY(qreal aperture READ aperture NOTIFY apertureChanged)
+ Q_PROPERTY(qreal exposureCompensation READ exposureCompensation WRITE setExposureCompensation NOTIFY exposureCompensationChanged)
+
+ Q_PROPERTY(ExposureMode exposureMode READ exposureMode WRITE setExposureMode NOTIFY exposureModeChanged)
+ Q_PROPERTY(int flashMode READ flashMode WRITE setFlashMode NOTIFY flashModeChanged)
+ Q_PROPERTY(WhiteBalanceMode whiteBalanceMode READ whiteBalanceMode WRITE setWhiteBalanceMode NOTIFY whiteBalanceModeChanged)
+ Q_PROPERTY(int manualWhiteBalance READ manualWhiteBalance WRITE setManualWhiteBalance NOTIFY manualWhiteBalanceChanged)
+
+ Q_PROPERTY(QSize captureResolution READ captureResolution WRITE setCaptureResolution NOTIFY captureResolutionChanged)
+
+ Q_PROPERTY(qreal opticalZoom READ opticalZoom WRITE setOpticalZoom NOTIFY opticalZoomChanged)
+ Q_PROPERTY(qreal maximumOpticalZoom READ maximumOpticalZoom NOTIFY maximumOpticalZoomChanged)
+ Q_PROPERTY(qreal digitalZoom READ digitalZoom WRITE setDigitalZoom NOTIFY digitalZoomChanged)
+ Q_PROPERTY(qreal maximumDigitalZoom READ maximumDigitalZoom NOTIFY maximumDigitalZoomChanged)
+
+ Q_ENUMS(State)
+ Q_ENUMS(LockStatus)
+ Q_ENUMS(Error)
+ Q_ENUMS(FlashMode)
+ Q_ENUMS(ExposureMode)
+ Q_ENUMS(WhiteBalanceMode)
+public:
+ enum State
+ {
+ ActiveState = QCamera::ActiveState,
+ LoadedState = QCamera::LoadedState,
+ UnloadedState = QCamera::UnloadedState
+ };
+
+ enum LockStatus
+ {
+ Unlocked = QCamera::Unlocked,
+ Searching = QCamera::Searching,
+ Locked = QCamera::Locked
+ };
+
+ enum Error
+ {
+ NoError = QCamera::NoError,
+ CameraError = QCamera::CameraError,
+ InvalidRequestError = QCamera::InvalidRequestError,
+ ServiceMissingError = QCamera::ServiceMissingError,
+ NotSupportedFeatureError = QCamera::NotSupportedFeatureError
+ };
+
+ enum FlashMode {
+ FlashAuto = 0x1,
+ FlashOff = 0x2,
+ FlashOn = 0x4,
+ FlashRedEyeReduction = 0x8,
+ FlashFill = 0x10,
+ FlashTorch = 0x20,
+ FlashSlowSyncFrontCurtain = 0x40,
+ FlashSlowSyncRearCurtain = 0x80,
+ FlashManual = 0x100
+ };
+
+ enum ExposureMode {
+ ExposureAuto = 0,
+ ExposureManual = 1,
+ ExposurePortrait = 2,
+ ExposureNight = 3,
+ ExposureBacklight = 4,
+ ExposureSpotlight = 5,
+ ExposureSports = 6,
+ ExposureSnow = 7,
+ ExposureBeach = 8,
+ ExposureLargeAperture = 9,
+ ExposureSmallAperture = 10,
+ ExposureModeVendor = 1000
+ };
+
+ enum WhiteBalanceMode {
+ WhiteBalanceAuto = 0,
+ WhiteBalanceManual = 1,
+ WhiteBalanceSunlight = 2,
+ WhiteBalanceCloudy = 3,
+ WhiteBalanceShade = 4,
+ WhiteBalanceTungsten = 5,
+ WhiteBalanceFluorescent = 6,
+ WhiteBalanceIncandescent = 7,
+ WhiteBalanceFlash = 8,
+ WhiteBalanceSunset = 9,
+ WhiteBalanceVendor = 1000
+ };
+
+ QDeclarativeCamera(QDeclarativeItem *parent = 0);
+ ~QDeclarativeCamera();
+
+ State cameraState() const;
+
+ Error error() const;
+ QString errorString() const;
+
+ LockStatus lockStatus() const;
+
+ QImage capturedImagePreview() const;
+ QString capturedImagePath() const;
+
+ void paint(QPainter *, const QStyleOptionGraphicsItem *, QWidget *);
+
+ int flashMode() const;
+ ExposureMode exposureMode() const;
+ qreal exposureCompensation() const;
+ int isoSensitivity() const;
+ qreal shutterSpeed() const;
+ qreal aperture() const;
+
+ WhiteBalanceMode whiteBalanceMode() const;
+ int manualWhiteBalance() const;
+
+ QSize captureResolution() const;
+
+ qreal maximumOpticalZoom() const;
+ qreal maximumDigitalZoom() const;
+
+ qreal opticalZoom() const;
+ qreal digitalZoom() const;
+
+public Q_SLOTS:
+ void start();
+ void stop();
+
+ void setCameraState(State state);
+
+ void searchAndLock();
+ void unlock();
+
+ void captureImage();
+
+ void setFlashMode(int);
+ void setExposureMode(QDeclarativeCamera::ExposureMode);
+ void setExposureCompensation(qreal ev);
+ void setManualIsoSensitivity(int iso);
+
+ void setWhiteBalanceMode(QDeclarativeCamera::WhiteBalanceMode mode) const;
+ void setManualWhiteBalance(int colorTemp) const;
+
+ void setCaptureResolution(const QSize &size);
+
+ void setOpticalZoom(qreal);
+ void setDigitalZoom(qreal);
+
+Q_SIGNALS:
+ void errorChanged();
+ void error(QDeclarativeCamera::Error error, const QString &errorString);
+
+ void cameraStateChanged(QDeclarativeCamera::State);
+
+ void lockStatusChanged();
+
+ void imageCaptured(const QString &preview);
+ void imageSaved(const QString &path);
+ void captureFailed(const QString &message);
+
+ void isoSensitivityChanged(int);
+ void apertureChanged(qreal);
+ void shutterSpeedChanged(qreal);
+ void exposureCompensationChanged(qreal);
+ void exposureModeChanged(QDeclarativeCamera::ExposureMode);
+ void flashModeChanged(int);
+
+ void whiteBalanceModeChanged(QDeclarativeCamera::WhiteBalanceMode) const;
+ void manualWhiteBalanceChanged(int) const;
+
+ void captureResolutionChanged(const QSize&);
+
+ void opticalZoomChanged(qreal);
+ void digitalZoomChanged(qreal);
+ void maximumOpticalZoomChanged(qreal);
+ void maximumDigitalZoomChanged(qreal);
+
+protected:
+ void geometryChanged(const QRectF &geometry, const QRectF &);
+ void keyPressEvent(QKeyEvent * event);
+ void keyReleaseEvent(QKeyEvent * event);
+
+private Q_SLOTS:
+ void _q_updateState(QCamera::State);
+ void _q_nativeSizeChanged(const QSizeF &size);
+ void _q_error(int, const QString &);
+ void _q_imageCaptured(int, const QImage&);
+ void _q_imageSaved(int, const QString&);
+ void _q_captureFailed(int, QCameraImageCapture::Error, const QString&);
+ void _q_updateFocusZones();
+ void _q_updateLockStatus(QCamera::LockType, QCamera::LockStatus, QCamera::LockChangeReason);
+ void _q_updateImageSettings();
+ void _q_applyPendingState();
+
+private:
+ Q_DISABLE_COPY(QDeclarativeCamera)
+ QCamera *m_camera;
+ QGraphicsVideoItem *m_viewfinderItem;
+
+ QCameraExposure *m_exposure;
+ QCameraFocus *m_focus;
+ QCameraImageCapture *m_capture;
+
+ QImage m_capturedImagePreview;
+ QString m_capturedImagePath;
+ QList <QGraphicsItem*> m_focusZones;
+ QTime m_focusFailedTime;
+
+ QImageEncoderSettings m_imageSettings;
+ bool m_imageSettingsChanged;
+
+ State m_pendingState;
+ bool m_isStateSet;
+ bool m_isValid;
+};
+
+QT_END_NAMESPACE
+
+QML_DECLARE_TYPE(QT_PREPEND_NAMESPACE(QDeclarativeCamera))
+
+QT_END_HEADER
+
+#endif