From: Eduardo DAVILA <eduardo.davila@creatis.insa-lyon.fr>
Date: Thu, 10 Mar 2016 15:07:16 +0000 (+0100)
Subject: #2855 creaMaracasVisu Bug New Normal  -  ColorLayer box spacing size not identified
X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=commitdiff_plain;h=d1de4d9e4121e4602daf11142cbc4b03c386d98a;p=creaMaracasVisu.git

#2855 creaMaracasVisu Bug New Normal  -  ColorLayer box spacing size not identified
---

diff --git a/bbtk/src/bbcreaMaracasVisuColorLayerImageView.cxx b/bbtk/src/bbcreaMaracasVisuColorLayerImageView.cxx
index 90d5de2..ba35577 100644
--- a/bbtk/src/bbcreaMaracasVisuColorLayerImageView.cxx
+++ b/bbtk/src/bbcreaMaracasVisuColorLayerImageView.cxx
@@ -74,6 +74,8 @@ void ColorLayerImageView::Process()
 
     clivp->SetImage( bbGetInputIn() );
 
+    bbSetOutputNewImage( clivp->GetColorLayerImageViewManager()->GetImageChangeInformation(0) );
+
 
 
 //   std::string msg;
diff --git a/bbtk/src/bbcreaMaracasVisuColorLayerImageView.h b/bbtk/src/bbcreaMaracasVisuColorLayerImageView.h
index 7191b72..5fbe03e 100644
--- a/bbtk/src/bbcreaMaracasVisuColorLayerImageView.h
+++ b/bbtk/src/bbcreaMaracasVisuColorLayerImageView.h
@@ -57,6 +57,7 @@ class bbcreaMaracasVisu_EXPORT ColorLayerImageView
   BBTK_DECLARE_INPUT(lstRangeForColorBar,std::vector<double>);
   BBTK_DECLARE_INPUT(PlainOrGradientColor,bool);
   BBTK_DECLARE_INPUT(FittingMode,int);
+  BBTK_DECLARE_OUTPUT(NewImage,vtkImageData*);
   BBTK_PROCESS(Process);
   void Process();
   BBTK_CREATE_WIDGET(CreateWidget);
@@ -90,6 +91,10 @@ BBTK_BEGIN_DESCRIBE_BLACK_BOX(ColorLayerImageView,bbtk::WxBlackBox);
 
   BBTK_INPUT(ColorLayerImageView,PlainOrGradientColor,"true=Plane false=Gradient (Default false)",bool,"");
   BBTK_INPUT(ColorLayerImageView,FittingMode,"Choose the fitting mode between the images, the transformation can be either by Dimension (1), by Spacing (2) or by Pixel (3). If you want to make the choice through a dialog box, choose (-1). Default is by Pixel (3).",int,"");
+
+  BBTK_OUTPUT(ColorLayerImageView,NewImage,"Image with correct Spacing",vtkImageData*,"");
+
+
 BBTK_END_DESCRIBE_BLACK_BOX(ColorLayerImageView);
 //=====
 // Don't edit this file. This file is generated from xml description..
