diff --git a/src/src/UI/Dialog/exportdialog.cpp b/src/src/UI/Dialog/exportdialog.cpp index 85f6895..de38154 100644 --- a/src/src/UI/Dialog/exportdialog.cpp +++ b/src/src/UI/Dialog/exportdialog.cpp @@ -63,7 +63,7 @@ void ExportDialog::onBtnExportClicked() //export files if (ui->rbCurrentImage->isChecked())//current image { - if (cur_view->HasSeries()) + if (cur_view->hasSeries()) { QString imageName(cur_view->getSeriesInstance()->getCurImageName()); options.inputData.push_back(imageName); @@ -71,7 +71,7 @@ void ExportDialog::onBtnExportClicked() } else if (ui->rbCurrentSeries->isChecked())//current series { - if (cur_view->HasSeries()) + if (cur_view->hasSeries()) { QString serieName(cur_view->getSeriesInstance()->getSeriesName()); options.inputData.push_back(serieName); diff --git a/src/src/UI/Manager/ImageViewManager.cpp b/src/src/UI/Manager/ImageViewManager.cpp index 739d125..068780f 100644 --- a/src/src/UI/Manager/ImageViewManager.cpp +++ b/src/src/UI/Manager/ImageViewManager.cpp @@ -41,7 +41,7 @@ void ImageViewManager::smartDo(SmartDoCallback cb, DicomImageView *sourceView, v std::for_each(vList.begin(),vList.end(),[=](auto v){ //check series auto series = sourceView->getSeriesInstance(); - if (v->getSeriesInstance()==series && v->GetSliceOrientation() == sourceView->GetSliceOrientation()){ + if (v->getSeriesInstance()==series && v->getSliceOrientation() == sourceView->getSliceOrientation()){ cb(v, callData); } @@ -51,14 +51,14 @@ void ImageViewManager::smartDo(SmartDoCallback cb, DicomImageView *sourceView, v case DoScope::EStudyEBoundsSeries:{ std::for_each(vList.begin(),vList.end(),[=](auto v) { if (v == sourceView) return; - if (!v->HasSeries()) return; + if (!v->hasSeries()) return; //check series auto series = sourceView->getSeriesInstance(); auto currentSeries = v->getSeriesInstance(); //same series if (series == currentSeries //equal slice orientation - && v->GetSliceOrientation() == sourceView->GetSliceOrientation()) { + && v->getSliceOrientation() == sourceView->getSliceOrientation()) { cb(v, callData); } //equal study diff --git a/src/src/UI/Widget/dicomimageview.cpp b/src/src/UI/Widget/dicomimageview.cpp index 6c5bd21..9956762 100644 --- a/src/src/UI/Widget/dicomimageview.cpp +++ b/src/src/UI/Widget/dicomimageview.cpp @@ -18,76 +18,72 @@ #include "dcmtk/dcmdata/dcfilefo.h" //----------------------------------------------------------------------------- -DicomImageView::DicomImageView(QWidget* parent) - : QFrame(parent) +DicomImageView::DicomImageView(QWidget *parent) + : QFrame(parent), mGLRenWin(vtkSmartPointer::New()), mImageViewer(nullptr), + mSeries(nullptr), mScrollBar(new ClickableScrollBar(Qt::Orientation::Vertical, this)), + mTitleBar(createMyTitleBar()), mGLWidget(new QVTKOpenGLNativeWidget), mVcrController(nullptr), + mOverlayView(nullptr), mBaseView(nullptr), mSliceOrientation(2), mIsCine(false), mIsNegative(false), + mIsOverlay(false), mIsSlotInited(false) { //main container - QFrame *wrapper = new QFrame(this); - wrapper->setObjectName("wrapper"); + QFrame *wrapper = new QFrame(this); + wrapper->setObjectName("wrapper"); - QGridLayout *view_layout = new QGridLayout(this); + QGridLayout *view_layout = new QGridLayout(this); - //add container and title bar - mTitleBar = createMyTitleBar(); - view_layout->addWidget(mTitleBar, 0, 0); - view_layout->addWidget(wrapper, 1, 0); - view_layout->setContentsMargins(0, 0, 0, 0); - view_layout->setSpacing(0); - this->setLayout(view_layout); + //add container and title bar + view_layout->addWidget(mTitleBar, 0, 0); + view_layout->addWidget(wrapper, 1, 0); + view_layout->setContentsMargins(0, 0, 0, 0); + view_layout->setSpacing(0); + this->setLayout(view_layout); // create layout for main container - QGridLayout* controlLayout = new QGridLayout(wrapper); - mGLWidget = new QVTKOpenGLNativeWidget(wrapper); - - //add QVTKOpenGLNativeWidget to container - mGLRenWin = vtkSmartPointer ::New(); - mGLWidget->SetRenderWindow(mGLRenWin);//set up interacte - controlLayout->addWidget(mGLWidget, 0, 0); + QGridLayout *controlLayout = new QGridLayout(wrapper); + mGLWidget->setParent(wrapper); + mGLWidget->SetRenderWindow(mGLRenWin); + controlLayout->addWidget(mGLWidget, 0, 0); //add scrollbar to container - mScrollBar = new ClickableScrollBar(Qt::Orientation::Vertical, this); mScrollBar->setSingleStep(1); - mScrollBar->setFocusPolicy(Qt::StrongFocus); - mScrollBar->setVisible(false); - mScrollBar->setObjectName("scrollbar"); - controlLayout->addWidget(mScrollBar, 0, 1); - connect(mScrollBar, &ClickableScrollBar::clicked, this, &DicomImageView::viewerClicked); + mScrollBar->setFocusPolicy(Qt::StrongFocus); + mScrollBar->setVisible(false); + mScrollBar->setObjectName("scrollbar"); + controlLayout->addWidget(mScrollBar, 0, 1); + connect(mScrollBar, &ClickableScrollBar::clicked, this, &DicomImageView::clicked); - //config container UI - controlLayout->setContentsMargins(0, 0, 0, 0); - controlLayout->setSpacing(0); - wrapper->setLayout(controlLayout); - setAutoFillBackground(true); + //config container UI + controlLayout->setContentsMargins(0, 0, 0, 0); + controlLayout->setSpacing(0); + wrapper->setLayout(controlLayout); + setAutoFillBackground(true); - //config self - QWidget::setAcceptDrops(true); - this->setObjectName("dicomview"); + //config self + QWidget::setAcceptDrops(true); + this->setObjectName("dicomview"); } -//----------------------------------------------------------------------------- -DicomImageView::~DicomImageView() -{ - if (mImageViewer){ +DicomImageView::~DicomImageView() { + if (mImageViewer) { mImageViewer->Delete(); mImageViewer = nullptr; } - mVcrControlThread.quit();//event loop - mVcrControlThread.wait(); //wait until return,block mode - if (mVcrToolbar){ + mVcrControlThread.quit();//event loop + mVcrControlThread.wait(); //wait until return,block mode + if (mVcrToolbar) { mVcrToolbar->deleteLater(); - } + } } -MyTitleBar * DicomImageView::createMyTitleBar() -{ - MyTitleBar *titleBar = new MyTitleBar(this); - connect(titleBar, &MyTitleBar::signalButtonMaxClicked, this, &DicomImageView::Slot_viewDoubleclicked); - connect(titleBar, &MyTitleBar::signalButtonCloseClicked, this, &DicomImageView::Slot_ViewEmpty); - return titleBar; +// layout about--------------------------------------------------------------- +MyTitleBar *DicomImageView::createMyTitleBar() { + MyTitleBar *titleBar = new MyTitleBar(this); + connect(titleBar, &MyTitleBar::signalButtonMaxClicked, this, &DicomImageView::doubleClicked); + connect(titleBar, &MyTitleBar::signalButtonCloseClicked, this, &DicomImageView::viewCleared); + return titleBar; } -void DicomImageView::initScrollbar() -{ +void DicomImageView::initScrollbar() { //_MinSlice = mImageViewer->GetSliceMin(); //_MaxSlice = mImageViewer->GetSliceMax(); mScrollBar->setValue(mImageViewer->GetSliceMin()); @@ -96,116 +92,85 @@ void DicomImageView::initScrollbar() mScrollBar->setVisible(true); } -//NOTE: not working void DicomImageView::setHighlight(bool yes) { mTitleBar->SetHighlight(yes); } -//SLOTS------------------------------------------------------------------------ -void DicomImageView::Slot_scrollValueChanged(int slice) -{ - mImageViewer->SetSlice(slice); +void DicomImageView::SyncScrollBar() { + mScrollBar->SetValueSilently(mImageViewer->GetSlice()); } -void DicomImageView::Slot_ViewEmpty() -{ - emit Signal_ViewEmpty(this); +void DicomImageView::resetView() { + if (hasSeries()) { + removeViewWithFusion(); + removeViewWithMeasure(); + mImageViewer->GetRenderer()->RemoveAllViewProps(); + this->render(); + + mImageViewer->Delete(); + mImageViewer = nullptr; + //don't delete series!!! It's belong to data cache + mSeries = nullptr; + } + mScrollBar->setVisible(false); + if (mIsCine) + mVcrToolbar->setVisible(false); + } -void DicomImageView::Slot_viewDoubleclicked() -{ - emit Signal_viewDoubleclicked(this); +bool DicomImageView::hasSeries() { + return mSeries; } -void DicomImageView::Slot_WindowLevelEventForFusion(double level, double width) -{ - if (IsFusion()) { - mImageViewer->SetFusionColorLeveL(level); - mImageViewer->SetFusionColorWindow(width); - mImageViewer->Render(); +void DicomImageView::loadSeries(SeriesImageSet *series) { + mSeries = series; + mImageViewer->SetInputData(mSeries->GetData()); + mImageViewer->InitCornerInfo(series->GetProperty()); + mImageViewer->SetupImageViewer(); + mImageViewer->UpdateOrientationInfo(); + //以下是一些转接函数 + //使用connect 替代 AddObserver,避免出现多种事件机制架构 + connect(mImageViewer->GetSignalRaiser(), &vtkSignalRaiser::raiseEvent, this, &DicomImageView::syncEventFunc); + //目前 替换了一部分包括SlicedEvent,EndDollyEvent,EndWindowLevelEvent,EndPanEvent,主要关联到sync + + ActorDraggableInteractorStyle *style = mImageViewer->GetInteractorStyle(); + style->AddObserver(ActorDraggableInteractorStyle::AfterViewerClicked, this, &DicomImageView::clicked); + style->AddObserver(vtkCommand::EventIds::WindowLevelEvent, this, &DicomImageView::updateWindowLevelCb); + style->AddObserver(ActorDraggableInteractorStyle::DoubleClickEvent, this, &DicomImageView::doubleclickedEventCb); + style->AddObserver(ActorDraggableInteractorStyle::ScalarOpacityEvent, this, &DicomImageView::scalarEventCb); + style->AddObserver(ActorDraggableInteractorStyle::ScalarShiftEvent, this, &DicomImageView::scalarEventCb); +} + +int DicomImageView::getSeriesNumber() { + if (hasSeries()) { + return mSeries->GetSeriesNumber(); + } + return -1; +} + +void DicomImageView::showMetaData() { + + QString fileName = QString::fromLatin1(this->mSeries->getCurImageName()); + if (!fileName.isEmpty()) { + DcmFileFormat dcmFile; + if (!dcmFile.loadFile(fileName.toStdString()).good()) { + QMessageBox::warning(this, + tr("Error"), + tr("Unable to read file %1").arg(fileName), + QMessageBox::Ok); + return; + } + metaDataWindow *dicomWindow = new metaDataWindow(&dcmFile); + dicomWindow->setAttribute(Qt::WA_DeleteOnClose); + dicomWindow->setWindowTitle("DICOM Tags (" + fileName + ")"); + dicomWindow->setWindowFilePath(fileName); + dicomWindow->resize(USER_CONFIG::DEFAULT_TAG_WINDOW_SIZE); + dicomWindow->show(); + } } -void DicomImageView::Slot_Transformation() -{ - mImageViewer->UpdateOrientationInfo(); - mImageViewer->Render(); -} - -//Widget event---------------------------------------------------------------- -void DicomImageView::wheelEvent(QWheelEvent *event) -{ - if (HasSeries()) { - int _Slice = mImageViewer->GetSlice(); - int _MinSlice = mImageViewer->GetSliceMin(); - int _MaxSlice = mImageViewer->GetSliceMax(); - - if (event->delta() > 0) - { - if (_Slice > _MinSlice) - { - _Slice -= 1; - mImageViewer->SetSlice(_Slice); - } - else - { - _Slice = _MinSlice; - mImageViewer->SetSlice(_Slice); - } - } - else - { - if (_Slice < _MaxSlice) - { - _Slice += 1; - mImageViewer->SetSlice(_Slice); - } - else - { - _Slice = _MaxSlice; - mImageViewer->SetSlice(_Slice); - } - } - } -} - -void DicomImageView::mousePressEvent(QMouseEvent* event) -{ - - emit Signal_ViewClicked(this); -} - -// DND support----------------------------------------------------------------- -void DicomImageView::dragEnterEvent(QDragEnterEvent *e) { - if (e->mimeData()->hasFormat("text/plain")) { - e->acceptProposedAction(); - } -} - -void DicomImageView::dragMoveEvent(QDragMoveEvent *e) { - if (e->mimeData()->hasFormat("text/plain")) { - e->acceptProposedAction(); - } -} - -void DicomImageView::dropEvent(QDropEvent *e) { - if (e->mimeData()->hasFormat("text/plain")) { - e->acceptProposedAction(); - thumbnailImage *tb = qobject_cast( - (QObject *)(e->mimeData()->text().toULongLong())); - if (tb) { - emit Signal_DragDropEvent(this, tb); - } - } -} - -void DicomImageView::dragLeaveEvent(QDragLeaveEvent *) { - return; -} - -// layout resize--------------------------------------------------------------- -void DicomImageView::resizeEvent(QResizeEvent *event) -{ +void DicomImageView::resizeEvent(QResizeEvent *event) { //auto size conner info if (!mImageViewer) return; if (mImageViewer->GetvtkCornerAnnotation()) { @@ -222,251 +187,249 @@ void DicomImageView::resizeEvent(QResizeEvent *event) } +//SLOTS------------------------------------------------------------------------ +void DicomImageView::scrollBarValueChanged(int slice) { + mImageViewer->SetSlice(slice); +} + +void DicomImageView::viewCleared() { + emit Signal_ViewEmpty(this); +} + +void DicomImageView::doubleClicked() { + emit Signal_viewDoubleclicked(this); +} + +void DicomImageView::fusionWindowChanged(double level, double width) { + if (isFusion()) { + mImageViewer->SetFusionColorLeveL(level); + mImageViewer->SetFusionColorWindow(width); + mImageViewer->Render(); + } +} + +void DicomImageView::imageTransformed() { + mImageViewer->UpdateOrientationInfo(); + mImageViewer->Render(); +} + +void DicomImageView::clicked() { + emit Signal_ViewClicked(this); +} + +//Widget event---------------------------------------------------------------- +void DicomImageView::wheelEvent(QWheelEvent *event) { + if (hasSeries()) { + int _Slice = mImageViewer->GetSlice(); + int _MinSlice = mImageViewer->GetSliceMin(); + int _MaxSlice = mImageViewer->GetSliceMax(); + + if (event->delta() > 0) { + if (_Slice > _MinSlice) { + _Slice -= 1; + mImageViewer->SetSlice(_Slice); + } else { + _Slice = _MinSlice; + mImageViewer->SetSlice(_Slice); + } + } else { + if (_Slice < _MaxSlice) { + _Slice += 1; + mImageViewer->SetSlice(_Slice); + } else { + _Slice = _MaxSlice; + mImageViewer->SetSlice(_Slice); + } + } + } +} + +void DicomImageView::mousePressEvent(QMouseEvent *event) { + + emit Signal_ViewClicked(this); +} + +// DND support----------------------------------------------------------------- +void DicomImageView::dragEnterEvent(QDragEnterEvent *e) { + if (e->mimeData()->hasFormat("text/plain")) { + e->acceptProposedAction(); + } +} + +void DicomImageView::dragMoveEvent(QDragMoveEvent *e) { + if (e->mimeData()->hasFormat("text/plain")) { + e->acceptProposedAction(); + } +} + +void DicomImageView::dropEvent(QDropEvent *e) { + if (e->mimeData()->hasFormat("text/plain")) { + e->acceptProposedAction(); + thumbnailImage *tb = qobject_cast( + (QObject *) (e->mimeData()->text().toULongLong())); + if (tb) { + emit Signal_DragDropEvent(this, tb); + } + } +} + +void DicomImageView::dragLeaveEvent(QDragLeaveEvent *) { + return; +} + //Fusion about ------------------------------------------------------------- -bool DicomImageView::IsFusion() -{ - return mImageViewer->GetFusion(); +bool DicomImageView::isFusion() { + return mImageViewer->GetFusion(); } -void DicomImageView::SetFusionInput(DicomImageView *overlay) -{ +void DicomImageView::setFusionInput(DicomImageView *overlay) { mOverlayView = overlay; - vtkImageData *overlay_data = mOverlayView->getSeriesInstance()->GetData(); + vtkImageData *overlay_data = mOverlayView->getSeriesInstance()->GetData(); - double window; - double level; - mOverlayView->GetWindowLevel(level, window); + double window; + double level; + mOverlayView->getWindowLevel(level, window); - mImageViewer->FusionOn(); - mOverlayView->OverlayOn(); - mOverlayView->SetBaseView(this); + mImageViewer->FusionOn(); + mOverlayView->OverlayOn(); + mOverlayView->SetBaseView(this); - mImageViewer->SetFusionInputData(overlay_data); - mImageViewer->SetFusionColorLeveL(level); - mImageViewer->SetFusionColorWindow(window); - mImageViewer->SetFusionOpacity(mImageViewer->GetFusionOpacity()); + mImageViewer->SetFusionInputData(overlay_data); + mImageViewer->SetFusionColorLeveL(level); + mImageViewer->SetFusionColorWindow(window); + mImageViewer->SetFusionOpacity(mImageViewer->GetFusionOpacity()); - // Example for vtkDiscretizableColorTransferFunction - vtkNew< vtkDiscretizableColorTransferFunction> table; - // example table1 d->r->g->w - table->AddRGBPoint(0.0, 0.0, 0.0, 0.0); - table->AddRGBPoint(0.33, 1.0, 0.0, 0.0); - table->AddRGBPoint(0.66, 1.0, 1.0, 0.0); - table->AddRGBPoint(1.0, 1.0, 1.0, 1.0); - mImageViewer->SetFusionColorTable(table); + // Example for vtkDiscretizableColorTransferFunction + vtkNew table; + // example table1 d->r->g->w + table->AddRGBPoint(0.0, 0.0, 0.0, 0.0); + table->AddRGBPoint(0.33, 1.0, 0.0, 0.0); + table->AddRGBPoint(0.66, 1.0, 1.0, 0.0); + table->AddRGBPoint(1.0, 1.0, 1.0, 1.0); + mImageViewer->SetFusionColorTable(table); } -void DicomImageView::SetFusionOpacity(double percent) { - if (IsFusion()) { - mImageViewer->IncreFusionOpacity(percent); - mImageViewer->Render(); - } +void DicomImageView::setFusionOpacity(double percent) { + if (isFusion()) { + mImageViewer->IncreFusionOpacity(percent); + mImageViewer->Render(); + } } /** * Remove Fusion no matter it is base or overlay */ -void DicomImageView::removeViewWithFusion() -{ - if (HasSeries()) - { - if (IsFusion()) { - disconnect(mOverlayView, &DicomImageView::Signal_WindowLevelEventForFusion, - this, &DicomImageView::Slot_WindowLevelEventForFusion); +void DicomImageView::removeViewWithFusion() { + if (hasSeries()) { + if (isFusion()) { + disconnect(mOverlayView, &DicomImageView::Signal_WindowLevelEventForFusion, + this, &DicomImageView::fusionWindowChanged); - this->removeFusion(); - mOverlayView->SetBaseView(nullptr); + this->removeFusion(); + mOverlayView->SetBaseView(nullptr); mOverlayView = nullptr; - } + } - if (IsOverlay()) { - disconnect(this, &DicomImageView::Signal_WindowLevelEventForFusion, - mBaseView, &DicomImageView::Slot_WindowLevelEventForFusion); + if (IsOverlay()) { + disconnect(this, &DicomImageView::Signal_WindowLevelEventForFusion, + mBaseView, &DicomImageView::fusionWindowChanged); - mBaseView->removeFusion(); - mBaseView->SetOverlayView(nullptr); + mBaseView->removeFusion(); + mBaseView->SetOverlayView(nullptr); mBaseView = nullptr; - } - } + } + } } -void DicomImageView::removeFusion() -{ - mImageViewer->RemoveFusionData(); - mImageViewer->FusionOff(); - mImageViewer->Render(); - mOverlayView->OverlayOff(); +void DicomImageView::removeFusion() { + mImageViewer->RemoveFusionData(); + mImageViewer->FusionOff(); + mImageViewer->Render(); + mOverlayView->OverlayOff(); } -void DicomImageView::setDicomImageView(SeriesImageSet *series) -{ - if (!mImageViewer){ +void DicomImageView::setDicomImageView(SeriesImageSet *series) { + if (!mImageViewer) { mImageViewer = infinitiViewer::New(); mImageViewer->SetRenderWindow(mGLRenWin); mImageViewer->SetupInteractor(mGLRenWin->GetInteractor()); } - //series->setVTKOpenGLNativeWidget(this->_glView); - LoadSeries(series); - //whenver change instance,set scroll value to zero - initScrollbar(); - if (!mIsSlotInited){ - connect(mScrollBar, &QScrollBar::valueChanged, this, &DicomImageView::Slot_scrollValueChanged); - connect(this, &DicomImageView::Signal_Transformation, this, &DicomImageView::Slot_Transformation); + //series->setVTKOpenGLNativeWidget(this->_glView); + loadSeries(series); + //whenver change instance,set scroll value to zero + initScrollbar(); + if (!mIsSlotInited) { + connect(mScrollBar, &QScrollBar::valueChanged, this, &DicomImageView::scrollBarValueChanged); + connect(this, &DicomImageView::Signal_Transformation, this, &DicomImageView::imageTransformed); mIsSlotInited = true; } } -bool DicomImageView::HasSeries() -{ - return mSeries ; -} - -void DicomImageView::LoadSeries(SeriesImageSet *series) -{ - mSeries = series; - mImageViewer->SetInputData(mSeries->GetData()); - mImageViewer->InitCornerInfo(series->GetProperty()); - mImageViewer->SetupImageViewer(); - mImageViewer->UpdateOrientationInfo(); - //以下是一些转接函数 - //使用connect 替代 AddObserver,避免出现多种事件机制架构 - connect(mImageViewer->GetSignalRaiser(),&vtkSignalRaiser::raiseEvent, this, &DicomImageView::syncEventFunc); - //目前 替换了一部分包括SlicedEvent,EndDollyEvent,EndWindowLevelEvent,EndPanEvent,主要关联到sync - - ActorDraggableInteractorStyle *style = mImageViewer->GetInteractorStyle(); - style->AddObserver(ActorDraggableInteractorStyle::AfterViewerClicked, this, &DicomImageView::viewerClicked); - style->AddObserver(vtkCommand::EventIds::WindowLevelEvent, this, &DicomImageView::updateWindowLevelCb); - style->AddObserver(ActorDraggableInteractorStyle::DoubleClickEvent, this, &DicomImageView::doubleclickedEventCb); - style->AddObserver(ActorDraggableInteractorStyle::ScalarOpacityEvent, this, &DicomImageView::scalarEventCb); - style->AddObserver(ActorDraggableInteractorStyle::ScalarShiftEvent, this, &DicomImageView::scalarEventCb); -} - //Callbacks------------------------------------------------------------------------------------ -void DicomImageView::updateWindowLevelCb(vtkObject* caller, unsigned long eid, void *calldata) -{ +void DicomImageView::updateWindowLevelCb() { mImageViewer->UpdateCornerInfo(BOTTOM_RIGHT); - emit Signal_WindowLevelEventForFusion(mImageViewer->GetColorLevel(), mImageViewer->GetColorWindow()); + emit Signal_WindowLevelEventForFusion(mImageViewer->GetColorLevel(), mImageViewer->GetColorWindow()); } -void DicomImageView::scalarEventCb(vtkObject* sender, unsigned long eventId, void* calldata) -{ - double* r = (double*)calldata; - switch (eventId) - { - case(ActorDraggableInteractorStyle::ScalarShiftEvent): - qDebug() << "ScalarShiftEvent"; - mImageViewer->SwitchToNextPreset(); +void DicomImageView::scalarEventCb(vtkObject *, unsigned long eventId, void *calldata) { + double *r = (double *) calldata; + switch (eventId) { + case (ActorDraggableInteractorStyle::ScalarShiftEvent): + qDebug() << "ScalarShiftEvent"; + mImageViewer->SwitchToNextPreset(); - break; - case(ActorDraggableInteractorStyle::ScalarOpacityEvent): - qDebug() << "ScalarOpacityEvent" << r[0]; - SetFusionOpacity(r[0]); - break; - default: + break; + case (ActorDraggableInteractorStyle::ScalarOpacityEvent): + qDebug() << "ScalarOpacityEvent" << r[0]; + setFusionOpacity(r[0]); + break; + default: - break; - } + break; + } } -void DicomImageView::doubleclickedEventCb(vtkObject* sender, unsigned long eventId, void* calldata) { - emit Signal_viewDoubleclicked(this); +void DicomImageView::doubleclickedEventCb() { + emit Signal_viewDoubleclicked(this); } //TODO:重新匹配该函数,部分逻辑可以直接保留,需要注意Endxxx系列事件不是仅仅为了sync设计的 -void DicomImageView::syncEventFunc(vtkObject* caller, unsigned long eid, void *calldata) -{ +void DicomImageView::syncEventFunc(vtkObject *, unsigned long eid, void *calldata) { - int* r = (int*)calldata; - switch (eid) - { - case(vtkCommand::EventIds::EndPanEvent): - this->Signal_SyncEvent(this, VTKIS_IMAGE_PAN, calldata); - break; - case(vtkCommand::EventIds::EndWindowLevelEvent): - //update corner info through callback - this->Signal_SyncEvent(this, VTKIS_IMAGE_WINDOWLEVEL, calldata); - break; - case(ActorDraggableInteractorStyle::DraggableStyleEvents::EndDollyEvent): - this->Signal_SyncEvent(this, VTKIS_IMAGE_ZOOM, calldata); - break; - case(ActorDraggableInteractorStyle::DraggableStyleEvents::SlicedEvent):{ - mScrollBar->SetValueSilently(r[0]); - //invoke event - double focusPoint[3] = {.0, .0, .0}; - mImageViewer->GetSlicePoint(focusPoint); - this->Signal_SyncEvent(this, VTKIS_IMAGE_SLICING, focusPoint); - break; - } - default: - break; - } + int *r = (int *) calldata; + switch (eid) { + case (vtkCommand::EventIds::EndPanEvent): + this->Signal_SyncEvent(this, VTKIS_IMAGE_PAN, calldata); + break; + case (vtkCommand::EventIds::EndWindowLevelEvent): + //update corner info through callback + this->Signal_SyncEvent(this, VTKIS_IMAGE_WINDOWLEVEL, calldata); + break; + case (ActorDraggableInteractorStyle::DraggableStyleEvents::EndDollyEvent): + this->Signal_SyncEvent(this, VTKIS_IMAGE_ZOOM, calldata); + break; + case (ActorDraggableInteractorStyle::DraggableStyleEvents::SlicedEvent): { + mScrollBar->SetValueSilently(r[0]); + //invoke event + double focusPoint[3] = {.0, .0, .0}; + mImageViewer->GetSlicePoint(focusPoint); + this->Signal_SyncEvent(this, VTKIS_IMAGE_SLICING, focusPoint); + break; + } + default: + break; + } } -void DicomImageView::ResetView() -{ - if (HasSeries()) - { - removeViewWithFusion(); - removeViewWithMeasure(); - mImageViewer->GetRenderer()->RemoveAllViewProps(); - this->Render(); - - mImageViewer->Delete(); - mImageViewer = nullptr; - //don't delete series!!! It's belong to data cache - mSeries = nullptr; - } - mScrollBar->setVisible(false); - if (mIsCine) - mVcrToolbar->setVisible(false); - -} - -int DicomImageView::getSeriesNumber() -{ - if (HasSeries()) - { - return mSeries->GetSeriesNumber(); - } - return -1; -} - -void DicomImageView::ShowMetaData() -{ - - QString fileName = QString::fromLatin1(this->mSeries->getCurImageName()); - if (!fileName.isEmpty()) { - DcmFileFormat dcmFile; - if (!dcmFile.loadFile(fileName.toStdString()).good()) - { - QMessageBox::warning(this, - tr("Error"), - tr("Unable to read file %1").arg(fileName), - QMessageBox::Ok); - return; - } - metaDataWindow *dicomWindow = new metaDataWindow(&dcmFile); - dicomWindow->setAttribute(Qt::WA_DeleteOnClose); - dicomWindow->setWindowTitle("DICOM Tags ("+fileName+")"); - dicomWindow->setWindowFilePath(fileName); - dicomWindow->resize(USER_CONFIG::DEFAULT_TAG_WINDOW_SIZE); - dicomWindow->show(); - - } -} - - -//--view about-------------------------------------------------------------------------------------- -void DicomImageView::Render() -{ - if (HasSeries()) - { +//Image render & operation about-------------------------------------------------------------------------------------- +void DicomImageView::render() { + if (hasSeries()) { if (mImageViewer->GetvtkCornerAnnotation()) { mImageViewer->GetvtkCornerAnnotation()->SetMaximumFontSize(FontSizeHelper::getSize(frameGeometry().size())); } @@ -475,64 +438,65 @@ void DicomImageView::Render() } -void DicomImageView::SetSlice(int slice) -{ - if (mImageViewer == nullptr) - { +int DicomImageView::getSliceOrientation() { + return mSliceOrientation; +} + +void DicomImageView::getSliceOrientation(int orientation) { + mSliceOrientation = orientation; + mImageViewer->SetSliceOrientation(orientation); + int max = 0; + int min = 0; + mImageViewer->GetSliceRange(min, max); + mScrollBar->setValue(min); + mScrollBar->setMaximum(max); + mScrollBar->setValue(0); +} + +void DicomImageView::setSlice(int slice) { + if (mImageViewer == nullptr) { return; } - if (HasSeries()) - { + if (hasSeries()) { mImageViewer->SetSlice(slice); } } -void DicomImageView::AddSlice(int step) -{ - if (mImageViewer == nullptr) - { +void DicomImageView::addSlice(int step) { + if (mImageViewer == nullptr) { return; } - if (HasSeries()) - { + if (hasSeries()) { int curSlice = mImageViewer->GetSlice() + step; mImageViewer->SetSlice(curSlice); } } -void DicomImageView::SetZoomScale(double scale) -{ - if (HasSeries()) - { - mImageViewer->SetZoomScale(scale); - mImageViewer->Render(); - } +void DicomImageView::setZoomScale(double scale) { + if (hasSeries()) { + mImageViewer->SetZoomScale(scale); + mImageViewer->Render(); + } } -void DicomImageView::SetPanOffset(double * pan) -{ - if (HasSeries()) - { +void DicomImageView::setPanOffset(double *pan) { + if (hasSeries()) { - mImageViewer->SetPanOffset(pan); - mImageViewer->Render(); - } + mImageViewer->SetPanOffset(pan); + mImageViewer->Render(); + } } //FIXME:这个函数有问题,会导致MPR显示出错!!! -void DicomImageView::ResetPanZoom() -{ - if (HasSeries()) - { +void DicomImageView::resetPanZoom() { + if (hasSeries()) { mImageViewer->ResetZoomScaleToFitWindowSize(); } } -void DicomImageView::SetWindowLevel(double level, double width) -{ - if (HasSeries()) - { +void DicomImageView::setWindowLevel(double level, double width) { + if (hasSeries()) { mImageViewer->SetColorLevel(level); mImageViewer->SetColorWindow(width); @@ -544,25 +508,19 @@ void DicomImageView::SetWindowLevel(double level, double width) } } -void DicomImageView::GetWindowLevel(double &level, double &width) { - if (HasSeries()) - { +void DicomImageView::getWindowLevel(double &level, double &width) { + if (hasSeries()) { level = mImageViewer->GetColorLevel(); width = mImageViewer->GetColorWindow(); } } -void DicomImageView::ToggleNegativeMode() -{ - if (HasSeries()) - { - if (mIsNegative) - { +void DicomImageView::negativeWindow() { + if (hasSeries()) { + if (mIsNegative) { mImageViewer->SetNegativeMode(false); mIsNegative = false; - } - else - { + } else { mImageViewer->SetNegativeMode(true); mIsNegative = true; } @@ -570,9 +528,8 @@ void DicomImageView::ToggleNegativeMode() } } -void DicomImageView::HFlip() -{ - if (HasSeries()) { +void DicomImageView::hFlipImage() { + if (hasSeries()) { int slice = mImageViewer->GetSlice(); //HFlip //mImageViewer->GetRenderer()->GetActiveCamera()->SetViewUp(0, 1, 0); @@ -588,9 +545,8 @@ void DicomImageView::HFlip() } } -void DicomImageView::VFlip() -{ - if (HasSeries()) { +void DicomImageView::vFlipImage() { + if (hasSeries()) { //double scale = mImageViewer->GetRenderer()->GetActiveCamera()->GetParallelScale(); int slice = mImageViewer->GetSlice(); @@ -610,9 +566,8 @@ void DicomImageView::VFlip() } -void DicomImageView::Rotate(double angle, TransFormType operation) -{ - if (HasSeries()) { +void DicomImageView::rotateImage(double angle, TransFormType operation) { + if (hasSeries()) { int slice = mImageViewer->GetSlice(); mImageViewer->GetRenderer()->GetActiveCamera()->Roll(angle); //to avoid black out problem during slicing @@ -625,12 +580,10 @@ void DicomImageView::Rotate(double angle, TransFormType operation) } -void DicomImageView::ClearTransformations() -{ - if (HasSeries()) - { +void DicomImageView::ClearTransformations() { + if (hasSeries()) { int slice = mImageViewer->GetSlice(); - ResetPanZoom(); + resetPanZoom(); double cameraPosition[3]; double vup[3]; @@ -648,37 +601,30 @@ void DicomImageView::ClearTransformations() } } -void DicomImageView::updateCornerInfoAll() -{ - if (HasSeries()) - { +void DicomImageView::updateCornerInfoAll() { + if (hasSeries()) { mImageViewer->UpdateCornerInfoAll(); } } -void DicomImageView::updateCornerInfoPrivacy() -{ - if (HasSeries()) - { +void DicomImageView::updateCornerInfoPrivacy() { + if (hasSeries()) { mImageViewer->UpdateCornerInfo(TOP_RIGHT); } } //--VCR about------------------------------------------------------------------ -bool DicomImageView::isVCRVisible() -{ +bool DicomImageView::isVCRVisible() { if (!mVcrToolbar) return false; return mVcrToolbar->isVisible(); } -void DicomImageView::setVCRVisible(bool visible) -{ - if (!mVcrToolbar) return ; +void DicomImageView::setVCRVisible(bool visible) { + if (!mVcrToolbar) return; mVcrToolbar->setVisible(visible); } -void DicomImageView::cineModeOn() -{ +void DicomImageView::cineModeOn() { if (!mVcrToolbar) return; //updateVCRToolbarPos(); int ax = (this->geometry().bottomLeft().x() + this->geometry().bottomRight().x()) / 2 + VCRHelper::getVCRXOffset(); @@ -691,8 +637,7 @@ void DicomImageView::cineModeOn() } -void DicomImageView::initCineModeThread() -{ +void DicomImageView::initCineModeThread() { mVcrController = new pqVCRController(nullptr, this); mVcrController->moveToThread(&mVcrControlThread); connect(&mVcrControlThread, &QThread::finished, mVcrController, &QObject::deleteLater); @@ -700,107 +645,69 @@ void DicomImageView::initCineModeThread() mIsCine = true; } -void DicomImageView::onFirstFrame() -{ - if (HasSeries()) { +void DicomImageView::onFirstFrame() { + if (hasSeries()) { mScrollBar->setValue(mImageViewer->GetSliceMin()); } } -void DicomImageView::onPreviousFrame() -{ - if (HasSeries()) { +void DicomImageView::onPreviousFrame() { + if (hasSeries()) { int slice = mImageViewer->GetSlice(); slice = --slice; int min_slice = mImageViewer->GetSliceMin(); - if (slice < min_slice) - { + if (slice < min_slice) { slice = mImageViewer->GetSliceMax(); } mScrollBar->setValue(slice); } } -void DicomImageView::onNextFrame() -{ - if (HasSeries()) { +void DicomImageView::onNextFrame() { + if (hasSeries()) { int slice = mImageViewer->GetSlice(); slice = ++slice; int max_slice = mImageViewer->GetSliceMax(); - if (slice > max_slice) - { + if (slice > max_slice) { slice = mImageViewer->GetSliceMin(); } mScrollBar->setValue(slice); } } -void DicomImageView::onLastFrame() -{ - if (HasSeries()) { +void DicomImageView::onLastFrame() { + if (hasSeries()) { mScrollBar->setValue(mImageViewer->GetSliceMax()); } } //-- Measure about-------------------------------------------------------------------------------------- -void DicomImageView::ActiveMeasure(Measure *m) -{ - if (nullptr != mSeries) - { +void DicomImageView::activeMeasure(Measure *m) { + if (nullptr != mSeries) { mImageViewer->ActiveMeasure(m); } } -void DicomImageView::DeleteSelectedMeasure() -{ - if (nullptr != mSeries) - { +void DicomImageView::deleteSelectedMeasure() { + if (nullptr != mSeries) { mImageViewer->DeleteSelectedMeasure(); } } -void DicomImageView::DeleteCurrentSliceMeasure() -{ - if (nullptr != mSeries) - { +void DicomImageView::deleteCurrentSliceMeasure() { + if (nullptr != mSeries) { mImageViewer->DeleteCurrentSliceMeasure(); } } -void DicomImageView::DeleteCurrentSeriesMeasure() -{ - if (nullptr != mSeries) - { +void DicomImageView::deleteCurrentSeriesMeasure() { + if (nullptr != mSeries) { mImageViewer->DeleteCurrentSeriesMeasure(); } } -void DicomImageView::removeViewWithMeasure() -{ +void DicomImageView::removeViewWithMeasure() { mImageViewer->UnActiveMeasure(); mImageViewer->DeleteCurrentSeriesMeasure(); } -void DicomImageView::SetSliceOrientation(int orientation) { - mSliceOrientation = orientation; - mImageViewer->SetSliceOrientation(orientation); - int max = 0; - int min = 0; - mImageViewer->GetSliceRange(min, max); - mScrollBar->setValue(min); - mScrollBar->setMaximum(max); - mScrollBar->setValue(0); -} - - -int DicomImageView::GetSliceOrientation() { - return mSliceOrientation; -} - -void DicomImageView::viewerClicked() { - emit Signal_ViewClicked(this); -} - -void DicomImageView::SyncScrollBar() { - mScrollBar->SetValueSilently(mImageViewer->GetSlice()); -} diff --git a/src/src/UI/Widget/dicomimageview.h b/src/src/UI/Widget/dicomimageview.h index 092b971..9f728c2 100644 --- a/src/src/UI/Widget/dicomimageview.h +++ b/src/src/UI/Widget/dicomimageview.h @@ -32,7 +32,7 @@ public: ~DicomImageView() override; - void ShowMetaData(); + void showMetaData(); QVTKOpenGLNativeWidget *getGLWidget() { return mGLWidget; @@ -44,12 +44,12 @@ public: void setHighlight(bool yes); - void Render(); + void render(); //Series void setDicomImageView(SeriesImageSet *series); - bool HasSeries(); + bool hasSeries(); int getSeriesNumber(); @@ -58,7 +58,7 @@ public: } //Reset - void ResetView(); + void resetView(); //Corner Info @@ -67,50 +67,50 @@ public: void updateCornerInfoPrivacy(); //Window level - void GetWindowLevel(double &level, double &width); + void getWindowLevel(double &level, double &width); - void SetWindowLevel(double level, double width); + void setWindowLevel(double level, double width); //Transformation void ClearTransformations(); - void HFlip(); + void hFlipImage(); - void VFlip(); + void vFlipImage(); - void Rotate(double angle, TransFormType operation); + void rotateImage(double angle, TransFormType operation); //Fusion - bool IsFusion(); + bool isFusion(); - void SetFusionOpacity(double percent); + void setFusionOpacity(double percent); - void SetFusionInput(DicomImageView *overlap); + void setFusionInput(DicomImageView *overlay); void removeViewWithFusion(); //Measure - void ActiveMeasure(Measure *m); + void activeMeasure(Measure *m); - void DeleteSelectedMeasure(); + void deleteSelectedMeasure(); - void DeleteCurrentSliceMeasure(); + void deleteCurrentSliceMeasure(); - void DeleteCurrentSeriesMeasure(); + void deleteCurrentSeriesMeasure(); void removeViewWithMeasure(); //Sync slice - void AddSlice(int step); + void addSlice(int step); - void SetSlice(int slice); + void setSlice(int slice); - void SetZoomScale(double scale); + void setZoomScale(double scale); - void SetPanOffset(double *p); + void setPanOffset(double *p); void SyncScrollBar(); @@ -144,11 +144,11 @@ public: } //Negative - void ToggleNegativeMode(); + void negativeWindow(); - void SetSliceOrientation(int orientation); + void getSliceOrientation(int orientation); - int GetSliceOrientation(); + int getSliceOrientation(); bool CompareWorldSliceOrientation(DicomImageView *view) { return this->mImageViewer->GetWorldSliceOrientation() == view->mImageViewer->GetWorldSliceOrientation(); @@ -177,17 +177,17 @@ signals: public slots: //for title bar use - void Slot_viewDoubleclicked(); + void doubleClicked(); - void Slot_ViewEmpty(); + void viewCleared(); - void Slot_scrollValueChanged(int); + void scrollBarValueChanged(int); - void Slot_WindowLevelEventForFusion(double level, double width); + void fusionWindowChanged(double level, double width); - void Slot_Transformation(); + void imageTransformed(); - void viewerClicked(); + void clicked(); protected: /** @@ -255,11 +255,11 @@ private: //Callback - void doubleclickedEventCb(vtkObject *sender, unsigned long eventId, void *calldata = nullptr); + void doubleclickedEventCb(); void scalarEventCb(vtkObject *sender, unsigned long eventId, void *calldata = nullptr); - void updateWindowLevelCb(vtkObject *caller, unsigned long eid, void *calldata); + void updateWindowLevelCb(); void syncEventFunc(vtkObject *caller, unsigned long eid, void *calldata); @@ -272,31 +272,31 @@ private: */ MyTitleBar *createMyTitleBar(); - void ResetPanZoom(); + void resetPanZoom(); void initScrollbar(); - void LoadSeries(SeriesImageSet *series); + void loadSeries(SeriesImageSet *series); vtkSmartPointer mGLRenWin; - infinitiViewer *mImageViewer = nullptr; - SeriesImageSet *mSeries = nullptr; - ClickableScrollBar *mScrollBar = nullptr; - MyTitleBar *mTitleBar = nullptr; - QVTKOpenGLNativeWidget *mGLWidget = nullptr; - pqVCRToolbar *mVcrToolbar = nullptr; - pqVCRController *mVcrController = nullptr; + infinitiViewer *mImageViewer; + SeriesImageSet *mSeries; + ClickableScrollBar *mScrollBar; + MyTitleBar *mTitleBar; + QVTKOpenGLNativeWidget *mGLWidget; + pqVCRToolbar *mVcrToolbar ; + pqVCRController *mVcrController; QThread mVcrControlThread; - DicomImageView *mOverlayView = nullptr; - DicomImageView *mBaseView = nullptr; + DicomImageView *mOverlayView; + DicomImageView *mBaseView; - int mSliceOrientation = 2; + int mSliceOrientation; - bool mIsCine = false; - bool mIsNegative = false; - bool mIsOverlay = false; - bool mIsSlotInited = false; + bool mIsCine; + bool mIsNegative; + bool mIsOverlay; + bool mIsSlotInited; }; #endif \ No newline at end of file diff --git a/src/src/UI/Widget/thumbnailbarwidget.cpp b/src/src/UI/Widget/thumbnailbarwidget.cpp index 5195287..252ebc5 100644 --- a/src/src/UI/Widget/thumbnailbarwidget.cpp +++ b/src/src/UI/Widget/thumbnailbarwidget.cpp @@ -173,7 +173,7 @@ void ThumbnailBarWidget::Slot_setCurrentThumbnail(DicomImageView *view) { if (view != nullptr) { - if (view->HasSeries()) { + if (view->hasSeries()) { SeriesImageSet *series = view->getSeriesInstance(); auto iter = std::find_if(LabelList.begin(),LabelList.end(),[=](QWidget* widget){ if(0 == strcmp(widget->metaObject()->className(),"thumbnailImage")){ diff --git a/src/src/UI/Widget/viewcontainerwidget.cpp b/src/src/UI/Widget/viewcontainerwidget.cpp index 43ab6cc..772a282 100644 --- a/src/src/UI/Widget/viewcontainerwidget.cpp +++ b/src/src/UI/Widget/viewcontainerwidget.cpp @@ -70,7 +70,7 @@ void ViewContainerWidget::Slot_SyncEvent(DicomImageView *view, int interactionMo if (SyncHelper::getSyncState() == AUTO_SYNC) { manager.smartDo([](auto v,auto callData){ - if (v->HasSeries()) { + if (v->hasSeries()) { double* r = (double*) callData; v->SyncSlicePoint(r); v->SyncScrollBar(); @@ -80,10 +80,10 @@ void ViewContainerWidget::Slot_SyncEvent(DicomImageView *view, int interactionMo if (SyncHelper::getSyncState() == MANUAL_SYNC) { manager.smartDo([](auto v,auto callData){ - if (v->HasSeries()) { + if (v->hasSeries()) { //disable global trigger slot int *r = (int *) callData; - v->AddSlice(r[1]); + v->addSlice(r[1]); } },view, calldata,ImageViewManager::EStudyEBoundsSeries); } @@ -94,10 +94,10 @@ void ViewContainerWidget::Slot_SyncEvent(DicomImageView *view, int interactionMo if (SyncHelper::getSyncItem(ZOOM_PAN)) { manager.smartDo([](auto v,auto callData){ - if (v->HasSeries()) { + if (v->hasSeries()) { double *d = (double *)callData; double vector[3] = { d[3] - d[0],d[4] - d[1],d[5] - d[2] }; - v->SetPanOffset(vector); + v->setPanOffset(vector); } },view, calldata,ImageViewManager::EStudyEBoundsSeries); } @@ -106,9 +106,9 @@ void ViewContainerWidget::Slot_SyncEvent(DicomImageView *view, int interactionMo if (SyncHelper::getSyncItem(ZOOM_PAN)) { manager.smartDo([](auto v,auto callData){ - if (v->HasSeries()) { + if (v->hasSeries()) { double *d = (double *)callData; - v->SetZoomScale(d[1]); + v->setZoomScale(d[1]); } },view, calldata,ImageViewManager::EStudyEBoundsSeries); } @@ -117,9 +117,9 @@ void ViewContainerWidget::Slot_SyncEvent(DicomImageView *view, int interactionMo if (SyncHelper::getSyncItem(WIDTH_LEVEL)) { manager.smartDo([](auto v,auto callData){ - if (v->HasSeries()) { + if (v->hasSeries()) { double *d = (double *)callData; - v->SetWindowLevel(d[1], d[0]); + v->setWindowLevel(d[1], d[0]); } },view, calldata,ImageViewManager::EStudyEBoundsSeries); } @@ -287,7 +287,7 @@ void ViewContainerWidget::Slot_ViewEmpty(DicomImageView *view) { if (view != nullptr) { - view->ResetView(); + view->resetView(); } } @@ -330,7 +330,7 @@ void ViewContainerWidget::replaceViewWithSerie(const std::string& uniqueid, Dico curV->removeViewWithFusion(); DicomLoader *helper = DicomLoader::GetInstance(); curV->setDicomImageView(helper->getSeriesImageSet(uniqueid)); - curV->Render(); + curV->render(); } void ViewContainerWidget::toggleViewWithFusion() @@ -338,7 +338,7 @@ void ViewContainerWidget::toggleViewWithFusion() if (manager.getCurrentView()) { - if (manager.getCurrentView()->HasSeries() && manager.getCurrentView()->IsFusion()) + if (manager.getCurrentView()->hasSeries() && manager.getCurrentView()->isFusion()) { removeCurrentViewWithFusion(); } @@ -358,10 +358,10 @@ void ViewContainerWidget::replaceViewWithFusion() if (checkFusionStatus(manager.getCurrentView(), overlap_view)) { connect(overlap_view, &DicomImageView::Signal_WindowLevelEventForFusion, - manager.getCurrentView(), &DicomImageView::Slot_WindowLevelEventForFusion); + manager.getCurrentView(), &DicomImageView::fusionWindowChanged); - manager.getCurrentView()->SetFusionInput(overlap_view); - manager.getCurrentView()->Render(); + manager.getCurrentView()->setFusionInput(overlap_view); + manager.getCurrentView()->render(); return; } } @@ -380,7 +380,7 @@ bool ViewContainerWidget::checkFusionStatus(DicomImageView *base, DicomImageView SeriesImageSet* baseSeries = base->getSeriesInstance(); SeriesImageSet* overlapSeries = overlap->getSeriesInstance(); // no data - if (!base->HasSeries() || !overlap->HasSeries()) return false; + if (!base->hasSeries() || !overlap->hasSeries()) return false; // diff study if (baseSeries->getStudyUID() == nullptr || strcmp(baseSeries->getStudyUID(), overlapSeries->getStudyUID())!=0) return false; @@ -391,7 +391,7 @@ bool ViewContainerWidget::checkFusionStatus(DicomImageView *base, DicomImageView void ViewContainerWidget::updateCornerInfoAll() { manager.smartDo([](auto v, auto calldata) { - if (v->HasSeries()){ + if (v->hasSeries()){ v->updateCornerInfoAll(); } }, nullptr, nullptr, ImageViewManager::All); @@ -399,7 +399,7 @@ void ViewContainerWidget::updateCornerInfoAll() { void ViewContainerWidget::updateCornerInfoPrivacy() { manager.smartDo([](auto v, auto calldata) { - if (v->HasSeries()){ + if (v->hasSeries()){ v->updateCornerInfoPrivacy(); } }, nullptr, nullptr, ImageViewManager::All); @@ -407,8 +407,8 @@ void ViewContainerWidget::updateCornerInfoPrivacy() { void ViewContainerWidget::render() { manager.smartDo([](auto v, auto calldata) { - if (v->HasSeries()){ - v->Render(); + if (v->hasSeries()){ + v->render(); } }, nullptr, nullptr, ImageViewManager::All); } @@ -416,18 +416,18 @@ void ViewContainerWidget::render() { void ViewContainerWidget::activeMeasure() { manager.smartDo([](auto v, auto calldata) { - if (v->HasSeries()){ + if (v->hasSeries()){ Measure* measure = MeasureFactory::getMeasure((AnnotationActorType)MeasureHelper::getMeasureType()); - v->ActiveMeasure(measure); + v->activeMeasure(measure); } }, nullptr, nullptr, ImageViewManager::All); } void ViewContainerWidget::SetCurrentViewSliceOrientation(int type) { - manager.getCurrentView()->SetSliceOrientation(type); + manager.getCurrentView()->getSliceOrientation(type); } int ViewContainerWidget::GetCurrentViewSliceOrientation() { - return manager.getCurrentView()->GetSliceOrientation();; + return manager.getCurrentView()->getSliceOrientation();; } diff --git a/src/src/UI/Window/QDicomViewer.cpp b/src/src/UI/Window/QDicomViewer.cpp index e498480..8a7668f 100644 --- a/src/src/UI/Window/QDicomViewer.cpp +++ b/src/src/UI/Window/QDicomViewer.cpp @@ -300,9 +300,9 @@ void QDicomViewer::SetupAnnoTool(QToolButton* annoBtn) m->addAction(tr("Show Dicom tags"), this, [&] { DicomImageView* curV = ui->viewContainer->getCurrentView(); - if (curV->HasSeries()) + if (curV->hasSeries()) { - curV->ShowMetaData(); + curV->showMetaData(); } }); @@ -327,19 +327,19 @@ void QDicomViewer::executeActiveMeasure() case AnnotationActorType::DeleteSelectedAnn: if (curV != nullptr) { - curV->DeleteSelectedMeasure(); + curV->deleteSelectedMeasure(); } break; case AnnotationActorType::DeleteSliceAnn: if (curV != nullptr) { - curV->DeleteCurrentSliceMeasure(); + curV->deleteCurrentSliceMeasure(); } break; case AnnotationActorType::DeleteSeriesAnn: if (curV != nullptr) { - curV->DeleteCurrentSeriesMeasure(); + curV->deleteCurrentSeriesMeasure(); } break; default: @@ -422,7 +422,7 @@ void QDicomViewer::SetupMeasureTool(QToolButton* measureBtn) DicomImageView* curV = ui->viewContainer->getCurrentView(); if (curV != nullptr) { - curV->DeleteSelectedMeasure(); + curV->deleteSelectedMeasure(); } }); m->addAction(tr("Delete all in current slice"), this, [=] { @@ -431,7 +431,7 @@ void QDicomViewer::SetupMeasureTool(QToolButton* measureBtn) DicomImageView* curV = ui->viewContainer->getCurrentView(); if (curV != nullptr) { - curV->DeleteCurrentSliceMeasure(); + curV->deleteCurrentSliceMeasure(); } }); m->addAction(tr("Delete all in current series"), this, [=] { @@ -441,7 +441,7 @@ void QDicomViewer::SetupMeasureTool(QToolButton* measureBtn) DicomImageView* curV = ui->viewContainer->getCurrentView(); if (curV != nullptr) { - curV->DeleteCurrentSeriesMeasure(); + curV->deleteCurrentSeriesMeasure(); } }); @@ -468,7 +468,7 @@ void QDicomViewer::SetupCineTool(QToolButton* cineBtn) cineBtn->setToolTip(QString("Cine")); connect(cineBtn, &QToolButton::clicked, this, [&] { DicomImageView* curV = ui->viewContainer->getCurrentView(); - if (curV->HasSeries()) + if (curV->hasSeries()) { if (curV->IsCine()) { @@ -563,9 +563,9 @@ void QDicomViewer::SetupAdjustTool(QToolButton* winlevelBtn) m->addAction(tr("Negative"), this, [=](bool value) { winlevelBtn->setChecked(true); DicomImageView* curV = ui->viewContainer->getCurrentView(); - if (curV != nullptr && curV->HasSeries()) + if (curV != nullptr && curV->hasSeries()) { - curV->ToggleNegativeMode(); + curV->negativeWindow(); } }); @@ -591,47 +591,47 @@ void QDicomViewer::SetupFlipTool(QToolButton* flipBtn) m = new QMenu(this); m->addAction(tr("Rotate 90 CCW"), this, [&] { DicomImageView* curV = ui->viewContainer->getCurrentView(); - if (curV != nullptr && curV->HasSeries()) + if (curV != nullptr && curV->hasSeries()) { - curV->Rotate(90, ROTATE_90_CCW); + curV->rotateImage(90, ROTATE_90_CCW); } }); m->addAction(tr("Rotate 90 CW"), this, [&] { DicomImageView* curV = ui->viewContainer->getCurrentView(); - if (curV != nullptr && curV->HasSeries()) + if (curV != nullptr && curV->hasSeries()) { - curV->Rotate(-90, ROTATE_90_CW); + curV->rotateImage(-90, ROTATE_90_CW); } }); m->addAction(tr("Rotate 180"), this, [&] { DicomImageView* curV = ui->viewContainer->getCurrentView(); - if (curV != nullptr && curV->HasSeries()) + if (curV != nullptr && curV->hasSeries()) { - curV->Rotate(180, ROTATE_180); + curV->rotateImage(180, ROTATE_180); } }); m->addSeparator(); m->addAction(tr("Flip horizontal"), this, [&] { DicomImageView* curV = ui->viewContainer->getCurrentView(); - if (curV != nullptr && curV->HasSeries()) + if (curV != nullptr && curV->hasSeries()) { - curV->HFlip(); + curV->hFlipImage(); } }); m->addAction(tr("Flip vertical"), this, [&] { DicomImageView* curV = ui->viewContainer->getCurrentView(); - if (curV != nullptr && curV->HasSeries()) + if (curV != nullptr && curV->hasSeries()) { - curV->VFlip(); + curV->vFlipImage(); } }); m->addSeparator(); m->addAction(tr("Clear transformations"), this, [&] { DicomImageView* curV = ui->viewContainer->getCurrentView(); - if (curV != nullptr && curV->HasSeries()) + if (curV != nullptr && curV->hasSeries()) { curV->ClearTransformations(); } @@ -641,9 +641,9 @@ void QDicomViewer::SetupFlipTool(QToolButton* flipBtn) connect(flipBtn, &QPushButton::clicked, this, [&] { DicomImageView* curV = ui->viewContainer->getCurrentView(); - if (curV != nullptr && curV->HasSeries()) + if (curV != nullptr && curV->hasSeries()) { - curV->Rotate(90, ROTATE_90_CCW); + curV->rotateImage(90, ROTATE_90_CCW); } }); } diff --git a/src/src/UI/Window/customwindow.cpp b/src/src/UI/Window/customwindow.cpp index 7aab0a9..05a023f 100644 --- a/src/src/UI/Window/customwindow.cpp +++ b/src/src/UI/Window/customwindow.cpp @@ -30,7 +30,7 @@ void Customwindow::setCurrentView(DicomImageView *cur) } double width = 0; double level = 0; - m_curV->GetWindowLevel(level, width); + m_curV->getWindowLevel(level, width); ui.led_WL->setText(QString("%1").arg(level)); ui.led_WW->setText(QString("%1").arg(width)); } @@ -38,6 +38,6 @@ void Customwindow::setCurrentView(DicomImageView *cur) void Customwindow::onBtnOKClicked() { - m_curV->SetWindowLevel(ui.led_WL->text().toDouble(), ui.led_WW->text().toDouble()); + m_curV->setWindowLevel(ui.led_WL->text().toDouble(), ui.led_WW->text().toDouble()); this->close(); } \ No newline at end of file