164 lines
4.0 KiB
C++
164 lines
4.0 KiB
C++
|
|
#include "dmlabel.h"
|
|
/*
|
|
#include "view/epc_label.h"
|
|
#include "view/dialog_ok.h"
|
|
#include "view/dialog_yes_no.h"
|
|
#include <QCursor>
|
|
#include <QDebug>
|
|
#include <QFileDialog>
|
|
#include <QImage>
|
|
#include <QPixmap>
|
|
#include <QString>
|
|
|
|
/// \addtogroup EpcLabel
|
|
/// @{
|
|
|
|
|
|
DMLabel::DMLabel(QWidget *parent) :
|
|
QLabel(parent),
|
|
rubberBand(QRubberBand::Rectangle, this) {
|
|
cursorCrosshair = QCursor(QPixmap(":/cursors/cursor_crosshair.png"));
|
|
selectROI = false;
|
|
this->setMouseTracking(true);
|
|
this->setMinimumSize(1,1);
|
|
selectEnable = true;
|
|
partType = PartType::EPC660;
|
|
ctrlKeyFlag = false;
|
|
altKeyFlag = false;
|
|
shiftKeyFlag = false;
|
|
}
|
|
|
|
DMLabel::~DMLabel() {
|
|
qDebug() << "-----EpcLabel destroying";
|
|
qDebug() << "-----EpcLabel destroyed";
|
|
}
|
|
|
|
void DMLabel::mousePressEvent ( QMouseEvent * event ) {
|
|
if(event->modifiers() == Qt::ControlModifier){ //for Pixel Info
|
|
ctrlKeyFlag = true;
|
|
altKeyFlag = false;
|
|
|
|
}else if(event->modifiers() == Qt::AltModifier){ //for Time scope
|
|
altKeyFlag = true;
|
|
ctrlKeyFlag = false;
|
|
|
|
}else if(event->modifiers() == Qt::ShiftModifier){ //for ROI
|
|
if (partType == PartType::EPC635 || partType == PartType::EPC503){
|
|
return;
|
|
}
|
|
selectMarker(false);
|
|
shiftKeyFlag = true;
|
|
selectROI = true;
|
|
rubberStartX = event->x();
|
|
rubberStartY = event->y();
|
|
|
|
if (!(partType == PartType::EPC635 || partType == PartType::EPC503)){
|
|
rubberStopY = height() - rubberStartY;
|
|
}
|
|
} else {
|
|
ctrlKeyFlag = false;
|
|
altKeyFlag = false;
|
|
emit selectMarker(false);
|
|
}
|
|
}
|
|
|
|
|
|
void DMLabel::mouseMoveEvent ( QMouseEvent * event ) {
|
|
|
|
if (shiftKeyFlag && selectROI && selectEnable){
|
|
rubberStopX = event->x();
|
|
if (rubberStartX > rubberStopX){
|
|
x1 = rubberStopX;
|
|
x2 = rubberStartX;
|
|
}else{
|
|
x1 = rubberStartX;
|
|
x2 = rubberStopX;
|
|
}
|
|
|
|
if (partType == PartType::EPC635 || partType == PartType::EPC503){
|
|
return;
|
|
} else {
|
|
if (rubberStartY > rubberStopY){
|
|
y1 = rubberStopY;
|
|
y2 = rubberStartY;
|
|
}
|
|
else{
|
|
y1 = rubberStartY;
|
|
y2 = rubberStopY;
|
|
}
|
|
}
|
|
|
|
if(x1 < 0) x1 = 0;
|
|
if(x2 > width()) x2 = width();
|
|
if(y1 < 0) y1 = 0;
|
|
if(y2 > height()) y2 = height();
|
|
|
|
rubberBand.setGeometry(x1, y1, x2 - x1, y2 - y1);
|
|
rubberBand.show();
|
|
|
|
}
|
|
|
|
if(ctrlKeyFlag || altKeyFlag){
|
|
return;
|
|
}
|
|
|
|
emit mouseHover(event->x(), event->y());
|
|
}
|
|
|
|
|
|
void DMLabel::mouseReleaseEvent ( QMouseEvent * event ) {
|
|
|
|
if(event->button() == Qt::RightButton){
|
|
QPixmap pixmap= *this->pixmap();
|
|
QString filename = QFileDialog::getSaveFileName(this,"save image as", "", ".png");
|
|
if (!filename.isNull()){
|
|
pixmap.save(filename);
|
|
}
|
|
}else if(event->button() == Qt::LeftButton && selectEnable && shiftKeyFlag){
|
|
|
|
if (partType == PartType::EPC635 || partType == PartType::EPC503){
|
|
return;
|
|
}
|
|
shiftKeyFlag = false;
|
|
ctrlKeyFlag = false;
|
|
altKeyFlag = false;
|
|
selectROI = false;
|
|
rubberBand.hide();
|
|
selectMarker(false);
|
|
emit regionSelected(x1, x2, y1, y2);
|
|
}
|
|
|
|
if(altKeyFlag){
|
|
emit mouseHover(event->x(), event->y());
|
|
emit selectMarker(true);
|
|
emit checkTimeScope(true);
|
|
} else if(ctrlKeyFlag){
|
|
emit mouseHover(event->x(), event->y());
|
|
emit selectMarker(true);
|
|
}
|
|
}
|
|
|
|
void DMLabel::mouseDoubleClickEvent ( QMouseEvent * event ){
|
|
Q_UNUSED(event)
|
|
emit mouseDoubleClick();
|
|
}
|
|
|
|
void DMLabel::enterEvent ( QEvent* ) {
|
|
setCursor(EpcLabel::cursorCrosshair);
|
|
}
|
|
|
|
void DMLabel::leaveEvent ( QEvent*) {
|
|
}
|
|
|
|
void DMLabel::enableSelect(bool state){
|
|
selectEnable = state;
|
|
selectROI = false;
|
|
}
|
|
|
|
void DMLabel::setType(PartType value)
|
|
{
|
|
partType = value;
|
|
}*/
|
|
|