diff --git a/bbtk/src/bbmaracasvisuTransferFunctionView.cxx b/bbtk/src/bbmaracasvisuTransferFunctionView.cxx
index 7d6765e..ca7fa29 100644
--- a/bbtk/src/bbmaracasvisuTransferFunctionView.cxx
+++ b/bbtk/src/bbmaracasvisuTransferFunctionView.cxx
@@ -37,12 +37,13 @@ void TransferFunctionView::Process()
 	if(bbGetInputIn()!=NULL)
 	{
 
-		if(_currentimg != bbGetInputIn()){
+//		if(_currentimg != bbGetInputIn())
+//		{
 			_currentimg =  bbGetInputIn();
 			//mwxwidget->initializeHistogram(_currentimg);			
 			mwxwidget->setImageData(_currentimg);	
 			//mwxwidget->Refresh();	
-		}		
+//		}		
 
 //		onColorChange();
 		/*
@@ -75,7 +76,7 @@ void TransferFunctionView::onColorChange()
 	unsigned int i;
 	for(i = 0; i < greylevel.size();i++){
 		_tfun->AddPoint(greylevel[i], value[i]);
-		std::cout<<"TransferFunctionView::Process()transfer function "<<greylevel[i]<<" "<< value[i]<<std::endl;
+//		std::cout<<"TransferFunctionView::Process()transfer function "<<greylevel[i]<<" "<< value[i]<<std::endl;
 	}
 	_ctfun->RemoveAllPoints();
 	_ctfun->SetScaleToLinear ();
@@ -99,7 +100,7 @@ void TransferFunctionView::onColorChange()
 			nc = ((greylevelcolors[i]-min)/dif)*w + c-w/2;
 //			_ctfun->AddRGBPoint(greylevelcolors[i], red[i],green[i], blue[i]);
 			_ctfun->AddRGBPoint( nc , red[i],green[i], blue[i]);
-		std::cout<<"EED TransferFunctionView::Process()transfer color function <<"<<nc<<" "<<red[i]<<" "<<green[i]<<" "<<blue[i]<<std::endl;
+//		std::cout<<"EED TransferFunctionView::Process()transfer color function <<"<<nc<<" "<<red[i]<<" "<<green[i]<<" "<<blue[i]<<std::endl;
 		}
 		i=greylevelcolors.size()-1;
 		_ctfun->AddRGBPoint( greylevelcolors[i] , red[i],green[i], blue[i]);
@@ -116,29 +117,13 @@ void TransferFunctionView::onColorChange()
 }
 
 void TransferFunctionView::onSliderChange()
-	{
-	
-		//EED
+{
 		onColorChange();
-
 		bbSignalOutputModification();
-
-printf("EED TransferFunctionView::onSliderChange  ---------------------  \n");
-
 //	bbSetOutputWindowLevel(mwxwidget->GetWindowLevel());
 //	bbSetOutputColorLevel(mwxwidget->GetColorLevel());
-
 }
 
-/*
-//-----------------------------------------------------
-void TransferFunctionView::onActive()
-{
-	bbSignalOutputModification();
-
-   printf("EED TransferFunctionView::onActive popopopopopopopop \n");
-}
-*/
 
 //-----------------------------------------------------
 void TransferFunctionView::CreateWidget(wxWindow* parent)
@@ -199,13 +184,6 @@ void TransferFunctionView::bbUserSetDefaultValues()
 		_box->onSliderChange();
 	}
 
-/*
-	void HandlerTransferFunctionView::onActive(wxCommandEvent& event)
-	{
-		_box->onActive();
-	}
-*/
-
 }
 
 // EO namespace bbcreaMaracasVisu
diff --git a/bbtk/src/bbmaracasvisuViewerNV.cxx b/bbtk/src/bbmaracasvisuViewerNV.cxx
index 1b17eec..a191017 100644
--- a/bbtk/src/bbmaracasvisuViewerNV.cxx
+++ b/bbtk/src/bbmaracasvisuViewerNV.cxx
@@ -86,17 +86,8 @@ BBTK_BLACK_BOX_IMPLEMENTATION(ViewerNV,bbtk::WxBlackBox);
 void ViewerNV::Process()
 {
 	vtkImageData* img = bbGetInputIn();
-/*
-	double spc[3];
-	img->GetSpacing(spc);
-    printf ("EED ViewerNV::Process A %f %f %f \n", spc[0], spc[1], spc[2] );
-	img->SetSpacing( 1,1,1 );
-	img->Update(  );
-	img->GetSpacing(spc);
-	img->PrintSelf(std::cout,(vtkIndent)2);
-	img->Print(std::cout);
-    printf ("EED ViewerNV::Process B %f %f %f \n", spc[0], spc[1], spc[2] );
-*/
+
+
 	std::vector<int> type = bbGetInputnTypeView();
 
 
@@ -107,11 +98,10 @@ void ViewerNV::Process()
 		}else if (img != _currentimg){
 			_mwxwidget->SetImage(img);
 		}
-
 		_mwxwidget->RefreshView();
 
-		_currenttype = type;
-		_currentimg = img;
+		_currenttype 	= type;
+		_currentimg 	= img;
 
 		_point.clear();
 		_point.push_back((int)_mwxwidget->GetX());
