Use MeasureFactory to refactor viewcontainerwidget
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
#include "QDicomViewer.h"
|
||||
#include "QDicomViewer.h"
|
||||
#include "global/include_all.h"
|
||||
#include "base/SeriesImageSet.h"
|
||||
#include "view/subview/gridpopwidget.h"
|
||||
@@ -329,54 +329,9 @@ void QDicomViewer::SetupAnnoTool(QToolButton* annoBtn)
|
||||
//TODO:考虑从这个类中移除,采用factory模式解耦合
|
||||
void QDicomViewer::executeActiveMeasure(ViewContainerWidget* Container, AnnotationActorType annType)
|
||||
{
|
||||
QList<DicomImageView*> viewers = Container->getViewList();
|
||||
DicomImageView* curV = ui->viewContainer->getCurrentView();
|
||||
switch (annType)
|
||||
{
|
||||
case AnnotationActorType::RulerAnn:
|
||||
std::for_each(viewers.begin(), viewers.end(), [=](DicomImageView* v) {
|
||||
RulerAnnotationActor* ann = RulerAnnotationActor::New();
|
||||
v->ActiveMeasure(ann);
|
||||
v->Render();
|
||||
});
|
||||
break;
|
||||
case AnnotationActorType::AngleAnn:
|
||||
std::for_each(viewers.begin(), viewers.end(), [=](DicomImageView* v) {
|
||||
AngleAnnotationActor* ann = AngleAnnotationActor::New();
|
||||
v->ActiveMeasure(ann);
|
||||
});
|
||||
break;
|
||||
case AnnotationActorType::ClosedPolygonAnn:
|
||||
std::for_each(viewers.begin(), viewers.end(), [=](DicomImageView* v) {
|
||||
OpenPolyAnnotationActor* ann = OpenPolyAnnotationActor::New();
|
||||
ann->SetClosed(1);
|
||||
v->ActiveMeasure(ann);
|
||||
});
|
||||
break;
|
||||
case AnnotationActorType::OpenPolygonAnn:
|
||||
std::for_each(viewers.begin(), viewers.end(), [=](DicomImageView* v) {
|
||||
OpenPolyAnnotationActor* ann = OpenPolyAnnotationActor::New();
|
||||
v->ActiveMeasure(ann);
|
||||
});
|
||||
break;
|
||||
case AnnotationActorType::ArrowAnn:
|
||||
std::for_each(viewers.begin(), viewers.end(), [=](DicomImageView* v) {
|
||||
ArrowAnnotationActor* ann = ArrowAnnotationActor::New();
|
||||
v->ActiveMeasure(ann);
|
||||
});
|
||||
break;
|
||||
case AnnotationActorType::EllipseAnn:
|
||||
std::for_each(viewers.begin(), viewers.end(), [=](DicomImageView* v) {
|
||||
EllipseAnnotationActor* ann = EllipseAnnotationActor::New();
|
||||
v->ActiveMeasure(ann);
|
||||
});
|
||||
break;
|
||||
case AnnotationActorType::TextAnn:
|
||||
std::for_each(viewers.begin(), viewers.end(), [=](DicomImageView* v) {
|
||||
TextAnnotationActor* ann = TextAnnotationActor::New();
|
||||
v->ActiveMeasure(ann);
|
||||
});
|
||||
break;
|
||||
case AnnotationActorType::DeleteSelectedAnn:
|
||||
if (curV != nullptr)
|
||||
{
|
||||
@@ -396,10 +351,7 @@ void QDicomViewer::executeActiveMeasure(ViewContainerWidget* Container, Annotati
|
||||
}
|
||||
break;
|
||||
default:
|
||||
std::for_each(viewers.begin(), viewers.end(), [=](DicomImageView* v) {
|
||||
RulerAnnotationActor* ann = RulerAnnotationActor::New();
|
||||
v->ActiveMeasure(ann);
|
||||
});
|
||||
ui->viewContainer->activeMeasure();
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -420,92 +372,54 @@ void QDicomViewer::SetupMeasureTool(QToolButton* measureBtn)
|
||||
measureBtn->setChecked(true);
|
||||
QPixmap map(":/InfiniteViewer/Icon/distance.png");
|
||||
measureBtn->setIcon(QIcon(map));
|
||||
m_cur_measure = AnnotationActorType::RulerAnn;
|
||||
|
||||
QList<DicomImageView*> viewers = ui->viewContainer->getViewList();
|
||||
std::for_each(viewers.begin(), viewers.end(), [=](DicomImageView* v) {
|
||||
RulerAnnotationActor* ann = RulerAnnotationActor::New();
|
||||
v->ActiveMeasure(ann);
|
||||
});
|
||||
});
|
||||
MeasureHelper::setMeasureType(AnnotationActorType::RulerAnn);
|
||||
ui->viewContainer->activeMeasure();
|
||||
});
|
||||
|
||||
m->addAction(tr("Angle"), this, [=] {
|
||||
measureBtn->setChecked(true);
|
||||
QPixmap map(":/InfiniteViewer/Icon/angle.png");
|
||||
measureBtn->setIcon(QIcon(map));
|
||||
m_cur_measure = AnnotationActorType::AngleAnn;
|
||||
|
||||
QList<DicomImageView*> viewers = ui->viewContainer->getViewList();
|
||||
std::for_each(viewers.begin(), viewers.end(), [=](DicomImageView* v) {
|
||||
AngleAnnotationActor* ann = AngleAnnotationActor::New();
|
||||
v->ActiveMeasure(ann);
|
||||
});
|
||||
MeasureHelper::setMeasureType(AnnotationActorType::AngleAnn);
|
||||
ui->viewContainer->activeMeasure();
|
||||
});
|
||||
|
||||
m->addAction(tr("Closed polygon"), this, [=] {
|
||||
measureBtn->setChecked(true);
|
||||
QPixmap map(":/InfiniteViewer/Icon/polygon.png");
|
||||
measureBtn->setIcon(QIcon(map));
|
||||
m_cur_measure = AnnotationActorType::ClosedPolygonAnn;
|
||||
|
||||
QList<DicomImageView*> viewers = ui->viewContainer->getViewList();
|
||||
std::for_each(viewers.begin(), viewers.end(), [=](DicomImageView* v) {
|
||||
OpenPolyAnnotationActor* ann = OpenPolyAnnotationActor::New();
|
||||
ann->SetClosed(1);
|
||||
v->ActiveMeasure(ann);
|
||||
});
|
||||
MeasureHelper::setMeasureType(AnnotationActorType::ClosedPolygonAnn);
|
||||
ui->viewContainer->activeMeasure();
|
||||
});
|
||||
|
||||
m->addAction(tr("Open polygon"), this, [=] {
|
||||
measureBtn->setChecked(true);
|
||||
QPixmap map(":/InfiniteViewer/Icon/polyline.png");
|
||||
measureBtn->setIcon(QIcon(map));
|
||||
m_cur_measure = AnnotationActorType::OpenPolygonAnn;
|
||||
|
||||
QList<DicomImageView*> viewers = ui->viewContainer->getViewList();
|
||||
std::for_each(viewers.begin(), viewers.end(), [=](DicomImageView* v) {
|
||||
OpenPolyAnnotationActor* ann = OpenPolyAnnotationActor::New();
|
||||
v->ActiveMeasure(ann);
|
||||
});
|
||||
MeasureHelper::setMeasureType(AnnotationActorType::OpenPolygonAnn);
|
||||
ui->viewContainer->activeMeasure();
|
||||
});
|
||||
|
||||
|
||||
m->addAction(tr("Arrow"), this, [=] {
|
||||
measureBtn->setChecked(true);
|
||||
QPixmap map(":/InfiniteViewer/Icon/arrow.png");
|
||||
measureBtn->setIcon(QIcon(map));
|
||||
m_cur_measure = AnnotationActorType::ArrowAnn;
|
||||
|
||||
QList<DicomImageView*> viewers = ui->viewContainer->getViewList();
|
||||
std::for_each(viewers.begin(), viewers.end(), [=](DicomImageView* v) {
|
||||
ArrowAnnotationActor* ann = ArrowAnnotationActor::New();
|
||||
v->ActiveMeasure(ann);
|
||||
});
|
||||
MeasureHelper::setMeasureType(AnnotationActorType::ArrowAnn);
|
||||
ui->viewContainer->activeMeasure();
|
||||
});
|
||||
|
||||
|
||||
m->addAction(tr("Ellipse"), this, [=] {
|
||||
QPixmap map(":/InfiniteViewer/Icon/ellipse.png");
|
||||
measureBtn->setIcon(QIcon(map));
|
||||
m_cur_measure = AnnotationActorType::EllipseAnn;
|
||||
|
||||
QList<DicomImageView*> viewers = ui->viewContainer->getViewList();
|
||||
std::for_each(viewers.begin(), viewers.end(), [=](DicomImageView* v) {
|
||||
EllipseAnnotationActor* ann = EllipseAnnotationActor::New();
|
||||
v->ActiveMeasure(ann);
|
||||
});
|
||||
MeasureHelper::setMeasureType(AnnotationActorType::EllipseAnn);
|
||||
ui->viewContainer->activeMeasure();
|
||||
});
|
||||
m->addAction(tr("Text"), this, [=] {
|
||||
measureBtn->setChecked(true);
|
||||
QPixmap map(":/InfiniteViewer/Icon/text.png");
|
||||
measureBtn->setIcon(QIcon(map));
|
||||
m_cur_measure = AnnotationActorType::TextAnn;
|
||||
|
||||
QList<DicomImageView*> viewers = ui->viewContainer->getViewList();
|
||||
std::for_each(viewers.begin(), viewers.end(), [=](DicomImageView* v) {
|
||||
TextAnnotationActor* ann = TextAnnotationActor::New();
|
||||
v->ActiveMeasure(ann);
|
||||
});
|
||||
MeasureHelper::setMeasureType(AnnotationActorType::TextAnn);
|
||||
ui->viewContainer->activeMeasure();
|
||||
});
|
||||
|
||||
m->addSeparator();
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#include "viewcontainerwidget.h"
|
||||
#include "viewcontainerwidget.h"
|
||||
#include "thumbnailImage.h"
|
||||
#include "DicomLoader.h"
|
||||
#include <QWidget>
|
||||
@@ -12,6 +12,7 @@
|
||||
#include "cine/pqVCRToolbar.h"
|
||||
#include <QMessageBox>
|
||||
#include "measure/ActorDraggableInteractorStyle.h"
|
||||
#include "measure/MeasureFactory.h"
|
||||
//-------------------------------------------------------
|
||||
|
||||
|
||||
@@ -399,3 +400,37 @@ bool ViewContainerWidget::checkFusionStatus(DicomImageView *base, DicomImageView
|
||||
return false;
|
||||
}
|
||||
|
||||
void ViewContainerWidget::updateCornerInfoAll() {
|
||||
manager.smartDo([](auto v, auto calldata) {
|
||||
if (v->HasSeries()){
|
||||
v->updateCornerInfoAll();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
void ViewContainerWidget::updateCornerInfoPrivacy() {
|
||||
manager.smartDo([](auto v, auto calldata) {
|
||||
if (v->HasSeries()){
|
||||
v->updateCornerInfoPrivacy();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
void ViewContainerWidget::render() {
|
||||
manager.smartDo([](auto v, auto calldata) {
|
||||
if (v->HasSeries()){
|
||||
v->Render();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
void ViewContainerWidget::activeMeasure() {
|
||||
|
||||
manager.smartDo([](auto v, auto calldata) {
|
||||
if (v->HasSeries()){
|
||||
Measure* measure = MeasureFactory::getMeasure((AnnotationActorType)MeasureHelper::getMeasureType());
|
||||
v->ActiveMeasure(measure);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#pragma once
|
||||
#pragma once
|
||||
#include <QFrame>
|
||||
#include <QScrollBar>
|
||||
#include "global/QGlobals.h"
|
||||
@@ -9,6 +9,7 @@
|
||||
class QGridLayout;
|
||||
class DicomImageView;
|
||||
class SeriesImageSet;
|
||||
class Measure;
|
||||
|
||||
class ViewContainerWidget : public QFrame {
|
||||
Q_OBJECT
|
||||
|
||||
Reference in New Issue
Block a user