diff options
Diffstat (limited to 'src/imports')
-rw-r--r-- | src/imports/audioengine/qaudioengine_openal_p.h | 8 | ||||
-rw-r--r-- | src/imports/audioengine/qdeclarative_playvariation_p.cpp | 5 | ||||
-rw-r--r-- | src/imports/audioengine/qdeclarative_sound_p.cpp | 3 | ||||
-rw-r--r-- | src/imports/multimedia/Video.qml | 20 | ||||
-rw-r--r-- | src/imports/multimedia/multimedia.cpp | 10 | ||||
-rw-r--r-- | src/imports/multimedia/qdeclarativeaudio.cpp | 62 | ||||
-rw-r--r-- | src/imports/multimedia/qdeclarativeaudio_p.h | 6 | ||||
-rw-r--r-- | src/imports/multimedia/qdeclarativecameraexposure.cpp | 29 | ||||
-rw-r--r-- | src/imports/multimedia/qdeclarativecameraexposure_p.h | 3 | ||||
-rw-r--r-- | src/imports/multimedia/qdeclarativecamerafocus.cpp | 56 | ||||
-rw-r--r-- | src/imports/multimedia/qdeclarativecamerafocus_p.h | 14 | ||||
-rw-r--r-- | src/imports/multimedia/qdeclarativecameraimageprocessing.cpp | 62 | ||||
-rw-r--r-- | src/imports/multimedia/qdeclarativecameraimageprocessing_p.h | 13 |
13 files changed, 282 insertions, 9 deletions
diff --git a/src/imports/audioengine/qaudioengine_openal_p.h b/src/imports/audioengine/qaudioengine_openal_p.h index c1dbf6aa2..92735ba86 100644 --- a/src/imports/audioengine/qaudioengine_openal_p.h +++ b/src/imports/audioengine/qaudioengine_openal_p.h @@ -91,12 +91,12 @@ public: StaticSoundBufferAL(QObject *parent, const QUrl &url, QSampleCache *sampleLoader); ~StaticSoundBufferAL(); - State state() const Q_DECL_OVERRIDE; + State state() const override; - void load() Q_DECL_OVERRIDE; + void load() override; - void bindToSource(ALuint alSource) Q_DECL_OVERRIDE; - void unbindFromSource(ALuint alSource) Q_DECL_OVERRIDE; + void bindToSource(ALuint alSource) override; + void unbindFromSource(ALuint alSource) override; inline long addRef() { return ++m_ref; } inline long release() { return --m_ref; } diff --git a/src/imports/audioengine/qdeclarative_playvariation_p.cpp b/src/imports/audioengine/qdeclarative_playvariation_p.cpp index 36ffca668..e6d3697d0 100644 --- a/src/imports/audioengine/qdeclarative_playvariation_p.cpp +++ b/src/imports/audioengine/qdeclarative_playvariation_p.cpp @@ -41,6 +41,7 @@ #include "qdeclarative_audioengine_p.h" #include "qsoundinstance_p.h" #include "qdebug.h" +#include "qrandom.h" #define DEBUG_AUDIOENGINE @@ -272,7 +273,7 @@ void QDeclarativePlayVariation::setSampleObject(QDeclarativeAudioSample *sampleO void QDeclarativePlayVariation::applyParameters(QSoundInstance *soundInstance) { - qreal pitch = qreal(qrand() % 1001) * 0.001f * (m_maxPitch - m_minPitch) + m_minPitch; - qreal gain = qreal(qrand() % 1001) * 0.001f * (m_maxGain - m_minGain) + m_minGain; + qreal pitch = QRandomGenerator::global()->bounded(1001 * 0.001f) * (m_maxPitch - m_minPitch) + m_minPitch; + qreal gain = QRandomGenerator::global()->bounded(1001 * 0.001f) * (m_maxGain - m_minGain) + m_minGain; soundInstance->updateVariationParameters(pitch, gain, m_looping); } diff --git a/src/imports/audioengine/qdeclarative_sound_p.cpp b/src/imports/audioengine/qdeclarative_sound_p.cpp index 0849215be..a11490cea 100644 --- a/src/imports/audioengine/qdeclarative_sound_p.cpp +++ b/src/imports/audioengine/qdeclarative_sound_p.cpp @@ -43,6 +43,7 @@ #include "qdeclarative_soundinstance_p.h" #include "qdeclarative_audioengine_p.h" #include "qdebug.h" +#include "qrandom.h" #define DEBUG_AUDIOENGINE @@ -316,7 +317,7 @@ int QDeclarativeSound::genVariationIndex(int oldVariationIndex) case QDeclarativeSound::Random: { if (oldVariationIndex < 0) oldVariationIndex = 0; - return (oldVariationIndex + (qrand() % (m_playlist.count() + 1))) % m_playlist.count(); + return (oldVariationIndex + (QRandomGenerator::global()->bounded(m_playlist.count() + 1))) % m_playlist.count(); } default: return (oldVariationIndex + 1) % m_playlist.count(); diff --git a/src/imports/multimedia/Video.qml b/src/imports/multimedia/Video.qml index 66b86c74b..19c437869 100644 --- a/src/imports/multimedia/Video.qml +++ b/src/imports/multimedia/Video.qml @@ -38,7 +38,7 @@ ****************************************************************************/ import QtQuick 2.0 -import QtMultimedia 5.9 +import QtMultimedia 5.11 /*! \qmltype Video @@ -302,13 +302,31 @@ Item { \li MediaPlayer.AccessibilityRole - for accessibility, such as with a screen reader. \li MediaPlayer.SonificationRole - sonification, such as with user interface sounds. \li MediaPlayer.GameRole - game audio. + \li MediaPlayer.CustomRole - The role is specified by customAudioRole. \endlist + customAudioRole is cleared when this property is set to anything other than CustomRole. + \since 5.6 */ property alias audioRole: player.audioRole /*! + \qmlproperty string Video::customAudioRole + + This property holds the role of the audio stream when the backend supports audio roles + unknown to Qt. It can be set to specify the type of audio being played, allowing the + system to make appropriate decisions when it comes to volume, routing or post-processing. + + The audio role must be set before setting the source property. + + audioRole is set to CustomRole when this property is set. + + \since 5.11 + */ + property alias customAudioRole: player.customAudioRole + + /*! \qmlproperty bool Video::seekable This property holds whether the playback position of the video can be diff --git a/src/imports/multimedia/multimedia.cpp b/src/imports/multimedia/multimedia.cpp index 6a316a298..6d9292221 100644 --- a/src/imports/multimedia/multimedia.cpp +++ b/src/imports/multimedia/multimedia.cpp @@ -151,6 +151,16 @@ public: qmlRegisterUncreatableType<QDeclarativeCameraFlash, 1>(uri, 5, 9, "CameraFlash", trUtf8("CameraFlash is provided by Camera")); + // 5.11 types + qmlRegisterType<QDeclarativeAudio, 3>(uri, 5, 11, "Audio"); + qmlRegisterType<QDeclarativeAudio, 3>(uri, 5, 11, "MediaPlayer"); + qmlRegisterUncreatableType<QDeclarativeCameraFocus, 1>(uri, 5, 11, "CameraFocus", + trUtf8("CameraFocus is provided by Camera")); + qmlRegisterUncreatableType<QDeclarativeCameraExposure, 1>(uri, 5, 11, "CameraExposure", + trUtf8("CameraExposure is provided by Camera")); + qmlRegisterUncreatableType<QDeclarativeCameraImageProcessing, 3>(uri, 5, 11, "CameraImageProcessing", + trUtf8("CameraImageProcessing is provided by Camera")); + qmlRegisterType<QDeclarativeMediaMetaData>(); qmlRegisterType<QAbstractVideoFilter>(); } diff --git a/src/imports/multimedia/qdeclarativeaudio.cpp b/src/imports/multimedia/qdeclarativeaudio.cpp index 652296509..65606b3cf 100644 --- a/src/imports/multimedia/qdeclarativeaudio.cpp +++ b/src/imports/multimedia/qdeclarativeaudio.cpp @@ -179,8 +179,11 @@ QDeclarativeAudio::Availability QDeclarativeAudio::availability() const \li AccessibilityRole - for accessibility, such as with a screen reader. \li SonificationRole - sonification, such as with user interface sounds. \li GameRole - game audio. + \li CustomRole - The role is specified by customAudioRole. \endlist + customAudioRole is cleared when this property is set to anything other than CustomRole. + \since 5.6 */ QDeclarativeAudio::AudioRole QDeclarativeAudio::audioRole() const @@ -196,12 +199,49 @@ void QDeclarativeAudio::setAudioRole(QDeclarativeAudio::AudioRole audioRole) if (m_complete) { m_player->setAudioRole(QAudio::Role(audioRole)); } else { + if (!m_customAudioRole.isEmpty()) { + m_customAudioRole.clear(); + emit customAudioRoleChanged(); + } m_audioRole = audioRole; emit audioRoleChanged(); } } /*! + \qmlproperty string QtMultimedia::Audio::customAudioRole + + This property holds the role of the audio stream when the backend supports audio + roles unknown to Qt. It can be set to specify the type of audio being played, + allowing the system to make appropriate decisions when it comes to volume, + routing or post-processing. + + The audio role must be set before setting the source property. + + audioRole is set to CustomRole when this property is set. + + \since 5.11 +*/ +QString QDeclarativeAudio::customAudioRole() const +{ + return !m_complete ? m_customAudioRole : m_player->customAudioRole(); +} + +void QDeclarativeAudio::setCustomAudioRole(const QString &audioRole) +{ + if (this->customAudioRole() == audioRole) + return; + + if (m_complete) { + m_player->setCustomAudioRole(audioRole); + } else { + setAudioRole(QDeclarativeAudio::CustomRole); + m_customAudioRole = audioRole; + emit customAudioRoleChanged(); + } +} + +/*! \qmlproperty int QtMultimedia::Audio::notifyInterval The interval at which notifiable properties will update. @@ -850,6 +890,8 @@ void QDeclarativeAudio::classBegin() this, SIGNAL(hasVideoChanged())); connect(m_player, SIGNAL(audioRoleChanged(QAudio::Role)), this, SIGNAL(audioRoleChanged())); + connect(m_player, SIGNAL(customAudioRoleChanged(const QString &)), + this, SIGNAL(customAudioRoleChanged())); connect(m_player, SIGNAL(notifyIntervalChanged(int)), this, SIGNAL(notifyIntervalChanged())); @@ -876,6 +918,8 @@ void QDeclarativeAudio::componentComplete() m_player->setPlaybackRate(m_playbackRate); if (m_audioRole != UnknownRole) m_player->setAudioRole(QAudio::Role(m_audioRole)); + if (!m_customAudioRole.isEmpty()) + m_player->setCustomAudioRole(m_customAudioRole); if (m_notifyInterval != m_player->notifyInterval()) m_player->setNotifyInterval(m_notifyInterval); @@ -1181,12 +1225,30 @@ void QDeclarativeAudio::_q_mediaChanged(const QMediaContent &media) \li AccessibilityRole - for accessibility, such as with a screen reader. \li SonificationRole - sonification, such as with user interface sounds. \li GameRole - game audio. + \li CustomRole - The role is specified by customAudioRole. \endlist + customAudioRole is cleared when this property is set to anything other than CustomRole. + \since 5.6 */ /*! + \qmlproperty string QtMultimedia::MediaPlayer::customAudioRole + + This property holds the role of the audio stream when the backend supports audio + roles unknown to Qt. It can be set to specify the type of audio being played, + allowing the system to make appropriate decisions when it comes to volume, + routing or post-processing. + + The audio role must be set before setting the source property. + + audioRole is set to CustomRole when this property is set. + + \since 5.11 +*/ + +/*! \qmlmethod list<int> QtMultimedia::MediaPlayer::supportedAudioRoles() Returns a list of supported audio roles. diff --git a/src/imports/multimedia/qdeclarativeaudio_p.h b/src/imports/multimedia/qdeclarativeaudio_p.h index 4e2b94300..043b36042 100644 --- a/src/imports/multimedia/qdeclarativeaudio_p.h +++ b/src/imports/multimedia/qdeclarativeaudio_p.h @@ -95,6 +95,7 @@ class QDeclarativeAudio : public QObject, public QQmlParserStatus Q_PROPERTY(QObject *mediaObject READ mediaObject NOTIFY mediaObjectChanged SCRIPTABLE false DESIGNABLE false) Q_PROPERTY(Availability availability READ availability NOTIFY availabilityChanged) Q_PROPERTY(AudioRole audioRole READ audioRole WRITE setAudioRole NOTIFY audioRoleChanged REVISION 1) + Q_PROPERTY(QString customAudioRole READ customAudioRole WRITE setCustomAudioRole NOTIFY customAudioRoleChanged REVISION 3) Q_PROPERTY(int notifyInterval READ notifyInterval WRITE setNotifyInterval NOTIFY notifyIntervalChanged REVISION 2) Q_ENUMS(Status) Q_ENUMS(Error) @@ -150,6 +151,7 @@ public: UnknownRole = QAudio::UnknownRole, AccessibilityRole = QAudio::AccessibilityRole, AlarmRole = QAudio::AlarmRole, + CustomRole = QAudio::CustomRole, GameRole = QAudio::GameRole, MusicRole = QAudio::MusicRole, NotificationRole = QAudio::NotificationRole, @@ -179,6 +181,8 @@ public: AudioRole audioRole() const; void setAudioRole(AudioRole audioRole); + QString customAudioRole() const; + void setCustomAudioRole(const QString &audioRole); QUrl source() const; void setSource(const QUrl &url); @@ -256,6 +260,7 @@ Q_SIGNALS: void playbackRateChanged(); Q_REVISION(1) void audioRoleChanged(); + Q_REVISION(3) void customAudioRoleChanged(); void availabilityChanged(Availability availability); @@ -287,6 +292,7 @@ private: qreal m_vol; qreal m_playbackRate; AudioRole m_audioRole; + QString m_customAudioRole; QMediaPlayer::State m_playbackState; QMediaPlayer::MediaStatus m_status; diff --git a/src/imports/multimedia/qdeclarativecameraexposure.cpp b/src/imports/multimedia/qdeclarativecameraexposure.cpp index 92972e512..af8c6acf6 100644 --- a/src/imports/multimedia/qdeclarativecameraexposure.cpp +++ b/src/imports/multimedia/qdeclarativecameraexposure.cpp @@ -107,6 +107,14 @@ QDeclarativeCameraExposure::QDeclarativeCameraExposure(QCamera *camera, QObject connect(m_exposure, SIGNAL(shutterSpeedChanged(qreal)), this, SIGNAL(shutterSpeedChanged(qreal))); connect(m_exposure, SIGNAL(exposureCompensationChanged(qreal)), this, SIGNAL(exposureCompensationChanged(qreal))); + connect(camera, &QCamera::statusChanged, [this](QCamera::Status status) { + if (status != QCamera::UnloadedStatus && status != QCamera::LoadedStatus + && status != QCamera::ActiveStatus) { + return; + } + + emit supportedExposureModesChanged(); + }); } QDeclarativeCameraExposure::~QDeclarativeCameraExposure() @@ -369,6 +377,27 @@ void QDeclarativeCameraExposure::setExposureMode(QDeclarativeCameraExposure::Exp emit exposureModeChanged(exposureMode()); } } + +/*! + \qmlproperty list<ExposureMode> QtMultimedia::CameraExposure::supportedExposureModes + + This property holds the supported exposure modes of the camera. + + \since 5.11 + \sa exposureMode + */ +QVariantList QDeclarativeCameraExposure::supportedExposureModes() const +{ + QVariantList supportedModes; + + for (int i = int(ExposureAuto); i <= int(QCameraExposure::ExposureBarcode); ++i) { + if (m_exposure->isExposureModeSupported((QCameraExposure::ExposureMode) i)) + supportedModes.append(QVariant(i)); + } + + return supportedModes; +} + /*! \property QDeclarativeCameraExposure::spotMeteringPoint diff --git a/src/imports/multimedia/qdeclarativecameraexposure_p.h b/src/imports/multimedia/qdeclarativecameraexposure_p.h index 806cb775e..ef99b1ce9 100644 --- a/src/imports/multimedia/qdeclarativecameraexposure_p.h +++ b/src/imports/multimedia/qdeclarativecameraexposure_p.h @@ -73,6 +73,7 @@ class QDeclarativeCameraExposure : public QObject Q_PROPERTY(qreal manualIso READ manualIsoSensitivity WRITE setManualIsoSensitivity NOTIFY manualIsoSensitivityChanged) Q_PROPERTY(ExposureMode exposureMode READ exposureMode WRITE setExposureMode NOTIFY exposureModeChanged) + Q_PROPERTY(QVariantList supportedExposureModes READ supportedExposureModes NOTIFY supportedExposureModesChanged REVISION 1) Q_PROPERTY(QPointF spotMeteringPoint READ spotMeteringPoint WRITE setSpotMeteringPoint NOTIFY spotMeteringPointChanged) Q_PROPERTY(MeteringMode meteringMode READ meteringMode WRITE setMeteringMode NOTIFY meteringModeChanged) @@ -114,6 +115,7 @@ public: ~QDeclarativeCameraExposure(); ExposureMode exposureMode() const; + QVariantList supportedExposureModes() const; qreal exposureCompensation() const; int isoSensitivity() const; @@ -153,6 +155,7 @@ Q_SIGNALS: void exposureCompensationChanged(qreal); void exposureModeChanged(ExposureMode); + void supportedExposureModesChanged(); void meteringModeChanged(MeteringMode); void spotMeteringPointChanged(QPointF); diff --git a/src/imports/multimedia/qdeclarativecamerafocus.cpp b/src/imports/multimedia/qdeclarativecamerafocus.cpp index 1d1436d09..1dd216467 100644 --- a/src/imports/multimedia/qdeclarativecamerafocus.cpp +++ b/src/imports/multimedia/qdeclarativecamerafocus.cpp @@ -101,6 +101,15 @@ QDeclarativeCameraFocus::QDeclarativeCameraFocus(QCamera *camera, QObject *paren updateFocusZones(); connect(m_focus, SIGNAL(focusZonesChanged()), SLOT(updateFocusZones())); + connect(camera, &QCamera::statusChanged, [this](QCamera::Status status) { + if (status != QCamera::UnloadedStatus && status != QCamera::LoadedStatus + && status != QCamera::ActiveStatus) { + return; + } + + emit supportedFocusModesChanged(); + emit supportedFocusPointModesChanged(); + }); } QDeclarativeCameraFocus::~QDeclarativeCameraFocus() @@ -161,7 +170,29 @@ QDeclarativeCameraFocus::FocusMode QDeclarativeCameraFocus::focusMode() const } /*! + \qmlproperty list<FocusMode> CameraFocus::supportedFocusModes + + This property holds the supported focus modes of the camera. + + \since 5.11 + \sa focusMode +*/ +QVariantList QDeclarativeCameraFocus::supportedFocusModes() const +{ + QVariantList supportedModes; + + for (int i = int(FocusManual); i <= int(FocusMacro); ++i) { + if (m_focus->isFocusModeSupported((QCameraFocus::FocusMode) i)) + supportedModes.append(i); + } + + return supportedModes; +} + +#if QT_DEPRECATED_SINCE(5, 11) +/*! \qmlmethod bool QtMultimedia::CameraFocus::isFocusModeSupported(mode) const + \obsolete Returns true if the supplied \a mode is a supported focus mode, and false otherwise. @@ -170,6 +201,7 @@ bool QDeclarativeCameraFocus::isFocusModeSupported(QDeclarativeCameraFocus::Focu { return m_focus->isFocusModeSupported(QCameraFocus::FocusModes(int(mode))); } +#endif void QDeclarativeCameraFocus::setFocusMode(QDeclarativeCameraFocus::FocusMode mode) { @@ -220,6 +252,26 @@ QDeclarativeCameraFocus::FocusPointMode QDeclarativeCameraFocus::focusPointMode( return QDeclarativeCameraFocus::FocusPointMode(m_focus->focusPointMode()); } +/*! + \qmlproperty list<enumeration> CameraFocus::supportedFocusPointModes + + This property holds the supported focus point modes of the camera. + + \since 5.10 + \sa focusPointMode +*/ +QVariantList QDeclarativeCameraFocus::supportedFocusPointModes() const +{ + QVariantList supportedModes; + + for (int i = int(FocusPointAuto); i <= int(FocusPointCustom); i++) { + if (m_focus->isFocusPointModeSupported(QCameraFocus::FocusPointMode(i))) + supportedModes.append(i); + } + + return supportedModes; +} + void QDeclarativeCameraFocus::setFocusPointMode(QDeclarativeCameraFocus::FocusPointMode mode) { if (mode != focusPointMode()) { @@ -228,8 +280,10 @@ void QDeclarativeCameraFocus::setFocusPointMode(QDeclarativeCameraFocus::FocusPo } } +#if QT_DEPRECATED_SINCE(5, 10) /*! \qmlmethod bool QtMultimedia::CameraFocus::isFocusPointModeSupported(mode) const + \obsolete Returns true if the supplied \a mode is a supported focus point mode, and false otherwise. @@ -238,6 +292,8 @@ bool QDeclarativeCameraFocus::isFocusPointModeSupported(QDeclarativeCameraFocus: { return m_focus->isFocusPointModeSupported(QCameraFocus::FocusPointMode(mode)); } +#endif + /*! \property QDeclarativeCameraFocus::customFocusPoint diff --git a/src/imports/multimedia/qdeclarativecamerafocus_p.h b/src/imports/multimedia/qdeclarativecamerafocus_p.h index 16a48de53..e3a1c28b7 100644 --- a/src/imports/multimedia/qdeclarativecamerafocus_p.h +++ b/src/imports/multimedia/qdeclarativecamerafocus_p.h @@ -64,8 +64,13 @@ class QDeclarativeCamera; class QDeclarativeCameraFocus : public QObject { Q_OBJECT + Q_PROPERTY(FocusMode focusMode READ focusMode WRITE setFocusMode NOTIFY focusModeChanged) + Q_PROPERTY(QVariantList supportedFocusModes READ supportedFocusModes NOTIFY supportedFocusModesChanged REVISION 1) + Q_PROPERTY(FocusPointMode focusPointMode READ focusPointMode WRITE setFocusPointMode NOTIFY focusPointModeChanged) + Q_PROPERTY(QVariantList supportedFocusPointModes READ supportedFocusPointModes NOTIFY supportedFocusPointModesChanged REVISION 1) + Q_PROPERTY(QPointF customFocusPoint READ customFocusPoint WRITE setCustomFocusPoint NOTIFY customFocusPointChanged) Q_PROPERTY(QObject *focusZones READ focusZones CONSTANT) @@ -91,13 +96,18 @@ public: ~QDeclarativeCameraFocus(); FocusMode focusMode() const; + QVariantList supportedFocusModes() const; + FocusPointMode focusPointMode() const; - QPointF customFocusPoint() const; + QVariantList supportedFocusPointModes() const; + QPointF customFocusPoint() const; QAbstractListModel *focusZones() const; +#if QT_DEPRECATED_SINCE(5, 10) Q_INVOKABLE bool isFocusModeSupported(FocusMode mode) const; Q_INVOKABLE bool isFocusPointModeSupported(FocusPointMode mode) const; +#endif public Q_SLOTS: void setFocusMode(FocusMode); @@ -106,7 +116,9 @@ public Q_SLOTS: Q_SIGNALS: void focusModeChanged(FocusMode); + void supportedFocusModesChanged(); void focusPointModeChanged(FocusPointMode); + void supportedFocusPointModesChanged(); void customFocusPointChanged(const QPointF &); private Q_SLOTS: diff --git a/src/imports/multimedia/qdeclarativecameraimageprocessing.cpp b/src/imports/multimedia/qdeclarativecameraimageprocessing.cpp index e8a816727..8e14a7945 100644 --- a/src/imports/multimedia/qdeclarativecameraimageprocessing.cpp +++ b/src/imports/multimedia/qdeclarativecameraimageprocessing.cpp @@ -84,6 +84,18 @@ QDeclarativeCameraImageProcessing::QDeclarativeCameraImageProcessing(QCamera *ca QObject(parent) { m_imageProcessing = camera->imageProcessing(); + + connect(camera, QOverload<bool>::of(&QCamera::availabilityChanged), + this, &QDeclarativeCameraImageProcessing::availableChanged); + connect(camera, &QCamera::statusChanged, [this](QCamera::Status status) { + if (status != QCamera::UnloadedStatus && status != QCamera::LoadedStatus + && status != QCamera::ActiveStatus) { + return; + } + + emit supportedColorFiltersChanged(); + emit supportedWhiteBalanceModesChanged(); + }); } QDeclarativeCameraImageProcessing::~QDeclarativeCameraImageProcessing() @@ -272,6 +284,56 @@ QDeclarativeCameraImageProcessing::ColorFilter QDeclarativeCameraImageProcessing return ColorFilter(m_imageProcessing->colorFilter()); } +/*! + \qmlproperty bool QtMultimedia::CameraImageProcessing::isAvailable + + This property holds if image processing related settings are supported by this camera. + + \since 5.11 +*/ +bool QDeclarativeCameraImageProcessing::isAvailable() const +{ + return m_imageProcessing->isAvailable(); +} + +/*! + \qmlproperty list<ColorFilter> QtMultimedia::CameraImageProcessing::supportedColorFilters + + This property holds the supported color filters by this camera. + + \since 5.11 +*/ +QVariantList QDeclarativeCameraImageProcessing::supportedColorFilters() const +{ + QVariantList supportedFilters; + + for (int i = int(ColorFilterNone); i <= int(ColorFilterVendor); ++i) { + if (m_imageProcessing->isColorFilterSupported((QCameraImageProcessing::ColorFilter) i)) + supportedFilters.append(i); + } + + return supportedFilters; +} + +/*! + \qmlproperty list<WhiteBalanceMode> QtMultimedia::CameraImageProcessing::supportedWhiteBalanceModes + + This property holds the supported white balance modes by this camera. + + \since 5.11 +*/ +QVariantList QDeclarativeCameraImageProcessing::supportedWhiteBalanceModes() const +{ + QVariantList supportedModes; + + for (int i = int(WhiteBalanceAuto); i <= int(WhiteBalanceVendor); i++) { + if (m_imageProcessing->isWhiteBalanceModeSupported(QCameraImageProcessing::WhiteBalanceMode(i))) + supportedModes.append(i); + } + + return supportedModes; +} + void QDeclarativeCameraImageProcessing::setColorFilter(ColorFilter filter) { if (this->colorFilter() != filter) { diff --git a/src/imports/multimedia/qdeclarativecameraimageprocessing_p.h b/src/imports/multimedia/qdeclarativecameraimageprocessing_p.h index eb755d87c..390164250 100644 --- a/src/imports/multimedia/qdeclarativecameraimageprocessing_p.h +++ b/src/imports/multimedia/qdeclarativecameraimageprocessing_p.h @@ -72,6 +72,11 @@ class QDeclarativeCameraImageProcessing : public QObject Q_PROPERTY(qreal sharpeningLevel READ sharpeningLevel WRITE setSharpeningLevel NOTIFY sharpeningLevelChanged) Q_PROPERTY(qreal denoisingLevel READ denoisingLevel WRITE setDenoisingLevel NOTIFY denoisingLevelChanged) Q_PROPERTY(ColorFilter colorFilter READ colorFilter WRITE setColorFilter NOTIFY colorFilterChanged REVISION 1) + Q_PROPERTY(bool available READ isAvailable NOTIFY availableChanged REVISION 3) + Q_PROPERTY(QVariantList supportedColorFilters READ supportedColorFilters + NOTIFY supportedColorFiltersChanged REVISION 3) + Q_PROPERTY(QVariantList supportedWhiteBalanceModes READ supportedWhiteBalanceModes + NOTIFY supportedWhiteBalanceModesChanged REVISION 3) public: enum WhiteBalanceMode { WhiteBalanceAuto = QCameraImageProcessing::WhiteBalanceAuto, @@ -112,6 +117,10 @@ public: ColorFilter colorFilter() const; + bool isAvailable() const; + QVariantList supportedColorFilters() const; + QVariantList supportedWhiteBalanceModes() const; + public Q_SLOTS: void setWhiteBalanceMode(QDeclarativeCameraImageProcessing::WhiteBalanceMode mode) const; void setManualWhiteBalance(qreal colorTemp) const; @@ -136,6 +145,10 @@ Q_SIGNALS: void colorFilterChanged(); + void availableChanged(); + void supportedColorFiltersChanged(); + void supportedWhiteBalanceModesChanged(); + private: friend class QDeclarativeCamera; QDeclarativeCameraImageProcessing(QCamera *camera, QObject *parent = 0); |