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(){
102 bbSignalOutputModification();
104 // bbSetOutputWindowLevel(mwxwidget->GetWindowLevel());
105 // bbSetOutputColorLevel(mwxwidget->GetColorLevel());
109 //-----------------------------------------------------
110 void TransferFunctionView::CreateWidget(wxWindow* parent)
112 bbtkDebugMessageInc("Core",9,"TransferFunctionView::CreateWxWindow()"<<std::endl);
114 mwxwidget = new HistogramDialogComboBox(parent);
117 HandlerTransferFunctionView* handler = new HandlerTransferFunctionView(this);
119 parent->Connect(mwxwidget->GetId(), wxEVT_COMMAND_COMBOBOX_SELECTED, (wxObjectEventFunction) (&HandlerTransferFunctionView::onColorChange),NULL,handler);
120 parent->Connect(mwxwidget->GetId(), wxEVT_SCROLL_THUMBTRACK, (wxObjectEventFunction) (&HandlerTransferFunctionView::onSliderChange),NULL,handler);
122 bbtkDebugDecTab("Core",9);
123 bbSetOutputWidget( mwxwidget );
126 //-----------------------------------------------------
128 void TransferFunctionView::bbUserSetDefaultValues()
136 bbSetOutputOpacityFunction(0);
137 bbSetOutputColorFunction(0);
142 //-----------------------------------------------------------------
143 void TransferFunctionView::bbUserInitializeProcessing()
145 _tfun = vtkPiecewiseFunction::New();
146 _ctfun = vtkColorTransferFunction::New();
147 _ctfun->SetClamping(-1);
151 //-----------------------------------------------------------------
152 void TransferFunctionView::bbUserFinalizeProcessing()
157 //-----------------------------------------------------------------
160 HandlerTransferFunctionView::HandlerTransferFunctionView(TransferFunctionView* box){
163 HandlerTransferFunctionView::~HandlerTransferFunctionView(){
166 void HandlerTransferFunctionView::onColorChange(wxCommandEvent& event){
167 _box->onColorChange();
169 void HandlerTransferFunctionView::onSliderChange(wxCommandEvent& event){
170 _box->onSliderChange();
176 // EO namespace bbcreaMaracasVisu