/**
** Begin of the threshold panel
**/
-ColorLayerImageViewPanel::ColorLayerImageViewPanel(wxWindow* parent, int min, int max, int type)
+ColorLayerImageViewPanel::ColorLayerImageViewPanel(wxWindow* parent, int min, int max,int opacity, int type)
//: wxPanel(parent, -1, wxDefaultPosition, wxSize(600,100), wxBORDER_SUNKEN)
: wxPanel(parent, -1, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL)
_sl_SliceImageZ->Enable(false);
_interpolationCheckBox = new wxCheckBox(this, -1, _T("Interpole") );
_interpolationCheckBox->SetValue(true);
- _opacity = new wxSlider(this, wxID_ANY, 6, 1, 10, wxDefaultPosition, wxDefaultSize, wxSL_HORIZONTAL|wxSL_LABELS, wxDefaultValidator);
+ _opacity = new wxSlider(this, wxID_ANY, opacity, 0, 100, wxDefaultPosition, wxDefaultSize, wxSL_HORIZONTAL|wxSL_LABELS, wxDefaultValidator);
// _histogram = new Histogram( this , -1, wxPoint(0,0), wxSize(400,400), /*wxNO_BORDER*/ wxBORDER_DEFAULT );
// _histogramMinMaxLevel = new HistogramMinMaxLevel( (HistogramBase*)_histogram );
sizer = new wxFlexGridSizer(2);
_interpolationCheckBox = new wxCheckBox(this, -1, _T("Interpolate") );
_interpolationCheckBox->SetValue(true);
- _opacity = new wxSlider(this, wxID_ANY, 6, 0, 10, wxDefaultPosition, wxSize(2,40), wxSL_HORIZONTAL|wxSL_LABELS, wxDefaultValidator);
+ _opacity = new wxSlider(this, wxID_ANY, opacity, 0, 100, wxDefaultPosition, wxDefaultSize, wxSL_HORIZONTAL|wxSL_LABELS, wxDefaultValidator);
Connect( _interpolationCheckBox->GetId(), wxEVT_COMMAND_CHECKBOX_CLICKED, (wxObjectEventFunction) &ColorLayerImageViewPanel::onThresholdInterpolation );
Connect( _opacity->GetId(), wxEVT_SCROLL_THUMBTRACK, (wxObjectEventFunction) &ColorLayerImageViewPanel::onChangeOpacity );
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] );
_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]) ||
//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];
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)
printf("EED ColorLayerImageViewPanel::onReadImage ....WARNING... Read dlg. all images creaImageIO ... ???\n");
creaMaracasVisuKernel::OpenImageDialog diag = creaMaracasVisuKernel::OpenImageDialog();
- SetImage( diag.getImageData() );
+
+ vtkImageChangeInformation *change = vtkImageChangeInformation::New();
+ vtkImageData *img = diag.getImageData();
+ int ext[6];
+ double spc[6];
+ double origin[3];
+ img -> GetExtent( ext );
+ img -> GetSpacing( spc );
+ change -> SetInputData( img );
+ origin[0]=0;
+ origin[1]=0;
+ origin[2]=0;
+ change -> SetOutputSpacing( spc[0] , spc[1] , spc [2] );
+ change -> SetOutputExtentStart(0,0,0);
+ change -> SetOutputOrigin( origin );
+ change -> Modified(); //important
+ change -> Update(); //important
+ SetImage( change->GetOutput() );
}
//----------------------------------------------------------------------------
}
//----------------------------------------------------------------------------
-void ColorLayerImageViewPanel::onChangeOpacity(wxScrollEvent& event)
+void ColorLayerImageViewPanel::ChangeOpacity()
{
int opacity = _opacity->GetValue();
_colorLayerImageViewManager->onThresholdChangeOpacity(opacity);
RefreshView();
}
+//----------------------------------------------------------------------------
+void ColorLayerImageViewPanel::onChangeOpacity(wxScrollEvent& event)
+{
+ ChangeOpacity();
+// int opacity = _opacity->GetValue();
+// _colorLayerImageViewManager->onThresholdChangeOpacity(opacity);
+// RefreshView();
+}
+
//----------------------------------------------------------------------------
bool ColorLayerImageViewPanel::IsVisible()