#include "wxMaracasRenderTabbedPanel.h"
+#include "HistogramDialogComboBox.h"
#include <wx/colordlg.h>
#include <OpenImage.xpm>
/**
**
**/
-wxMaracasRenderTabbedPanel::wxMaracasRenderTabbedPanel(wxWindow* parent, wxMaracasMultipleVolumeRendererManager* _volmanager, wxMaracasSurfaceRenderingManager* _surrendmanager1, wxMaracasSurfaceRenderingManager* _surrendmanager2,
- wxMaracasSurfaceRenderingManager* _surrendmanager3, wxString filename, wxString dataname)
+wxMaracasRenderTabbedPanel::wxMaracasRenderTabbedPanel(wxWindow* parent/*, wxMaracasMultipleVolumeRendererManager* _volmanager, wxMaracasSurfaceRenderingManager* _surrendmanager1, wxMaracasSurfaceRenderingManager* _surrendmanager2,
+ wxMaracasSurfaceRenderingManager* _surrendmanager3, wxString pathfile, wxString filename*/)
: wxPanel(parent, -1, wxDefaultPosition, wxDefaultSize)
{
//_propid = propid;
- volmanager = _volmanager;
- surrendmanager1 = _surrendmanager1;
- surrendmanager2 = _surrendmanager2;
- surrendmanager3 = _surrendmanager3;
+ volmanager = new wxMaracasMultipleVolumeRendererManager();
+ surrendmanager1 = new wxMaracasSurfaceRenderingManager();
+ surrendmanager2 = new wxMaracasSurfaceRenderingManager();
+ surrendmanager3 = new wxMaracasSurfaceRenderingManager();
- createControls(filename, dataname);
}
/**
**
**/
-void wxMaracasRenderTabbedPanel::createControls(wxString filename, wxString dataname)
+void wxMaracasRenderTabbedPanel::createControls(wxString pathfile, wxString filename)
{
//wxPanel* up = new wxPanel(this, wxID_ANY);
- wxFlexGridSizer* sizerrenderprop = new wxFlexGridSizer(2,3,1);
+ wxFlexGridSizer* sizerrenderprop = new wxFlexGridSizer(1);
- 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* sizercheck = new wxFlexGridSizer(2);
checkboxVol = new wxCheckBox(this,-1,wxString(_T("Volume Rendering")));
Connect(checkboxVol->GetId(), wxEVT_COMMAND_CHECKBOX_CLICKED, (wxObjectEventFunction)&wxMaracasRenderTabbedPanel::onCheckBoxVChange);
checkboxVol->SetValue(true);
-
- sizerrenderprop->Add(checkboxVol, wxFIXED_MINSIZE);
+ sizercheck->Add(checkboxVol, wxFIXED_MINSIZE);
//wxString choices[2];
//choices[0] = wxString(_T("On"));
Connect(checkboxSA->GetId(), wxEVT_COMMAND_CHECKBOX_CLICKED, (wxObjectEventFunction)&wxMaracasRenderTabbedPanel::onCheckBoxSAChange);
checkboxSA->SetValue(true);
- sizerrenderprop->Add(checkboxSA, wxFIXED_MINSIZE);
+ sizercheck->Add(checkboxSA, wxFIXED_MINSIZE);
//wxString choices[2];
//choices[0] = wxString(_T("On"));
Connect(checkboxSB->GetId(), wxEVT_COMMAND_CHECKBOX_CLICKED, (wxObjectEventFunction)&wxMaracasRenderTabbedPanel::onCheckBoxSBChange);
checkboxSB->SetValue(true);
- sizerrenderprop->Add(checkboxSB, wxFIXED_MINSIZE);
+ sizercheck->Add(checkboxSB, wxFIXED_MINSIZE);
//wxString choices[2];
//choices[0] = wxString(_T("On"));
Connect(checkboxSC->GetId(), wxEVT_COMMAND_CHECKBOX_CLICKED, (wxObjectEventFunction)&wxMaracasRenderTabbedPanel::onCheckBoxSCChange);
checkboxSC->SetValue(true);
- sizerrenderprop->Add(checkboxSC, wxFIXED_MINSIZE);
-
+ sizercheck->Add(checkboxSC, wxFIXED_MINSIZE);
+ sizerrenderprop->Add(sizercheck, wxFIXED_MINSIZE);
//up->SetSizer(sizerup, true);
//up->SetAutoLayout( true );
wxtabs = new wxNotebook(this, -1);
- std::string s = std::string(filename.mb_str());
+ std::string s = std::string(pathfile.mb_str());
vtkImageData* img1 = volmanager->getImageData(s);
vtkImageData* img2 = surrendmanager1->getImageData(s);
vtkImageData* img3 = surrendmanager2->getImageData(s);
vtkImageData* img4 = surrendmanager3->getImageData(s);
if(img1!=NULL)
{
- s = std::string(dataname.mb_str());
- wxMaracasMultipleVolumeRendererPanel* controlpan1 = addVolume(img1, s);
- wxMaracasSurfaceRenderingPanel* controlpan2 = addSurface1(img2, s);
- wxMaracasSurfaceRenderingPanel* controlpan3 = addSurface2(img3, s);
- wxMaracasSurfaceRenderingPanel* controlpan4 = addSurface3(img4, s);
-
- wxtabs->AddPage(controlpan1, _T("Volume Rendering"), true);
- wxtabs->AddPage(controlpan2, _T("Surf Rend A"));
- wxtabs->AddPage(controlpan3, _T("Surf Rend B"));
- wxtabs->AddPage(controlpan4, _T("Surf Rend C"));
-
+
+ s = std::string(filename.mb_str());
+ addVolume(img1, s);
+ addSurface1(img2, s);
+ addSurface2(img3, s);
+ addSurface3(img4, s);
wxtabs->Refresh();
}
//wxFlexGridSizer* sizerrenderprop = new wxFlexGridSizer(2,1,5);
//sizerrenderprop->Add(up, wxFIXED_MINSIZE);
+
sizerrenderprop->Add(wxtabs, wxFIXED_MINSIZE);
this->SetSizer(sizerrenderprop, true);
wxMaracasRenderTabbedPanel::~wxMaracasRenderTabbedPanel()
{
- //wxMaracasIRMView::getInstance()->addRemoveActor(_propid, false);
+ //wxMaracasRenderTabbedPanel::getInstance()->addRemoveActorV(_propid, false);
+ //wxMaracasRenderTabbedPanel::getInstance()->addRemoveActorSA(_propid, false);
+ //wxMaracasRenderTabbedPanel::getInstance()->addRemoveActorSB(_propid, false);
+ //wxMaracasRenderTabbedPanel::getInstance()->addRemoveActorSC(_propid, false);
//wxMaracasRenderTabbedPanel::getInstance()->deleteVolume(_propid);
- delete wxtabs;
- //delete surview1;
- //delete surview2;
- //delete surview3;
+ delete wxtabs;
+}
+
+void wxMaracasRenderTabbedPanel::setRenderer(vtkRenderer* renderer)
+{
+ volmanager->setRenderer(renderer);
+ surrendmanager1->setRenderer(renderer);
+ surrendmanager2->setRenderer(renderer);
+ surrendmanager3->setRenderer(renderer);
}
/*
*
*/
-wxMaracasMultipleVolumeRendererPanel* wxMaracasRenderTabbedPanel::addVolume(vtkImageData* img, std::string dataname)
+void wxMaracasRenderTabbedPanel::addVolume(vtkImageData* img, std::string dataname)
{
-
try
{
- int id = volmanager->addVolume(img, dataname);
- if(id!=-1)
+ int _propidV = volmanager->addVolume(img, dataname);
+ if(_propidV!=-1)
{
- wxMaracasMultipleVolumeRendererPanel* controlpan = new wxMaracasMultipleVolumeRendererPanel(wxtabs, id,img);
- //controlpan->updateVolume();
-
- return controlpan;
+ controlpanV = new wxMaracasMultipleVolumeRendererPanel(wxtabs, _propidV, img, true);
+ wxtabs->AddPage(controlpanV, _T("Volume Rendering"), true);
+ updateVolume();
}
}
catch(char* str)
}
}
-wxMaracasSurfaceRenderingPanel* wxMaracasRenderTabbedPanel::addSurface1(vtkImageData* img, std::string dataname)
+void wxMaracasRenderTabbedPanel::addSurface1(vtkImageData* img, std::string dataname)
{
try
{
- int id = surrendmanager1->addPropMHD(img, dataname);
+ int _propidSA = surrendmanager1->addPropMHD(img, dataname);
- if(id!=-1)
+ if(_propidSA!=-1)
{
- wxMaracasSurfaceRenderingPanel* controlpan = new wxMaracasSurfaceRenderingProp3DMHD(wxtabs, id);
- //int maxiso = surrendmanager1->getMaxIsoValue(id);
- //((wxMaracasSurfaceRenderingProp3DMHD*)controlpan)->createControls(maxiso);
-
- return controlpan;
+ controlpanSA = new wxMaracasSurfaceRenderingProp3DMHD(wxtabs, _propidSA, true, 1);
+ int maxiso = surrendmanager1->getMaxIsoValue(_propidSA);
+ ((wxMaracasSurfaceRenderingProp3DMHD*)controlpanSA)->createControls(maxiso);
+ wxtabs->AddPage(controlpanSA, _T("Surf Rendering A"));
}
}
catch(char* str)
}
}
-wxMaracasSurfaceRenderingPanel* wxMaracasRenderTabbedPanel::addSurface2(vtkImageData* img, std::string dataname)
+void wxMaracasRenderTabbedPanel::addSurface2(vtkImageData* img, std::string dataname)
{
try
{
- int id = surrendmanager2->addPropMHD(img, dataname);
- if(id!=-1)
+ int _propidSB = surrendmanager2->addPropMHD(img, dataname);
+ if(_propidSB!=-1)
{
- wxMaracasSurfaceRenderingPanel* controlpan = new wxMaracasSurfaceRenderingProp3DMHD(wxtabs, id);
- //int maxiso = surrendmanager2->getMaxIsoValue(id);
- //((wxMaracasSurfaceRenderingProp3DMHD*)controlpan)->createControls(maxiso);
+ controlpanSB = new wxMaracasSurfaceRenderingProp3DMHD(wxtabs, _propidSB, true, 2);
+ int maxiso = surrendmanager2->getMaxIsoValue(_propidSB);
+ ((wxMaracasSurfaceRenderingProp3DMHD*)controlpanSB)->createControls(maxiso);
+ wxtabs->AddPage(controlpanSB, _T("Surf Rendering B"));
- return controlpan;
}
}
catch(char* str)
}
}
-wxMaracasSurfaceRenderingPanel* wxMaracasRenderTabbedPanel::addSurface3(vtkImageData* img, std::string dataname)
+void wxMaracasRenderTabbedPanel::addSurface3(vtkImageData* img, std::string dataname)
{
try
{
- int id = surrendmanager3->addPropMHD(img, dataname);
- if(id!=-1)
+ _propidSC = surrendmanager3->addPropMHD(img, dataname);
+
+ if(_propidSC!=-1)
{
- wxMaracasSurfaceRenderingPanel* controlpan = new wxMaracasSurfaceRenderingProp3DMHD(wxtabs, id);
- //int maxiso = surrendmanager3->getMaxIsoValue(id);
- //((wxMaracasSurfaceRenderingProp3DMHD*)controlpan)->createControls(maxiso);
-
- return controlpan;
+ controlpanSC = new wxMaracasSurfaceRenderingProp3DMHD(wxtabs, _propidSC, true, 3);
+ int maxiso = surrendmanager3->getMaxIsoValue(_propidSC);
+ ((wxMaracasSurfaceRenderingProp3DMHD*)controlpanSC)->createControls(maxiso);
+ wxtabs->AddPage(controlpanSC, _T("Surf Rendering C"));
}
}
catch(char* str)
}
}
-void wxMaracasRenderTabbedPanel::onOK(wxCommandEvent& event)
+/**
+** Deletes complete volume
+**/
+void wxMaracasRenderTabbedPanel::deleteVolume(int volid)
+{
+ volmanager->deleteActor(volid);
+ surrendmanager1->deleteActor(volid);
+ surrendmanager2->deleteActor(volid);
+ surrendmanager3->deleteActor(volid);
+}
+
+/**
+** Adds or removes volume rendering actor with given ID
+**/
+void wxMaracasRenderTabbedPanel::addRemoveActorV(int id, bool addremove)
+{
+ volmanager->addRemoveActor(id, addremove);
+}
+
+/**
+** Adds or removes surface rendering actor with given ID
+**/
+void wxMaracasRenderTabbedPanel::addRemoveActorSA(int id, bool addremove)
+{
+ surrendmanager1->addRemoveActor(id, addremove);
+}
+
+/**
+** Adds or removes surface rendering actor with given ID
+**/
+void wxMaracasRenderTabbedPanel::addRemoveActorSB(int id, bool addremove)
+{
+ surrendmanager2->addRemoveActor(id, addremove);
+}
+
+/**
+** Adds or removes surface rendering actor with given ID
+**/
+void wxMaracasRenderTabbedPanel::addRemoveActorSC(int id, bool addremove)
+{
+ surrendmanager3->addRemoveActor(id, addremove);
+}
+
+/**
+** Sets color points values for the given volume rendering identified by parameter: volumeid
+**/
+void wxMaracasRenderTabbedPanel::SetValuesColorPointsFunction(int volid, std::vector<double> greylevelcolors,std::vector<double> red,std::vector<double> green,std::vector<double> blue)
+{
+ volmanager->setVolumeColor(volid, greylevelcolors, red, green, blue);
+}
+
+/**
+** Sets points values for the given volume rendering identified by parameter: volumeid
+**/
+void wxMaracasRenderTabbedPanel::SetValuesPointsFunction(int volid, std::vector<double> greylevel, std::vector<double> values)
+{
+ volmanager->setVolumeOpacity(volid, greylevel, values);
+}
+
+/**
+** Returns transfer function for the given volume rendering identified by parameter: volumeid
+**/
+vtkPiecewiseFunction* wxMaracasRenderTabbedPanel::GetTransferFunction(int volumeid)
+{
+ return volmanager->GetTransferFunction(volumeid);
+}
+
+/**
+** Returns color function for the given volume rendering identified by parameter: volumeid
+**/
+vtkColorTransferFunction* wxMaracasRenderTabbedPanel::GetColorFunction(int volumeid)
+{
+ return volmanager->GetColorFunction(volumeid);
+}
+
+/**
+** Changes color function by the given value for the given volume rendering identified by parameter: volumeid
+**/
+void wxMaracasRenderTabbedPanel::changeOpacityA(int _propid, int value)
{
- updateVolume();
- //_frame->Show(false);
+ surrendmanager1->changeOpacity(_propid,value);
}
-void wxMaracasRenderTabbedPanel::onCancel(wxCommandEvent& event)
+/**
+** Changes isoValue by the given value for the given surface rendering image identified by parameter: propid
+**/
+void wxMaracasRenderTabbedPanel::changeIsoValueA(int propid, double value)
{
- //_frame->Show(false);
+ surrendmanager1->changeIsoValue(propid, value);
}
+/**
+** Changes color for the given surface rendering image identified by parameter: propid
+**/
+void wxMaracasRenderTabbedPanel::changeColorA(int propid, double red, double green, double blue)
+{
+ try
+ {
+ surrendmanager1->changeColor(propid, red, green, blue);
+ }
+ catch(char* str)
+ {
+ wxString s( str,wxConvUTF8 );
+ wxMessageDialog* diag = new wxMessageDialog(this, s, s, wxICON_ERROR);
+ diag->ShowModal();
+ delete diag;
+ }
+}
+
+/**
+** Changes color function by the given value for the given volume rendering identified by parameter: volumeid
+**/
+void wxMaracasRenderTabbedPanel::changeOpacityB(int _propid, int value)
+{
+ surrendmanager2->changeOpacity(_propid,value);
+}
+
+/**
+** Changes isoValue by the given value for the given surface rendering image identified by parameter: propid
+**/
+void wxMaracasRenderTabbedPanel::changeIsoValueB(int propid, double value)
+{
+ surrendmanager2->changeIsoValue(propid, value);
+}
+
+/**
+** Changes color for the given surface rendering image identified by parameter: propid
+**/
+void wxMaracasRenderTabbedPanel::changeColorB(int propid, double red, double green, double blue)
+{
+ try
+ {
+ surrendmanager2->changeColor(propid, red, green, blue);
+ }
+ catch(char* str)
+ {
+ wxString s( str,wxConvUTF8 );
+ wxMessageDialog* diag = new wxMessageDialog(this, s, s, wxICON_ERROR);
+ diag->ShowModal();
+ delete diag;
+ }
+}
+
+/**
+** Changes color function by the given value for the given volume rendering identified by parameter: volumeid
+**/
+void wxMaracasRenderTabbedPanel::changeOpacityC(int _propid, int value)
+{
+ surrendmanager3->changeOpacity(_propid,value);
+}
+
+/**
+** Changes isoValue by the given value for the given surface rendering image identified by parameter: propid
+**/
+void wxMaracasRenderTabbedPanel::changeIsoValueC(int propid, double value)
+{
+ surrendmanager3->changeIsoValue(propid, value);
+}
+
+/**
+** Changes color for the given surface rendering image identified by parameter: propid
+**/
+void wxMaracasRenderTabbedPanel::changeColorC(int propid, double red, double green, double blue)
+{
+ try
+ {
+ surrendmanager3->changeColor(propid, red, green, blue);
+ }
+ catch(char* str)
+ {
+ wxString s( str,wxConvUTF8 );
+ wxMessageDialog* diag = new wxMessageDialog(this, s, s, wxICON_ERROR);
+ diag->ShowModal();
+ delete diag;
+ }
+}
+
+/**
+**
+**/
void wxMaracasRenderTabbedPanel::onUpdate(wxCommandEvent& event)
{
updateVolume();
}
+/**
+**
+**/
void wxMaracasRenderTabbedPanel::updateVolume()
{
- //std::vector<double> greylevelcolors;
- //std::vector<double> red;
- //std::vector<double> green;
- //std::vector<double> blue;
+ /*Temporarily disabled*/
+
+ std::vector<double> greylevelcolors;
+ std::vector<double> red;
+ std::vector<double> green;
+ std::vector<double> blue;
- //std::vector<double> greylevel;
- //std::vector<double> values;
+ std::vector<double> greylevel;
+ std::vector<double> values;
- //mwxwidget->GetValuesColorPointsFunction(greylevelcolors, red, green, blue);
- //mwxwidget->GetValuesPointsFunction(greylevel, values);
+ HistogramDialogComboBox* histo = controlpanV->getMwxwidget();
+ histo->GetValuesColorPointsFunction(greylevelcolors, red, green, blue);
+ histo->GetValuesPointsFunction(greylevel, values);
+ volmanager->setVolumeColor(controlpanV->getPropId(), greylevelcolors, red, green, blue);
+ volmanager->setVolumeOpacity(controlpanV->getPropId(), greylevel, values);
//wxMaracasMultipleVolumeRendererView::getInstance()->SetValuesColorPointsFunction(this->_propid, greylevelcolors, red, green, blue);
//wxMaracasMultipleVolumeRendererView::getInstance()->SetValuesPointsFunction(this->_propid, greylevel, values);
}
+/**
+**
+**/
void wxMaracasRenderTabbedPanel::onColorChange(wxCommandEvent& event)
{
+ /*Temporarily disabled*/
//if(mwxwidget->ShowModal()==wxID_OK){
//updateVolume();
/**
**
**/
-void wxMaracasRenderTabbedPanel::onViewImage(wxCommandEvent& event){
+void wxMaracasRenderTabbedPanel::onViewImage(wxCommandEvent& event)
+{
}
/**
-**
+** Method called when VolumeRendering checkbox status changes: Either shows or hides VolumeRendering image
**/
void wxMaracasRenderTabbedPanel::onCheckBoxVChange(wxCommandEvent& event)
{
- //wxMaracasMultipleVolumeRendererView::getInstance()->addRemoveActor(this->getPropId(), checkbox->GetValue());
+ volmanager->addRemoveActor(this->getPropIdV(), checkboxVol->GetValue());
}
/**
-**
+** Method called when SurfaceRendering A checkbox status changes: Either shows or hides SurfaceRendering image
**/
void wxMaracasRenderTabbedPanel::onCheckBoxSAChange(wxCommandEvent& event)
{
- //wxMaracasMultipleVolumeRendererView::getInstance()->addRemoveActor(this->getPropId(), checkbox->GetValue());
+ surrendmanager1->addRemoveActor(this->getPropIdSA(), checkboxSA->GetValue());
}
/**
-**
+** Method called when SurfaceRendering B checkbox status changes: Either shows or hides SurfaceRendering B image
**/
void wxMaracasRenderTabbedPanel::onCheckBoxSBChange(wxCommandEvent& event)
{
- //wxMaracasMultipleVolumeRendererView::getInstance()->addRemoveActor(this->getPropId(), checkbox->GetValue());
+ surrendmanager2->addRemoveActor(this->getPropIdSB(), checkboxSB->GetValue());
}
/**
-**
+** Method called when SurfaceRendering C checkbox status changes: Either shows or hides SurfaceRendering C image
**/
void wxMaracasRenderTabbedPanel::onCheckBoxSCChange(wxCommandEvent& event)
{
- //wxMaracasMultipleVolumeRendererView::getInstance()->addRemoveActor(this->getPropId(), checkbox->GetValue());
+ surrendmanager3->addRemoveActor(this->getPropIdSC(), checkboxSC->GetValue());
+}
+
+/**
+**
+**/
+int wxMaracasRenderTabbedPanel::getPropIdV()
+{
+ return _propidV;
+}
+
+/**
+**
+**/
+int wxMaracasRenderTabbedPanel::getPropIdSA()
+{
+ return _propidSA;
}
/**
**
**/
-int wxMaracasRenderTabbedPanel::getPropId(){
- return _propid;
+int wxMaracasRenderTabbedPanel::getPropIdSB()
+{
+ return _propidSB;
}
+/**
+**
+**/
+int wxMaracasRenderTabbedPanel::getPropIdSC()
+{
+ return _propidSC;
+}
\ No newline at end of file