#include "wxMaracasSurfaceRenderingProp3D.h" #include #include "wxMaracasSurfaceRendering.h" #include "wxMaracasRendererView.h" #include "vtkImageData.h" #include #include #include "Color.xpm" /** ** Implementation of viewProp3D **/ wxMaracasSurfaceRenderingProp3D::wxMaracasSurfaceRenderingProp3D(wxWindow* parent, int propid, bool _isComplexBox, int _panID) :wxMaracasSurfaceRenderingPanel(parent, propid, _isComplexBox, _panID){ createControls(); } /** ** Panel Destructor **/ wxMaracasSurfaceRenderingProp3D::~wxMaracasSurfaceRenderingProp3D(){ //wxMaracasSurfaceRendering::getInstance()->addRemoveActor(_propid, false); if(this->isComplex()) { //if(this->getPanId() == 1) // ((wxMaracasRenderTabbedPanel*)(wxMaracasRendererView::getInstance())->getTabbedPanel())->addRemoveActorSA(_propid, false); //if(this->getPanId() == 2) // ((wxMaracasRenderTabbedPanel*)(wxMaracasRendererView::getInstance())->getTabbedPanel())->addRemoveActorSB(_propid, false); //if(this->getPanId() == 3) // ((wxMaracasRenderTabbedPanel*)(wxMaracasRendererView::getInstance())->getTabbedPanel())->addRemoveActorSC(_propid, false); } //else //wxMaracasSurfaceRendering::getInstance()->deleteActor(_propid); } /** ** Constructs the panel. Elements inside may change depending on which tipe of panel construction if being requested **/ void wxMaracasSurfaceRenderingProp3D::createControls(){ wxFlexGridSizer* sizersurfprop = new wxFlexGridSizer(1); if(!isComplexBox) { wxString choices[2]; choices[0] = wxString(_T("On")); choices[1] = wxString(_T("Off")); checkbox = new wxCheckBox(this,-1,wxString(_T("Show Actor"))); Connect(checkbox->GetId(), wxEVT_COMMAND_CHECKBOX_CLICKED, (wxObjectEventFunction)&wxMaracasSurfaceRenderingProp3D::onCheckBoxChange); checkbox->SetValue(true); sizersurfprop->Add(checkbox,wxFIXED_MINSIZE); } //this->addControl(checkbox); wxFlexGridSizer* sizerbut = new wxFlexGridSizer(3); wxBitmap bitmap(Color_xpm); _colorchoose = new wxBitmapButton(this, -1, bitmap,wxDefaultPosition,wxSize(30,30)); Connect(_colorchoose->GetId(), wxEVT_COMMAND_BUTTON_CLICKED, (wxObjectEventFunction)&wxMaracasSurfaceRenderingProp3D::onColorChange); sizerbut->Add(_colorchoose,wxFIXED_MINSIZE); wxBitmap bitmap1(Add_xpm); _viewimage = new wxBitmapButton(this, -1, bitmap1, wxDefaultPosition, wxSize(30,30)); Connect(_viewimage->GetId(), wxEVT_COMMAND_BUTTON_CLICKED, (wxObjectEventFunction)&wxMaracasSurfaceRenderingProp3D::onViewImage); sizerbut->Add(_viewimage,wxFIXED_MINSIZE); sizersurfprop->Add(sizerbut,wxFIXED_MINSIZE); //sizercolor->Add(checkbox,wxFIXED_MINSIZE); //sizercolor->Add(_colorchoose,wxFIXED_MINSIZE); //this->addControl(sizercolor); wxStaticText* label = new wxStaticText(this, -1, wxString(_T("Opacity"))); opacity = new wxSlider(this, -1,100,0,100,wxDefaultPosition,wxDefaultSize,wxSL_HORIZONTAL|wxSL_LABELS); Connect(opacity->GetId(), wxEVT_SCROLL_CHANGED, (wxObjectEventFunction)&wxMaracasSurfaceRenderingProp3D::onOpacityRelease); wxFlexGridSizer* sizeropacity = new wxFlexGridSizer(1,1,1); sizeropacity->Add(label,wxFIXED_MINSIZE); sizeropacity->Add(opacity,wxFIXED_MINSIZE); sizersurfprop->Add(sizeropacity,wxFIXED_MINSIZE); this->addControl(sizersurfprop); } /** ** Method called by setting on or off the actor **/ void wxMaracasSurfaceRenderingProp3D::onCheckBoxChange(wxCommandEvent& event){ //if(!isComplexBox) wxMaracasSurfaceRendering::getInstance()->addRemoveActor(this->getPropId(), checkbox->GetValue()); } /** ** **/ void wxMaracasSurfaceRenderingProp3D::onColorChange(wxCommandEvent& event){ wxColourDialog* colourdiag = new wxColourDialog(this); if(colourdiag->ShowModal()==wxID_OK){ wxColour colour = colourdiag->GetColourData().GetColour(); _colorchoose->SetBackgroundColour(colour); double r = (double)(colour.Red())/255.0; double g = (double)(colour.Green())/255.0; double b = (double)(colour.Blue())/255.0; if(this->isComplex()){ if(this->getPanId() == 1) ( (wxMaracasRendererView::getInstance())->getTabbedPanel(getPropId()) )->changeColorA(this->getPropId(), r, g, b); if(this->getPanId() == 2) ( (wxMaracasRendererView::getInstance())->getTabbedPanel(getPropId()) )->changeColorB(this->getPropId(), r, g, b); if(this->getPanId() == 3) ( (wxMaracasRendererView::getInstance())->getTabbedPanel(getPropId()) )->changeColorC(this->getPropId(), r, g, b); } else wxMaracasSurfaceRendering::getInstance()->changeColor(this->getPropId(),r,g,b); } delete colourdiag; } /*void wxMaracasSurfaceRenderingProp3D::onActionButtonPressedEliminate( wxCommandEvent& event ){ }*/ /** ** Changes the opacity of an actor **/ void wxMaracasSurfaceRenderingProp3D::onOpacityRelease(wxScrollEvent& event ){ if(this->isComplex()){ if(this->getPanId() == 1) ( (wxMaracasRendererView::getInstance())->getTabbedPanel(getPropId()) )->changeOpacityA(this->getPropId(),opacity->GetValue()); if(this->getPanId() == 2) ( (wxMaracasRendererView::getInstance())->getTabbedPanel(getPropId()) )->changeOpacityB(this->getPropId(),opacity->GetValue()); if(this->getPanId() == 3) ( (wxMaracasRendererView::getInstance())->getTabbedPanel(getPropId()) )->changeOpacityC(this->getPropId(),opacity->GetValue()); } else wxMaracasSurfaceRendering::getInstance()->changeOpacity(this->getPropId(),opacity->GetValue()); } /**Carolina Perez: Method recently added. Not functionalit yet ** Loads the volume in a separate window **/ void wxMaracasSurfaceRenderingProp3D::onViewImage(wxCommandEvent& event){ printf("wxMaracasSurfaceRenderingProp3D->onViewImage: Test View Image"); vtkImageData* image = ((wxMaracasRendererView::getInstance())->getTabbedPanel(this->_propid))->getVolImage(this->_propid); }