summaryrefslogtreecommitdiffstats
path: root/src/multimedia/camera/qcameraviewfindersettings.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/multimedia/camera/qcameraviewfindersettings.cpp')
-rw-r--r--src/multimedia/camera/qcameraviewfindersettings.cpp311
1 files changed, 311 insertions, 0 deletions
diff --git a/src/multimedia/camera/qcameraviewfindersettings.cpp b/src/multimedia/camera/qcameraviewfindersettings.cpp
new file mode 100644
index 000000000..a6290cfb7
--- /dev/null
+++ b/src/multimedia/camera/qcameraviewfindersettings.cpp
@@ -0,0 +1,311 @@
+/****************************************************************************
+**
+** Copyright (C) 2015 The Qt Company Ltd.
+** Contact: http://www.qt.io/licensing/
+**
+** This file is part of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL21$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see http://www.qt.io/terms-conditions. For further
+** information use the contact form at http://www.qt.io/contact-us.
+**
+** 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 or version 3 as published by the Free
+** Software Foundation and appearing in the file LICENSE.LGPLv21 and
+** LICENSE.LGPLv3 included in the packaging of this file. Please review the
+** following information to ensure the GNU Lesser General Public License
+** requirements will be met: https://www.gnu.org/licenses/lgpl.html and
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** As a special exception, The Qt Company gives you certain additional
+** rights. These rights are described in The Qt Company LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "qcameraviewfindersettings.h"
+
+QT_BEGIN_NAMESPACE
+
+static void qRegisterViewfinderSettingsMetaType()
+{
+ qRegisterMetaType<QCameraViewfinderSettings>();
+}
+
+Q_CONSTRUCTOR_FUNCTION(qRegisterViewfinderSettingsMetaType)
+
+
+class QCameraViewfinderSettingsPrivate : public QSharedData
+{
+public:
+ QCameraViewfinderSettingsPrivate() :
+ isNull(true),
+ minimumFrameRate(0.0),
+ maximumFrameRate(0.0),
+ pixelFormat(QVideoFrame::Format_Invalid),
+ pixelAspectRatio(1, 1)
+ {
+ }
+
+ QCameraViewfinderSettingsPrivate(const QCameraViewfinderSettingsPrivate &other):
+ QSharedData(other),
+ isNull(other.isNull),
+ resolution(other.resolution),
+ minimumFrameRate(other.minimumFrameRate),
+ maximumFrameRate(other.maximumFrameRate),
+ pixelFormat(other.pixelFormat),
+ pixelAspectRatio(other.pixelAspectRatio)
+ {
+ }
+
+ bool isNull;
+ QSize resolution;
+ qreal minimumFrameRate;
+ qreal maximumFrameRate;
+ QVideoFrame::PixelFormat pixelFormat;
+ QSize pixelAspectRatio;
+
+private:
+ QCameraViewfinderSettingsPrivate& operator=(const QCameraViewfinderSettingsPrivate &other);
+};
+
+
+/*!
+ \class QCameraViewfinderSettings
+ \since 5.5
+ \brief The QCameraViewfinderSettings class provides a set of viewfinder settings.
+
+ \inmodule QtMultimedia
+ \ingroup multimedia
+ \ingroup multimedia_camera
+
+ A viewfinder settings object is used to specify the viewfinder settings used by QCamera.
+ Viewfinder settings are selected by constructing a QCameraViewfinderSettings object,
+ setting the desired properties and then passing it to a QCamera instance using the
+ QCamera::setViewfinderSettings() function.
+
+ \snippet multimedia-snippets/camera.cpp Camera viewfinder settings
+
+ Different cameras may have different capabilities. The application should query the camera
+ capabilities before setting parameters. For example, the application should call
+ QCamera::supportedViewfinderResolutions() before calling setResolution().
+
+ \sa QCamera
+*/
+
+/*!
+ Constructs a null viewfinder settings object.
+*/
+QCameraViewfinderSettings::QCameraViewfinderSettings()
+ : d(new QCameraViewfinderSettingsPrivate)
+{
+}
+
+/*!
+ Constructs a copy of the viewfinder settings object \a other.
+*/
+QCameraViewfinderSettings::QCameraViewfinderSettings(const QCameraViewfinderSettings &other)
+ : d(other.d)
+{
+
+}
+
+/*!
+ Destroys a viewfinder settings object.
+*/
+QCameraViewfinderSettings::~QCameraViewfinderSettings()
+{
+
+}
+
+/*!
+ Assigns the value of \a other to a viewfinder settings object.
+*/
+QCameraViewfinderSettings &QCameraViewfinderSettings::operator=(const QCameraViewfinderSettings &other)
+{
+ d = other.d;
+ return *this;
+}
+
+/*!
+ Determines if \a other is of equal value to a viewfinder settings object.
+
+ Returns true if the settings objects are of equal value, and false if they
+ are not of equal value.
+*/
+bool QCameraViewfinderSettings::operator==(const QCameraViewfinderSettings &other) const
+{
+ return (d == other.d) ||
+ (d->isNull == other.d->isNull &&
+ d->resolution == other.d->resolution &&
+ qFuzzyCompare(d->minimumFrameRate, other.d->minimumFrameRate) &&
+ qFuzzyCompare(d->maximumFrameRate, other.d->maximumFrameRate) &&
+ d->pixelFormat == other.d->pixelFormat &&
+ d->pixelAspectRatio == other.d->pixelAspectRatio);
+}
+
+/*!
+ Determines if \a other is of equal value to a viewfinder settings object.
+
+ Returns true if the settings objects are not of equal value, and false if
+ they are of equal value.
+*/
+bool QCameraViewfinderSettings::operator!=(const QCameraViewfinderSettings &other) const
+{
+ return !(*this == other);
+}
+
+/*!
+ Identifies if a viewfinder settings object is uninitalized.
+
+ Returns true if the settings are null, and false if they are not.
+*/
+bool QCameraViewfinderSettings::isNull() const
+{
+ return d->isNull;
+}
+
+/*!
+ Returns the viewfinder resolution.
+*/
+QSize QCameraViewfinderSettings::resolution() const
+{
+ return d->resolution;
+}
+
+/*!
+ Sets the viewfinder \a resolution.
+
+ If the given \a resolution is empty, the backend makes an optimal choice based on the
+ supported resolutions and the other viewfinder settings.
+
+ If the camera is used to capture videos or images, the viewfinder resolution might be
+ ignored if it conflicts with the capture resolution.
+
+ \sa QVideoEncoderSettings::setResolution(), QImageEncoderSettings::setResolution(),
+ QCamera::supportedViewfinderResolutions()
+*/
+void QCameraViewfinderSettings::setResolution(const QSize &resolution)
+{
+ d->isNull = false;
+ d->resolution = resolution;
+}
+
+/*!
+ \fn QCameraViewfinderSettings::setResolution(int width, int height)
+
+ This is an overloaded function.
+
+ Sets the \a width and \a height of the viewfinder resolution.
+*/
+
+/*!
+ Returns the viewfinder minimum frame rate in frames per second.
+
+ \sa maximumFrameRate()
+*/
+qreal QCameraViewfinderSettings::minimumFrameRate() const
+{
+ return d->minimumFrameRate;
+}
+
+/*!
+ Sets the viewfinder minimum frame \a rate in frames per second.
+
+ If the minimum frame \a rate is equal to the maximum frame rate, the frame rate is fixed.
+ If not, the actual frame rate fluctuates between the minimum and the maximum.
+
+ If the given \a rate equals to \c 0, the backend makes an optimal choice based on the
+ supported frame rates and the other viewfinder settings.
+
+ \sa setMaximumFrameRate(), QCamera::supportedViewfinderFrameRateRanges()
+*/
+void QCameraViewfinderSettings::setMinimumFrameRate(qreal rate)
+{
+ d->isNull = false;
+ d->minimumFrameRate = rate;
+}
+
+/*!
+ Returns the viewfinder maximum frame rate in frames per second.
+
+ \sa minimumFrameRate()
+*/
+qreal QCameraViewfinderSettings::maximumFrameRate() const
+{
+ return d->maximumFrameRate;
+}
+
+/*!
+ Sets the viewfinder maximum frame \a rate in frames per second.
+
+ If the maximum frame \a rate is equal to the minimum frame rate, the frame rate is fixed.
+ If not, the actual frame rate fluctuates between the minimum and the maximum.
+
+ If the given \a rate equals to \c 0, the backend makes an optimal choice based on the
+ supported frame rates and the other viewfinder settings.
+
+ \sa setMinimumFrameRate(), QCamera::supportedViewfinderFrameRateRanges()
+*/
+void QCameraViewfinderSettings::setMaximumFrameRate(qreal rate)
+{
+ d->isNull = false;
+ d->maximumFrameRate = rate;
+}
+
+/*!
+ Returns the viewfinder pixel format.
+*/
+QVideoFrame::PixelFormat QCameraViewfinderSettings::pixelFormat() const
+{
+ return d->pixelFormat;
+}
+
+/*!
+ Sets the viewfinder pixel \a format.
+
+ If the given \a format is equal to QVideoFrame::Format_Invalid, the backend uses the
+ default format.
+
+ \sa QCamera::supportedViewfinderPixelFormats()
+*/
+void QCameraViewfinderSettings::setPixelFormat(QVideoFrame::PixelFormat format)
+{
+ d->isNull = false;
+ d->pixelFormat = format;
+}
+
+/*!
+ Returns the viewfinder pixel aspect ratio.
+*/
+QSize QCameraViewfinderSettings::pixelAspectRatio() const
+{
+ return d->pixelAspectRatio;
+}
+
+/*!
+ Sets the viewfinder pixel aspect \a ratio.
+*/
+void QCameraViewfinderSettings::setPixelAspectRatio(const QSize &ratio)
+{
+ d->isNull = false;
+ d->pixelAspectRatio = ratio;
+}
+
+/*!
+ \fn QCameraViewfinderSettings::setPixelAspectRatio(int horizontal, int vertical)
+
+ This is an overloaded function.
+
+ Sets the \a horizontal and \a vertical elements of the viewfinder's pixel aspect ratio.
+*/
+
+QT_END_NAMESPACE