#include "volumerendererdata.h"
+#include "vtkObjectFactory.h"
+
+vtkCxxRevisionMacro(VolumeRendererData, "$Revision: 1.10 $");
+vtkStandardNewMacro(VolumeRendererData);
VolumeRendererData::VolumeRendererData()
{
- VolRendData = 0;
- ImageData = 0;
- Renderer = 0;
- Interactor = 0;
+ VolRendManager = NULL;
+ ImageData = NULL;
+ Renderer = NULL;
+ Interactor = NULL;
+ LookUpTable = NULL;
+ //ImageDataSeparateComponents = false;
}
void VolumeRendererData::ShowVolume(bool checked){
- if(checked){
- invariant();
- VolRendData = new VolumeRendererManagerData(ImageData, true);
- if(!LookUpTable){
+ try{
+ if(checked){
+ invariant();
+ if(!VolRendManager){
+ VolRendManager = new VolumeRendererManager();
+ VolRendManager->addVolume(ImageData, Interactor);
+ }
+ if(LookUpTable)
+ {
+ VolRendManager->SetLookupTable(LookUpTable);
+ }
+ vector< vtkProp3D* > props = VolRendManager->getProps3D();
+ for(unsigned i = 0; i < props.size(); i++){
+ Renderer->AddActor(props[i]);
+ }
- }else{
- VolRendData->SetLookupTable(LookUpTable);
+ }else{
+ vector< vtkProp3D* > props = VolRendManager->getProps3D();
+ for(unsigned i = 0; i < props.size(); i++){
+ Renderer->RemoveActor(props[i]);
}
- Renderer->AddActor(VolRendData->getProp3D());
- }else{
- Renderer->RemoveActor(VolRendData->getProp3D());
- VolRendData->Delete();
- VolRendData = 0;
+ delete VolRendManager;
+ VolRendManager = 0;
+ }
+ }catch(char* e){
+ cout<<"Exception in: "<<e<<endl;
+ }catch(exception e){
+ cout<<"Exception in: "<<e.what()<<endl;
}
+
}
-void VolumeRendererData::invariant(){
- if(!ImageData){
+void VolumeRendererData::invariant()
+{
+ if(!ImageData)
+ {
throw "Image data not set";
}
- if(!Renderer){
+ if(!Renderer)
+ {
throw "renderer not initialized";
}
}
-void VolumeRendererData::OpacityChanged(vector<double> greyvalues, vector<double> values){
- invariant();
- if(VolRendData){
- VolRendData->setVolumeOpacity(greyvalues,values);
- }
+
+void VolumeRendererData::OpacityChanged(vector<double> greyvalues, vector<double> values)
+{
+ //invariant();
+ if(VolRendManager!=NULL)
+ {
+ ShowVolume(true);
+ VolRendManager->setVolumeOpacity(greyvalues,values);
+ }
}
+
+
void VolumeRendererData::BoundingBoxChanged(bool checked){
- invariant();
- if(VolRendData && Interactor){
+ // invariant();
+
+ if(VolRendManager==NULL)
+ {
+ ShowVolume(true);
+ }
+
+
+ if(VolRendManager && Interactor){
if(checked){
- VolRendData->EnableBoundingBox(Interactor);
+ VolRendManager->EnableBoundingBox(Interactor);
}else{
- VolRendData->DisableBoundingBox();
+ VolRendManager->DisableBoundingBox();
}
}
+
+}
+
+
+void VolumeRendererData::changeCompositeMIPFunction(int function){
+ invariant();
+ if(VolRendManager)
+ {
+ VolRendManager->changeCompositeMIPFunction(0, function);
+ }
+}
+
+/**
+ changes the interoplation type of the volume
+ type = 0 linear
+ type = 1 nearest
+ */
+void VolumeRendererData::changeInterpolationType(int type){
+ invariant();
+ if(VolRendManager)
+ {
+ VolRendManager->changeInterpolationType(type);
+ }
}