X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=bbtk%2Fsrc%2FbbmaracasvisuTransferFunctionView.cxx;h=7d6765e4344345f820d58e3d4c81b4c9c8b5c576;hb=439cc05f12e61d0ba090ec0c2ba8701d382238d7;hp=cfa8f01e57a38d56a361d58d3444b2e17d494e46;hpb=44e4be7013ea566bd2bdefb9d48e1da0071c3d91;p=creaMaracasVisu.git diff --git a/bbtk/src/bbmaracasvisuTransferFunctionView.cxx b/bbtk/src/bbmaracasvisuTransferFunctionView.cxx index cfa8f01..7d6765e 100644 --- a/bbtk/src/bbmaracasvisuTransferFunctionView.cxx +++ b/bbtk/src/bbmaracasvisuTransferFunctionView.cxx @@ -1,41 +1,213 @@ +/*# --------------------------------------------------------------------- +# +# 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 "bbmaracasvisuTransferFunctionView.h" -#include "bbmaracasvisuPackage.h" -namespace bbmaracasvisu +#include "bbcreaMaracasVisuPackage.h" +namespace bbcreaMaracasVisu { -BBTK_ADD_BLACK_BOX_TO_PACKAGE(maracasvisu,TransferFunctionView) +BBTK_ADD_BLACK_BOX_TO_PACKAGE(creaMaracasVisu,TransferFunctionView) BBTK_BLACK_BOX_IMPLEMENTATION(TransferFunctionView,bbtk::WxBlackBox); //----------------------------------------------------- void TransferFunctionView::Process() { + if(bbGetInputIn()!=NULL) + { + + if(_currentimg != bbGetInputIn()){ + _currentimg = bbGetInputIn(); + //mwxwidget->initializeHistogram(_currentimg); + mwxwidget->setImageData(_currentimg); + //mwxwidget->Refresh(); + } + +// onColorChange(); + /* + bbSetOutputGreyLevel(greylevel); + bbSetOutputValue(value); + bbSetOutputGreyLevelColors(greylevelcolors); + bbSetOutputRed(red); + bbSetOutputGreen(green); + bbSetOutputBlue(blue); + */ + } // if In } -//----------------------------------------------------- -void TransferFunctionView::CreateWidget() +void TransferFunctionView::onColorChange() { - bbtkDebugMessageInc("Core",9,"TransferFunctionView::CreateWxWindow()"< greylevel; + std::vector value; + + std::vector greylevelcolors; + std::vector red; + std::vector green; + std::vector blue; + + mwxwidget->GetValuesPointsFunction(greylevel, value); + mwxwidget->GetValuesColorPointsFunction(greylevelcolors,red, green,blue); + + + _tfun->RemoveAllPoints(); + unsigned int i; + for(i = 0; i < greylevel.size();i++){ + _tfun->AddPoint(greylevel[i], value[i]); + std::cout<<"TransferFunctionView::Process()transfer function "<RemoveAllPoints(); + _ctfun->SetScaleToLinear (); + _ctfun->ClampingOff(); + _ctfun->AllowDuplicateScalarsOn(); + double w=mwxwidget->GetWindowLevel(); + double c=mwxwidget->GetColorLevel(); + + if (greylevelcolors.size()>1) + { + double min = greylevelcolors[0]; + double max = greylevelcolors[greylevelcolors.size()-1]; + double dif = max-min; + if (dif==0) dif=0.0001; + double nc; + unsigned int i; + i=0; + _ctfun->AddRGBPoint(greylevelcolors[i], red[i],green[i], blue[i]); + for(i = 0; i < greylevelcolors.size();i++) + { + nc = ((greylevelcolors[i]-min)/dif)*w + c-w/2; +// _ctfun->AddRGBPoint(greylevelcolors[i], red[i],green[i], blue[i]); + _ctfun->AddRGBPoint( nc , red[i],green[i], blue[i]); + std::cout<<"EED TransferFunctionView::Process()transfer color function <<"<AddRGBPoint( greylevelcolors[i] , red[i],green[i], blue[i]); + } + + + _tfun->Update(); + bbSetOutputOpacityFunction(_tfun); + bbSetOutputColorFunction(_ctfun ); + bbSetOutputActive( mwxwidget->GetActive() ); + + bbSignalOutputModification(); + +} + +void TransferFunctionView::onSliderChange() + { + + //EED + onColorChange(); + + bbSignalOutputModification(); + +printf("EED TransferFunctionView::onSliderChange --------------------- \n"); + +// bbSetOutputWindowLevel(mwxwidget->GetWindowLevel()); +// bbSetOutputColorLevel(mwxwidget->GetColorLevel()); + } +/* //----------------------------------------------------- -void TransferFunctionView::bbUserConstructor() +void TransferFunctionView::onActive() { + bbSignalOutputModification(); + + printf("EED TransferFunctionView::onActive popopopopopopopop \n"); } +*/ //----------------------------------------------------- -void TransferFunctionView::bbUserCopyConstructor() +void TransferFunctionView::CreateWidget(wxWindow* parent) { + bbtkDebugMessageInc("Core",9,"TransferFunctionView::CreateWxWindow()"<Connect(mwxwidget->GetId(), wxEVT_COMMAND_COMBOBOX_SELECTED, (wxObjectEventFunction) (&HandlerTransferFunctionView::onActive),NULL,handler); + parent->Connect(mwxwidget->GetId(), wxEVT_COMMAND_COMBOBOX_SELECTED, (wxObjectEventFunction) (&HandlerTransferFunctionView::onColorChange),NULL,handler); + parent->Connect(mwxwidget->GetId(), wxEVT_SCROLL_THUMBTRACK, (wxObjectEventFunction) (&HandlerTransferFunctionView::onSliderChange),NULL,handler); + bbSetOutputWidget( mwxwidget ); + bbtkDebugDecTab("Core",9); } //----------------------------------------------------- -void TransferFunctionView::bbUserDestructor() + +void TransferFunctionView::bbUserSetDefaultValues() { + mwxwidget = NULL; + _currentimg = NULL; + _tfun = NULL; + _ctfun = NULL; + bbSetOutputOpacityFunction(0); + bbSetOutputColorFunction(0); } + + //----------------------------------------------------------------- + void TransferFunctionView::bbUserInitializeProcessing() + { + _tfun = vtkPiecewiseFunction::New(); + _ctfun = vtkColorTransferFunction::New(); + _ctfun->SetClamping(-1); + bbSetInputIn(NULL); + } + + //----------------------------------------------------------------- + void TransferFunctionView::bbUserFinalizeProcessing() + { + } + + //----------------------------------------------------------------- + HandlerTransferFunctionView::HandlerTransferFunctionView(TransferFunctionView* box) + { + _box = box; + } + + HandlerTransferFunctionView::~HandlerTransferFunctionView() + { + } + + void HandlerTransferFunctionView::onColorChange(wxCommandEvent& event) + { + _box->onColorChange(); + } + + void HandlerTransferFunctionView::onSliderChange(wxCommandEvent& event) + { + _box->onSliderChange(); + } + +/* + void HandlerTransferFunctionView::onActive(wxCommandEvent& event) + { + _box->onActive(); + } +*/ } -// EO namespace bbmaracasvisu + +// EO namespace bbcreaMaracasVisu