bool useInputFileUID = true;
if (m_ArgsInfo.newSeriesUID_flag || m_ArgsInfo.newStudyUID_flag || seriesUIDGiven || studyUIDGiven) {
useInputFileUID = false;
+ }
+ else {
#if GDCM_MAJOR_VERSION < 2
gdcmIO->SetKeepOriginalUID(true);
#endif
- }
- else {
namesGenerator->SetOutputDirectory( m_ArgsInfo.outputDir_arg );
filenames_out = namesGenerator->GetOutputFileNames();
}
int n_image_loaded=0;
std::string win(""), lev("");
+ int first_of_wl_set = -1;
+ bool new_wl_set = false;
bool link_images = false;
if (argc >1) {
for (int i = 1; i < argc; i++) {
}
else if (parse_mode == P_WINDOW) { // handle negative window values
win=current;
+ window.ApplyWindowToSetOfImages(atof(win.c_str()), first_of_wl_set, n_image_loaded-1);
parse_mode=P_NORMAL;
+ new_wl_set = false;
continue;
} else if (parse_mode == P_LEVEL) { // handle negative level values
lev=current;
+ window.ApplyLevelToSetOfImages(atof(lev.c_str()), first_of_wl_set, n_image_loaded-1);
parse_mode=P_NORMAL;
+ new_wl_set = false;
continue;
}
if ((current=="--help") || (current=="-h")) {
<< "Open file(s) for visualization." << std::endl << std::endl
<< "OPTIONS may be:" << std::endl
<< "--help \t Print command line help and exit." << std::endl
- << "--window number\t Gray scale window width for all images." << std::endl
- << "--level number \t Gray scale window level for all images." << std::endl
+ << "--window number\t Gray scale window width for set of images appearing before in the cmd line (may appear more than once)." << std::endl
+ << "--level number \t Gray scale window level for set of images appearing before in the cmd line (may appear more than once)." << std::endl
<< "--linkall \t Link pan, zoom and spatial position of crosshair in images." << std::endl
<< "--log \t Log output messages in vv-log directory." << std::endl
<< "--state file \t Read display parameters from file." << std::endl
} else if (current == "--sequence") {
if(open_mode==O_BASE) n_image_loaded++; //count only one for the whole sequence
parse_mode=P_SEQUENCE;
+ if (!new_wl_set) {
+ new_wl_set = true;
+ first_of_wl_set = n_image_loaded-1;
+ }
} else if (current == "--window") {
parse_mode=P_WINDOW;
} else if (current == "--level") {
parse_mode=P_LEVEL;
} else if (current == "--linkall") {
- link_images = true;
- }
- else if (current == "--log") {
+ link_images = true;
+ }
+ else if (current == "--log") {
std::string log_dir = QDir::tempPath().toStdString() + std::string("/vv-log");
if(itksys::SystemTools::FileExists(log_dir.c_str()) &&
sequence_filenames.push_back(current);
} else if (parse_mode == P_WINDOW) {
win=current;
+ window.ApplyWindowToSetOfImages(atof(win.c_str()), first_of_wl_set, n_image_loaded-1);
parse_mode=P_NORMAL;
+ new_wl_set = false;
} else if (parse_mode == P_LEVEL) {
lev=current;
+ window.ApplyLevelToSetOfImages(atof(lev.c_str()), first_of_wl_set, n_image_loaded-1);
parse_mode=P_NORMAL;
+ new_wl_set = false;
} else {
std::vector<std::string> image;
image.push_back(current);
if(open_mode==O_BASE) {
window.LoadImages(image, vvImageReader::IMAGE);
n_image_loaded++;
+ if (!new_wl_set) {
+ new_wl_set = true;
+ first_of_wl_set = n_image_loaded-1;
+ }
}
else if (open_mode==O_VF)
window.AddField(current.c_str(), n_image_loaded-1);
}
}
- if(win!="" && lev!="") {
- window.SetWindowLevel(atof(win.c_str()), atof(lev.c_str()));
- window.ApplyWindowLevelToAllImages();
- }
+// if(win!="" && lev!="") {
+// window.SetWindowLevel(atof(win.c_str()), atof(lev.c_str()));
+// window.ApplyWindowLevelToAllImages();
+// }
if (link_images)
window.LinkAllImages();
// Redefine this button to handle pick
this->GrabFocus(this->EventCallbackCommand);
- if (!this->Interactor->GetShiftKey() && !this->Interactor->GetControlKey()) {
+ if (this->Interactor->GetShiftKey()) {
+ this->OnMiddleButtonDown();
+ }
+ else if (!this->Interactor->GetControlKey()) {
this->StartPick();
}
this->ReleaseFocus();
}
break;
+ case VTKIS_PAN:
+ this->OnMiddleButtonUp();
+ break;
}
// Call parent to handle all other states and perform additional work
}
//------------------------------------------------------------------------------
+//------------------------------------------------------------------------------
+void vvLinkPanel::addLinkFromIds(QString id1, QString id2)
+{
+ int index1 = -1, index2 = -1;
+ size_t s1 = image1Ids.size();
+ size_t s2 = image2Ids.size();
+ for (size_t i = 0; i < s1 && index1 == -1; i++)
+ if (image1Ids[i] == id1.toStdString())
+ index1 = i;
+
+ if (index1 >= 0)
+ image1ComboBox->setCurrentIndex(index1);
+
+ for (size_t i = 0; i < s2 && index2 == -1; i++)
+ if (image2Ids[i] == id2.toStdString())
+ index2 = i;
+
+ if (index1 >= 0 && index2 >= 0) {
+ image2ComboBox->setCurrentIndex(index2);
+ addLink();
+ }
+}
+//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
void vvLinkPanel::addLink()
linkTableWidget->setRowHeight(row,17);
emit addLink(image1Ids[image1ComboBox->currentIndex()].c_str(),
- image2Ids[image2ComboBox->currentIndex()].c_str());
+ image2Ids[image2ComboBox->currentIndex()].c_str(),
+ true
+ );
UpdateComboBox2(image1ComboBox->currentIndex());
}
~vvLinkPanel() {}
void addImage(std::string name, std::string id);
+ void addLinkFromIds(QString id1, QString id2);
void removeImage(int i);
bool isLinkAll();
void linkAll();
signals:
- void addLink(QString image1,QString image2);
+ void addLink(QString image1,QString image2,bool);
void removeLink(QString image1,QString image2);
private:
connect(this,SIGNAL(customContextMenuRequested(QPoint)),this,SLOT(ShowContextMenu(QPoint)));
- connect(linkPanel,SIGNAL(addLink(QString,QString)),this,SLOT(AddLink(QString,QString)));
+ connect(linkPanel,SIGNAL(addLink(QString,QString,bool)),this,SLOT(AddLink(QString,QString,bool)));
connect(linkPanel,SIGNAL(removeLink(QString,QString)),this,SLOT(RemoveLink(QString,QString)));
connect(overlayPanel,SIGNAL(VFPropertyUpdated(int,int,int,int,double,double,double)),this,SLOT(SetVFProperty(int,int,int,int,double,double,double)));
connect(overlayPanel,SIGNAL(OverlayPropertyUpdated(int,int,double,double)),
DataTree->setItemWidget(item, COLUMN_RELOAD_IMAGE, rButton);
//set the id of the image
- QString id = files[i].c_str() + QString::number(mSlicerManagers.size()-1);
+ QString id = QDir::current().absoluteFilePath(files[i].c_str()) + QString::number(mSlicerManagers.size()-1);
item->setData(COLUMN_IMAGE_NAME,Qt::UserRole,id.toStdString().c_str());
mSlicerManagers.back()->SetId(id.toStdString());
//------------------------------------------------------------------------------
void vvMainWindow::ChangeViewMode()
{
- QList<int> size;
+ typedef struct _SIZE{
+ QSplitter* splitter;
+ QList<int> size1, size2;
+ int cols[3];
+ }SplitterSize;
+ SplitterSize sizes[4];
+ sizes[0].splitter = OSplitter;
+ sizes[0].size1.push_back(1);
+ sizes[0].size1.push_back(0);
+ sizes[0].size2.push_back(1);
+ sizes[0].size2.push_back(0);
+ sizes[0].cols[0] = 2;
+ sizes[0].cols[1] = 3;
+ sizes[0].cols[2] = 4;
+
+ sizes[1].splitter = ESplitter;
+ sizes[1].size1.push_back(0);
+ sizes[1].size1.push_back(1);
+ sizes[1].size2.push_back(1);
+ sizes[1].size2.push_back(0);
+ sizes[1].cols[0] = 1;
+ sizes[1].cols[1] = 3;
+ sizes[1].cols[2] = 4;
+
+ sizes[2].splitter = OSplitter;
+ sizes[2].size1.push_back(1);
+ sizes[2].size1.push_back(0);
+ sizes[2].size2.push_back(0);
+ sizes[2].size2.push_back(1);
+ sizes[2].cols[0] = 1;
+ sizes[2].cols[1] = 2;
+ sizes[2].cols[2] = 4;
+
+ sizes[3].splitter = ESplitter;
+ sizes[3].size1.push_back(0);
+ sizes[3].size1.push_back(1);
+ sizes[3].size2.push_back(0);
+ sizes[3].size2.push_back(1);
+ sizes[3].cols[0] = 1;
+ sizes[3].cols[1] = 2;
+ sizes[3].cols[2] = 3;
+
+ int slicer = mSlicerManagers[mCurrentPickedImageIndex]->GetSelectedSlicer();
if (viewMode == 1) {
- viewMode = 0;
- size.push_back(1);
- size.push_back(0);
- splitter_3->setSizes(size);
- OSplitter->setSizes(size);
- DataTree->setColumnHidden(2,1);
- DataTree->setColumnHidden(3,1);
- DataTree->setColumnHidden(4,1);
+ if (slicer >= 0) {
+ viewMode = 0;
+ splitter_3->setSizes(sizes[slicer].size1);
+ sizes[slicer].splitter->setSizes(sizes[slicer].size2);
+ DataTree->setColumnHidden(sizes[slicer].cols[0],1);
+ DataTree->setColumnHidden(sizes[slicer].cols[1],1);
+ DataTree->setColumnHidden(sizes[slicer].cols[2],1);
+ }
} else {
- viewMode = 1;
- size.push_back(1);
- size.push_back(1);
- splitter_3->setSizes(size);
- OSplitter->setSizes(size);
- DataTree->setColumnHidden(2,0);
- DataTree->setColumnHidden(3,0);
- DataTree->setColumnHidden(4,0);
+ QList<int> size;
+ if (slicer >= 0) {
+ viewMode = 1;
+ size.push_back(1);
+ size.push_back(1);
+ splitter_3->setSizes(size);
+ sizes[slicer].splitter->setSizes(size);
+ DataTree->setColumnHidden(sizes[slicer].cols[0],0);
+ DataTree->setColumnHidden(sizes[slicer].cols[1],0);
+ DataTree->setColumnHidden(sizes[slicer].cols[2],0);
+ }
}
UpdateRenderWindows();
/*
** the associated Slicer to redraw crosses.
*/
for (unsigned int i = 0; i < mSlicerManagers.size(); i++) {
- if (DataTree->topLevelItem(i)->data(COLUMN_UL_VIEW,Qt::CheckStateRole).toInt() > 1)
+// if (DataTree->topLevelItem(i)->data(COLUMN_UL_VIEW,Qt::CheckStateRole).toInt() > 1)
mSlicerManagers[i]->GetSlicer(0)->Render();
- if (DataTree->topLevelItem(i)->data(COLUMN_DL_VIEW,Qt::CheckStateRole).toInt() > 1)
+ mSlicerManagers[i]->GetSlicer(1)->Render();
+// if (DataTree->topLevelItem(i)->data(COLUMN_DL_VIEW,Qt::CheckStateRole).toInt() > 1)
mSlicerManagers[i]->GetSlicer(2)->Render();
+ mSlicerManagers[i]->GetSlicer(3)->Render();
}
}
//------------------------------------------------------------------------------
}
//------------------------------------------------------------------------------
+//------------------------------------------------------------------------------
+void vvMainWindow::ApplyWindowToSetOfImages(double window, unsigned int indexMin, unsigned int indexMax)
+{
+ for (unsigned int i = indexMin; i <= indexMax && i < mSlicerManagers.size(); i++) {
+ if (mSlicerManagers[i] == NULL)
+ continue;
+ mSlicerManagers[i]->SetColorWindow(window);
+ mSlicerManagers[i]->SetPreset(6);
+ mSlicerManagers[i]->Render();
+ }
+}
+//------------------------------------------------------------------------------
+
+//------------------------------------------------------------------------------
+void vvMainWindow::ApplyLevelToSetOfImages(double level, unsigned int indexMin, unsigned int indexMax)
+{
+ for (unsigned int i = indexMin; i <= indexMax && i < mSlicerManagers.size(); i++) {
+ if (mSlicerManagers[i] == NULL)
+ continue;
+ mSlicerManagers[i]->SetColorLevel(level);
+ mSlicerManagers[i]->SetPreset(6);
+ mSlicerManagers[i]->Render();
+ }
+}
+//------------------------------------------------------------------------------
+
//------------------------------------------------------------------------------
void vvMainWindow::UpdateLinkManager(std::string id, int slicer, double x, double y, double z, int temps)
{
}
//------------------------------------------------------------------------------
-void vvMainWindow::AddLink(QString image1,QString image2)
+void vvMainWindow::AddLink(QString image1,QString image2,bool fromPanel)
{
+ if (!fromPanel) {
+ // delegate to linkPanel if call came from elsewhere...
+ linkPanel->addLinkFromIds(image1, image2);
+ return;
+ }
+
unsigned int sm1 = 0;
unsigned int sm2 = 0;
//------------------------------------------------------------------------------
void vvMainWindow::UpdateSliceRange(int slicer, int min, int max, int tmin, int tmax)
{
- int position = int((min+max)/2);
+ //int position = int((min+max)/2);
+ int position = mSlicerManagers[mCurrentPickedImageIndex]->GetSlicer(slicer)->GetSlice();
if (slicer == 0) {
- NOVerticalSlider->setValue(position);
NOVerticalSlider->setRange(min,max);
NOHorizontalSlider->setRange(tmin,tmax);
+ NOVerticalSlider->setValue(position);
} else if (slicer == 1) {
- NEVerticalSlider->setValue(position);
NEVerticalSlider->setRange(min,max);
NEHorizontalSlider->setRange(tmin,tmax);
+ NEVerticalSlider->setValue(position);
} else if (slicer == 2) {
- SOVerticalSlider->setValue(position);
SOVerticalSlider->setRange(min,max);
SOHorizontalSlider->setRange(tmin,tmax);
+ SOVerticalSlider->setValue(position);
} else if (slicer == 3) {
- SEVerticalSlider->setValue(position);
SEVerticalSlider->setRange(min,max);
SEHorizontalSlider->setRange(tmin,tmax);
+ SEVerticalSlider->setValue(position);
}
}
//------------------------------------------------------------------------------
DataTree->setItemWidget(item, COLUMN_RELOAD_IMAGE, rButton);
//set the id of the image
- QString id = slicer_manager->GetFileName().c_str() + QString::number(mSlicerManagers.size()-1);
+ QString id = QDir::current().absoluteFilePath(slicer_manager->GetFileName().c_str()) + QString::number(mSlicerManagers.size()-1);
item->setData(COLUMN_IMAGE_NAME,Qt::UserRole,id.toStdString().c_str());
mSlicerManagers.back()->SetId(id.toStdString());
void UpdateSlicingPreset();
void SwitchWindowLevel();
void ApplyWindowLevelToAllImages();
+ void ApplyWindowToSetOfImages(double window, unsigned int indexMin, unsigned int indexMax);
+ void ApplyLevelToSetOfImages(double level, unsigned int indexMin, unsigned int indexMax);
void UpdateLinkManager(std::string id, int slicer, double x, double y, double z, int temps);
void UpdateLinkedNavigation(std::string id, vvSlicerManager *sm, vvSlicer* refSlicer);
- void AddLink(QString image1,QString image2);
+ void AddLink(QString image1,QString image2,bool fromPanel = true);
void RemoveLink(QString image1,QString image2);
void ChangeImageWithIndexOffset(vvSlicerManager *sm, int slicer, int offset);
{
std::string value;
+ // read images
while (!m_XmlReader->isEndElement() || value != "Images") {
m_XmlReader->readNext();
value = m_XmlReader->qualifiedName().toString().toStdString();
}
}
+ // read links
+ while (!m_XmlReader->isEndElement() || value != "Links") {
+ m_XmlReader->readNext();
+ value = m_XmlReader->qualifiedName().toString().toStdString();
+ if (m_XmlReader->isStartElement()) {
+ if (value == "LinkedFrom") value = ReadLink();
+ }
+ }
+
if (m_XmlReader->hasError())
std::cout << "Error " << m_XmlReader->error() << " XML " << std::endl;
}
}
}
else if (current_index >= 0) {
- if (value == "Fusion")
+ vvSlicerManager* slicerManager = m_Window->GetSlicerManagers()[current_index];
+ if (value == "Preset") {
+ double vali = m_XmlReader->readElementText().toInt();
+ if (!m_XmlReader->hasError())
+ slicerManager->SetPreset(vali);
+ }
+ else if (value == "Window") {
+ double vald = m_XmlReader->readElementText().toDouble();
+ if (!m_XmlReader->hasError())
+ slicerManager->SetColorWindow(vald);
+ }
+ else if (value == "Level") {
+ double vald = m_XmlReader->readElementText().toDouble();
+ if (!m_XmlReader->hasError())
+ slicerManager->SetColorLevel(vald);
+ }
+ else if (value == "Fusion")
value = ReadFusion(current_index);
else if (value == "Overlay")
value = ReadOverlay(current_index);
//------------------------------------------------------------------------------
+//------------------------------------------------------------------------------
+std::string vvReadState::ReadLink()
+{
+ std::string id_from, id_to, value;
+
+ QXmlStreamAttributes attributes = m_XmlReader->attributes();
+ if (!m_XmlReader->hasError()) {
+ id_from = attributes.value("Id").toString().toStdString();
+ }
+
+ while (!m_XmlReader->isEndElement() || value != "LinkedFrom") {
+ m_XmlReader->readNext();
+ value = m_XmlReader->qualifiedName().toString().toStdString();
+ if (m_XmlReader->isStartElement()) {
+ if (value == "LinkedTo") {
+ id_to = m_XmlReader->readElementText().toStdString();
+ if (!m_XmlReader->hasError()) {
+ m_Window->AddLink(id_from.c_str(), id_to.c_str(), false);
+ }
+ }
+ }
+ }
+
+ return value;
+}
+//------------------------------------------------------------------------------
+
//------------------------------------------------------------------------------
void vvReadState::ReadGUI()
{
std::string ReadFusion(int index);
std::string ReadOverlay(int index);
std::string ReadVector(int index);
+ std::string ReadLink();
std::auto_ptr<QXmlStreamReader> m_XmlReader;
std::auto_ptr<QFile> m_File;
SaveImage(item, i);
}
m_XmlWriter->writeEndElement();
+
+ m_XmlWriter->writeStartElement("Links");
+ for (int i = 0; i < tree->topLevelItemCount(); i++) {
+ const vvSlicerManager * slicerManager = m_Window->GetSlicerManagers()[i];
+ SaveLink(slicerManager);
+ }
+ m_XmlWriter->writeEndElement();
}
//------------------------------------------------------------------------------
const vvSlicerManager * slicerManager = m_Window->GetSlicerManagers()[index];
m_XmlWriter->writeStartElement("Image");
- std::ostringstream indexStr;
- indexStr.str("");
- indexStr << index;
- m_XmlWriter->writeAttribute("Index", indexStr.str().c_str());
+ std::ostringstream valueStr;
+ valueStr.str("");
+ valueStr << index;
+ m_XmlWriter->writeAttribute("Index", valueStr.str().c_str());
std::string filename = item->data(0, Qt::UserRole).toString().toStdString();
m_XmlWriter->writeTextElement("FileName", QDir::current().absoluteFilePath(filename.c_str()));
-
+ int preset = slicerManager->GetPreset();
+ m_XmlWriter->writeTextElement("Preset", QString::number(preset));
+ if (preset == 6) {
+ m_XmlWriter->writeTextElement("Window", QString::number(slicerManager->GetColorWindow()));
+ m_XmlWriter->writeTextElement("Level", QString::number(slicerManager->GetColorLevel()));
+ }
+
QTreeWidgetItem* item_child;
std::string role;
for (int i = 0; i < item->childCount(); i++) {
}
//------------------------------------------------------------------------------
+//------------------------------------------------------------------------------
+void vvSaveState::SaveLink(const vvSlicerManager* vvManager)
+{
+ typedef std::list<std::string> LinkListType;
+ LinkListType links = vvManager->GetLinks();
+ if (!links.empty()) {
+ std::string my_id = vvManager->GetId();
+ m_XmlWriter->writeStartElement("LinkedFrom");
+ m_XmlWriter->writeAttribute("Id", my_id.c_str());
+ typename LinkListType::iterator i;
+ for (i = links.begin(); i != links.end(); i++) {
+ std::string link_id = *i;
+ m_XmlWriter->writeTextElement("LinkedTo", link_id.c_str());
+ }
+ m_XmlWriter->writeEndElement();
+ }
+}
+//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
void vvSaveState::SaveGUI()
void SaveFusion(const QTreeWidgetItem* item, const vvSlicerManager* slicerManager);
void SaveOverlay(const QTreeWidgetItem* item, const vvSlicerManager* slicerManager);
void SaveVector(const QTreeWidgetItem* item);
+ void SaveLink(const vvSlicerManager* slicerManager);
std::auto_ptr<QXmlStreamWriter> m_XmlWriter;
std::auto_ptr<QFile> m_File;
mCurrent[1] = -VTK_DOUBLE_MAX;
mCurrent[2] = -VTK_DOUBLE_MAX;
- mCursor[0] = -VTK_DOUBLE_MAX;
- mCursor[1] = -VTK_DOUBLE_MAX;
- mCursor[2] = -VTK_DOUBLE_MAX;
- mCursor[3] = -VTK_DOUBLE_MAX;
+ mCursor[0] = 0;//-VTK_DOUBLE_MAX;
+ mCursor[1] = 0;//-VTK_DOUBLE_MAX;
+ mCursor[2] = 0;//-VTK_DOUBLE_MAX;
+ mCursor[3] = 0;//-VTK_DOUBLE_MAX;
mSubSampling = 5;
mScale = 1;
AdjustResliceToSliceOrientation(mOverlayReslice);
// Update the viewer
- int *range = this->GetSliceRange();
- if (range)
- this->Slice = static_cast<int>((range[0] + range[1]) * 0.5);
-
+
// Go to current cursor position
// double* cursorPos = GetCursorPosition();
// DDV(cursorPos, 3);
// SetCurrentPosition(cursorPos[0],cursorPos[1],cursorPos[2],cursorPos[3]);
+ if (this->Renderer && this->GetInput()) {
+ double s = mCursor[orientation];
+ double sCursor = (s - this->GetInput()->GetOrigin()[orientation])/this->GetInput()->GetSpacing()[orientation];
+ this->Slice = static_cast<int>(sCursor);
+ }
+
+// int *range = this->GetSliceRange();
+// if (range)
+// this->Slice = static_cast<int>((range[0] + range[1]) * 0.5);
+
this->UpdateOrientation();
this->UpdateDisplayExtent();
for ( int i = 0; i < numberOfSlicers; i++)
mSlicers.push_back(vtkSmartPointer<vvSlicer>::New());
-
+ mSelectedSlicer = -1;
+
mPreviousSlice.resize(numberOfSlicers);
mPreviousTSlice.resize(numberOfSlicers);
mSlicingPreset = WORLD_SLICING;
z <= mSlicers[slicer]->GetInput()->GetWholeExtent()[5]+0.5) {
mSlicers[slicer]->UpdateCursorPosition();
mSlicers[slicer]->SetCursorColor(10,212,255);
+ mSelectedSlicer = slicer;
switch (mSlicers[slicer]->GetSliceOrientation()) {
case vtkImageViewer2::SLICE_ORIENTATION_XY:
//----------------------------------------------------------------------------
//----------------------------------------------------------------------------
-double vvSlicerManager::GetColorWindow()
+double vvSlicerManager::GetColorWindow() const
{
if (mSlicers.size())
return mSlicers[0]->GetColorWindow();
//----------------------------------------------------------------------------
-double vvSlicerManager::GetColorLevel()
+double vvSlicerManager::GetColorLevel() const
{
if (mSlicers.size())
return mSlicers[0]->GetColorLevel();
///Switch between nearest neighbor and linear interpolation
void ToggleInterpolation();
vvSlicer* GetSlicer(int i);
+ int GetSelectedSlicer() {
+ return mSelectedSlicer;
+ }
+
void UpdateSlicer(int num, bool state);
void SetSlicerWindow(int i, vtkRenderWindow* RW);
void SetInteractorStyleNavigator(int i,vtkInteractorStyle* style);
vvImage::Pointer GetVF() { return mVF; }
int GetType() { return mType; }
void SetId(std::string id) { mId = id; }
- std::string GetId() { return mId; }
+ std::string GetId() const { return mId; }
int GetDimension() {
if (mImage) return mImage->GetNumberOfDimensions();
else return -1;
mFusionShowLegend = show;
}
- double GetColorWindow();
- double GetColorLevel();
+ double GetColorWindow() const;
+ double GetColorLevel() const;
double GetOverlayColorWindow() const;
double GetOverlayColorLevel() const;
bool GetLinkOverlayWindowLevel() const;
int GetColorMap() {
return mColorMap;
}
- int GetPreset() {
+ int GetPreset() const {
return mPreset;
}
SlicingPresetType GetSlicingPreset() {
mLinkedId.remove(oldId);
}
+ std::list<std::string> GetLinks() const {
+ return mLinkedId;
+ }
+
bool IsLinked() {
return mLinkedId.size() > 0;
}
protected:
std::vector< vtkSmartPointer<vvSlicer> > mSlicers;
+ int mSelectedSlicer;
vvImageReader::Pointer mReader;
vvImageReader::Pointer mOverlayReader;
vvImageReader::Pointer mFusionReader;