Пример #1
0
static void
camera_set_property(GObject     * object,
		    guint         prop_id,
		    GValue const* value,
		    GParamSpec  * pspec)
{
	switch(prop_id) {
	case PROP_FOCUS:
		g_warning("Implement 'focus' for CcCamera");
		break;
	case PROP_MODE:
		g_warning("Implement 'zoom-mode' for CcCamera");
		break;
	case PROP_ROOT:
		cc_camera_set_root(CC_CAMERA(object), g_value_get_object(value));
		break;
	case PROP_SCROLL:
		g_warning("Implement 'scrolled-region' for CcCamera");
		break;
	case PROP_ZOOM:
		camera_set_zoom(CC_CAMERA(object), g_value_get_double(value));
		break;
	default:
		G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
		break;
	}
}
    if (result != CAMERA_EOK)
        return 1.0;

    return zoomFactor;
}

void BbCameraZoomControl::zoomTo(qreal optical, qreal digital)
{
    Q_UNUSED(optical)

    if (m_session->status() != QCamera::ActiveStatus)
        return;

    const qreal actualZoom = qBound(m_minimumZoomFactor, digital, m_maximumZoomFactor);

    const camera_error_t result = camera_set_zoom(m_session->handle(), actualZoom, false);

    if (result != CAMERA_EOK) {
        qWarning() << "Unable to change zoom factor:" << result;
        return;
    }

    if (m_requestedZoomFactor != digital) {
        m_requestedZoomFactor = digital;
        emit requestedDigitalZoomChanged(m_requestedZoomFactor);
    }

    emit currentDigitalZoomChanged(actualZoom);
}

void BbCameraZoomControl::statusChanged(QCamera::Status status)