/*!
* This file is part of CameraPlus.
*
- * Copyright (C) 2012 Mohammed Sameer <msameer@foolab.org>
+ * Copyright (C) 2012-2013 Mohammed Sameer <msameer@foolab.org>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
#include "qtcamviewfinderrenderer.h"
#include <QPainter>
#include <QGraphicsSceneResizeEvent>
+#include <QMatrix4x4>
class QtCamGraphicsViewfinderPrivate {
public:
return d_ptr->renderer->sinkElement();
}
-bool QtCamGraphicsViewfinder::setDevice(QtCamDevice *device) {
- if (device && d_ptr->dev == device) {
- return true;
- }
-
- if (d_ptr->dev) {
- qWarning() << "QtCamGraphicsViewfinder: viewfinder cannot be replaced.";
- return false;
- }
-
- if (!device) {
- qWarning() << "QtCamGraphicsViewfinder: viewfinder cannot be unset.";
- return false;
- }
-
- // This is to break the loop.
- d_ptr->dev = device;
- if (!device->setViewfinder(this)) {
- d_ptr->dev = 0;
- return false;
- }
-
- d_ptr->resetBackend();
-
- return true;
-}
-
void QtCamGraphicsViewfinder::paint(QPainter *painter, const QStyleOptionGraphicsItem *option,
QWidget *widget) {
Q_UNUSED(widget);
return;
}
- d_ptr->renderer->paint(painter);
+ bool needsNativePainting = d_ptr->renderer->needsNativePainting();
+
+ if (needsNativePainting) {
+ painter->beginNativePainting();
+ }
+
+ d_ptr->renderer->paint(QMatrix4x4(painter->combinedTransform()), painter->viewport());
+
+ if (needsNativePainting) {
+ painter->endNativePainting();
+ }
}
void QtCamGraphicsViewfinder::resizeEvent(QGraphicsSceneResizeEvent *event) {