1 #include "bbmaracasvisuTransferFunctionView.h"
2 #include "bbcreaMaracasVisuPackage.h"
3 namespace bbcreaMaracasVisu
6 BBTK_ADD_BLACK_BOX_TO_PACKAGE(creaMaracasVisu,TransferFunctionView)
7 BBTK_BLACK_BOX_IMPLEMENTATION(TransferFunctionView,bbtk::WxBlackBox);
9 //-----------------------------------------------------
10 void TransferFunctionView::Process()
17 if(bbGetInputIn()!=NULL){
19 if(_currentimg != bbGetInputIn()){
20 _currentimg = bbGetInputIn();
21 //mwxwidget->initializeHistogram(_currentimg);
22 mwxwidget->setImageData(_currentimg);
23 //mwxwidget->Refresh();
28 /*bbSetOutputGreyLevel(greylevel);
29 bbSetOutputValue(value);
30 bbSetOutputGreyLevelColors(greylevelcolors);
32 bbSetOutputGreen(green);
33 bbSetOutputBlue(blue);*/
43 void TransferFunctionView::onColorChange(){
45 std::vector<double> greylevel;
46 std::vector<double> value;
48 std::vector<double> greylevelcolors;
49 std::vector<double> red;
50 std::vector<double> green;
51 std::vector<double> blue;
53 mwxwidget->GetValuesPointsFunction(greylevel, value);
54 mwxwidget->GetValuesColorPointsFunction(greylevelcolors,red, green,blue);
57 _tfun->RemoveAllPoints();
58 for(int i = 0; i < greylevel.size();i++){
59 _tfun->AddPoint(greylevel[i], value[i]);
60 std::cout<<"TransferFunctionView::Process()transfer function "<<greylevel[i]<<" "<< value[i]<<std::endl;
62 _ctfun->RemoveAllPoints();
63 _ctfun->SetScaleToLinear ();
64 _ctfun->ClampingOff();
65 _ctfun->AllowDuplicateScalarsOn();
66 double w=mwxwidget->GetWindowLevel();
67 double c=mwxwidget->GetColorLevel();
69 if (greylevelcolors.size()>1)
71 double min = greylevelcolors[0];
72 double max = greylevelcolors[greylevelcolors.size()-1];
74 if (dif==0) dif=0.0001;
78 _ctfun->AddRGBPoint(greylevelcolors[i], red[i],green[i], blue[i]);
79 for(i = 0; i < greylevelcolors.size();i++)
81 nc = ((greylevelcolors[i]-min)/dif)*w + c-w/2;
82 // _ctfun->AddRGBPoint(greylevelcolors[i], red[i],green[i], blue[i]);
83 _ctfun->AddRGBPoint( nc , red[i],green[i], blue[i]);
84 std::cout<<"EED TransferFunctionView::Process()transfer color function <<"<<nc<<" "<<red[i]<<" "<<green[i]<<" "<<blue[i]<<std::endl;
86 i=greylevelcolors.size()-1;
87 _ctfun->AddRGBPoint( greylevelcolors[i] , red[i],green[i], blue[i]);
90 bbSignalOutputModification();
93 bbSetOutputOpacityFunction(_tfun);
94 bbSetOutputColorFunction(_ctfun);
97 void TransferFunctionView::onSliderChange()
103 bbSignalOutputModification();
106 // bbSetOutputWindowLevel(mwxwidget->GetWindowLevel());
107 // bbSetOutputColorLevel(mwxwidget->GetColorLevel());
111 //-----------------------------------------------------
112 void TransferFunctionView::CreateWidget(wxWindow* parent)
114 bbtkDebugMessageInc("Core",9,"TransferFunctionView::CreateWxWindow()"<<std::endl);
116 mwxwidget = new HistogramDialogComboBox(parent);
119 HandlerTransferFunctionView* handler = new HandlerTransferFunctionView(this);
121 parent->Connect(mwxwidget->GetId(), wxEVT_COMMAND_COMBOBOX_SELECTED, (wxObjectEventFunction) (&HandlerTransferFunctionView::onColorChange),NULL,handler);
122 parent->Connect(mwxwidget->GetId(), wxEVT_SCROLL_THUMBTRACK, (wxObjectEventFunction) (&HandlerTransferFunctionView::onSliderChange),NULL,handler);
124 bbtkDebugDecTab("Core",9);
125 bbSetOutputWidget( mwxwidget );
128 //-----------------------------------------------------
130 void TransferFunctionView::bbUserSetDefaultValues()
138 bbSetOutputOpacityFunction(0);
139 bbSetOutputColorFunction(0);
144 //-----------------------------------------------------------------
145 void TransferFunctionView::bbUserInitializeProcessing()
147 _tfun = vtkPiecewiseFunction::New();
148 _ctfun = vtkColorTransferFunction::New();
149 _ctfun->SetClamping(-1);
153 //-----------------------------------------------------------------
154 void TransferFunctionView::bbUserFinalizeProcessing()
159 //-----------------------------------------------------------------
162 HandlerTransferFunctionView::HandlerTransferFunctionView(TransferFunctionView* box)
167 HandlerTransferFunctionView::~HandlerTransferFunctionView()
171 void HandlerTransferFunctionView::onColorChange(wxCommandEvent& event)
173 _box->onColorChange();
176 void HandlerTransferFunctionView::onSliderChange(wxCommandEvent& event)
178 _box->onSliderChange();
184 // EO namespace bbcreaMaracasVisu