Beispiel #1
0
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();
	}
}
Beispiel #2
0
//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();
			}
		}
	}
}
Beispiel #3
0
//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(&deg);
		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();
		}
	}
}
Beispiel #4
0
//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);
		}
	}
}
Beispiel #5
0
//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());
	 }
   }
}
Beispiel #6
0
void SettingDlg::OnShadowDirEdit(wxCommandEvent &event)
{
	wxString str = m_shadow_dir_text->GetValue();
	double deg;
	str.ToDouble(&deg);
	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();
		}
	}
}
Beispiel #7
0
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();
			}
		}
	}
}
Beispiel #8
0
//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();
			}
		}
	}
}
Beispiel #9
0
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();
			}
		}
	}
}
Beispiel #10
0
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();
			}
		}
	}
}
Beispiel #11
0
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();
			}
		}
	}
}
Beispiel #12
0
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();
   }
}
Beispiel #13
0
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();
   }
}
Beispiel #14
0
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);
   }
}