LayerImageBase::LayerImageBase()
{
- _actorPresent = false;
- _X = 0;
- _Y = 0;
- _Z = 0;
- _thresholdTable = NULL;
- _thresholdMapper = NULL;
- _scalarbarActor = NULL;
- _thresholdActor = NULL;
- _image = NULL;
- _baseView = NULL;
- _imageReslicer = vtkImageReslice::New();
+ _actorPresent = false;
+ _X = 0;
+ _Y = 0;
+ _Z = 0;
+ _thresholdTable = NULL;
+ _thresholdMapper = NULL;
+ _scalarbarActor = NULL;
+ _thresholdActor = NULL;
+ _image = NULL;
+ _baseView = NULL;
+ _imageReslicer = vtkImageReslice::New();
+ _imageChangeInformation = vtkImageChangeInformation::New();
}
//----------------------------------------------------------------------------
//----------------------------------------------------------------------------
vtkImageData* LayerImageBase::GetImage()
{
- return _image;
+// return _image;
+ return _imageChangeInformation->GetOutput();
}
//----------------------------------------------------------------------------
}
-
//----------------------------------------------------------------------------
void LayerImageBase::SetImage(vtkImageData* image)
{
- double spc[3];
- int ext[6];
+ int ext[6];
+ int dimensionOriginalLayer[3];
_image = image;
- _image->GetSpacing(spc);
_image->GetWholeExtent(ext);
- int sx=ext[1]-ext[0]+1;
- int sy=ext[3]-ext[2]+1;
- int sz=ext[5]-ext[4]+1;
- int ssx=(sx/2)*spc[0];
- int ssy=(sy/2)*spc[1];
- int ssz=(sz/2)*spc[2];
- SetX( ssx );
- SetY( ssy );
- SetZ( ssz );
+ dimensionOriginalLayer[0] = ext[1]-ext[0]+1;
+ dimensionOriginalLayer[1] = ext[3]-ext[2]+1;
+ dimensionOriginalLayer[2] = ext[5]-ext[4]+1;
+ SetDimensionOriginalLayer(dimensionOriginalLayer);
+ double spcOriginalLayer[3];
+ _image->GetSpacing(spcOriginalLayer);
+ SetSpcOriginalLayer(spcOriginalLayer);
+ if (GetwxVtkBaseView()!=NULL)
+ {
+ vtkImageData *imagebase = GetwxVtkBaseView()->GetVtkBaseData()->GetImageData();
+ if (imagebase!=NULL)
+ {
+ int dimBase[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;
+ SetDimensionBase(dimBase);
+ double spcBase[3];
+ imagebase->GetSpacing(spcBase);
+ SetSpcBase(spcBase);
+ SetX( dimBase[0]*spcBase[0]/2 );
+ SetY( dimBase[1]*spcBase[1]/2 );
+ SetZ( dimBase[2]*spcBase[2]/2 );
+ } // if imagebase
+ } // if wxvtkbaseview
_image->Update();
_image->GetScalarRange( _range );
_thresholdTable = vtkLookupTable::New();
+
+ _imageChangeInformation->SetInput(_image);
+}
+
+//------------------------------------------------------------------------------
+void LayerImageBase::SetSpcOriginalLayer(double spc[3])
+{
+ _spcOriginalLayer[0] = spc[0];
+ _spcOriginalLayer[1] = spc[1];
+ _spcOriginalLayer[2] = spc[2];
+}
+
+//------------------------------------------------------------------------------
+void LayerImageBase::SetNewSpacingLayer(double spc[3])
+{
+ _newSpcLayer[0]=spc[0];
+ _newSpcLayer[1]=spc[1];
+ _newSpcLayer[2]=spc[2];
+ _imageChangeInformation->SetOutputSpacing( _newSpcLayer );
+
+}
+
+
+//------------------------------------------------------------------------------
+void LayerImageBase::SetSpcBase(double spc[3])
+{
+ _spcBase[0] = spc[0];
+ _spcBase[1] = spc[1];
+ _spcBase[2] = spc[2];
+}
+
+//------------------------------------------------------------------------------
+void LayerImageBase::SetDimensionOriginalLayer(int dim[3])
+{
+ _dimOriginalLayer[0] = dim[0];
+ _dimOriginalLayer[1] = dim[1];
+ _dimOriginalLayer[2] = dim[2];
+}
+
+//------------------------------------------------------------------------------
+void LayerImageBase::SetDimensionBase(int dim[3])
+{
+ _dimBase[0] = dim[0];
+ _dimBase[1] = dim[1];
+ _dimBase[2] = dim[2];
+}
+
+
+
+//------------------------------------------------------------------------------
+void LayerImageBase::GetSpcOriginalLayer(double *spc)
+{
+ spc[0] = _spcOriginalLayer[0];
+ spc[1] = _spcOriginalLayer[1];
+ spc[2] = _spcOriginalLayer[2];
+}
+
+//------------------------------------------------------------------------------
+void LayerImageBase::GetSpcBase(double *spc)
+{
+ spc[0] = _spcBase[0];
+ spc[1] = _spcBase[1];
+ spc[2] = _spcBase[2];
}
+//------------------------------------------------------------------------------
+void LayerImageBase::GetDimensionOriginalLayer(int *dim)
+{
+ dim[0] = _dimOriginalLayer[0];
+ dim[1] = _dimOriginalLayer[1];
+ dim[2] = _dimOriginalLayer[2];
+}
+
+//------------------------------------------------------------------------------
+void LayerImageBase::GetDimensionBase(int *dim)
+{
+ dim[0] = _dimBase[0];
+ dim[1] = _dimBase[1];
+ dim[2] = _dimBase[2];
+}
+
+
+//------------------------------------------------------------------------------
void LayerImageBase::SetRangeForColorBar(std::vector<double> &range)
{
_rangeForColorBar=range;
}
+
+//------------------------------------------------------------------------------
void LayerImageBase::GetRangeForColorBar(double &minRange, double &maxRange)
{
if (_rangeForColorBar.size()==2)
//----------------------------------------------------------------------------
void LayerImageBase::CleanXYZ(double &x, double &y, double &z)
{
- int ext[6];
- _image->GetWholeExtent(ext);
if (x<0)
{
z=0;
}
+ double maxSize;
+
+ maxSize=_dimOriginalLayer[0]*_newSpcLayer[0];
+ if ( x > maxSize )
+ {
+ x=maxSize;
+ }
+
+ maxSize=_dimOriginalLayer[1]*_newSpcLayer[1];
+ if ( y > maxSize )
+ {
+ y = maxSize;
+ }
+
+ maxSize=_dimOriginalLayer[2]*_newSpcLayer[2];
+ if ( z > maxSize )
+ {
+ z = maxSize;
+ }
+
+
+/*
+
if ( x > (ext[1]-ext[0]) )
{
z=ext[1]-ext[0];
{
z=ext[5]-ext[4];
}
-
+*/
}
{
if ((_image!=NULL) && (_baseView!=NULL))
{
- double spc[3];
- GetImage()-> GetSpacing(spc);
+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);
- x = x*spc[0];
- y = y*spc[1];
- z = z*spc[2];
vtkCamera *camera = _baseView->GetRenderer()->GetActiveCamera();
int directionViewer=0;
// _scalarbarActor->SetTextPad(4); ??
+GetImage()-> GetSpacing(spc);
+printf("EED LayerImageBase::onThreshold B img-spc %f %f %f\n", spc[0],spc[1],spc[2]);
+
+
} // _image
}