Initial copy of QtMultimediaKit.

Comes from original repo, with SHA1:
2c82d5611655e5967f5c5095af50c0991c4378b2
This commit is contained in:
Michael Goddard
2011-06-29 13:38:46 +10:00
commit 2a34e88c1e
1048 changed files with 206259 additions and 0 deletions

View File

@@ -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