_layerimagebase->SetX( vtkmprbasedata->GetX() );
_layerimagebase->SetY( vtkmprbasedata->GetY() );
_layerimagebase->SetZ( vtkmprbasedata->GetZ() );
- _layerimagebase->onThresholdChange();
+ _layerimagebase->onThresholdChange();
} // if basedata
} // if wxvtkbaseview
LayerImageBase::LayerImageBase()
{
_actorPresent = false;
- _X = 0;
- _Y = 0;
- _Z = 0;
+ _X = -1;
+ _Y = -1;
+ _Z = -1;
_thresholdTable = NULL;
_thresholdMapper = NULL;
_scalarbarActor = NULL;
vtkImageData* LayerImageBase::GetImage()
{
// return _image;
- return _imageChangeInformation->GetOutput();
+ vtkImageData *result;
+ if (_image==NULL)
+ {
+ result = NULL;
+ } else {
+ result = _imageChangeInformation->GetOutput();
+ }
+ return result;
}
//----------------------------------------------------------------------------
void LayerImageBase::SetImage(vtkImageData* image)
{
int ext[6];
+ double spcBase[3];
int dimensionOriginalLayer[3];
+ int dimBase[6];
+
+ ext[0]=0;
+ ext[1]=0;
+ ext[2]=0;
+ ext[3]=0;
+ ext[4]=0;
+ ext[5]=0;
+ spcBase[0]=0;
+ spcBase[1]=0;
+ spcBase[2]=0;
+ spcBase[3]=0;
+ spcBase[4]=0;
+ spcBase[5]=0;
+
_image = image;
+ _image->Update();
_image->GetWholeExtent(ext);
dimensionOriginalLayer[0] = ext[1]-ext[0]+1;
dimensionOriginalLayer[1] = ext[3]-ext[2]+1;
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 ((_X<0) || (_X>dimBase[0])) { SetX( dimBase[0]/2 ); }
+ if ((_Y<0) || (_Y>dimBase[1])) { SetY( dimBase[1]/2 ); }
+ if ((_Z<0) || (_Z>dimBase[2])) { SetZ( dimBase[2]/2 ); }
+
+
} // if imagebase
} // if wxvtkbaseview
- _image->Update();
_image->GetScalarRange( _range );
_thresholdTable = vtkLookupTable::New();
}
+//------------------------------------------------------------------------------
+void LayerImageBase::SetColorBarPosition(std::vector<int> &colorbarposition)
+{
+ _colorBarPosition=colorbarposition;
+}
+
//------------------------------------------------------------------------------
void LayerImageBase::SetRangeForColorBar(std::vector<double> &range)
{
ColorLayerObserver *colorlayerobserver = ColorLayerObserver::New();
_baseView->GetVtkBaseData()->AddObserver( 1, colorlayerobserver );
colorlayerobserver->SetLayerImageBase(this);
-
} // if _baseView
}
//----------------------------------------------------------------------------
void LayerImageBase::CleanXYZ(double &x, double &y, double &z)
{
-
if (x<0)
{
x=0;
}
-
if (y<0)
{
y=0;
}
-
if (z<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];
- }
-
- if ( y > (ext[3]-ext[2]) )
- {
- z=ext[3]-ext[2];
- }
-
- if ( z > (ext[5]-ext[4]) )
- {
- z=ext[5]-ext[4];
- }
-*/
-
}
//----------------------------------------------------------------------------
{
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)
{
_thresholdActor = vtkImageActor::New( );
_scalarbarActor = vtkScalarBarActor::New();
- _thresholdActor->SetOpacity( 0.6 );
+ if (_colorBarPosition.size()==2)
+ {
+ _scalarbarActor->SetDisplayPosition(_colorBarPosition[0],_colorBarPosition[1]);
+ } else {
+ _scalarbarActor->SetDisplayPosition(0,0);
+ }
+
+ _thresholdActor->SetOpacity( 0 );
_thresholdActor->InterpolateOn( );
+
if (directionViewer==0)
{
_thresholdActor->SetPosition( 900-1,0,0 );
_thresholdMapper->SetLookupTable( _thresholdTable );
_thresholdActor->SetInput( _thresholdMapper->GetOutput() );
-// _scalarbarActor->SetLookupTable( _thresholdTable );
- _scalarbarActor->SetLookupTable( _thresholdMapper->GetLookupTable() );
+ _scalarbarActor->SetLookupTable( _thresholdTable );
+// _scalarbarActor->SetLookupTable( _thresholdMapper->GetLookupTable() );
_scalarbarActor->SetTitle("Value");
_scalarbarActor->SetNumberOfLabels(4);
int fontsize = _scalarbarActor->GetLabelTextProperty()->GetFontSize();
// _scalarbarActor->SetTextPad(4); ??
-GetImage()-> GetSpacing(spc);
-printf("EED LayerImageBase::onThreshold B img-spc %f %f %f\n", spc[0],spc[1],spc[2]);
-
} // _image
}
{
if (_actorPresent)
{
- _thresholdActor->SetOpacity(opacity*0.1);
+ _thresholdActor->SetOpacity(opacity/100.0);
}
}