From: Juan Prieto Date: Fri, 13 Nov 2009 11:47:37 +0000 (+0000) Subject: surface box y widget carole X-Git-Tag: CREATOOLS.2-0-3~123 X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=commitdiff_plain;ds=sidebyside;h=476100b14fe16ecb940787a8f98d65e8359d7f58;p=creaMaracasVisu.git surface box y widget carole --- diff --git a/bbtk/src/bbcreaMaracasVisuSurfaceRendering.cxx b/bbtk/src/bbcreaMaracasVisuSurfaceRendering.cxx index af237a4..b2f7915 100644 --- a/bbtk/src/bbcreaMaracasVisuSurfaceRendering.cxx +++ b/bbtk/src/bbcreaMaracasVisuSurfaceRendering.cxx @@ -18,7 +18,9 @@ void SurfaceRendering::Process() if(surrend != NULL){ vtkRenderer* renderer = bbGetInputRenderer(); + vtkRenderWindowInteractor* interactor = bbGetInputInteractor(); surrend->setRenderer(renderer); + surrend->setInteractor(interactor); vtkImageData* prop3D; tempvect.push_back(bbGetInputIn0()); tempvect.push_back(bbGetInputIn1()); @@ -57,6 +59,7 @@ void SurfaceRendering::CreateWidget(wxWindow* parent) bbSetInputIn3(NULL); bbSetInputIn4(NULL); bbSetInputRenderer(NULL); + bbSetInputInteractor(NULL); bbSetOutputWidget(NULL); bbSetOutputOut1(NULL); bbSetOutputOut2(NULL); diff --git a/bbtk/src/bbcreaMaracasVisuSurfaceRendering.h b/bbtk/src/bbcreaMaracasVisuSurfaceRendering.h index 7cf19dd..aad663b 100644 --- a/bbtk/src/bbcreaMaracasVisuSurfaceRendering.h +++ b/bbtk/src/bbcreaMaracasVisuSurfaceRendering.h @@ -3,6 +3,7 @@ #define __bbcreaMaracasVisuSurfaceRendering_h_INCLUDED__ #include "bbcreaMaracasVisu_EXPORT.h" #include "bbtkWxBlackBox.h" +#include "vtkRenderWindowInteractor.h" #include "vtkImageData.h" #include "vtkProp3D.h" @@ -19,11 +20,13 @@ class bbcreaMaracasVisu_EXPORT SurfaceRendering BBTK_BLACK_BOX_INTERFACE(SurfaceRendering,bbtk::WxBlackBox); //BBTK_DECLARE_INPUT(In,vtkImageData*); BBTK_DECLARE_INPUT(Renderer,vtkRenderer*); + BBTK_DECLARE_INPUT(Interactor,vtkRenderWindowInteractor*); BBTK_DECLARE_INPUT(In0,vtkImageData*); BBTK_DECLARE_INPUT(In1,vtkImageData*); BBTK_DECLARE_INPUT(In2,vtkImageData*); BBTK_DECLARE_INPUT(In3,vtkImageData*); BBTK_DECLARE_INPUT(In4,vtkImageData*); + BBTK_DECLARE_OUTPUT(Out1,vtkImageData*); BBTK_DECLARE_OUTPUT(Out2,vtkImageData*); BBTK_DECLARE_OUTPUT(Out3,vtkImageData*); @@ -44,6 +47,7 @@ BBTK_DESCRIPTION("BB of the module SurfaceRendering"); BBTK_CATEGORY("__CategoryBlackBox__"); //BBTK_INPUT(SurfaceRendering,In,"Renderer to show the different prop3D",vtkImageData*,""); BBTK_INPUT(SurfaceRendering,Renderer,"Renderer to show the different prop3D",vtkRenderer*,""); +BBTK_INPUT(SurfaceRendering,Interactor,"Renderer to show the different prop3D",vtkRenderWindowInteractor*,""); BBTK_INPUT(SurfaceRendering,In0,"Input image to the SurfaceRendering",vtkImageData*,""); BBTK_INPUT(SurfaceRendering,In1,"Input image to the SurfaceRendering",vtkImageData*,""); BBTK_INPUT(SurfaceRendering,In2,"Input image to the SurfaceRendering",vtkImageData*,""); diff --git a/data/colorsfunction.txt b/data/colorsfunction.txt index 7512588..aa7621e 100644 --- a/data/colorsfunction.txt +++ b/data/colorsfunction.txt @@ -80,31 +80,57 @@ - 0.0701324 + 0 1 - 0.491417 + 0.5 1 - 0.888426 + 1 1 - 0.00465915 + 0 1 1 1 - 0.997548 + 1 + 0 + 0 + 0 + + + + + + + 0 + + + + 1 + 1 + + + + + 0 0 0 0 + + 1 + 1 + 1 + 1 + diff --git a/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracasSurfaceRendering.cxx b/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracasSurfaceRendering.cxx index cdecb95..fc13b85 100644 --- a/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracasSurfaceRendering.cxx +++ b/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracasSurfaceRendering.cxx @@ -3,8 +3,8 @@ Program: wxMaracas Module: $RCSfile: wxMaracasSurfaceRendering.cxx,v $ Language: C++ - Date: $Date: 2009/11/13 09:34:10 $ - Version: $Revision: 1.5 $ + Date: $Date: 2009/11/13 11:47:41 $ + Version: $Revision: 1.6 $ Copyright: (c) 2002, 2003 License: @@ -83,6 +83,10 @@ void wxMaracasSurfaceRendering::setRenderer(vtkRenderer* renderer){ surrendmanager->setRenderer(renderer); } +void wxMaracasSurfaceRendering::setInteractor(vtkRenderWindowInteractor* interactor){ + surrendmanager->setInteractor(interactor); +} + void wxMaracasSurfaceRendering::addRemoveActor(int propid, bool addremove){ try{ surrendmanager->addRemoveActor(propid, addremove); @@ -94,6 +98,18 @@ void wxMaracasSurfaceRendering::addRemoveActor(int propid, bool addremove){ delete diag; } } +void wxMaracasSurfaceRendering::addRemoveSurfaceBox(int propid, bool addremove){ + try{ + surrendmanager->addRemoveSurfaceBox(propid, addremove); + } + catch(char* str){ + std::cout << "Exception : " << str << '\n'; + wxMessageDialog* diag = new wxMessageDialog(this, wxString(str,wxConvUTF8 ), wxString(str,wxConvUTF8 ), wxICON_ERROR); + diag->ShowModal(); + delete diag; + } +} + void wxMaracasSurfaceRendering::changeOpacity(int _propid, int value){ try{ @@ -148,9 +164,9 @@ void wxMaracasSurfaceRendering::onLoadImageFile(){ { loadPropMHD(pathfile,filename); } - //else if(filename.EndsWith(stl)){ - //loadProp3D(pathfile,filename); - //} + else if(filename.EndsWith(stl)){ + loadProp3D(pathfile,filename); + } } delete fildial; } diff --git a/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracasSurfaceRendering.h b/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracasSurfaceRendering.h index 2a4318c..b4fc5b5 100644 --- a/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracasSurfaceRendering.h +++ b/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracasSurfaceRendering.h @@ -3,8 +3,8 @@ Program: wxMaracas Module: $RCSfile: wxMaracasSurfaceRendering.h,v $ Language: C++ - Date: $Date: 2009/11/13 09:34:10 $ - Version: $Revision: 1.2 $ + Date: $Date: 2009/11/13 11:47:41 $ + Version: $Revision: 1.3 $ Copyright: (c) 2002, 2003 License: @@ -43,12 +43,16 @@ public: void setRenderer(vtkRenderer* renderer); + void setInteractor(vtkRenderWindowInteractor* interactor); + void changeOpacity(int propid, int value); void changeIsoValue(int propid, double value); void addRemoveActor(int propid, bool addremove); + void addRemoveSurfaceBox(int propid, bool addremove); + void changeColor(int propid, double red, double green, double blue); void addProp3D(vtkProp3D* prop3D, std::string dataname=""); diff --git a/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracasSurfaceRenderingManager.cxx b/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracasSurfaceRenderingManager.cxx index e2b1147..55aa4e6 100644 --- a/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracasSurfaceRenderingManager.cxx +++ b/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracasSurfaceRenderingManager.cxx @@ -3,8 +3,8 @@ Program: wxMaracas Module: $RCSfile: wxMaracasSurfaceRenderingManager.cxx,v $ Language: C++ - Date: $Date: 2009/11/13 09:34:10 $ - Version: $Revision: 1.4 $ + Date: $Date: 2009/11/13 11:47:41 $ + Version: $Revision: 1.5 $ Copyright: (c) 2002, 2003 License: @@ -22,6 +22,7 @@ **/ wxMaracasSurfaceRenderingManager::wxMaracasSurfaceRenderingManager(){ _renderer = NULL; + _interactor = NULL; _idCount=0; } wxMaracasSurfaceRenderingManager::~wxMaracasSurfaceRenderingManager(){ @@ -34,6 +35,14 @@ void wxMaracasSurfaceRenderingManager::setRenderer(vtkRenderer* renderer){ _renderer = renderer; } +/** +** Sets the renderer to manage the prop3D from the surface render +**/ +void wxMaracasSurfaceRenderingManager::setInteractor(vtkRenderWindowInteractor* interactor){ + _interactor = interactor; +} + + /** ** Gets the renderer to manage the prop3D from the surface render **/ @@ -56,7 +65,7 @@ void wxMaracasSurfaceRenderingManager::Update(int pid)throw(char*){ int wxMaracasSurfaceRenderingManager::addProp3D(vtkProp3D* prop3D, std::string dataname) throw(char*){ checkInvariant(); if(prop3D != NULL){ - wxMaracasSurfaceRenderingManagerData* data = new wxMaracasSurfaceRenderingManagerData(prop3D, dataname); + wxMaracasSurfaceRenderingManagerData* data = new wxMaracasSurfaceRenderingManagerData(prop3D, dataname, _interactor); prop3Dvect.push_back(data); _renderer->AddActor(data->getProp3D()); data->setId(_idCount); @@ -71,7 +80,7 @@ int wxMaracasSurfaceRenderingManager::addPropMHD(vtkImageData* imagedata, std::s checkInvariant(); if(imagedata != NULL){ image = imagedata; - wxMaracasSurfaceRenderingManagerData* data = new wxMaracasSurfaceRenderingManagerDataMhd(imagedata, dataname); + wxMaracasSurfaceRenderingManagerData* data = new wxMaracasSurfaceRenderingManagerDataMhd(imagedata, dataname, _interactor); prop3Dvect.push_back(data); _renderer->AddActor(data->getProp3D()); data->setId(_idCount); @@ -99,6 +108,26 @@ void wxMaracasSurfaceRenderingManager::addRemoveActor(int propid, bool addremove _renderer->Render(); } } +/** +** adds or removes the surface box depending of the bool value +**/ +void wxMaracasSurfaceRenderingManager::addRemoveSurfaceBox(int propid, bool addremove) throw(char*){ + checkInvariant(); + + wxMaracasSurfaceRenderingManagerData* data = this->getViewData(propid); + if(data->getProp3D()!=NULL){ + data->addRemoveSurfaceBox(addremove); + /*if(addremove){ + data-> + _renderer->AddViewProp(data->getProp3D()); + }else{ + _renderer->RemoveViewProp(data->getProp3D()); + } + _renderer->Render();*/ + } + +} + /** ** Changes the opacity in a prop3D **/ diff --git a/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracasSurfaceRenderingManager.h b/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracasSurfaceRenderingManager.h index fb1061b..d1ec89d 100644 --- a/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracasSurfaceRenderingManager.h +++ b/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracasSurfaceRenderingManager.h @@ -3,8 +3,8 @@ Program: wxMaracas Module: $RCSfile: wxMaracasSurfaceRenderingManager.h,v $ Language: C++ - Date: $Date: 2009/11/09 19:14:56 $ - Version: $Revision: 1.2 $ + Date: $Date: 2009/11/13 11:47:41 $ + Version: $Revision: 1.3 $ Copyright: (c) 2002, 2003 License: @@ -87,8 +87,13 @@ public: **/ void addRemoveActor(int propid, bool addremove)throw(char*); /** + ** + **/ + void addRemoveSurfaceBox(int propid, bool addremove) throw(char*); + /** ** Check if the variables are setted correctly **/ + void checkInvariant()throw(char*); /** @@ -96,6 +101,11 @@ public: **/ wxMaracasSurfaceRenderingManagerData* getViewData(int id)throw(char*); + /** + ** + **/ + void setInteractor(vtkRenderWindowInteractor* interactor); + /** ** Given the id, return the max iso value from the imagedata **/ @@ -115,6 +125,7 @@ private: std::vector prop3Dvect; vtkRenderer* _renderer; + vtkRenderWindowInteractor* _interactor; vtkImageData* image; int _idCount; diff --git a/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracasSurfaceRenderingManagerData.cxx b/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracasSurfaceRenderingManagerData.cxx index d3fdb39..f52f00a 100644 --- a/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracasSurfaceRenderingManagerData.cxx +++ b/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracasSurfaceRenderingManagerData.cxx @@ -5,11 +5,21 @@ ** Start of data viewmanagerData *********************************************************************************************/ -wxMaracasSurfaceRenderingManagerData::wxMaracasSurfaceRenderingManagerData(vtkProp3D* prop3Dvect, std::string dataname){ +wxMaracasSurfaceRenderingManagerData::wxMaracasSurfaceRenderingManagerData(vtkProp3D* prop3Dvect, std::string dataname, vtkRenderWindowInteractor* interactor){ _prop3D = prop3Dvect; - _dataname = dataname; + _dataname = dataname; + + + initializeBoxWidget(interactor); + + + + /*_boxWidgetS1->GetPlanes( this->GetVtkClipping3DDataViewer()->GetTissuePlanes(0) ); + _boxWidgetS1->GetPlanes( this->GetVtkClipping3DDataViewer()->GetTissuePlanes(1) ); + _boxWidgetS1->GetPlanes( this->GetVtkClipping3DDataViewer()->GetTissuePlanes(2) ); + _boxWidgetS1->GetPlanes( this->GetVtkClipping3DDataViewer()->GetTissuePlanes(3) );*/ } @@ -18,6 +28,20 @@ wxMaracasSurfaceRenderingManagerData::~wxMaracasSurfaceRenderingManagerData(){ _prop3D->Delete(); } +void wxMaracasSurfaceRenderingManagerData::initializeBoxWidget(vtkRenderWindowInteractor* interactor){ + if(interactor!= NULL){ + _boxWidgetS1 = vtkBoxWidget::New(); + _boxWidgetS1->SetInteractor( interactor ); + _boxWidgetS1->SetPlaceFactor(1.25); + + //_boxWidgetS1->SetInput( ); + _boxWidgetS1->PlaceWidget(); + //_boxWidgetS1->AddObserver( vtkCommand::InteractionEvent , _vtkclipping3Ddataviewer->GetObserverS(i) ); + _boxWidgetS1->HandlesOn (); + _boxWidgetS1->Off(); + } +} + /** ** Adds a prop3D to the world of the application **/ @@ -25,6 +49,16 @@ void wxMaracasSurfaceRenderingManagerData::setProp3D(vtkProp3D* prop3D){ _prop3D = prop3D; } +void wxMaracasSurfaceRenderingManagerData::addRemoveSurfaceBox(bool visible) +{ + if(_boxWidgetS1){ + if (visible==true){ + _boxWidgetS1->On(); + } else { + _boxWidgetS1->Off(); + } + } +} /** ** Changes the opacity in a prop3D **/ diff --git a/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracasSurfaceRenderingManagerData.h b/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracasSurfaceRenderingManagerData.h index b68fef6..e0249ad 100644 --- a/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracasSurfaceRenderingManagerData.h +++ b/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracasSurfaceRenderingManagerData.h @@ -7,13 +7,14 @@ #include "vtkPolyDataMapper.h" #include "vtkActor.h" #include "vtkProperty.h" +#include "vtkBoxWidget.h" class wxMaracasSurfaceRenderingManagerData { public: - wxMaracasSurfaceRenderingManagerData(vtkProp3D* _prop3Dvect, std::string dataname=""); + wxMaracasSurfaceRenderingManagerData(vtkProp3D* _prop3Dvect, std::string dataname="", vtkRenderWindowInteractor* interactor=NULL); ~wxMaracasSurfaceRenderingManagerData(); /** @@ -59,6 +60,12 @@ public: **/ void changeColor(double red, double green, double blue); + /** + ** adds or removes the surface box + **/ + void addRemoveSurfaceBox(bool visible); + + void initializeBoxWidget(vtkRenderWindowInteractor* interactor); protected: /** * Prop 3D (data actor) @@ -69,7 +76,10 @@ protected: **/ std::string _dataname; - + /** + ** + **/ + vtkBoxWidget* _boxWidgetS1; private: /* @@ -78,6 +88,8 @@ private: int _id; + + }; #endif /*WXMARACASSURFACERENDERINGMANAGERDATA_H_*/ diff --git a/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracasSurfaceRenderingManagerDataMhd.cxx b/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracasSurfaceRenderingManagerDataMhd.cxx index eec30d6..031c975 100644 --- a/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracasSurfaceRenderingManagerDataMhd.cxx +++ b/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracasSurfaceRenderingManagerDataMhd.cxx @@ -1,8 +1,8 @@ #include "wxMaracasSurfaceRenderingManagerDataMhd.h" -wxMaracasSurfaceRenderingManagerDataMhd::wxMaracasSurfaceRenderingManagerDataMhd(vtkImageData* imagedata, std::string dataname) -: wxMaracasSurfaceRenderingManagerData(NULL, dataname) +wxMaracasSurfaceRenderingManagerDataMhd::wxMaracasSurfaceRenderingManagerDataMhd(vtkImageData* imagedata, std::string dataname, vtkRenderWindowInteractor* interactor) +: wxMaracasSurfaceRenderingManagerData(NULL, dataname, interactor) { this->setVtkImageData(imagedata); @@ -26,6 +26,10 @@ wxMaracasSurfaceRenderingManagerDataMhd::wxMaracasSurfaceRenderingManagerDataMhd _dataMapper->ImmediateModeRenderingOn(); dataActor->SetMapper(_dataMapper); + if(_boxWidgetS1){ + _boxWidgetS1->SetInput(imagedata); + } + this->_prop3D = dataActor; this->changeIsoValue(this->_maxgreylevel); diff --git a/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracasSurfaceRenderingManagerDataMhd.h b/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracasSurfaceRenderingManagerDataMhd.h index 324b8d9..9b20cec 100644 --- a/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracasSurfaceRenderingManagerDataMhd.h +++ b/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracasSurfaceRenderingManagerDataMhd.h @@ -13,7 +13,7 @@ class wxMaracasSurfaceRenderingManagerDataMhd : public wxMaracasSurfaceRendering public: - wxMaracasSurfaceRenderingManagerDataMhd(vtkImageData* imagedata, std::string dataname=""); + wxMaracasSurfaceRenderingManagerDataMhd(vtkImageData* imagedata, std::string dataname="", vtkRenderWindowInteractor* interactor=0); ~wxMaracasSurfaceRenderingManagerDataMhd(); diff --git a/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracasSurfaceRenderingProp3D.cxx b/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracasSurfaceRenderingProp3D.cxx index 1f29667..1200c68 100644 --- a/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracasSurfaceRenderingProp3D.cxx +++ b/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracasSurfaceRenderingProp3D.cxx @@ -45,14 +45,23 @@ void wxMaracasSurfaceRenderingProp3D::createControls(){ if(!isComplexBox) { - wxString choices[2]; - choices[0] = wxString(_T("On")); - choices[1] = wxString(_T("Off")); + //wxString choices[2]; + //choices[0] = wxString(_T("On")); + //choices[1] = wxString(_T("Off")); + wxFlexGridSizer* checkboxsizer = new wxFlexGridSizer(2); + checkbox = new wxCheckBox(this,-1,wxString(_T("Show Actor"))); Connect(checkbox->GetId(), wxEVT_COMMAND_CHECKBOX_CLICKED, (wxObjectEventFunction)&wxMaracasSurfaceRenderingProp3D::onCheckBoxChange); checkbox->SetValue(true); + checkboxsizer->Add(checkbox,wxFIXED_MINSIZE); + + checkboxsurface = new wxCheckBox(this,-1,wxString(_T("Surface Box"))); + Connect(checkboxsurface->GetId(), wxEVT_COMMAND_CHECKBOX_CLICKED, (wxObjectEventFunction)&wxMaracasSurfaceRenderingProp3D::onCheckBoxSurfaceChange); + checkboxsurface->SetValue(true); + checkboxsizer->Add(checkboxsurface,wxFIXED_MINSIZE); + - sizersurfprop->Add(checkbox,wxFIXED_MINSIZE); + sizersurfprop->Add(checkboxsizer,wxFIXED_MINSIZE); } //this->addControl(checkbox); @@ -93,6 +102,10 @@ void wxMaracasSurfaceRenderingProp3D::onCheckBoxChange(wxCommandEvent& event){ //if(!isComplexBox) wxMaracasSurfaceRendering::getInstance()->addRemoveActor(this->getPropId(), checkbox->GetValue()); } +void wxMaracasSurfaceRenderingProp3D::onCheckBoxSurfaceChange(wxCommandEvent& event){ + //if(!isComplexBox) + wxMaracasSurfaceRendering::getInstance()->addRemoveSurfaceBox(this->getPropId(), checkboxsurface->GetValue()); +} /** ** diff --git a/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracasSurfaceRenderingProp3D.h b/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracasSurfaceRenderingProp3D.h index cf9e41b..c232413 100644 --- a/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracasSurfaceRenderingProp3D.h +++ b/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracasSurfaceRenderingProp3D.h @@ -11,12 +11,14 @@ public: virtual void createControls(); void onOpacityRelease(wxScrollEvent& event); void onCheckBoxChange(wxCommandEvent& event); + void onCheckBoxSurfaceChange(wxCommandEvent& event); void onColorChange(wxCommandEvent& event); void onViewImage(wxCommandEvent& event); private: wxCheckBox* checkbox; + wxCheckBox* checkboxsurface; wxSlider* opacity; wxBitmapButton* _colorchoose; wxBitmapButton* _viewimage;