Refactor Code ,change SeriesInstance to SeriesImageSet, add property to SeriesImageSet.

This commit is contained in:
Krad
2022-03-01 10:42:49 +08:00
parent d5d1f7cc6c
commit ffb1a4d11f
16 changed files with 118 additions and 367 deletions

View File

@@ -13,7 +13,7 @@ public:
static OrientationMapType orien_map;
};
class SeriesInstance;
class SeriesImageSet;
class DICOMDirectoryHelper;
@@ -41,9 +41,8 @@ public:
UniqueIDInfo_t* createUniqueID(const std::string &dicomName, SeriesOpenMode openMode);
bool IsDuplicate(UniqueIDInfo_t* unique);
//set imagedata from reader and set viewer
SeriesInstance* createSeries(UniqueIDInfo_t* uniqueID, DicomTagInfo_t* tag_info,
vtkGenericOpenGLRenderWindow* gl_rewin, bool copy = false);
SeriesImageSet *createSeries(UniqueIDInfo_t *uniqueID);
AddDicomType getAddDicomType()const
{
return m_addType;
@@ -55,25 +54,16 @@ public:
//if not duplicate
void InitFromRead(SeriesInstance* instance);// , DicomTagInfo_t* tag_info);
void InitFromCopy(SeriesInstance* instance);
bool deleteSeriesInstance(SeriesInstance* old);
// load series data to m_patient
SeriesInstance* addSeriesInstance(SeriesInstance* instance, bool copy =false);
SeriesImageSet* InitFromRead(const UniqueIDInfo &uniqueID);// , DicomTagInfo_t* tag_info);
SeriesInfo_t* getSerieInfo(const UniqueIDInfo &uniqueID);
SeriesInstance* getFirstInstance(const UniqueIDInfo &uniqueID);
SeriesImageSet* getFirstInstance(const UniqueIDInfo &uniqueID);
InstancesVecType* getInstancesVec(const UniqueIDInfo &uniqueID);
//for export use
void getOpenedInstancesVec(InstancesVecType& retVec);
//void deleteSeriesInstance(SeriesInstance* instance,bool from_map = true);
//void deleteSeriesInstance(SeriesImageSet* instance,bool from_map = true);
void deleteInstanceFromMap(UniqueIDInfo uniqueID);
void setDirObservers(void* client);
void setFileObservers(void* client);
private:
explicit DicomLoader();

View File

@@ -6,56 +6,47 @@
//#include "QVTKWidget.h"
#include <memory>
class myQVTKOpenGLNativeWidget;
class DicomLoader;
class SeriesInstance :public QObject
class ExtendMedicalImageProperties;
class SeriesImageSet : public QObject
{
Q_OBJECT
friend class DicomLoader;
public:
SeriesInstance::SeriesInstance(UniqueIDInfo_t* uniqueID, DicomTagInfo_t* tag_info,
vtkGenericOpenGLRenderWindow* glrenWin);
~SeriesInstance();
SeriesImageSet::SeriesImageSet(const UniqueIDInfo_t& uniqueID,ExtendMedicalImageProperties* property, vtkImageData* imagedata);
~SeriesImageSet() override;
void setUpSeriesInstance();
//UniqueID
UniqueIDInfo_t* getUniqueID()const {
return m_pUniqueID;
};
SeriesOpenMode getSerirsOpenMode() const
{
return m_pUniqueID->open_mode;
UniqueIDInfo_t* getUniqueID() {
return &m_pUniqueID;
};
const char* getCurImageName()const;
const char* getCurSeriesName() const;
//SeriesTags
DicomTagInfo_t* getDicomTagInfo()const
{
return m_pSeriesTags;
}
int GetSeriesNumber()const
{
return atoi(m_pSeriesTags->m_SeriesNumber.c_str());
}
infinitiViewer* getImageViewer2()
{
return m_imageViewer;
return 0;
}
//image data
QPixmap GetPixmap();
vtkImageData* GetData()
{
return m_image;
};
//image data
ExtendMedicalImageProperties* GetProperty()
{
return m_property;
};
//camera config
@@ -81,21 +72,11 @@ private:
QSize labelSizeHint() const {
return QSize(image_label_size, image_label_size);
}
QImage vtkImageDataToQImage(vtkImageData* imageData);
vtkSmartPointer<vtkGenericOpenGLRenderWindow> m_glrenWin;
vtkSmartPointer <infinitiViewer> m_imageViewer;
vtkSmartPointer <vtkImageData> m_image;
//vtkSmartPointer <vtkImageData> m_overlap;
ExtendMedicalImageProperties* m_property = nullptr;
FileNamesContainerType m_fileNames;
DicomTagInfo_t* m_pSeriesTags;
UniqueIDInfo_t* m_pUniqueID;
UniqueIDInfo_t m_pUniqueID;
static qint32 image_label_size;

View File

@@ -23,7 +23,6 @@ class ExportDialog : public QDialog
public:
explicit ExportDialog(QWidget *parent = nullptr);
~ExportDialog();
//void setCurSeries(SeriesInstance *serie);
//void setViewContainer(ViewContainerWidget *widget)
void setCurView(DicomImageView *view);

View File

@@ -5,7 +5,7 @@
#include <qsize.h>
#include <qlist.h>
class SeriesInstance;
class SeriesImageSet;
class ExportOptions
{
@@ -41,7 +41,7 @@ public:
QSize customPictureSize;//apply when user choose customsize
SeriesInstance *serie;
SeriesImageSet *serie;
};
#endif // EXPORTOPTIONS_H

View File

@@ -40,7 +40,7 @@ const double scalarSensitivity = 4.0;
class SeriesInstance;
class SeriesImageSet;
class thumbnailImage;
enum DicomModality
@@ -382,7 +382,7 @@ private:
};
typedef std::vector <SeriesInstance*> InstancesVecType;
typedef std::vector <SeriesImageSet*> InstancesVecType;
typedef struct SeriesInfo
{

View File

@@ -3,7 +3,7 @@
#include <QOpenGLWidget>
#include <QScrollBar>
#include <QGridLayout>
#include "base/SeriesInstance.h"
#include "base/SeriesImageSet.h"
#include <QThread>
class infinitiViewer;
@@ -56,10 +56,10 @@ public:
void Render();
//Series
void setDicomImageView(SeriesInstance *series);
void setDicomImageView(SeriesImageSet *series);
bool HasSeries();
int getSeriesNumber();
SeriesInstance* getSeriesInstance()
SeriesImageSet* getSeriesInstance()
{
return _Series;
}
@@ -205,14 +205,13 @@ private:
void orphanizeSeriesInstance();
void ResetPanZoom();
//bool deleteOlderSeries(SeriesInstance* old);
void initScrollbar();
void CopyFromSeries(SeriesInstance *series);
void CopyFromSeries(SeriesImageSet *series);
vtkSmartPointer <vtkGenericOpenGLRenderWindow> m_glrenWin;
infinitiViewer* _ImageViewer = nullptr;
SeriesInstance* _Series =nullptr;
SeriesImageSet* _Series = nullptr;
QScrollBar* _scrollBar =nullptr;
MyTitleBar *_titleBar =nullptr;
QVTKOpenGLNativeWidget* _glWidt = nullptr;

View File

@@ -10,7 +10,7 @@
#include "QScrollArea.h"
class ImageInstance;
class SeriesInstance;
class SeriesImageSet;
class thumbnailImage;
class DicomImageView;

View File

@@ -1,4 +1,4 @@
#pragma once
#pragma once
#include <QFrame>
#include <QScrollBar>
#include "global/QGlobals.h"
@@ -7,7 +7,7 @@
class QGridLayout;
class DicomImageView;
class SeriesInstance;
class SeriesImageSet;
class ViewContainerWidget : public QFrame {
Q_OBJECT
@@ -18,7 +18,7 @@ public:
~ViewContainerWidget();
SeriesInstance* getCurrentSeries() const;
SeriesImageSet* getCurrentSeries() const;
DicomImageView* getCurrentView() const;
DicomImageView* getNextView() const;
QList<DicomImageView*> getViewList() const;

View File

@@ -1,6 +1,6 @@
#include "QDicomViewer.h"
#include "QDicomViewer.h"
#include "global/include_all.h"
#include "base/seriesinstance.h"
#include "base/SeriesImageSet.h"
#include "view/subview/gridpopwidget.h"
#include "view/ViewContainerWidget.h"
#include "base/DicomLoader.h"

View File

@@ -2,7 +2,7 @@
#include <QObject>
#include <QMainWindow>
#include <QStatusBar>
#include "base/seriesinstance.h"
#include "base/SeriesImageSet.h"
#include "DICOMDirectoryHelper.h"
#include "ExtendMedicalImageProperties.h"
#include "vtkDICOMImageReader2.h"
@@ -152,44 +152,18 @@ bool DicomLoader::IsDuplicate(UniqueIDInfo_t* unique)
return false;
}
//该函数所在的逻辑分支暂时不存在!!!
void DicomLoader::InitFromCopy(SeriesInstance* instance)
{
//copy data from existing instance!
UniqueIDInfo_t* unique = instance->getUniqueID();
//SeriesInfo_t* serie_info = getSerieInfo(*unique);
SeriesInstance *exists = getFirstInstance(*unique);
//DicomTagInfo_t *tag_info = serie_info->tag_info;
//instance->setDicomTagInfo(exists->getDicomTagInfo());
//copyDicomTagsInfo(exists, instance);
//smart pointer reference count++
instance->m_image = exists->m_image;
if (exists->getUniqueID()->open_mode == DIR_OPEN_MODE)
{
//vector deep copy
//exists->m_fileNames = instance->m_fileNames;This is a bug<75><67>
instance->m_fileNames = exists->m_fileNames;
}
}
void DicomLoader::InitFromRead(SeriesInstance* instance)//, DicomTagInfo_t* tag_info)
SeriesImageSet* DicomLoader::InitFromRead(const UniqueIDInfo &uniqueID)//, DicomTagInfo_t* tag_info)
{
if (reader) reader->Delete();
reader = vtkDICOMImageReader2::New();
reader->SetFileNames(*(currentImageProperty->GetFileNames()));
reader->Update();
instance->m_image = reader->GetOutput();
if (instance->getUniqueID()->open_mode == DIR_OPEN_MODE) {
auto files = reader->GetDICOMFileNames();
std::for_each(files->begin(), files->end(), [=](auto v) {
instance->m_fileNames.push_back(v);
});
}
SeriesImageSet* result = new SeriesImageSet(uniqueID,currentImageProperty,reader->GetOutput());
reader->Delete();
reader = nullptr;
return result;
}
// 无用函数
@@ -203,7 +177,7 @@ void DicomLoader::deleteInstanceFromMap(UniqueIDInfo uniqueID)
//in order
SeriesInfo_t* the_series = cur_study_iter->second->series->at(uniqueID.series_uid);
//SeriesInstance *cur_series = cur_study_iter->second->series->at(uniqueID.series_uid);
//SeriesImageSet *cur_series = cur_study_iter->second->series->at(uniqueID.series_uid);
//delete all the instances assotiated with this series UID
@@ -274,7 +248,7 @@ void DicomLoader::getOpenedInstancesVec(InstancesVecType& retVec)
cur_series->end(); cur_series_iter++)
{
//default export instance: the recently added one
SeriesInstance *last = cur_series_iter->second->instances->back();
SeriesImageSet *last = cur_series_iter->second->instances->back();
if(nullptr!=last)
{
retVec.push_back(last);
@@ -285,7 +259,7 @@ void DicomLoader::getOpenedInstancesVec(InstancesVecType& retVec)
}
}
SeriesInstance* DicomLoader::getFirstInstance(const UniqueIDInfo &uniqueID)
SeriesImageSet* DicomLoader::getFirstInstance(const UniqueIDInfo &uniqueID)
{
PatientsMapType::iterator cur_patient_iter = m_patients.find(uniqueID.patient_name);
if (cur_patient_iter == m_patients.end())
@@ -331,36 +305,6 @@ SeriesInfo_t* DicomLoader::getSerieInfo(const UniqueIDInfo &uniqueID)
return the_series->second;
}
bool DicomLoader::deleteSeriesInstance(SeriesInstance* old)
{
//DicomLoader *helper = DicomLoader::GetInstance();
InstancesVecType* inst_vec = instance->getInstancesVec(*old->getUniqueID());
//if there is only one instance<63><65>do not delete
if (inst_vec->size() == SINGLE_INSTANCE)
{
//Comment1:You should set Series Instance to no DicomImageView
//Comment2:It is hard to tell wether it is in use,you'd better do nothing
//old->orphanizeSeriesInstance();
//You should set Series Instance to no DicomImageView
//old->orphanizeSeriesInstance();
return false;
}
for (InstancesVecType::iterator iter = inst_vec->begin(); iter != inst_vec->end(); iter++)
{
if (old == *iter)
{
inst_vec->erase(iter);
delete old;
return true;
}
}
return false;
}
SeriesInstance* DicomLoader::addSeriesInstance(SeriesInstance* instance,bool copy)
{
return nullptr;
}
@@ -412,81 +356,7 @@ UniqueIDInfo_t* DicomLoader::createUniqueID(const std::string &dicomName, Series
}
void DicomLoader::setDirObservers(void* client)
{
//Adding a reading progress observer to the reader so we can see how are we reading.
// itk::CStyleCommand::Pointer pcl = itk::CStyleCommand::New();
// pcl->SetCallback((itk::CStyleCommand::FunctionPointer)&itkReaderProCallbackFunction_DIR);
// pcl->SetClientData(client);
// //m_itkSeriesReader->AddObserver(itk::ProgressEvent(), pcl);
// m_itkSeriesReader->AddObserver(itk::ProgressEvent(), pcl);
//
// itk::CStyleCommand::Pointer pcl2 = itk::CStyleCommand::New();
// pcl2->SetClientData(client);
// pcl2->SetCallback((itk::CStyleCommand::FunctionPointer)&itkReaderEndCallbackFunction);
// //m_itkSeriesReader->AddObserver(itk::EndEvent(), pcl2);
// m_itkSeriesReader->AddObserver(itk::EndEvent(), pcl2);
}
void DicomLoader::setFileObservers(void* client)
{
//Adding a reading progress observer to the reader so we can see how are we reading.
// itk::CStyleCommand::Pointer pcl = itk::CStyleCommand::New();
// pcl->SetCallback((itk::CStyleCommand::FunctionPointer)&itkReaderProCallbackFunction_FILE);
// pcl->SetClientData(client);
// //m_itkSeriesReader->AddObserver(itk::ProgressEvent(), pcl);
// m_itkSeriesReader->AddObserver(itk::ProgressEvent(), pcl);
//
// itk::CStyleCommand::Pointer pcl2 = itk::CStyleCommand::New();
// pcl2->SetClientData(client);
// pcl2->SetCallback((itk::CStyleCommand::FunctionPointer)&itkReaderEndCallbackFunction);
// //m_itkSeriesReader->AddObserver(itk::EndEvent(), pcl2);
// m_itkSeriesReader->AddObserver(itk::EndEvent(), pcl2);
}
//void DicomLoader::itkReaderProCallbackFunction_FILE(itk::ProcessObject* obj, const itk::ProgressEvent&, void* data)
//{
// QMainWindow* qdv = reinterpret_cast<QMainWindow*>(data);
// QString status = QString("Reading Images...");
// qdv->statusBar()->showMessage(status);
//}
//void DicomLoader::itkReaderProCallbackFunction_DIR(itk::ProcessObject* obj, const itk::ProgressEvent&, void* data)
//{
// QMainWindow* qdv = reinterpret_cast<QMainWindow*>(data);
// QString status = QString("Scanning Folder...(%1%)").arg(100 * obj->GetProgress());
// qdv->statusBar()->showMessage(status);
//}
//
//void DicomLoader::itkReaderEndCallbackFunction(itk::ProcessObject* obj, const itk::ProgressEvent&, void* data)
//
//{
// QMainWindow* qdv = reinterpret_cast<QMainWindow*>(data);
// qdv->statusBar()->showMessage("Ready");
//}
//
//void DicomLoader::copyDicomTagsInfo(SeriesInstance* origin, SeriesInstance* copy)
//{
// const DicomTagInfo_t *origin_info = origin->getConstDicomTagInfo();
// DicomTagInfo_t *copy_info = copy->getDicomTagInfo();
// copy_info->m_PatientName = origin_info->m_PatientName;
// copy_info->m_StudyDescription = origin_info->m_StudyDescription;
// copy_info->m_Institution = origin_info->m_Institution;
// copy_info->m_StudyDate = origin_info->m_StudyDate;
// copy_info->m_Modality = origin_info->m_Modality;
// copy_info->lbl_ser_num = origin_info->lbl_ser_num;
// copy_info->m_SeriesNumber = origin_info->m_SeriesNumber;
// copy_info->m_SeriesDescription = origin_info->m_SeriesDescription;
// copy_info->m_StudyTime = origin_info->m_StudyTime;
// copy_info->m_PatientBirth = origin_info->m_PatientBirth;
// copy_info->m_SliceNumber = origin_info->m_SliceNumber;
// copy_info->m_orientation = origin_info->m_orientation;
// copy_info->WL = origin_info->WL;
// copy_info->WW = origin_info->WW;
//
//}
DicomTagInfo_t* DicomLoader::createDicomTagsInfo()
{
@@ -528,21 +398,11 @@ DicomTagInfo_t* DicomLoader::createDicomTagsInfo()
}
SeriesInstance* DicomLoader::createSeries(UniqueIDInfo_t* uniqueID, DicomTagInfo_t* tag_info, vtkGenericOpenGLRenderWindow* gl_rewin, bool copy)
SeriesImageSet* DicomLoader::createSeries(UniqueIDInfo_t* uniqueID)
{
SeriesInstance* series = new SeriesInstance(uniqueID, tag_info, gl_rewin);
/******in order*******/
//whether create or copy from existing one
//暂时不走该分支!!!
if (copy)
{
instance->InitFromCopy(series);
}
else
{
instance->InitFromRead(series);
}
SeriesImageSet* series =instance->InitFromRead(*uniqueID);
series->setUpSeriesInstance();
return series;
}

View File

@@ -0,0 +1,60 @@
#include "base/SeriesImageSet.h"
#include <vtkRendererCollection.h>
#include "view/DicomImageView.h"
#include "base/DicomLoader.h"
#include <QPainter>
#include <QDebug>
#include "ExtendMedicalImageProperties.h"
qint32 SeriesImageSet::image_label_size = 100;
//----------------------------------------------------------------
SeriesImageSet::SeriesImageSet(const UniqueIDInfo& uniqueID,ExtendMedicalImageProperties* property, vtkImageData* imagedata) :
m_pUniqueID(uniqueID)
{
m_image = imagedata;
m_property = property;
}
//----------------------------------------------------------------
SeriesImageSet::~SeriesImageSet() {
if (m_property) m_property->Delete();
m_property = nullptr;
}
void SeriesImageSet::setUpSeriesInstance()
{
// m_imageViewer->SetInputData(m_image);
// m_imageViewer->SetRenderWindow(m_glrenWin);
// m_imageViewer->SetupInteractor(m_glrenWin->GetInteractor());
//
// m_imageViewer->initCornerInfo(m_pSeriesTags);
// m_imageViewer->setUpImageViewer();
//
//
// vtkCamera* cam = m_imageViewer->GetRenderer()->GetActiveCamera();
// m_extent = m_image->GetDimensions()[0] * m_pSeriesTags->spacing[0] * 0.5;
// cam->SetParallelScale(m_extent);
//
//
// //remember
// m_imageViewer->GetRenderer()->GetActiveCamera()->GetViewUp(m_vup);
// m_imageViewer->GetRenderer()->GetActiveCamera()->GetPosition(m_cameraPosition);
}
const char* SeriesImageSet::getCurImageName() const
{
return nullptr;
}
const char* SeriesImageSet::getCurSeriesName() const
{
if (m_pUniqueID.dicom_name.empty())
return nullptr;
return m_pUniqueID.dicom_name.c_str();
}

View File

@@ -1,133 +0,0 @@
#include "base/seriesinstance.h"
#include "qsurfaceformat.h"
#include <vtkRendererCollection.h>
#include "view/DicomImageView.h"
#include "base/DicomLoader.h"
#include "vtkImageMapToWindowLevelColors.h"
#include "vtkImageProperty.h"
#include <QPainter>
#include <QDebug>
#include "vtkRenderer.h"
#include "vtkDiscretizableColorTransferFunction.h"
qint32 SeriesInstance::image_label_size = 100;
//----------------------------------------------------------------
SeriesInstance::SeriesInstance(UniqueIDInfo_t* uniqueID, DicomTagInfo_t* tag_info,
vtkGenericOpenGLRenderWindow* glrenWin) :
m_pUniqueID(uniqueID),
m_pSeriesTags(tag_info),
m_glrenWin(glrenWin)
{
m_imageViewer = vtkSmartPointer<infinitiViewer>::New();
m_image = vtkSmartPointer<vtkImageData>::New();
}
//----------------------------------------------------------------
SeriesInstance::~SeriesInstance() {
}
void SeriesInstance::setUpSeriesInstance()
{
m_imageViewer->SetInputData(m_image);
m_imageViewer->SetRenderWindow(m_glrenWin);
m_imageViewer->SetupInteractor(m_glrenWin->GetInteractor());
m_imageViewer->initCornerInfo(m_pSeriesTags);
m_imageViewer->setUpImageViewer();
vtkCamera* cam = m_imageViewer->GetRenderer()->GetActiveCamera();
m_extent = m_image->GetDimensions()[0] * m_pSeriesTags->spacing[0] * 0.5;
cam->SetParallelScale(m_extent);
//remember
m_imageViewer->GetRenderer()->GetActiveCamera()->GetViewUp(m_vup);
m_imageViewer->GetRenderer()->GetActiveCamera()->GetPosition(m_cameraPosition);
}
const char* SeriesInstance::getCurImageName() const
{
if (m_pUniqueID->open_mode == FILE_OPEN_MODE)
{
if (m_pUniqueID->dicom_name.empty())
return nullptr;
return m_pUniqueID->dicom_name.c_str();
}
if (m_pUniqueID->open_mode == DIR_OPEN_MODE)
{
int index = m_imageViewer->GetSlice();
return m_fileNames.at(index).c_str();
}
return nullptr;
}
const char* SeriesInstance::getCurSeriesName() const
{
if (m_pUniqueID->dicom_name.empty())
return nullptr;
return m_pUniqueID->dicom_name.c_str();
}
QPixmap SeriesInstance::GetPixmap()
{
QImage qimage = vtkImageDataToQImage(m_image);
return QPixmap::fromImage(qimage);
}
QImage SeriesInstance::vtkImageDataToQImage(vtkImageData* imageData)
{
if (!imageData) { return QImage(); }
int wl = m_pSeriesTags->WL;
int ww = m_pSeriesTags->WW;
/// \todo retrieve just the UpdateExtent
int width = imageData->GetDimensions()[0];
int height = imageData->GetDimensions()[1];
int slice_num = 0;
if (m_pUniqueID->open_mode == DIR_OPEN_MODE)
{
slice_num = std::atoi(m_pSeriesTags->m_SliceNumber.c_str()) / 2;
}
QImage image(width, height, QImage::Format_RGB32);
QRgb *rgbPtr = reinterpret_cast<QRgb *>(image.bits());// +width * (height - 1);
PixelType *colorsPtr = reinterpret_cast<PixelType*>(imageData->GetScalarPointer(0, 0, slice_num));
//unsigned char *colorsPtr = reinterpret_cast<unsigned char *>(imageData->GetScalarPointer());
// Loop over the vtkImageData contents.
for (int row = 0; row < height; row++)
{
for (int col = 0; col < width; col++)
{
// Swap the vtkImageData RGB values with an equivalent QColor
//qDebug() << colorsPtr[0];
PixelType adapt_color;
if ((colorsPtr[0] - wl) < -ww/2)
{
adapt_color = static_cast<PixelType>(0);
}
else if ((colorsPtr[0] - wl) > ww/2)
{
adapt_color = static_cast<PixelType>(255.0);
}
else
{
adapt_color = static_cast<PixelType>((1.0*(colorsPtr[0] - wl) / ww + 0.5) * 255.0);
}
*(rgbPtr++) = QColor(adapt_color, adapt_color, adapt_color).rgb();
colorsPtr += imageData->GetNumberOfScalarComponents();
}
//rgbPtr -= width * 2;
}
QImage resized = image.scaled(labelSizeHint(), Qt::KeepAspectRatio);
return resized;
}

View File

@@ -1,7 +1,7 @@
#include "export/dicomexporter.h"
#include "include_vitk.h"
#include "vtkErrorCode.h"
#include "seriesinstance.h"
#include "SeriesImageSet.h"
DicomExporter::DicomExporter(QObject *parent)

View File

@@ -63,7 +63,6 @@ void ExportDialog::onBtnExportClicked()
//export files
if (ui->rbCurrentImage->isChecked())//current image
{
//SeriesInstance *instance = viewContainerWidget->getCurrentSeries();
if (cur_view->HasSeries())
{
QString imageName(cur_view->getSeriesInstance()->getCurImageName());
@@ -72,7 +71,6 @@ void ExportDialog::onBtnExportClicked()
}
else if (ui->rbCurrentSeries->isChecked())//current series
{
//SeriesInstance *instance = viewContainerWidget->getCurrentSeries();
if (cur_view->HasSeries())
{
QString serieName(cur_view->getSeriesInstance()->getCurSeriesName());
@@ -85,7 +83,7 @@ void ExportDialog::onBtnExportClicked()
DicomLoader::GetInstance()->getOpenedInstancesVec(instanceVec);
for (int i = 0; i < instanceVec.size(); i++)
{
SeriesInstance *instance = instanceVec.at(i);
SeriesImageSet *instance = instanceVec.at(i);
if (instance != nullptr)
{
options.inputData.push_back(instance->getCurSeriesName());

View File

@@ -1,7 +1,7 @@
#include "view/thumbnailbarwidget.h"
#include "view/thumbnailImage.h"
#include "base/DicomLoader.h"
#include "base/seriesinstance.h"
#include "base/SeriesImageSet.h"
#include <QTimer>
#include <QDir>
#include <QDebug>
@@ -218,7 +218,7 @@ void ThumbnailBarWidget::Slot_setCurrentThumbnail(DicomImageView *view)
if (view != nullptr)
{
if (view->HasSeries()) {
SeriesInstance *series = view->getSeriesInstance();
SeriesImageSet *series = view->getSeriesInstance();
//set to another
DicomLoader *helper = DicomLoader::GetInstance();
SeriesInfo_t* cur_serie = helper->getSerieInfo(*series->getUniqueID());

View File

@@ -1,4 +1,4 @@
#include "viewcontainerwidget.h"
#include "viewcontainerwidget.h"
#include "thumbnailImage.h"
#include "DicomLoader.h"
#include <QWidget>
@@ -59,7 +59,7 @@ DicomImageView* ViewContainerWidget::getNextView() const
SeriesInstance* ViewContainerWidget::getCurrentSeries() const
SeriesImageSet* ViewContainerWidget::getCurrentSeries() const
{
if (current_view_ != nullptr)
{
@@ -390,7 +390,7 @@ void ViewContainerWidget::Slot_ViewEmpty(DicomImageView *view)
void ViewContainerWidget::Slot_DragDropEvent(DicomImageView *view, thumbnailImage* tb)
{
SeriesInfo_t* serie_info = tb->getSeriesInfo();
SeriesInstance* old = nullptr;
SeriesImageSet* old = nullptr;
bool copy = true;
if (view->HasSeries())
@@ -409,7 +409,7 @@ void ViewContainerWidget::Slot_ThumbnailClickEvent(thumbnailImage* tb)
return;
}
SeriesInfo_t* serie_info = tb->getSeriesInfo();
SeriesInstance* old = nullptr;
SeriesImageSet* old = nullptr;
bool copy = true;
if (view->HasSeries())
@@ -425,10 +425,7 @@ void ViewContainerWidget::replaceViewWithSerie(UniqueIDInfo_t* unique_info, Dico
curV->removeViewWithFusion();
DicomLoader *helper = DicomLoader::GetInstance();
vtkGenericOpenGLRenderWindow* grw = curV->getRenWin();
SeriesInstance* instance = helper->createSeries(unique_info, tag_info, grw, copy);
curV->setDicomImageView(instance);
curV->setDicomImageView(helper->createSeries(unique_info));
curV->Render();
//delete old after new instance render
if (old)