#include <QtDebug>
#include <QtGUI>
#include <QPainter>
#include <QThread>
#include "webcam.h"
#include "capturingthread.h"
#include "imagebuffer.h"
#include "renderingthread.h"
{
setupUi(this);
pWaitCondition = &waitCondition;
imageBuffer = new ImageBuffer(pWaitCondition);
capturingThread = new CapturingThread(imageBuffer);
renderingThread = new RenderingThread(imageBuffer,pWaitCondition);
qRegisterMetaType<QImage>("QImage&");
connect(renderingThread, SIGNAL(renderingDone(QImage& )), this, SLOT(updatePixmap(QImage& )));
connect(startButton, SIGNAL(clicked()), this, SLOT(startThreads()));
}
WebcamWidget::~WebcamWidget()
{
delete imageBuffer;
delete capturingThread;
delete renderingThread;
}
void WebcamWidget::startThreads()
{
if (capturingThread->isRunning())//&&renderingThread->isRunning())
{
capturingThread->haltCapture();
renderingThread->haltRendering();
startButton->setText("Start");
}
else
{
capturingThread->start();
renderingThread->start();
startButton->setText("Stop");
}
}
void WebcamWidget::haltThreads()
{
capturingThread->haltCapture();
renderingThread->haltRendering();
}
{
painter.fillRect(rect(), Qt::black);
if (pixmap.isNull())
{
qDebug()<<"W: Pixmap data null.";
painter.setPen(Qt::black);
painter.drawText(rect(), Qt::AlignCenter, "No Image Feed");
return;
}
painter.drawPixmap(10,10,pixmap);
qDebug()<<"Painting successful.";
}
void WebcamWidget::updatePixmap(QImage& image)
{
qDebug()<<"WebcamWidget::updatePixmap() invoked.";
pixmap
= QPixmap::fromImage(image
);
update();
}
#include <QtDebug>
#include <QtGUI>
#include <QPainter>
#include <QThread>
#include "webcam.h"
#include "capturingthread.h"
#include "imagebuffer.h"
#include "renderingthread.h"
WebcamWidget::WebcamWidget(QWidget *parent) : QWidget(parent)
{
setupUi(this);
pWaitCondition = &waitCondition;
imageBuffer = new ImageBuffer(pWaitCondition);
capturingThread = new CapturingThread(imageBuffer);
renderingThread = new RenderingThread(imageBuffer,pWaitCondition);
qRegisterMetaType<QImage>("QImage&");
connect(renderingThread, SIGNAL(renderingDone(QImage& )), this, SLOT(updatePixmap(QImage& )));
connect(startButton, SIGNAL(clicked()), this, SLOT(startThreads()));
}
WebcamWidget::~WebcamWidget()
{
delete imageBuffer;
delete capturingThread;
delete renderingThread;
}
void WebcamWidget::startThreads()
{
if (capturingThread->isRunning())//&&renderingThread->isRunning())
{
capturingThread->haltCapture();
renderingThread->haltRendering();
startButton->setText("Start");
}
else
{
capturingThread->start();
renderingThread->start();
startButton->setText("Stop");
}
}
void WebcamWidget::haltThreads()
{
capturingThread->haltCapture();
renderingThread->haltRendering();
}
void WebcamWidget::paintEvent(QPaintEvent*)
{
QPainter painter(this);
painter.fillRect(rect(), Qt::black);
if (pixmap.isNull())
{
qDebug()<<"W: Pixmap data null.";
painter.setPen(Qt::black);
painter.drawText(rect(), Qt::AlignCenter, "No Image Feed");
return;
}
painter.drawPixmap(10,10,pixmap);
qDebug()<<"Painting successful.";
}
void WebcamWidget::updatePixmap(QImage& image)
{
qDebug()<<"WebcamWidget::updatePixmap() invoked.";
pixmap = QPixmap::fromImage(image);
update();
}
To copy to clipboard, switch view to plain text mode
Bookmarks