]> Creatis software - creaMaracasVisu.git/blob - lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracasSurfaceRenderingProp3D.cxx
efcf931303e7ea0193ca5487668a941c8cf8ac34
[creaMaracasVisu.git] / lib / maracasVisuLib / src / interface / wxWindows / widgets / wxMaracasSurfaceRenderingProp3D.cxx
1 #include "wxMaracasSurfaceRenderingProp3D.h"
2
3 #include <wx/colordlg.h>
4 #include "wxMaracasSurfaceRendering.h"
5 #include "wxMaracasRendererView.h"
6
7 #include "vtkImageData.h"
8
9 #include <OpenImage.xpm>
10 #include <Add.xpm>
11 #include "Color.xpm"
12
13 /**
14 **      Implementation of viewProp3D
15 **/
16 wxMaracasSurfaceRenderingProp3D::wxMaracasSurfaceRenderingProp3D(wxWindow* parent, int propid, bool _isComplexBox, int _panID)
17 :wxMaracasSurfaceRenderingPanel(parent, propid, _isComplexBox, _panID){
18         createControls();       
19 }
20
21 /**
22 ** Panel Destructor
23 **/ 
24 wxMaracasSurfaceRenderingProp3D::~wxMaracasSurfaceRenderingProp3D(){    
25         //wxMaracasSurfaceRendering::getInstance()->addRemoveActor(_propid, false);
26         if(this->isComplex())
27         {       
28                 //if(this->getPanId() == 1)
29                 //      ((wxMaracasRenderTabbedPanel*)(wxMaracasRendererView::getInstance())->getTabbedPanel())->addRemoveActorSA(_propid, false);
30                 //if(this->getPanId() == 2)
31                 //      ((wxMaracasRenderTabbedPanel*)(wxMaracasRendererView::getInstance())->getTabbedPanel())->addRemoveActorSB(_propid, false);
32                 //if(this->getPanId() == 3)
33                 //      ((wxMaracasRenderTabbedPanel*)(wxMaracasRendererView::getInstance())->getTabbedPanel())->addRemoveActorSC(_propid, false);
34         }
35         //else
36                 //wxMaracasSurfaceRendering::getInstance()->deleteActor(_propid);
37 }
38
39 /**
40 ** Constructs the panel. Elements inside may change depending on which tipe of panel construction if being requested
41 **/
42 void wxMaracasSurfaceRenderingProp3D::createControls(){
43
44         wxFlexGridSizer* sizersurfprop = new wxFlexGridSizer(1);
45         
46         if(!isComplexBox) 
47         {
48                 //wxString choices[2];
49                 //choices[0] = wxString(_T("On"));
50                 //choices[1] = wxString(_T("Off"));
51                 wxFlexGridSizer* checkboxsizer = new wxFlexGridSizer(2);
52
53                 checkbox = new  wxCheckBox(this,-1,wxString(_T("Show Actor")));
54                 Connect(checkbox->GetId(), wxEVT_COMMAND_CHECKBOX_CLICKED, (wxObjectEventFunction)&wxMaracasSurfaceRenderingProp3D::onCheckBoxChange);  
55                 checkbox->SetValue(true);       
56                 checkboxsizer->Add(checkbox,wxFIXED_MINSIZE);
57
58                 checkboxsurface = new  wxCheckBox(this,-1,wxString(_T("Surface Box")));
59                 Connect(checkboxsurface->GetId(), wxEVT_COMMAND_CHECKBOX_CLICKED, (wxObjectEventFunction)&wxMaracasSurfaceRenderingProp3D::onCheckBoxSurfaceChange);    
60                 checkboxsurface->SetValue(true);
61                 checkboxsizer->Add(checkboxsurface,wxFIXED_MINSIZE);
62                 
63
64                 sizersurfprop->Add(checkboxsizer,wxFIXED_MINSIZE);
65         }
66
67         //this->addControl(checkbox);   
68         wxFlexGridSizer* sizerbut = new wxFlexGridSizer(3);
69
70         wxBitmap bitmap(Color_xpm);
71         _colorchoose = new wxBitmapButton(this, -1, bitmap,wxDefaultPosition,wxSize(30,30));    
72         Connect(_colorchoose->GetId(), wxEVT_COMMAND_BUTTON_CLICKED, (wxObjectEventFunction)&wxMaracasSurfaceRenderingProp3D::onColorChange);                   
73         sizerbut->Add(_colorchoose,wxFIXED_MINSIZE);
74
75         wxBitmap bitmap1(Add_xpm);
76         _viewimage = new wxBitmapButton(this, -1, bitmap1, wxDefaultPosition, wxSize(30,30));   
77         Connect(_viewimage->GetId(), wxEVT_COMMAND_BUTTON_CLICKED, (wxObjectEventFunction)&wxMaracasSurfaceRenderingProp3D::onViewImage);                       
78         sizerbut->Add(_viewimage,wxFIXED_MINSIZE);
79
80         sizersurfprop->Add(sizerbut,wxFIXED_MINSIZE);
81         //sizercolor->Add(checkbox,wxFIXED_MINSIZE);
82         //sizercolor->Add(_colorchoose,wxFIXED_MINSIZE);
83         //this->addControl(sizercolor);
84
85         wxStaticText* label = new wxStaticText(this, -1, wxString(_T("Opacity")));              
86         opacity = new wxSlider(this, -1,100,0,100,wxDefaultPosition,wxDefaultSize,wxSL_HORIZONTAL|wxSL_LABELS); 
87         Connect(opacity->GetId(), wxEVT_SCROLL_CHANGED, (wxObjectEventFunction)&wxMaracasSurfaceRenderingProp3D::onOpacityRelease);     
88         wxFlexGridSizer* sizeropacity = new wxFlexGridSizer(1,1,1);     
89         sizeropacity->Add(label,wxFIXED_MINSIZE);
90         sizeropacity->Add(opacity,wxFIXED_MINSIZE);
91
92         sizersurfprop->Add(sizeropacity,wxFIXED_MINSIZE);
93
94         this->addControl(sizersurfprop);
95         
96 }
97
98 /**
99 ** Method called by setting on or off the actor
100 **/
101 void wxMaracasSurfaceRenderingProp3D::onCheckBoxChange(wxCommandEvent& event){  
102         //if(!isComplexBox)
103         wxMaracasSurfaceRendering::getInstance()->addRemoveActor(this->getPropId(), checkbox->GetValue());      
104 }
105 void wxMaracasSurfaceRenderingProp3D::onCheckBoxSurfaceChange(wxCommandEvent& event){   
106         //if(!isComplexBox)
107         wxMaracasSurfaceRendering::getInstance()->addRemoveSurfaceBox(this->getPropId(), checkboxsurface->GetValue());  
108 }
109
110 /**
111 ** 
112 **/
113 void wxMaracasSurfaceRenderingProp3D::onColorChange(wxCommandEvent& event){
114         wxColourDialog* colourdiag = new wxColourDialog(this);
115         if(colourdiag->ShowModal()==wxID_OK){
116                 wxColour colour = colourdiag->GetColourData().GetColour();
117                 _colorchoose->SetBackgroundColour(colour);
118
119                 double r = (double)(colour.Red())/255.0;
120                 double g = (double)(colour.Green())/255.0;
121                 double b = (double)(colour.Blue())/255.0;
122                 
123                 if(this->isComplex()){
124                         if(this->getPanId() == 1)
125                                 ( (wxMaracasRendererView::getInstance())->getTabbedPanel(getPropId()) )->changeColorA(this->getPropId(), r, g, b);
126                         if(this->getPanId() == 2)
127                                 ( (wxMaracasRendererView::getInstance())->getTabbedPanel(getPropId()) )->changeColorB(this->getPropId(), r, g, b);
128                         if(this->getPanId() == 3)
129                                 ( (wxMaracasRendererView::getInstance())->getTabbedPanel(getPropId()) )->changeColorC(this->getPropId(), r, g, b);
130                 }
131                 else
132                         wxMaracasSurfaceRendering::getInstance()->changeColor(this->getPropId(),r,g,b);
133         }
134         delete colourdiag;
135 }
136 /*void wxMaracasSurfaceRenderingProp3D::onActionButtonPressedEliminate( wxCommandEvent& event ){        
137
138 }*/
139
140 /**
141 ** Changes the opacity of an actor
142 **/
143 void wxMaracasSurfaceRenderingProp3D::onOpacityRelease(wxScrollEvent& event ){
144
145         if(this->isComplex()){
146                 if(this->getPanId() == 1)
147                         ( (wxMaracasRendererView::getInstance())->getTabbedPanel(getPropId()) )->changeOpacityA(this->getPropId(),opacity->GetValue());
148                 if(this->getPanId() == 2)
149                         ( (wxMaracasRendererView::getInstance())->getTabbedPanel(getPropId()) )->changeOpacityB(this->getPropId(),opacity->GetValue());
150                 if(this->getPanId() == 3)
151                         ( (wxMaracasRendererView::getInstance())->getTabbedPanel(getPropId()) )->changeOpacityC(this->getPropId(),opacity->GetValue());
152         }
153         else
154                 wxMaracasSurfaceRendering::getInstance()->changeOpacity(this->getPropId(),opacity->GetValue());
155
156 }
157
158 /**Carolina Perez: Method recently added. Not functionalit yet
159 ** Loads the volume in a separate window
160 **/
161 void wxMaracasSurfaceRenderingProp3D::onViewImage(wxCommandEvent& event){       
162         printf("wxMaracasSurfaceRenderingProp3D->onViewImage: Test View Image \n");
163         vtkImageData* image = ((wxMaracasRendererView::getInstance())->getTabbedPanel(this->_propid))->getVolImage();
164
165                 
166 }