From 70bc7a9ae96e37d0de79f21e3710862809f041e5 Mon Sep 17 00:00:00 2001 From: Mohammed Sameer Date: Sat, 8 Sep 2012 23:14:45 +0300 Subject: [PATCH] Added QML components for aperture, exposure, iso, noise reduction and flicker reduction --- imports/aperture.cpp | 50 +++++++++++++++++++++++++++++++++++ imports/aperture.h | 38 ++++++++++++++++++++++++++ imports/evcomp.h | 2 ++ imports/exposure.cpp | 50 +++++++++++++++++++++++++++++++++++ imports/exposure.h | 38 ++++++++++++++++++++++++++ imports/flickerreduction.cpp | 37 ++++++++++++++++++++++++++ imports/flickerreduction.h | 38 ++++++++++++++++++++++++++ imports/imports.pro | 6 +++-- imports/iso.cpp | 50 +++++++++++++++++++++++++++++++++++ imports/iso.h | 38 ++++++++++++++++++++++++++ imports/noisereduction.cpp | 37 ++++++++++++++++++++++++++ imports/noisereduction.h | 40 ++++++++++++++++++++++++++++ imports/plugin.cpp | 11 ++++++++ imports/zoom.cpp | 2 -- lib/qtcamaperture.cpp | 2 +- lib/qtcamexposure.cpp | 2 +- lib/qtcamflickerreduction.cpp | 2 +- lib/qtcamiso.cpp | 2 +- lib/qtcamnoisereduction.cpp | 2 +- 19 files changed, 438 insertions(+), 9 deletions(-) create mode 100644 imports/aperture.cpp create mode 100644 imports/aperture.h create mode 100644 imports/exposure.cpp create mode 100644 imports/exposure.h create mode 100644 imports/flickerreduction.cpp create mode 100644 imports/flickerreduction.h create mode 100644 imports/iso.cpp create mode 100644 imports/iso.h create mode 100644 imports/noisereduction.cpp create mode 100644 imports/noisereduction.h diff --git a/imports/aperture.cpp b/imports/aperture.cpp new file mode 100644 index 0000000..eb179bb --- /dev/null +++ b/imports/aperture.cpp @@ -0,0 +1,50 @@ +#include "aperture.h" +#include "camera.h" +#include "qtcamaperture.h" + +Aperture::Aperture(QObject *parent) : + Capability(parent), + m_aperture(0) { + +} + +Aperture::~Aperture() { + if (m_aperture) { + delete m_aperture; m_aperture = 0; + } +} + +void Aperture::deviceChanged() { + if (m_aperture) { + delete m_aperture; m_aperture = 0; + } + + if (m_cam->device()) { + m_aperture = new QtCamAperture(m_cam->device(), this); + QObject::connect(m_aperture, SIGNAL(valueChanged()), this, SIGNAL(valueChanged())); + QObject::connect(m_aperture, SIGNAL(minimumValueChanged()), this, SIGNAL(minimumChanged())); + QObject::connect(m_aperture, SIGNAL(maximumValueChanged()), this, SIGNAL(maximunmChanged())); + } + + emit valueChanged(); + emit minimumChanged(); + emit maximunmChanged(); +} + +unsigned int Aperture::value() { + return m_aperture ? m_aperture->value() : 0; +} + +void Aperture::setValue(unsigned int val) { + if (m_aperture) { + m_aperture->setValue(val); + } +} + +unsigned int Aperture::minimum() { + return m_aperture ? m_aperture->minimumValue() : 0; +} + +unsigned int Aperture::maximum() { + return m_aperture ? m_aperture->maximumValue() : 0; +} diff --git a/imports/aperture.h b/imports/aperture.h new file mode 100644 index 0000000..03a0f16 --- /dev/null +++ b/imports/aperture.h @@ -0,0 +1,38 @@ +// -*- c++ -*- + +#ifndef APERTURE_H +#define APERTURE_H + +#include "capability.h" + +class QtCamAperture; + +class Aperture : public Capability { + Q_OBJECT + + Q_PROPERTY(unsigned int value READ value WRITE setValue NOTIFY valueChanged); + Q_PROPERTY(unsigned int minimum READ minimum NOTIFY minimumChanged); + Q_PROPERTY(unsigned int maximum READ maximum NOTIFY maximunmChanged); + +public: + Aperture(QObject *parent = 0); + ~Aperture(); + + unsigned int value(); + void setValue(unsigned int val); + + unsigned int minimum(); + unsigned int maximum(); + +signals: + void valueChanged(); + void minimumChanged(); + void maximunmChanged(); + +private: + virtual void deviceChanged(); + + QtCamAperture *m_aperture; +}; + +#endif /* APERTURE_H */ diff --git a/imports/evcomp.h b/imports/evcomp.h index 24142c9..e73bc4e 100644 --- a/imports/evcomp.h +++ b/imports/evcomp.h @@ -1,3 +1,5 @@ +// -*- c++ -*- + #ifndef EV_COMP_H #define EV_COMP_H diff --git a/imports/exposure.cpp b/imports/exposure.cpp new file mode 100644 index 0000000..f3b9510 --- /dev/null +++ b/imports/exposure.cpp @@ -0,0 +1,50 @@ +#include "exposure.h" +#include "camera.h" +#include "qtcamexposure.h" + +Exposure::Exposure(QObject *parent) : + Capability(parent), + m_exposure(0) { + +} + +Exposure::~Exposure() { + if (m_exposure) { + delete m_exposure; m_exposure = 0; + } +} + +void Exposure::deviceChanged() { + if (m_exposure) { + delete m_exposure; m_exposure = 0; + } + + if (m_cam->device()) { + m_exposure = new QtCamExposure(m_cam->device(), this); + QObject::connect(m_exposure, SIGNAL(valueChanged()), this, SIGNAL(valueChanged())); + QObject::connect(m_exposure, SIGNAL(minimumValueChanged()), this, SIGNAL(minimumChanged())); + QObject::connect(m_exposure, SIGNAL(maximumValueChanged()), this, SIGNAL(maximunmChanged())); + } + + emit valueChanged(); + emit minimumChanged(); + emit maximunmChanged(); +} + +unsigned int Exposure::value() { + return m_exposure ? m_exposure->value() : 0; +} + +void Exposure::setValue(unsigned int val) { + if (m_exposure) { + m_exposure->setValue(val); + } +} + +unsigned int Exposure::minimum() { + return m_exposure ? m_exposure->minimumValue() : 0; +} + +unsigned int Exposure::maximum() { + return m_exposure ? m_exposure->maximumValue() : 0; +} diff --git a/imports/exposure.h b/imports/exposure.h new file mode 100644 index 0000000..39068ed --- /dev/null +++ b/imports/exposure.h @@ -0,0 +1,38 @@ +// -*- c++ -*- + +#ifndef EXPOSURE_H +#define EXPOSURE_H + +#include "capability.h" + +class QtCamExposure; + +class Exposure : public Capability { + Q_OBJECT + + Q_PROPERTY(unsigned int value READ value WRITE setValue NOTIFY valueChanged); + Q_PROPERTY(unsigned int minimum READ minimum NOTIFY minimumChanged); + Q_PROPERTY(unsigned int maximum READ maximum NOTIFY maximunmChanged); + +public: + Exposure(QObject *parent = 0); + ~Exposure(); + + unsigned int value(); + void setValue(unsigned int val); + + unsigned int minimum(); + unsigned int maximum(); + +signals: + void valueChanged(); + void minimumChanged(); + void maximunmChanged(); + +private: + virtual void deviceChanged(); + + QtCamExposure *m_exposure; +}; + +#endif /* EXPOSURE_H */ diff --git a/imports/flickerreduction.cpp b/imports/flickerreduction.cpp new file mode 100644 index 0000000..230d10c --- /dev/null +++ b/imports/flickerreduction.cpp @@ -0,0 +1,37 @@ +#include "flickerreduction.h" +#include "camera.h" + +FlickerReduction::FlickerReduction(QObject *parent) : + Capability(parent), + m_fr(0) { + +} + +FlickerReduction::~FlickerReduction() { + if (m_fr) { + delete m_fr; m_fr = 0; + } +} + +void FlickerReduction::deviceChanged() { + if (m_fr) { + delete m_fr; m_fr = 0; + } + + if (m_cam->device()) { + m_fr = new QtCamFlickerReduction(m_cam->device(), this); + QObject::connect(m_fr, SIGNAL(valueChanged()), this, SIGNAL(valueChanged())); + } + + emit valueChanged(); +} + +FlickerReduction::FlickerReductionMode FlickerReduction::value() { + return m_fr ? (FlickerReductionMode)m_fr->value() : FlickerReduction::Off; +} + +void FlickerReduction::setValue(const FlickerReduction::FlickerReductionMode& mode) { + if (m_fr) { + m_fr->setValue((QtCamFlickerReduction::FlickerReductionMode)mode); + } +} diff --git a/imports/flickerreduction.h b/imports/flickerreduction.h new file mode 100644 index 0000000..dc54dda --- /dev/null +++ b/imports/flickerreduction.h @@ -0,0 +1,38 @@ +// -*- c++ -*- + +#ifndef FLICKER_REDUCTION_H +#define FLICKER_REDUCTION_H + +#include "capability.h" +#include "qtcamflickerreduction.h" + +class FlickerReduction : public Capability { + Q_OBJECT + + Q_PROPERTY(FlickerReductionMode value READ value WRITE setValue NOTIFY valueChanged); + Q_ENUMS(FlickerReductionMode); + +public: + typedef enum { + Off = QtCamFlickerReduction::Off, + FiftyHz = QtCamFlickerReduction::FiftyHz, + SixtyHz = QtCamFlickerReduction::SixtyHz, + Auto = QtCamFlickerReduction::Auto + } FlickerReductionMode; + + FlickerReduction(QObject *parent = 0); + ~FlickerReduction(); + + FlickerReductionMode value(); + void setValue(const FlickerReductionMode& mode); + +signals: + void valueChanged(); + +private: + virtual void deviceChanged(); + + QtCamFlickerReduction *m_fr; +}; + +#endif /* FLICKER_REDUCTION_H */ diff --git a/imports/imports.pro b/imports/imports.pro index fd2b631..908648b 100644 --- a/imports/imports.pro +++ b/imports/imports.pro @@ -12,8 +12,10 @@ QT += declarative HEADERS += plugin.h previewprovider.h camera.h mode.h imagemode.h videomode.h \ capability.h zoom.h flash.h scene.h evcomp.h videotorch.h whitebalance.h \ - colortone.h + colortone.h exposure.h aperture.h iso.h noisereduction.h \ + flickerreduction.h SOURCES += plugin.cpp previewprovider.cpp camera.cpp mode.cpp imagemode.cpp videomode.cpp \ capability.cpp zoom.cpp flash.cpp scene.cpp evcomp.cpp videotorch.cpp whitebalance.cpp \ - colortone.cpp + colortone.cpp exposure.cpp aperture.cpp iso.cpp noisereduction.cpp \ + flickerreduction.cpp diff --git a/imports/iso.cpp b/imports/iso.cpp new file mode 100644 index 0000000..e819dec --- /dev/null +++ b/imports/iso.cpp @@ -0,0 +1,50 @@ +#include "iso.h" +#include "camera.h" +#include "qtcamiso.h" + +Iso::Iso(QObject *parent) : + Capability(parent), + m_iso(0) { + +} + +Iso::~Iso() { + if (m_iso) { + delete m_iso; m_iso = 0; + } +} + +void Iso::deviceChanged() { + if (m_iso) { + delete m_iso; m_iso = 0; + } + + if (m_cam->device()) { + m_iso = new QtCamIso(m_cam->device(), this); + QObject::connect(m_iso, SIGNAL(valueChanged()), this, SIGNAL(valueChanged())); + QObject::connect(m_iso, SIGNAL(minimumValueChanged()), this, SIGNAL(minimumChanged())); + QObject::connect(m_iso, SIGNAL(maximumValueChanged()), this, SIGNAL(maximunmChanged())); + } + + emit valueChanged(); + emit minimumChanged(); + emit maximunmChanged(); +} + +unsigned int Iso::value() { + return m_iso ? m_iso->value() : 0; +} + +void Iso::setValue(unsigned int val) { + if (m_iso) { + m_iso->setValue(val); + } +} + +unsigned int Iso::minimum() { + return m_iso ? m_iso->minimumValue() : 0; +} + +unsigned int Iso::maximum() { + return m_iso ? m_iso->maximumValue() : 0; +} diff --git a/imports/iso.h b/imports/iso.h new file mode 100644 index 0000000..ac3ef79 --- /dev/null +++ b/imports/iso.h @@ -0,0 +1,38 @@ +// -*- c++ -*- + +#ifndef ISO_H +#define ISO_H + +#include "capability.h" + +class QtCamIso; + +class Iso : public Capability { + Q_OBJECT + + Q_PROPERTY(unsigned int value READ value WRITE setValue NOTIFY valueChanged); + Q_PROPERTY(unsigned int minimum READ minimum NOTIFY minimumChanged); + Q_PROPERTY(unsigned int maximum READ maximum NOTIFY maximunmChanged); + +public: + Iso(QObject *parent = 0); + ~Iso(); + + unsigned int value(); + void setValue(unsigned int val); + + unsigned int minimum(); + unsigned int maximum(); + +signals: + void valueChanged(); + void minimumChanged(); + void maximunmChanged(); + +private: + virtual void deviceChanged(); + + QtCamIso *m_iso; +}; + +#endif /* ISO_H */ diff --git a/imports/noisereduction.cpp b/imports/noisereduction.cpp new file mode 100644 index 0000000..702c1a1 --- /dev/null +++ b/imports/noisereduction.cpp @@ -0,0 +1,37 @@ +#include "noisereduction.h" +#include "camera.h" + +NoiseReduction::NoiseReduction(QObject *parent) : + Capability(parent), + m_nr(0) { + +} + +NoiseReduction::~NoiseReduction() { + if (m_nr) { + delete m_nr; m_nr = 0; + } +} + +void NoiseReduction::deviceChanged() { + if (m_nr) { + delete m_nr; m_nr = 0; + } + + if (m_cam->device()) { + m_nr = new QtCamNoiseReduction(m_cam->device(), this); + QObject::connect(m_nr, SIGNAL(valueChanged()), this, SIGNAL(valueChanged())); + } + + emit valueChanged(); +} + +NoiseReduction::NoiseReductionMode NoiseReduction::value() { + return m_nr ? (NoiseReductionMode)m_nr->value() : NoiseReduction::None; +} + +void NoiseReduction::setValue(const NoiseReduction::NoiseReductionMode& mode) { + if (m_nr) { + m_nr->setValue((QtCamNoiseReduction::NoiseReductionMode)mode); + } +} diff --git a/imports/noisereduction.h b/imports/noisereduction.h new file mode 100644 index 0000000..228ef3f --- /dev/null +++ b/imports/noisereduction.h @@ -0,0 +1,40 @@ +// -*- c++ -*- + +#ifndef NOISE_REDUCTION_H +#define NOISE_REDUCTION_H + +#include "capability.h" +#include "qtcamnoisereduction.h" + +class NoiseReduction : public Capability { + Q_OBJECT + + Q_PROPERTY(NoiseReductionMode value READ value WRITE setValue NOTIFY valueChanged); + Q_ENUMS(NoiseReductionMode); + +public: + typedef enum { + None = QtCamNoiseReduction::None, + Bayer = QtCamNoiseReduction::Bayer, + Ycc = QtCamNoiseReduction::Ycc, + Temporal = QtCamNoiseReduction::Temporal, + Fixed = QtCamNoiseReduction::Fixed, + Extra = QtCamNoiseReduction::Extra + } NoiseReductionMode; + + NoiseReduction(QObject *parent = 0); + ~NoiseReduction(); + + NoiseReductionMode value(); + void setValue(const NoiseReductionMode& mode); + +signals: + void valueChanged(); + +private: + virtual void deviceChanged(); + + QtCamNoiseReduction *m_nr; +}; + +#endif /* NOISE_REDUCTION_H */ diff --git a/imports/plugin.cpp b/imports/plugin.cpp index dccd96b..36b90f8 100644 --- a/imports/plugin.cpp +++ b/imports/plugin.cpp @@ -11,6 +11,11 @@ #include "videotorch.h" #include "whitebalance.h" #include "colortone.h" +#include "exposure.h" +#include "aperture.h" +#include "iso.h" +#include "noisereduction.h" +#include "flickerreduction.h" #include @@ -29,6 +34,12 @@ void Plugin::registerTypes(QDeclarativeEngine *engine) { qmlRegisterType(URI, MAJOR, MINOR, "VideoTorch"); qmlRegisterType(URI, MAJOR, MINOR, "WhiteBalance"); qmlRegisterType(URI, MAJOR, MINOR, "ColorTone"); + qmlRegisterType(URI, MAJOR, MINOR, "Exposure"); + qmlRegisterType(URI, MAJOR, MINOR, "Aperture"); + qmlRegisterType(URI, MAJOR, MINOR, "Iso"); + qmlRegisterType(URI, MAJOR, MINOR, "NoiseReduction"); + qmlRegisterType(URI, MAJOR, MINOR, "FlickerReduction"); + qmlRegisterType(); qmlRegisterType(); diff --git a/imports/zoom.cpp b/imports/zoom.cpp index 30882fd..83fef92 100644 --- a/imports/zoom.cpp +++ b/imports/zoom.cpp @@ -48,5 +48,3 @@ qreal Zoom::minimum() { qreal Zoom::maximum() { return m_zoom ? m_zoom->maximumValue() : 1.0; } - - diff --git a/lib/qtcamaperture.cpp b/lib/qtcamaperture.cpp index 47d5cfe..7806f4e 100644 --- a/lib/qtcamaperture.cpp +++ b/lib/qtcamaperture.cpp @@ -8,7 +8,7 @@ QtCamAperture::QtCamAperture(QtCamDevice *dev, QObject *parent) : QtCamCapability(new QtCamCapabilityPrivate(dev, QtCamCapability::Aperture, "aperture"), parent) { - // TODO: QML + } QtCamAperture::~QtCamAperture() { diff --git a/lib/qtcamexposure.cpp b/lib/qtcamexposure.cpp index 5b67b63..3bbb1b0 100644 --- a/lib/qtcamexposure.cpp +++ b/lib/qtcamexposure.cpp @@ -8,7 +8,7 @@ QtCamExposure::QtCamExposure(QtCamDevice *dev, QObject *parent) : QtCamCapability(new QtCamCapabilityPrivate(dev, QtCamCapability::Exposure, "exposure"), parent) { - // TODO: QML + } QtCamExposure::~QtCamExposure() { diff --git a/lib/qtcamflickerreduction.cpp b/lib/qtcamflickerreduction.cpp index cc8c200..6dc7614 100644 --- a/lib/qtcamflickerreduction.cpp +++ b/lib/qtcamflickerreduction.cpp @@ -4,7 +4,7 @@ QtCamFlickerReduction::QtCamFlickerReduction(QtCamDevice *dev, QObject *parent) : QtCamCapability(new QtCamCapabilityPrivate(dev, QtCamCapability::FlickerReduction, "flicker-mode"), parent) { - // TODO: QML + } QtCamFlickerReduction::~QtCamFlickerReduction() { diff --git a/lib/qtcamiso.cpp b/lib/qtcamiso.cpp index 7e028f9..a167f7c 100644 --- a/lib/qtcamiso.cpp +++ b/lib/qtcamiso.cpp @@ -8,7 +8,7 @@ QtCamIso::QtCamIso(QtCamDevice *dev, QObject *parent) : QtCamCapability(new QtCamCapabilityPrivate(dev, QtCamCapability::IsoSpeed, "iso-speed"), parent) { - // TODO: QML + } QtCamIso::~QtCamIso() { diff --git a/lib/qtcamnoisereduction.cpp b/lib/qtcamnoisereduction.cpp index 1431ae8..c65d248 100644 --- a/lib/qtcamnoisereduction.cpp +++ b/lib/qtcamnoisereduction.cpp @@ -4,7 +4,7 @@ QtCamNoiseReduction::QtCamNoiseReduction(QtCamDevice *dev, QObject *parent) : QtCamCapability(new QtCamCapabilityPrivate(dev, QtCamCapability::NoiseReduction, "noise-reduction"), parent) { - // TODO: QML + } QtCamNoiseReduction::~QtCamNoiseReduction() { -- 2.25.1