diff --git a/lib/maracasVisuLib/src/interface/wxWindows/widgets/ThresholdImageView/ColorLayerImageViewManager.cxx b/lib/maracasVisuLib/src/interface/wxWindows/widgets/ThresholdImageView/ColorLayerImageViewManager.cxx
index 1306f71..bc06bfd 100644
--- a/lib/maracasVisuLib/src/interface/wxWindows/widgets/ThresholdImageView/ColorLayerImageViewManager.cxx
+++ b/lib/maracasVisuLib/src/interface/wxWindows/widgets/ThresholdImageView/ColorLayerImageViewManager.cxx
@@ -384,6 +384,16 @@ void ColorLayerImageViewManager::SetImage(  vtkImageData* img  )
   } // for 
 }
 
+//----------------------------------------------------------------------------
+vtkImageData* ColorLayerImageViewManager::GetImageChangeInformation(int id)
+{
+	if (_colorLayerImageViewLst[id]!=NULL)
+	{
+  	   return _colorLayerImageViewLst[id]->GetImage( );
+	} // if 
+	return NULL;
+}
+
 //----------------------------------------------------------------------------
 void ColorLayerImageViewManager::GetDimensionBase(int id,int *dim)
 {
diff --git a/lib/maracasVisuLib/src/interface/wxWindows/widgets/ThresholdImageView/ColorLayerImageViewManager.h b/lib/maracasVisuLib/src/interface/wxWindows/widgets/ThresholdImageView/ColorLayerImageViewManager.h
index c898121..06194fe 100644
--- a/lib/maracasVisuLib/src/interface/wxWindows/widgets/ThresholdImageView/ColorLayerImageViewManager.h
+++ b/lib/maracasVisuLib/src/interface/wxWindows/widgets/ThresholdImageView/ColorLayerImageViewManager.h
@@ -68,11 +68,12 @@ class  ColorLayerImageViewManager
 	  void 				SetSliceFixDynamic( bool fixdin );
 	  void 				onThresholdChangeOpacity( int opacity );
 	  void 				SetImage( vtkImageData* img );
+	  vtkImageData* 	GetImageChangeInformation(int id);
 
-	  void 				GetDimensionBase			(int id,int *dim);
-	  void 				GetSpcBase					(int id,double *spc);
-	  void 				GetDimensionOriginalLayer	(int id,int *dim);
-	  void 				GetSpcOriginalLayer			(int id,double *spc);
+	  void 				GetDimensionBase			(int id,int 	*dim);
+	  void 				GetSpcBase					(int id,double 	*spc);
+	  void 				GetDimensionOriginalLayer	(int id,int 	*dim);
+	  void 				GetSpcOriginalLayer			(int id,double 	*spc);
 	  void 				SetNewSpacingLayer(double *spc);
 
   private:
diff --git a/lib/maracasVisuLib/src/interface/wxWindows/widgets/ThresholdImageView/ColorLayerImageViewPanel.cxx b/lib/maracasVisuLib/src/interface/wxWindows/widgets/ThresholdImageView/ColorLayerImageViewPanel.cxx
index e6b81ed..5f08d62 100644
--- a/lib/maracasVisuLib/src/interface/wxWindows/widgets/ThresholdImageView/ColorLayerImageViewPanel.cxx
+++ b/lib/maracasVisuLib/src/interface/wxWindows/widgets/ThresholdImageView/ColorLayerImageViewPanel.cxx
@@ -278,15 +278,6 @@ void ColorLayerImageViewPanel::SetImage(vtkImageData *img)
 		GetColorLayerImageViewManager()->GetSpcBase(0,spcBase);		
 		GetColorLayerImageViewManager()->GetDimensionBase(0,dimensionBase);		
 
-/*
-        int dim[3];
-        int ext[6];
-        img->GetWholeExtent(ext);
-        dim[0] = ext[1]-ext[0]+1;
-        dim[1] = ext[3]-ext[2]+1;
-        dim[2] = ext[5]-ext[4]+1;
-*/
-
 		if (_sl_SliceImageX!=NULL)
 		{
 		    _sl_SliceImageX->SetRange( 0 , dimensionOriginalLayer[0] );
@@ -294,31 +285,6 @@ void ColorLayerImageViewPanel::SetImage(vtkImageData *img)
 		    _sl_SliceImageZ->SetRange( 0 , dimensionOriginalLayer[2] );
 		}
 
-/*
-printf("EED ColorLayerImageViewPanel::SetImage  UUPPSS----------------------\n"  );
-printf("EED ColorLayerImageViewPanel::SetImage  UUPPSS----------------------\n"  );
-printf("EED ColorLayerImageViewPanel::SetImage  UUPPSS----------------------\n"  );
-printf("EED ColorLayerImageViewPanel::SetImage  UUPPSS----------------------\n"  );
-printf("  Here I have to analyse the spacing and size image to calculate new spacingvv\n"  );
-printf("  I need the caracteristics of the base image\n"  );
-
-		wxVtkBaseView 	*wxvtkbaseview 	= 	GetColorLayerImageViewManager()->GetwxVtkBaseView(0);
-		if (wxvtkbaseview!=NULL)
-		{
-			vtkImageData 	*imagebase		=	wxvtkbaseview->GetVtkBaseData()->GetImageData();
-			if (imagebase!=NULL) 
-			{	
-				imagebase->GetSpacing(_spcBase);
-				int ext[6];
-				imagebase->GetWholeExtent(ext);
-				_dimBase[0]=ext[1]-ext[0]+1;				
-				_dimBase[1]=ext[3]-ext[2]+1;				
-				_dimBase[2]=ext[5]-ext[4]+1;				
-			} // if imagebase
-		} // if wxvtkbaseview
-
-*/
-
 
         if ( 	(spcOriginalLayer[0]!=spcBase[0]) || 
 				(spcOriginalLayer[1]!=spcBase[1]) || 
@@ -349,16 +315,13 @@ printf("  I need the caracteristics of the base image\n"  );
 	  		//EO CM
             if (typeOfTransformation==1)  // Adapt spacing 
             {
-printf("EED ColorLayerImageViewPanel::SetImag 1 \n");
                 newSpc[0] = spcBase[0] * dimensionBase[0] / dimensionOriginalLayer[0];
                 newSpc[1] = spcBase[1] * dimensionBase[1] / dimensionOriginalLayer[1];
                 newSpc[2] = spcBase[2] * dimensionBase[2] / dimensionOriginalLayer[2];
-printf("EED ColorLayerImageViewPanel::SetImag 1  newSpc=%f  %f  %f \n", newSpc[0],newSpc[1],newSpc[2] );
             }
 
             if (typeOfTransformation==2)  // keep spacing of the Layer Image
             {
-printf("EED ColorLayerImageViewPanel::SetImag 2 \n");
                 newSpc[0] = spcOriginalLayer[0];
                 newSpc[1] = spcOriginalLayer[1];
                 newSpc[2] = spcOriginalLayer[2];
@@ -366,22 +329,19 @@ printf("EED ColorLayerImageViewPanel::SetImag 2 \n");
 
             if (typeOfTransformation==3)  // Use the spacing of the Base Image
             {
-printf("EED ColorLayerImageViewPanel::SetImag 3 \n");
                 newSpc[0] = spcBase[0];
                 newSpc[1] = spcBase[1];
                 newSpc[2] = spcBase[2];
-//                spc[0] = 1;
-//                spc[1] = 1;
-//                spc[2] = 1;
             }
-
-	
 			GetColorLayerImageViewManager()->SetNewSpacingLayer(newSpc);
+        } else {
+                newSpc[0] = spcOriginalLayer[0];
+                newSpc[1] = spcOriginalLayer[1];
+                newSpc[2] = spcOriginalLayer[2];
+		} // spc !_spcBase   dim!__dimBase
+
+		GetColorLayerImageViewManager()->SetNewSpacingLayer(newSpc);
 
-//            img->SetSpacing(newSpc);
-//			img->Update();
-//			img->Modified();
-        } // spc !_spcBase   dim!__dimBase
     } // _firsttime_mode
 
 	if (_active==true)
