X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=lib%2FGUI%2FBase%2FVolumeRenderer%2Fvolumerendererdata.cxx;h=52e7c866cd7c2fc47b79919ef6ec187d1bb3f831;hb=f828884b0ce84ed5d324a6b7533c7758e53eae91;hp=ddbc1c56ccc52e1f6a560c12ab978ff61cd861a0;hpb=a236b3d0da0e436f9027b701df86c3576e9c25fe;p=creaMaracasVisu.git diff --git a/lib/GUI/Base/VolumeRenderer/volumerendererdata.cxx b/lib/GUI/Base/VolumeRenderer/volumerendererdata.cxx index ddbc1c5..52e7c86 100644 --- a/lib/GUI/Base/VolumeRenderer/volumerendererdata.cxx +++ b/lib/GUI/Base/VolumeRenderer/volumerendererdata.cxx @@ -1,74 +1,138 @@ +/*# --------------------------------------------------------------------- +# +# 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.4 $"); +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"<SetLookupTable(LookUpTable); - Renderer->AddActor(VolRendData->getProp3D()); - }else{ - Renderer->RemoveActor(VolRendData->getProp3D()); - VolRendData->Delete(); - VolRendData = 0; + 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]); + } + delete VolRendManager; + VolRendManager = 0; + } + }catch(char* e){ + cout<<"Exception in: "< greyvalues, vector values){ - //invariant(); - - if(VolRendData==NULL) - { - VolRendData = new VolumeRendererManagerData(ImageData, true); - - } - VolRendData->SetLookupTable(LookUpTable); - VolRendData->setVolumeOpacity(greyvalues,values); +void VolumeRendererData::OpacityChanged(vector greyvalues, vector 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); + } }