]> Creatis software - clitk.git/commitdiff
- bug corrected
authordsarrut <dsarrut>
Tue, 27 Apr 2010 06:07:02 +0000 (06:07 +0000)
committerdsarrut <dsarrut>
Tue, 27 Apr 2010 06:07:02 +0000 (06:07 +0000)
vv/vvBinaryImageOverlayActor.cxx
vv/vvBinaryImageOverlayActor.h
vv/vvImageContour.cxx
vv/vvImageContour.h
vv/vvROIActor.cxx
vv/vvROIActor.h
vv/vvSlicer.cxx
vv/vvStructureSetActor.cxx
vv/vvToolStructureSetManager.cxx
vv/vvToolStructureSetManager.h

index 1ea3c6f40b2f54d791eac41d7859cdf6549be421..d69879c479100977df89f6bc6199b8605005b8b4 100644 (file)
@@ -111,6 +111,14 @@ void vvBinaryImageOverlayActor::initialize() {
 //------------------------------------------------------------------------------
 
 
+//------------------------------------------------------------------------------
+void vvBinaryImageOverlayActor::SetOpacity(double d) {
+  mAlpha = d;
+  // TODO !!lut->SetTableValue(1, mColor[0], mColor[1], mColor[2], mAlpha); // FG
+}
+//------------------------------------------------------------------------------
+
+
 //------------------------------------------------------------------------------
 void vvBinaryImageOverlayActor::setImage(vvImage::Pointer image, double bg) {
   mImage = image;
index f33014ddd6c8426c1f5e1cfaccc3f554e4859ab2..ccf08ef9bb0fffb90d32f53cc7652650f49e25d9 100644 (file)
@@ -43,6 +43,7 @@ class vvBinaryImageOverlayActor
   void setColor(double r, double g, double b);
   void setImage(vvImage::Pointer image, double bg);
   void initialize();
+  void SetOpacity(double d);
 
  protected:
   vvSlicer * mSlicer;
index 35215794be42afaf0358bd22288d9a5f4ca4ad94..1c5354eb3d776cb8219a7806bbcf51bf77f1ed65 100644 (file)
@@ -282,8 +282,8 @@ void vvImageContour::createNewActor(vtkActor ** actor,
 void vvImageContour::updateActor(vtkActor * actor, 
                                 vtkMarchingSquares * squares, 
                                 vtkImageClip * clipper, 
-                                int threshold, int orientation, int slice) {
+                                double threshold, int orientation, int slice) {
+  
   // Set parameter for the MarchigSquare
   squares->SetValue(0, threshold);
 
@@ -320,15 +320,15 @@ void vvImageContour::updateActor(vtkActor * actor,
   if (mHiddenImage) delete extent2;
 
   // Move the actor to be visible
-  DD(orientation);
-  DD(slice);
+  // DD(orientation);
+//   DD(slice);
 
   //TO SIMPLiFY :!!!!!!!!! == ???????
   // actor->SetPosition(-1,-1,-1);
  
   switch (orientation)  {
   case 0: 
-    DD(mSlicer->GetRenderer()->GetActiveCamera()->GetPosition()[0]);
+    // DD(mSlicer->GetRenderer()->GetActiveCamera()->GetPosition()[0]);
     if (mSlicer->GetRenderer()->GetActiveCamera()->GetPosition()[0] > slice) {
       actor->SetPosition(1,0,0);
     }
@@ -337,7 +337,7 @@ void vvImageContour::updateActor(vtkActor * actor,
     }
     break;
   case 1: 
-    DD(mSlicer->GetRenderer()->GetActiveCamera()->GetPosition()[1]);
+    // DD(mSlicer->GetRenderer()->GetActiveCamera()->GetPosition()[1]);
     if (mSlicer->GetRenderer()->GetActiveCamera()->GetPosition()[1] > slice) {
       actor->SetPosition(0,1,0);
     }
@@ -346,13 +346,13 @@ void vvImageContour::updateActor(vtkActor * actor,
     }
     break;
   case 2: 
-    DD(mSlicer->GetRenderer()->GetActiveCamera()->GetPosition()[2]);
+    // DD(mSlicer->GetRenderer()->GetActiveCamera()->GetPosition()[2]);
     if (mSlicer->GetRenderer()->GetActiveCamera()->GetPosition()[2] > slice) {
-      DD("1");
+      // DD("1");
       actor->SetPosition(0,0,1);
     }
     else {
-      DD("-1");
+      // DD("-1");
       actor->SetPosition(0,0,-1);
     }
     break;
index 12bb2dcca7c065a77577377fad238bdafc97159e..d7cf62cc4db8eb6578996168f16bee03502b7cc6 100644 (file)
@@ -73,7 +73,7 @@ class vvImageContour
   void updateActor(vtkActor * actor, 
                   vtkMarchingSquares * squares,
                   vtkImageClip * clipper, 
-                  int threshold, int orientation, int slice);
+                  double threshold, int orientation, int slice);
   void createActor(int orientation, int slice);
   int computeCurrentOrientation();
   
index f1eb222539b2c86059cb493e3709d39dc10151ea..13e906b881531fd888eecb0eacf6e1ec46dad442 100644 (file)
@@ -34,6 +34,7 @@
 vvROIActor::vvROIActor() {
   mImageContour.clear();
   mOverlayActors.clear();
+  mIsVisible = true;
 }
 //------------------------------------------------------------------------------
 
@@ -58,6 +59,29 @@ void vvROIActor::SetSlicerManager(vvSlicerManager * s) {
 //------------------------------------------------------------------------------
 
 
+//------------------------------------------------------------------------------
+void vvROIActor::SetVisible(bool b) {
+  mIsVisible = b;
+  if (!b) { // remove actor
+    for(unsigned int i= 0; i<mOverlayActors.size(); i++) 
+      mOverlayActors[i]->hideActors();
+  }
+  else {
+    for(unsigned int i= 0; i<mOverlayActors.size(); i++) 
+      mOverlayActors[i]->showActors();
+  }
+  Update();
+}
+//------------------------------------------------------------------------------
+
+
+//------------------------------------------------------------------------------
+bool vvROIActor::IsVisible() {
+  return mIsVisible;
+}
+//------------------------------------------------------------------------------
+
+
 //------------------------------------------------------------------------------
 void vvROIActor::Initialize() {
   if (mROI->GetImage()) {
@@ -101,7 +125,9 @@ void vvROIActor::Update() {
 
 //------------------------------------------------------------------------------
 void vvROIActor::UpdateSlice(int slicer, int slices) {
-   if (!mROI->GetImage())  return;
+  if (!mROI->GetImage())  return;
+  
+  if (!mIsVisible) return;
 
   if (!mSlicerManager) {
     std::cerr << "Error. No mSlicerManager ?" << std::endl;
@@ -118,3 +144,14 @@ void vvROIActor::UpdateSlice(int slicer, int slices) {
   // mSlicerManager->GetSlicer(slicer)->GetRenderWindow()->Render(); 
 }
 //------------------------------------------------------------------------------
+
+
+//------------------------------------------------------------------------------
+void vvROIActor::SetOpacity(double d) {
+  mOpacity = d; 
+  for(unsigned int i=0; mOverlayActors.size(); i++) {
+    mOverlayActors[i]->SetOpacity(d);
+  }
+}
+//------------------------------------------------------------------------------
+
index 016a1031b370cfcc488fc2ae8231497cb23dd048..afe7636acb91acf0be6c8b78abf2bd8846f08505 100644 (file)
@@ -38,6 +38,9 @@ class vvROIActor: public QObject {
   void SetSlicerManager(vvSlicerManager * s);
   void Update();
   void Initialize();
+  void SetVisible(bool b);
+  bool IsVisible();
+  void SetOpacity(double x);
 
 public slots:
   void UpdateSlice(int slicer, int slices);
@@ -47,6 +50,9 @@ public slots:
   vvSlicerManager * mSlicerManager;
   std::vector<vvImageContour *> mImageContour;
   std::vector<vvBinaryImageOverlayActor *> mOverlayActors;
+  
+  bool mIsVisible;
+  double mOpacity;
 
 }; // end class vvROIActor
 //------------------------------------------------------------------------------
index 256981fba78528394cb9f21b67828f7efefc94f8..415d4a8f95398c8cdcd083fcbabe46f98146ce49 100644 (file)
@@ -1375,6 +1375,9 @@ void vvSlicer::SetSlice(int slice)
   SetContourSlice();
   this->Modified();
   this->UpdateDisplayExtent();
+
+  //  DD("SetSlice de slicer = Render");
+
   this->Render();
 }
 //----------------------------------------------------------------------------
index 819a65364a93d41cf2e2da7a3b26cfd6a66a0431..16df5122c01f4febe138d33f92e6f213c7cc8520 100644 (file)
@@ -48,10 +48,12 @@ void vvStructureSetActor::SetSlicerManager(vvSlicerManager * s) {
 
 //------------------------------------------------------------------------------
 vvROIActor * vvStructureSetActor::GetROIActor(int n) {
+  DD(n);
   if (mMapROIIndex.find(n) == mMapROIIndex.end()) {
     std::cerr << "No ROI number " << n << std::endl;
     return NULL;    
   }
+  DD(mMapROIIndex[n]);
   return mROIActors[mMapROIIndex[n]];
 }
 //------------------------------------------------------------------------------
index ac53fb53c3060f7be98ee27c4b2b3e9437d3d29f..5fcd2af961197a4c737f9fa0afac9da05e53a3c4 100644 (file)
@@ -94,28 +94,9 @@ void vvToolStructureSetManager::InputIsSelected(vvSlicerManager *m) {
   //  connect(m, SIGNAL(LeftButtonReleaseSignal(int)), SLOT(LeftButtonReleaseEvent(int)));
 
   connect(mTree, SIGNAL(itemSelectionChanged()), this, SLOT(selectedItemChangedInTree()));
-}
-//------------------------------------------------------------------------------
-
-
-//------------------------------------------------------------------------------
-void vvToolStructureSetManager::selectedItemChangedInTree() {
-  DD("selectedItemChangedInTree");
-  QList<QTreeWidgetItem *> l = mTree->selectedItems();
-  DD(l.size());
-  QTreeWidgetItem * w = l[0];
-  if (mMapTreeWidgetToROI.find(w) == mMapTreeWidgetToROI.end()) return; // Search for SS (first)
-  clitk::DicomRT_ROI * roi = mMapTreeWidgetToROI[w];
-  DD(roi->GetName());
-  setCurrentSelectedROI(roi);
-}
-//------------------------------------------------------------------------------
-
-
-//------------------------------------------------------------------------------
-void vvToolStructureSetManager::setCurrentSelectedROI(clitk::DicomRT_ROI * roi) {
-  //  mCheckBoxShow = // get roi actor .../
+  connect(mCheckBoxShow, SIGNAL(toggled(bool)), this, SLOT(visibleROIToggled(bool)));
 
+  //  TODO connect(mOpacitySlider, SIGNAL(valueChanged(int), this, SLOT(opacityChanged(int))));
 }
 //------------------------------------------------------------------------------
 
@@ -235,6 +216,7 @@ void vvToolStructureSetManager::openBinaryImage() {
   mCurrentStructureSet = mStructureSetsList[index];
   mCurrentStructureSetActor = mStructureSetActorsList[index];
   mCurrentStructureSetIndex = index;
+  DD(mCurrentStructureSetIndex);
   DD(mCurrentStructureSet->GetName());
 
   // Open images
@@ -323,3 +305,67 @@ void vvToolStructureSetManager::apply() {
   close();
 }
 //------------------------------------------------------------------------------
+
+
+
+//------------------------------------------------------------------------------
+// CURRENT ROI INTERACTION
+//------------------------------------------------------------------------------
+
+
+//------------------------------------------------------------------------------
+void vvToolStructureSetManager::selectedItemChangedInTree() {
+  DD("selectedItemChangedInTree");
+  QList<QTreeWidgetItem *> l = mTree->selectedItems();
+  DD(l.size());
+  QTreeWidgetItem * w = l[0];
+  if (mMapTreeWidgetToROI.find(w) == mMapTreeWidgetToROI.end()) return; // Search for SS (first)
+  clitk::DicomRT_ROI * roi = mMapTreeWidgetToROI[w];
+  DD(roi->GetName());
+  //setCurrentSelectedROI(roi);
+
+  mROInameLabel->setText(roi->GetName().c_str());
+  DD(roi->GetROINumber());
+  DD(mCurrentStructureSetIndex);
+  vvROIActor * actor = mStructureSetActorsList[mCurrentStructureSetIndex]->GetROIActor(roi->GetROINumber());
+  mCurrentROI = roi;
+  mCurrentROIActor = actor;
+
+  DD(actor);
+  DD(actor->IsVisible());
+  mCheckBoxShow->setChecked(actor->IsVisible());
+
+  //actor->SetSelected(true); // remove old selection
+
+  DD("ici");
+}
+//------------------------------------------------------------------------------
+
+
+//------------------------------------------------------------------------------
+void vvToolStructureSetManager::visibleROIToggled(bool b) {
+  DD(b);
+  mCurrentROIActor->SetVisible(b);
+  //mCurrentROIActor->Update();
+}
+//------------------------------------------------------------------------------
+
+
+//------------------------------------------------------------------------------
+void vvToolStructureSetManager::opacityChanged(int v) {
+  DD(v);
+  mCurrentROIActor->SetOpacity((double)v/100.0);
+  mCurrentROIActor->Update();
+}
+//------------------------------------------------------------------------------
+
+
+
+
+//------------------------------------------------------------------------------
+//void vvToolStructureSetManager::getActorFromROI() {
+//  mStructureSetActorsList[mCurrentStructureSetIndex]->GetROIActor(n);
+//}
+//------------------------------------------------------------------------------
+
+
index 0295513f2ecd9ed61e8e46897d431cc543b0d334..842147325772d915edbf052582dcba7958fe60b7 100644 (file)
@@ -24,6 +24,7 @@
 #include "vvToolWidgetBase.h"
 #include "clitkDicomRT_StructureSet.h"
 #include "ui_vvToolStructureSetManager.h"
+#include "vvROIActor.h"
 
 class vvStructureSetActor;
 
@@ -51,12 +52,16 @@ public slots:
   void LeftButtonReleaseEvent(int slicer);
   void openBinaryImage();
   void selectedItemChangedInTree();
+  void visibleROIToggled(bool b);
+  void opacityChanged(int v);
 
  protected:
   Ui::vvToolStructureSetManager ui;
   clitk::DicomRT_StructureSet * mCurrentStructureSet;
   vvStructureSetActor * mCurrentStructureSetActor;
   int mCurrentStructureSetIndex;
+  clitk::DicomRT_ROI * mCurrentROI;
+  vvROIActor * mCurrentROIActor;
   vtkLookupTable * mDefaultLUTColor;
  
   void setCurrentSelectedROI(clitk::DicomRT_ROI * roi);