void KeyListCtrl::OnAct(wxListEvent &event) { long item = GetNextItem(-1, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED); if (item == -1) return; wxString str = GetItemText(item); long id; str.ToLong(&id); VRenderFrame* vr_frame = (VRenderFrame*)m_frame; if (!vr_frame) return; Interpolator* interpolator = vr_frame->GetInterpolator(); if (!interpolator) return; int index = interpolator->GetKeyIndex(int(id)); double time = interpolator->GetKeyTime(index); VRenderView* view = vr_frame->GetRecorderDlg()->GetView(); if (!view) view = vr_frame->GetView(0); if (view) { view->m_glview->SetParams(time); view->RefreshGL(); } }
//font void SettingDlg::OnFontChange(wxCommandEvent &event) { wxString str = m_font_cmb->GetValue(); if (str != "") { m_font_file = str + ".ttf"; std::string exePath = wxStandardPaths::Get().GetExecutablePath().ToStdString(); exePath = exePath.substr(0,exePath.find_last_of(std::string()+GETSLASH())); std::string loc = exePath + GETSLASH() + wxString("Fonts") + GETSLASH() + str.ToStdString() + ".ttf"; VRenderFrame* vr_frame = (VRenderFrame*)m_frame; if (vr_frame) { vr_frame->GetTextRenderer()->LoadNewFace(loc); vr_frame->GetTextRenderer()->SetSize(m_text_size); for (int i=0 ; i<(int)vr_frame->GetViewList()->size() ; i++) { VRenderView* vrv = (*vr_frame->GetViewList())[i]; if (vrv) vrv->RefreshGL(); } } } }
//shadow direction void SettingDlg::OnShadowDirCheck(wxCommandEvent &event) { if (m_shadow_dir_chk->GetValue()) { m_shadow_dir_sldr->Enable(); m_shadow_dir_text->Enable(); wxString str; str = m_shadow_dir_text->GetValue(); double deg; str.ToDouble(°); SetShadowDir(deg); m_shadow_dir = true; } else { m_shadow_dir_sldr->Disable(); m_shadow_dir_text->Disable(); m_shadow_dir_x = 0.0; m_shadow_dir_y = 0.0; m_shadow_dir = false; } VRenderFrame* vr_frame = (VRenderFrame*)m_frame; if (vr_frame) { for (int i=0 ; i<(int)vr_frame->GetViewList()->size() ; i++) { VRenderView* vrv = (*vr_frame->GetViewList())[i]; if (vrv) vrv->RefreshGL(); } } }
//one-operators void BrushToolDlg::OnCalcFill(wxCommandEvent &event) { if (!m_vol1) return; VRenderFrame* vr_frame = (VRenderFrame*)m_frame; if (vr_frame) { m_cur_view = 0; for (int i=0; i<vr_frame->GetViewNum(); i++) { VRenderView* vrv = vr_frame->GetView(i); wxString str = m_vol1->GetName(); if (vrv && vrv->GetVolumeData(str)) { m_cur_view = vrv; break; } } if (!m_cur_view) m_cur_view = vr_frame->GetView(0); if (m_cur_view) { m_cur_view->SetVolumeA(m_vol1); m_vol2 = 0; m_cur_view->SetVolumeB(0); m_calc_b_text->Clear(); m_cur_view->Calculate(9); } } }
//link rotations void SettingDlg::OnRotLink(wxCommandEvent& event) { VRenderFrame* vr_frame = (VRenderFrame*)m_frame; if (vr_frame && 0 < vr_frame->GetViewNum()) { VRenderView* view = vr_frame->GetView(0); if (view) { view->OnRotLink(m_rot_link_chk->GetValue()); } } }
void SettingDlg::OnShadowDirEdit(wxCommandEvent &event) { wxString str = m_shadow_dir_text->GetValue(); double deg; str.ToDouble(°); m_shadow_dir_sldr->SetValue(int(deg)); SetShadowDir(deg); VRenderFrame* vr_frame = (VRenderFrame*)m_frame; if (vr_frame) { for (int i=0 ; i<(int)vr_frame->GetViewList()->size() ; i++) { VRenderView* vrv = (*vr_frame->GetViewList())[i]; if (vrv) vrv->RefreshGL(); } } }
void SettingDlg::OnFontSizeChange(wxCommandEvent &event) { wxString str = m_font_size_cmb->GetValue(); long size; if (str.ToLong(&size)) { m_text_size = size; VRenderFrame* vr_frame = (VRenderFrame*)m_frame; if (vr_frame) { vr_frame->GetTextRenderer()->SetSize(m_text_size); for (int i=0 ; i<(int)vr_frame->GetViewList()->size() ; i++) { VRenderView* vrv = (*vr_frame->GetViewList())[i]; if (vrv) vrv->RefreshGL(); } } } }
//gradient background void SettingDlg::OnGradBgCheck(wxCommandEvent &event) { if (m_grad_bg_chk->GetValue()) m_grad_bg = true; else m_grad_bg = false; VRenderFrame* vr_frame = (VRenderFrame*)m_frame; if (vr_frame) { for (int i=0 ; i<(int)vr_frame->GetViewList()->size() ; i++) { VRenderView* vrv = (*vr_frame->GetViewList())[i]; if (vrv) { vrv->SetGradBg(m_grad_bg); vrv->RefreshGL(); } } } }
void SettingDlg::OnMicroBlendCheck(wxCommandEvent &event) { if (m_micro_blend_chk->GetValue()) m_micro_blend = true; else m_micro_blend = false; VRenderFrame* vr_frame = (VRenderFrame*)m_frame; if (vr_frame) { for (int i=0 ; i<(int)vr_frame->GetViewList()->size() ; i++) { VRenderView* vrv = (*vr_frame->GetViewList())[i]; if (vrv) { vrv->SetBlendSlices(m_micro_blend); vrv->RefreshGL(); } } } }
void SettingDlg::OnMouseIntCheck(wxCommandEvent &event) { if (m_mouse_int_chk->GetValue()) m_mouse_int = true; else m_mouse_int = false; VRenderFrame* vr_frame = (VRenderFrame*)m_frame; if (vr_frame) { for (int i=0 ; i<(int)vr_frame->GetViewList()->size() ; i++) { VRenderView* vrv = (*vr_frame->GetViewList())[i]; if (vrv) { vrv->SetAdaptive(m_mouse_int); vrv->RefreshGL(); } } } }
void SettingDlg::OnPeelingLayersEdit(wxCommandEvent &event) { wxString str = m_peeling_layers_text->GetValue(); long ival; str.ToLong(&ival); if (ival<=0) return; m_peeling_layers_sldr->SetValue(ival); m_peeling_layers = ival; VRenderFrame* vr_frame = (VRenderFrame*)m_frame; if (vr_frame) { for (int i=0 ; i<(int)vr_frame->GetViewList()->size() ; i++) { VRenderView* vrv = (*vr_frame->GetViewList())[i]; if (vrv) { vrv->SetPeelingLayers(ival); vrv->RefreshGL(); } } } }
void DataListCtrl::DeleteAll() { VRenderFrame* vr_frame = (VRenderFrame*)m_frame; wxString name = ""; long item = GetNextItem(-1); while (item != -1 && vr_frame) { if (GetItemText(item) == "Volume") { name = GetText(item, 1); DataManager* mgr = vr_frame->GetDataManager(); BaseReader *reader = NULL; int chan = -1; if (mgr) { VolumeData *vd = mgr->GetVolumeData(name); reader = vd->GetReader(); chan = vd->GetCurChannel(); } int i; //from view for (i=0; i<(int)vr_frame->GetViewList()->size(); i++) { VRenderView* view = (*vr_frame->GetViewList())[i]; if (view) view->RemoveVolumeDataset(reader, chan); } //from datamanager if (mgr) mgr->RemoveVolumeDataset(reader, chan); } else if (GetItemText(item) == "Mesh") { name = GetText(item, 1); int i; //from view for (i=0; i<(int)vr_frame->GetViewList()->size(); i++) { VRenderView* view = (*vr_frame->GetViewList())[i]; if (view) view->RemoveMeshData(name); } //from datamanager DataManager* mgr = vr_frame->GetDataManager(); if (mgr) { int index = mgr->GetMeshIndex(name); if (index != -1) mgr->RemoveMeshData(index); } } else if (GetItemText(item) == "Annotations") { name = GetText(item, 1); int i; //from view for (i=0; i<(int)vr_frame->GetViewList()->size(); i++) { VRenderView* view = (*vr_frame->GetViewList())[i]; if (view) view->RemoveAnnotations(name); } //from datamanager DataManager* mgr = vr_frame->GetDataManager(); if (mgr) { int index = mgr->GetAnnotationIndex(name); if (index != -1) mgr->RemoveAnnotations(index); } } item = GetNextItem(item); } DeleteAllItems(); if (vr_frame) { vr_frame->UpdateTree(); vr_frame->RefreshVRenderViews(); } }
void DataListCtrl::DeleteSelection() { VRenderFrame* vr_frame = (VRenderFrame*)m_frame; wxString name = ""; if (vr_frame && GetSelectedItemCount()>0) { long item = GetNextItem(-1, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED); if (item != -1) { if (GetItemText(item) == "Volume") { name = GetText(item, 1); DataManager* mgr = vr_frame->GetDataManager(); BaseReader *reader = NULL; int chan = -1; if (mgr) { VolumeData *vd = mgr->GetVolumeData(name); reader = vd->GetReader(); chan = vd->GetCurChannel(); } int i; //from view for (i=0; i<(int)vr_frame->GetViewList()->size(); i++) { VRenderView* view = (*vr_frame->GetViewList())[i]; if (view) view->RemoveVolumeDataset(reader, chan); } //from datamanager if (mgr) mgr->RemoveVolumeDataset(reader, chan); } else if (GetItemText(item) == "Mesh") { name = GetText(item, 1); int i; //from view for (i=0; i<(int)vr_frame->GetViewList()->size(); i++) { VRenderView* view = (*vr_frame->GetViewList())[i]; if (view) { view->RemoveMeshData(name); } } //from datamanager DataManager* mgr = vr_frame->GetDataManager(); if (mgr) { int index = mgr->GetMeshIndex(name); if (index != -1) { mgr->RemoveMeshData(index); } } } else if (GetItemText(item) == "Annotations") { name = GetText(item, 1); int i; //from view for (i=0; i<(int)vr_frame->GetViewList()->size(); i++) { VRenderView* view = (*vr_frame->GetViewList())[i]; if (view) view->RemoveAnnotations(name); } //from datamanager DataManager* mgr = vr_frame->GetDataManager(); if (mgr) { int index = mgr->GetAnnotationIndex(name); if (index != -1) mgr->RemoveAnnotations(index); } } } vr_frame->UpdateList(); vr_frame->UpdateTree(name); vr_frame->RefreshVRenderViews(); } }
void DataListCtrl::AddToView(int menu_index, long item) { VRenderFrame* vr_frame = (VRenderFrame*)m_frame; bool view_empty = true; wxString name = ""; if (vr_frame) { if (GetItemText(item) == "Volume") { name = GetText(item, 1); VolumeData* vd = vr_frame->GetDataManager()->GetVolumeData(name); if (vd) { VRenderView* view = (*vr_frame->GetViewList())[menu_index]; if (view) { /* VolumeData* vd_add = vd; for (int i=0; i<(int)vr_frame->GetViewList()->size(); i++) { VRenderView* vrv = (*vr_frame->GetViewList())[i]; if (vrv && vrv->GetVolumeData(name)) { vd_add = vr_frame->GetDataManager()->DuplicateVolumeData(vd); break; } } */ VolumeData* vd_add = vr_frame->GetDataManager()->DuplicateVolumeData(vd, true); int chan_num = view->GetAny(); view_empty = chan_num>0?false:view_empty; Color color(1.0, 1.0, 1.0); if (chan_num == 0) color = Color(1.0, 0.0, 0.0); else if (chan_num == 1) color = Color(0.0, 1.0, 0.0); else if (chan_num == 2) color = Color(0.0, 0.0, 1.0); if (chan_num >=0 && chan_num <3) vd_add->SetColor(color); DataGroup *group = view->AddVolumeData(vd_add); vr_frame->OnSelection(2, view, group, vd_add, 0); if (view->GetVolMethod() == VOL_METHOD_MULTI) { AdjustView* adjust_view = vr_frame->GetAdjustView(); if (adjust_view) { adjust_view->SetRenderView(view); adjust_view->UpdateSync(); } } } } } else if (GetItemText(item) == "Mesh") { name = GetText(item, 1); MeshData* md = vr_frame->GetDataManager()->GetMeshData(name); if (md) { VRenderView* view = (*vr_frame->GetViewList())[menu_index]; if (view) { int chan_num = view->GetAny(); view_empty = chan_num>0?false:view_empty; view->AddMeshData(md); } } } else if (GetItemText(item) == "Annotations") { name = GetText(item, 1); Annotations* ann = vr_frame->GetDataManager()->GetAnnotations(name); if (ann) { VRenderView* view = (*vr_frame->GetViewList())[menu_index]; if (view) { int chan_num = view->GetAny(); view_empty = chan_num>0?false:view_empty; view->AddAnnotations(ann); } } } //update if (view_empty) (*vr_frame->GetViewList())[menu_index]->InitView(INIT_BOUNDS|INIT_CENTER|INIT_TRANSL|INIT_ROTATE); else (*vr_frame->GetViewList())[menu_index]->InitView(INIT_BOUNDS|INIT_CENTER); (*vr_frame->GetViewList())[menu_index]->RefreshGL(); vr_frame->UpdateTree(name); } }