X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;ds=sidebyside;f=bbtk%2Fsrc%2FbbmaracasvisuTransferFunctionView.cxx;h=c02ccc6f7820ea06211bb84a7b8cb2a80cceebab;hb=24937478048aca664712bb708240bff79879e0d9;hp=f95262df8dfc5aeea3d6a8e3df77254a50ae65ca;hpb=1a8a3ec53282897cf506adeee7b49e5e2c0fe9f5;p=creaMaracasVisu.git diff --git a/bbtk/src/bbmaracasvisuTransferFunctionView.cxx b/bbtk/src/bbmaracasvisuTransferFunctionView.cxx index f95262d..c02ccc6 100644 --- a/bbtk/src/bbmaracasvisuTransferFunctionView.cxx +++ b/bbtk/src/bbmaracasvisuTransferFunctionView.cxx @@ -9,12 +9,102 @@ BBTK_BLACK_BOX_IMPLEMENTATION(TransferFunctionView,bbtk::WxBlackBox); //----------------------------------------------------- void TransferFunctionView::Process() { + + + + + if(bbGetInputIn()!=NULL){ - mwxwidget->initializeHistogram(bbGetInputIn()); - mwxwidget->Refresh(); + + 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);*/ + + + + + } + + +} + +void TransferFunctionView::onColorChange(){ + + std::vector 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(); + for(int 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; + 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]); + } + + bbSignalOutputModification(); + _tfun->Update(); + bbSetOutputOpacityFunction(_tfun); + bbSetOutputColorFunction(_ctfun); +} + +void TransferFunctionView::onSliderChange() + { + //EED + onColorChange(); + + bbSignalOutputModification(); + + +// bbSetOutputWindowLevel(mwxwidget->GetWindowLevel()); +// bbSetOutputColorLevel(mwxwidget->GetColorLevel()); } @@ -22,16 +112,31 @@ void TransferFunctionView::Process() void TransferFunctionView::CreateWidget(wxWindow* parent) { bbtkDebugMessageInc("Core",9,"TransferFunctionView::CreateWxWindow()"<Connect(mwxwidget->GetId(), wxEVT_COMMAND_COMBOBOX_SELECTED, (wxObjectEventFunction) (&HandlerTransferFunctionView::onColorChange),NULL,handler); + parent->Connect(mwxwidget->GetId(), wxEVT_SCROLL_THUMBTRACK, (wxObjectEventFunction) (&HandlerTransferFunctionView::onSliderChange),NULL,handler); - mwxwidget = new HistogramWidget(parent, -1); bbtkDebugDecTab("Core",9); - bbSetOutputWidget( mwxwidget ); + bbSetOutputWidget( mwxwidget ); } //----------------------------------------------------- + void TransferFunctionView::bbUserSetDefaultValues() { mwxwidget = NULL; + _currentimg = NULL; + + _tfun = NULL; + _ctfun = NULL; + + bbSetOutputOpacityFunction(0); + bbSetOutputColorFunction(0); } @@ -39,6 +144,9 @@ void TransferFunctionView::bbUserSetDefaultValues() //----------------------------------------------------------------- void TransferFunctionView::bbUserInitializeProcessing() { + _tfun = vtkPiecewiseFunction::New(); + _ctfun = vtkColorTransferFunction::New(); + _ctfun->SetClamping(-1); bbSetInputIn(NULL); } @@ -46,10 +154,33 @@ void TransferFunctionView::bbUserSetDefaultValues() 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(); + } } + + // EO namespace bbcreaMaracasVisu