[camerasetup] setup uis for single or dual camera use
This commit is contained in:
parent
b322bfdb47
commit
2ed9b22123
93
camerasetup.cpp
Normal file
93
camerasetup.cpp
Normal file
@ -0,0 +1,93 @@
|
||||
#include <QVBoxLayout>
|
||||
#include "camerasetup.h"
|
||||
|
||||
|
||||
SingleCamera::SingleCamera (QWidget *parent) :
|
||||
CameraSetup(parent),
|
||||
camera1Preview(nullptr) {
|
||||
this->setLayout(new QVBoxLayout(this));
|
||||
camera1Preview = new CameraPreview();
|
||||
this->layout()->addWidget(camera1Preview);
|
||||
}
|
||||
|
||||
CameraLayout SingleCamera::cameraLayout(){
|
||||
CameraLayout l;
|
||||
qDebug() << "Request layout";
|
||||
l.mode = CameraMode::single;
|
||||
l.layout = Layout::horizontal;
|
||||
l.devices.push_back(camera1Preview->device().toStdString());
|
||||
l.rois.push_back(camera1Preview->getRoi());
|
||||
return l;
|
||||
}
|
||||
|
||||
SingleCamera::~SingleCamera(){
|
||||
if (camera1Preview != nullptr) {
|
||||
delete camera1Preview;
|
||||
camera1Preview = nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
DualCamera::DualCamera (QWidget *parent) :
|
||||
CameraSetup(parent),
|
||||
camera1Preview(nullptr),
|
||||
camera2Preview(nullptr),
|
||||
primary_device("") {
|
||||
qDebug() << "DualCamera View ... ";
|
||||
this->setLayout(new QHBoxLayout(this));
|
||||
camera1Preview = new CameraPreview();
|
||||
camera2Preview = new CameraPreview();
|
||||
this->layout()->addWidget(camera1Preview);
|
||||
this->layout()->addWidget(camera2Preview);
|
||||
connect(camera1Preview, SIGNAL(roiUpdated(int, int, int, int)), this, SLOT(updateROI1(int, int, int, int)));
|
||||
connect(camera2Preview, SIGNAL(roiUpdated(int, int, int, int)), SLOT(updateROI2(int, int, int, int)));
|
||||
qDebug() << "... created";
|
||||
}
|
||||
|
||||
|
||||
void DualCamera::updateROI1(int x, int y, int w, int h) {
|
||||
camera2Preview->setSize(w, h);
|
||||
}
|
||||
|
||||
void DualCamera::updateROI2(int x, int y, int w, int h) {
|
||||
camera1Preview->setSize(w, h);
|
||||
}
|
||||
|
||||
void DualCamera::switchArrangement() {
|
||||
qDebug() << "switch camera arrangement";
|
||||
QHBoxLayout *hbox = (QHBoxLayout*)this->layout();
|
||||
if (hbox->direction() == QBoxLayout::LeftToRight) {
|
||||
hbox->setDirection(QBoxLayout::RightToLeft);
|
||||
primary_device = camera2Preview->device();
|
||||
} else {
|
||||
hbox->setDirection(QBoxLayout::LeftToRight);
|
||||
primary_device = camera1Preview->device();
|
||||
}
|
||||
}
|
||||
|
||||
CameraLayout DualCamera::cameraLayout() {
|
||||
CameraLayout l;
|
||||
qDebug() << "Request layout";
|
||||
l.mode = CameraMode::dual;
|
||||
l.layout = Layout::horizontal;
|
||||
if (camera1Preview->device() == primary_device) {
|
||||
l.rois.push_back(camera1Preview->getRoi());
|
||||
l.rois.push_back(camera2Preview->getRoi());
|
||||
} else {
|
||||
l.rois.push_back(camera2Preview->getRoi());
|
||||
l.rois.push_back(camera1Preview->getRoi());
|
||||
}
|
||||
return l;
|
||||
}
|
||||
|
||||
|
||||
DualCamera::~DualCamera(){
|
||||
if (camera1Preview != nullptr) {
|
||||
delete camera1Preview;
|
||||
camera1Preview = nullptr;
|
||||
}
|
||||
if (camera2Preview != nullptr) {
|
||||
delete camera2Preview;
|
||||
camera2Preview = nullptr;
|
||||
}
|
||||
}
|
94
camerasetup.h
Normal file
94
camerasetup.h
Normal file
@ -0,0 +1,94 @@
|
||||
#ifndef CAMERASETUP_H
|
||||
#define CAMERASETUP_H
|
||||
|
||||
#include <QWidget>
|
||||
#include "camerapreview.h"
|
||||
#include "mylogger.h"
|
||||
|
||||
|
||||
namespace Ui {
|
||||
class SingleCamera;
|
||||
}
|
||||
|
||||
|
||||
class CameraSetup : public QWidget {
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
CameraSetup(QWidget *parent=0): QWidget(parent){};
|
||||
// virtual ROI getRoi() = 0;
|
||||
virtual CameraLayout cameraLayout() = 0;
|
||||
virtual void setPrimaryCamera(QString &device) = 0;
|
||||
virtual void setSecondaryCamera(QString &device) = 0;
|
||||
virtual void switchArrangement() = 0;
|
||||
};
|
||||
|
||||
|
||||
class SingleCamera : public CameraSetup {
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit SingleCamera(QWidget *parent = 0);
|
||||
~SingleCamera();
|
||||
|
||||
|
||||
void setPrimaryCamera(QString &devive) {
|
||||
qDebug() << "Update primary camera";
|
||||
camera1Preview->setCamera(devive);
|
||||
}
|
||||
|
||||
|
||||
void setSecondaryCamera(QString &devive) {
|
||||
qDebug()<< "Update secondary camera not supported on SingleCamera";
|
||||
}
|
||||
|
||||
CameraLayout cameraLayout();
|
||||
|
||||
void switchArrangement() {
|
||||
qDebug() << "switch orientation does nothing on SingleCamera";
|
||||
}
|
||||
|
||||
private:
|
||||
CameraPreview *camera1Preview;
|
||||
};
|
||||
|
||||
|
||||
class DualCamera : public CameraSetup {
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit DualCamera(QWidget *parent = 0);
|
||||
~DualCamera();
|
||||
|
||||
|
||||
void setPrimaryCamera(QString &device) {
|
||||
qDebug() << "Update primary camera";
|
||||
if (camera1Preview != nullptr) {
|
||||
camera1Preview->setCamera(device);
|
||||
primary_device = device;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void setSecondaryCamera(QString &device) {
|
||||
qDebug()<< "Update secondary camera";
|
||||
if (camera2Preview != nullptr) {
|
||||
camera2Preview->setCamera(device);
|
||||
}
|
||||
}
|
||||
|
||||
CameraLayout cameraLayout();
|
||||
void switchArrangement();
|
||||
|
||||
|
||||
public slots:
|
||||
void updateROI1(int x, int y, int width, int height);
|
||||
void updateROI2(int x, int y, int width, int height);
|
||||
|
||||
private:
|
||||
QString primary_device;
|
||||
CameraPreview *camera1Preview;
|
||||
CameraPreview *camera2Preview;
|
||||
};
|
||||
|
||||
#endif //CAMERASETUP_H
|
Loading…
Reference in New Issue
Block a user