2 #include "qtcamcapability_p.h"
3 #include "qtcamdevice_p.h"
5 class QtCamZoomPrivate : public QtCamCapabilityPrivate {
7 QtCamZoomPrivate(QtCamDevice *d, QtCamZoom *q) :
8 QtCamCapabilityPrivate(d, QtCamCapability::Zoom), q_ptr(q), binHandler(0) {
14 g_signal_handler_disconnect(bin, binHandler);
20 binHandler = g_signal_connect(bin, "notify", G_CALLBACK(camera_bin_notify), this);
24 static void camera_bin_notify(GObject *gobject, GParamSpec *pspec, QtCamZoomPrivate *d) {
27 QLatin1String name(pspec->name);
28 if (name == QLatin1String("max-zoom")) {
29 QMetaObject::invokeMethod(d->q_ptr, "maximumValueChanged", Qt::QueuedConnection);
31 else if (name == QLatin1String("zoom")) {
32 QMetaObject::invokeMethod(d->q_ptr, "valueChanged", Qt::QueuedConnection);
43 g_object_get(bin, "zoom", &v, NULL);
55 g_object_get(bin, "max-zoom", &v, NULL);
60 bool setZoom(qreal zoom) {
65 if (qFuzzyCompare(QtCamZoomPrivate::zoom(), zoom)) {
69 g_object_set(bin, "zoom", zoom, NULL);
78 QtCamZoom::QtCamZoom(QtCamDevice *dev, QObject *parent) :
79 QtCamCapability(new QtCamZoomPrivate(dev, this), parent) {
81 ((QtCamZoomPrivate *) d_ptr)->init();
84 QtCamZoom::~QtCamZoom() {
88 qreal QtCamZoom::value() {
89 return ((QtCamZoomPrivate *) d_ptr)->zoom();
92 bool QtCamZoom::setValue(qreal zoom) {
93 if (((QtCamZoomPrivate *) d_ptr)->setZoom(zoom)) {
101 qreal QtCamZoom::minimumValue() {
105 qreal QtCamZoom::maximumValue() {
106 return ((QtCamZoomPrivate *) d_ptr)->maxZoom();