diff --git a/lib/maracasVisuLib/src/interface/wxWindows/widgets/ThresholdImageView/LayerImageBase.cxx b/lib/maracasVisuLib/src/interface/wxWindows/widgets/ThresholdImageView/LayerImageBase.cxx
index a86251c..8f1fc5e 100644
--- a/lib/maracasVisuLib/src/interface/wxWindows/widgets/ThresholdImageView/LayerImageBase.cxx
+++ b/lib/maracasVisuLib/src/interface/wxWindows/widgets/ThresholdImageView/LayerImageBase.cxx
@@ -152,7 +152,14 @@ int LayerImageBase::GetZ()  // virtual
 vtkImageData* LayerImageBase::GetImage()
 {
 //	return _image;
-	return _imageChangeInformation->GetOutput();
+	vtkImageData *result;
+	if (_image==NULL)
+	{
+		result = NULL;
+	} else {
+		result = _imageChangeInformation->GetOutput();
+	}
+	return result;
 }
 
 //----------------------------------------------------------------------------
@@ -402,26 +409,16 @@ void LayerImageBase::onThreshold()
 {
 	if ((_image!=NULL) && (_baseView!=NULL))
 	{
-double spc[3];
-GetImage()-> GetSpacing(spc);
-printf("EED  LayerImageBase::onThreshold  A img-spc %f  %f  %f\n", spc[0],spc[1],spc[2]);
 		double x=GetX();
 		double y=GetY();
 		double z=GetZ();
 
-//		x = x*spc[0];
-//		y = y*spc[1];
-//		z = z*spc[2];
-
-		
 		x = x*_spcBase[0];
 		y = y*_spcBase[1];
 		z = z*_spcBase[2];
 
-
 		CleanXYZ(x,y,z);
 
-
 		vtkCamera *camera = _baseView->GetRenderer()->GetActiveCamera();
 		int directionViewer=0;
 		if (camera->GetParallelProjection()==1)
@@ -430,7 +427,6 @@ printf("EED  LayerImageBase::onThreshold  A img-spc %f  %f  %f\n", spc[0],spc[1]
 			directionViewer =  wxvtk2dbasevie->GetDirection();
 		} // ParallelProjection
 
-
 		if (!GetActorPresent())
 		{
 			if (_thresholdTable==NULL)
@@ -516,9 +512,6 @@ printf("EED  LayerImageBase::onThreshold  A img-spc %f  %f  %f\n", spc[0],spc[1]
 
 //		_scalarbarActor->SetTextPad(4);  ??
 
-GetImage()-> GetSpacing(spc);
-printf("EED  LayerImageBase::onThreshold  B img-spc %f  %f  %f\n", spc[0],spc[1],spc[2]);
-
 
 		} // _image
 }
diff --git a/lib/maracasVisuLib/src/interface/wxWindows/widgets/ThresholdImageView/LayerImageBase.h b/lib/maracasVisuLib/src/interface/wxWindows/widgets/ThresholdImageView/LayerImageBase.h
index b6ad1e1..0a9f0c0 100644
--- a/lib/maracasVisuLib/src/interface/wxWindows/widgets/ThresholdImageView/LayerImageBase.h
+++ b/lib/maracasVisuLib/src/interface/wxWindows/widgets/ThresholdImageView/LayerImageBase.h
@@ -85,13 +85,14 @@ class LayerImageBase
   public:
 		LayerImageBase();
 		virtual ~LayerImageBase();
-		void SetX(int x);
-		void SetY(int y);
-		void SetZ(int z);
-		void SetImage(vtkImageData* image);
-		void SetRangeForColorBar(std::vector<double> &range);
-		void GetRangeForColorBar(double &minRange, double &maxRange);
-		void SetwxVtkBaseView(wxVtkBaseView *baseview);
+		void 			SetX(int x);
+		void 			SetY(int y);
+		void 			SetZ(int z);
+		void 			SetImage(vtkImageData* image);
+		vtkImageData* 	GetImage();
+		void 			SetRangeForColorBar(std::vector<double> &range);
+		void 			GetRangeForColorBar(double &minRange, double &maxRange);
+		void 			SetwxVtkBaseView(wxVtkBaseView *baseview);
 
 		void onThreshold();
 		void onThresholdChange();
@@ -148,7 +149,6 @@ class LayerImageBase
 
   protected:
 		vtkLookupTable				*GetThresholdTable();
-		vtkImageData				*GetImage();
 	  	double 						_range[2];
 	  	std::vector<double> 		_rangeForColorBar;
  };