1 #include "wxMaracasSurfaceRenderingProp3D.h"
2 #include "wxMaracasDialog_NViewers.h"
4 #include <wx/colordlg.h>
5 #include "wxMaracasSurfaceRendering.h"
6 #include "wxMaracasRendererView.h"
8 #include "vtkImageData.h"
10 #include <OpenImage.xpm>
15 ** Implementation of viewProp3D
17 wxMaracasSurfaceRenderingProp3D::wxMaracasSurfaceRenderingProp3D(wxWindow* parent, int propid, bool _isComplexBox, int _panID)
18 :wxMaracasSurfaceRenderingPanel(parent, propid, _isComplexBox, _panID){
25 wxMaracasSurfaceRenderingProp3D::~wxMaracasSurfaceRenderingProp3D(){
26 //wxMaracasSurfaceRendering::getInstance()->addRemoveActor(_propid, false);
29 //if(this->getPanId() == 1)
30 // ((wxMaracasRenderTabbedPanel*)(wxMaracasRendererView::getInstance())->getTabbedPanel())->addRemoveActorSA(_propid, false);
31 //if(this->getPanId() == 2)
32 // ((wxMaracasRenderTabbedPanel*)(wxMaracasRendererView::getInstance())->getTabbedPanel())->addRemoveActorSB(_propid, false);
33 //if(this->getPanId() == 3)
34 // ((wxMaracasRenderTabbedPanel*)(wxMaracasRendererView::getInstance())->getTabbedPanel())->addRemoveActorSC(_propid, false);
37 //wxMaracasSurfaceRendering::getInstance()->deleteActor(_propid);
41 ** Constructs the panel. Elements inside may change depending on which tipe of panel construction if being requested
43 void wxMaracasSurfaceRenderingProp3D::createControls(){
45 wxFlexGridSizer* sizersurfprop = new wxFlexGridSizer(1);
49 //wxString choices[2];
50 //choices[0] = wxString(_T("On"));
51 //choices[1] = wxString(_T("Off"));
52 wxFlexGridSizer* checkboxsizer = new wxFlexGridSizer(2);
54 checkbox = new wxCheckBox(this,-1,wxString(_T("Show Actor")));
55 Connect(checkbox->GetId(), wxEVT_COMMAND_CHECKBOX_CLICKED, (wxObjectEventFunction)&wxMaracasSurfaceRenderingProp3D::onCheckBoxChange);
56 checkbox->SetValue(true);
57 checkboxsizer->Add(checkbox,wxFIXED_MINSIZE);
59 checkboxsurface = new wxCheckBox(this,-1,wxString(_T("Surface Box")));
60 Connect(checkboxsurface->GetId(), wxEVT_COMMAND_CHECKBOX_CLICKED, (wxObjectEventFunction)&wxMaracasSurfaceRenderingProp3D::onCheckBoxSurfaceChange);
61 checkboxsurface->SetValue(true);
62 checkboxsizer->Add(checkboxsurface,wxFIXED_MINSIZE);
65 sizersurfprop->Add(checkboxsizer,wxFIXED_MINSIZE);
68 //this->addControl(checkbox);
69 wxFlexGridSizer* sizerbut = new wxFlexGridSizer(3);
71 wxBitmap bitmap(Color_xpm);
72 _colorchoose = new wxBitmapButton(this, -1, bitmap,wxDefaultPosition,wxSize(30,30));
73 Connect(_colorchoose->GetId(), wxEVT_COMMAND_BUTTON_CLICKED, (wxObjectEventFunction)&wxMaracasSurfaceRenderingProp3D::onColorChange);
74 sizerbut->Add(_colorchoose,wxFIXED_MINSIZE);
76 wxBitmap bitmap1(Add_xpm);
77 _viewimage = new wxBitmapButton(this, -1, bitmap1, wxDefaultPosition, wxSize(30,30));
78 Connect(_viewimage->GetId(), wxEVT_COMMAND_BUTTON_CLICKED, (wxObjectEventFunction)&wxMaracasSurfaceRenderingProp3D::onViewImage);
79 sizerbut->Add(_viewimage,wxFIXED_MINSIZE);
81 sizersurfprop->Add(sizerbut,wxFIXED_MINSIZE);
82 //sizercolor->Add(checkbox,wxFIXED_MINSIZE);
83 //sizercolor->Add(_colorchoose,wxFIXED_MINSIZE);
84 //this->addControl(sizercolor);
86 wxStaticText* label = new wxStaticText(this, -1, wxString(_T("Opacity")));
87 opacity = new wxSlider(this, -1,100,0,100,wxDefaultPosition,wxDefaultSize,wxSL_HORIZONTAL|wxSL_LABELS);
88 Connect(opacity->GetId(), wxEVT_SCROLL_CHANGED, (wxObjectEventFunction)&wxMaracasSurfaceRenderingProp3D::onOpacityRelease);
89 wxFlexGridSizer* sizeropacity = new wxFlexGridSizer(1,1,1);
90 sizeropacity->Add(label,wxFIXED_MINSIZE);
91 sizeropacity->Add(opacity,wxFIXED_MINSIZE);
93 sizersurfprop->Add(sizeropacity,wxFIXED_MINSIZE);
95 this->addControl(sizersurfprop);
100 ** Method called by setting on or off the actor
102 void wxMaracasSurfaceRenderingProp3D::onCheckBoxChange(wxCommandEvent& event){
104 wxMaracasSurfaceRendering::getInstance()->addRemoveActor(this->getPropId(), checkbox->GetValue());
106 void wxMaracasSurfaceRenderingProp3D::onCheckBoxSurfaceChange(wxCommandEvent& event){
108 wxMaracasSurfaceRendering::getInstance()->addRemoveSurfaceBox(this->getPropId(), checkboxsurface->GetValue());
114 void wxMaracasSurfaceRenderingProp3D::onColorChange(wxCommandEvent& event){
115 wxColourDialog* colourdiag = new wxColourDialog(this);
116 if(colourdiag->ShowModal()==wxID_OK){
117 wxColour colour = colourdiag->GetColourData().GetColour();
118 _colorchoose->SetBackgroundColour(colour);
120 double r = (double)(colour.Red())/255.0;
121 double g = (double)(colour.Green())/255.0;
122 double b = (double)(colour.Blue())/255.0;
124 if(this->isComplex()){
125 if(this->getPanId() == 1)
126 ( (wxMaracasRendererView::getInstance())->getTabbedPanel(getPropId()) )->changeColorA(this->getPropId(), r, g, b);
127 if(this->getPanId() == 2)
128 ( (wxMaracasRendererView::getInstance())->getTabbedPanel(getPropId()) )->changeColorB(this->getPropId(), r, g, b);
129 if(this->getPanId() == 3)
130 ( (wxMaracasRendererView::getInstance())->getTabbedPanel(getPropId()) )->changeColorC(this->getPropId(), r, g, b);
133 wxMaracasSurfaceRendering::getInstance()->changeColor(this->getPropId(),r,g,b);
137 /*void wxMaracasSurfaceRenderingProp3D::onActionButtonPressedEliminate( wxCommandEvent& event ){
142 ** Changes the opacity of an actor
144 void wxMaracasSurfaceRenderingProp3D::onOpacityRelease(wxScrollEvent& event ){
146 if(this->isComplex()){
147 if(this->getPanId() == 1)
148 ( (wxMaracasRendererView::getInstance())->getTabbedPanel(getPropId()) )->changeOpacityA(this->getPropId(),opacity->GetValue());
149 if(this->getPanId() == 2)
150 ( (wxMaracasRendererView::getInstance())->getTabbedPanel(getPropId()) )->changeOpacityB(this->getPropId(),opacity->GetValue());
151 if(this->getPanId() == 3)
152 ( (wxMaracasRendererView::getInstance())->getTabbedPanel(getPropId()) )->changeOpacityC(this->getPropId(),opacity->GetValue());
155 wxMaracasSurfaceRendering::getInstance()->changeOpacity(this->getPropId(),opacity->GetValue());
159 /**Carolina Perez: Method recently added. Not functionalit yet
160 ** Loads the volume in a separate window
162 void wxMaracasSurfaceRenderingProp3D::onViewImage(wxCommandEvent& event){
164 if(this->isComplexBox){
165 if(this->getPanId() == 1)
166 img = (wxMaracasRendererView::getInstance())->getTabbedPanel(_propid)->getSurfAImage();
167 if(this->getPanId() == 2)
168 img = (wxMaracasRendererView::getInstance())->getTabbedPanel(_propid)->getSurfBImage();
169 if(this->getPanId() == 3)
170 img = (wxMaracasRendererView::getInstance())->getTabbedPanel(_propid)->getSurfCImage();
172 std::vector<int> type;
175 wxMaracasDialog_NViewers* dialog1 = new wxMaracasDialog_NViewers(this, img, &type, wxString(_T("Volume Visualization") ));
176 dialog1->SetSize(730, 700);
180 //vtkImageData* img = wxMaracasMultipleVolumeRendererView::getInstance()->getVolImage();