]> Creatis software - creaMaracasVisu.git/blobdiff - lib/GUI/Base/VolumeRenderer/volumerendererdata.cxx
#2815 creaMaracasVisu Bug New Normal - ColorLayer box transparence 0 not permitted
[creaMaracasVisu.git] / lib / GUI / Base / VolumeRenderer / volumerendererdata.cxx
index c19456f445c0ac20960148beabedad0353922a38..52e7c866cd7c2fc47b79919ef6ec187d1bb3f831 100644 (file)
+/*# ---------------------------------------------------------------------
+#
+# Copyright (c) CREATIS (Centre de Recherche en Acquisition et Traitement de l'Image
+#                        pour la Sant�)
+# Authors : Eduardo Davila, Frederic Cervenansky, Claire Mouton
+# Previous Authors : Laurent Guigues, Jean-Pierre Roux
+# CreaTools website : www.creatis.insa-lyon.fr/site/fr/creatools_accueil
+#
+#  This software is governed by the CeCILL-B license under French law and
+#  abiding by the rules of distribution of free software. You can  use,
+#  modify and/ or redistribute the software under the terms of the CeCILL-B
+#  license as circulated by CEA, CNRS and INRIA at the following URL
+#  http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html
+#  or in the file LICENSE.txt.
+#
+#  As a counterpart to the access to the source code and  rights to copy,
+#  modify and redistribute granted by the license, users are provided only
+#  with a limited warranty  and the software's author,  the holder of the
+#  economic rights,  and the successive licensors  have only  limited
+#  liability.
+#
+#  The fact that you are presently reading this means that you have had
+#  knowledge of the CeCILL-B license and that you accept its terms.
+# ------------------------------------------------------------------------ */
+
 #include "volumerendererdata.h"
 #include "vtkObjectFactory.h"
 
-vtkCxxRevisionMacro(VolumeRendererData, "$Revision: 1.6 $");
+vtkCxxRevisionMacro(VolumeRendererData, "$Revision: 1.11 $");
 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();
-            //cout<<"JPRG::VolumeRendererData::ShowVolume"<<endl;
-            if(VolRendData==NULL)
-            {
-                VolRendData = new VolumeRendererManagerData(ImageData, true);
+    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{
+            vector< vtkProp3D* > props = VolRendManager->getProps3D();
+            for(unsigned i = 0; i < props.size(); i++){
+                Renderer->RemoveActor(props[i]);
             }
-            VolRendData->SetLookupTable(LookUpTable);
-            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==NULL)
-    {
-          VolRendData = new VolumeRendererManagerData(ImageData, true);
-
-    }
-    VolRendData->SetLookupTable(LookUpTable);
-    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==NULL)
+    if(VolRendManager==NULL)
     {
-         VolRendData = new VolumeRendererManagerData(ImageData, true);
-         VolRendData->SetLookupTable(LookUpTable);
+         ShowVolume(true);
     }
 
 
-    if(VolRendData && Interactor){
+    if(VolRendManager && Interactor){
         if(checked){
-            VolRendData->EnableBoundingBox(Interactor);
+            VolRendManager->EnableBoundingBox(Interactor);
         }else{
-            VolRendData->DisableBoundingBox();
+            VolRendManager->DisableBoundingBox();
         }
     }
+       
 }
 
+
 void VolumeRendererData::changeCompositeMIPFunction(int function){
     invariant();
-    if(VolRendData)
-        VolRendData->changeCompositeMIPFunction(function);
+    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);
+       }       
 }