Exemple #1
0
void DataListCtrl::EndEdit(bool update)
{
	if (!m_rename_text->IsShown())
		return;

	if (update)
	{
		wxString new_name = m_rename_text->GetValue();

		long item = GetNextItem(-1,
			wxLIST_NEXT_ALL,
			wxLIST_STATE_SELECTED);
		VRenderFrame* vr_frame = (VRenderFrame*)m_frame;
		DataManager* mgr = vr_frame?vr_frame->GetDataManager():0;

		if (item != -1 && mgr)
		{
			wxString name = GetText(item, 1);

			if (new_name != name)
			{
				wxString new_name2 = new_name;
				for (int i=1; mgr->CheckNames(new_name2); i++)
					new_name2 = new_name+wxString::Format("_%d", i);


				if (GetItemText(item) == "Volume")
				{
					VolumeData* vd = mgr->GetVolumeData(name);
					if (vd)
						vd->SetName(new_name2);
				}
				else if (GetItemText(item) == "Mesh")
				{
					MeshData* md = mgr->GetMeshData(name);
					if (md)
						md->SetName(new_name2);
				}
				else if (GetItemText(item) == "Annotations")
				{
					Annotations* ann = mgr->GetAnnotations(name);
					if (ann)
						ann->SetName(new_name2);
				}

				//update ui
				SetText(item, 1, new_name2);
				vr_frame->UpdateTree();
			}
		}
	}

   m_rename_text->Hide();
}
void ColocalizationDlg::LoadVolumes()
{
	VRenderFrame* vr_frame = (VRenderFrame*)m_frame;
	if (!vr_frame) return;

	DataManager* mgr = vr_frame->GetDataManager();
    if (!mgr) return;

	m_vol_a = mgr->GetVolumeData(m_calc_a_text->GetValue());
	m_vol_b = mgr->GetVolumeData(m_calc_b_text->GetValue());
}
void RecorderDlg::InsertKey(int index, double duration, int interpolation)
{
	VRenderFrame* vr_frame = (VRenderFrame*)m_frame;
	if (!vr_frame)
		return;
	if (!m_view)
	{
		if (vr_frame && vr_frame->GetView(0))
			m_view = vr_frame->GetView(0);
		else
			return;
	}

	DataManager* mgr = vr_frame->GetDataManager();
	if (!mgr)
		return;
	Interpolator *interpolator = vr_frame->GetInterpolator();
	if (!interpolator)
		return;
	KeyCode keycode;
	FlKeyDouble* flkey = 0;
	FlKeyQuaternion* flkeyQ = 0;
	FlKeyBoolean* flkeyB = 0;
	FlKeyInt* flkeyI = 0;

	double t = interpolator->GetLastT();
	t = t<0.0?0.0:t+duration;

	interpolator->Begin(t);

	//for all volumes
	for (int i=0; i<mgr->GetVolumeNum() ; i++)
	{
		VolumeData* vd = mgr->GetVolumeData(i);
		keycode.l0 = 1;
		keycode.l0_name = m_view->GetName();
		keycode.l1 = 2;
		keycode.l1_name = vd->GetName();
		//display
		keycode.l2 = 0;
		keycode.l2_name = "display";
		flkeyB = new FlKeyBoolean(keycode, vd->GetDisp());
		interpolator->AddKey(flkeyB);
		//clipping planes
		vector<Plane*> * planes = vd->GetVR()->get_planes();
		if (!planes)
			continue;
		if (planes->size() != 6)
			continue;
		Plane* plane = 0;
		double abcd[4];
		//x1
		plane = (*planes)[0];
		plane->get_copy(abcd);
		keycode.l2 = 0;
		keycode.l2_name = "x1_val";
		flkey = new FlKeyDouble(keycode, abs(abcd[3]));
		interpolator->AddKey(flkey);
		//x2
		plane = (*planes)[1];
		plane->get_copy(abcd);
		keycode.l2 = 0;
		keycode.l2_name = "x2_val";
		flkey = new FlKeyDouble(keycode, abs(abcd[3]));
		interpolator->AddKey(flkey);
		//y1
		plane = (*planes)[2];
		plane->get_copy(abcd);
		keycode.l2 = 0;
		keycode.l2_name = "y1_val";
		flkey = new FlKeyDouble(keycode, abs(abcd[3]));
		interpolator->AddKey(flkey);
		//y2
		plane = (*planes)[3];
		plane->get_copy(abcd);
		keycode.l2 = 0;
		keycode.l2_name = "y2_val";
		flkey = new FlKeyDouble(keycode, abs(abcd[3]));
		interpolator->AddKey(flkey);
		//z1
		plane = (*planes)[4];
		plane->get_copy(abcd);
		keycode.l2 = 0;
		keycode.l2_name = "z1_val";
		flkey = new FlKeyDouble(keycode, abs(abcd[3]));
		interpolator->AddKey(flkey);
		//z2
		plane = (*planes)[5];
		plane->get_copy(abcd);
		keycode.l2 = 0;
		keycode.l2_name = "z2_val";
		flkey = new FlKeyDouble(keycode, abs(abcd[3]));
		interpolator->AddKey(flkey);
	}
	//for the view
	keycode.l0 = 1;
	keycode.l0_name = m_view->GetName();
	keycode.l1 = 1;
	keycode.l1_name = m_view->GetName();
	//rotation
	keycode.l2 = 0;
	keycode.l2_name = "rotation";
	double rotx, roty, rotz;
	m_view->GetRotations(rotx, roty, rotz);
	Quaternion q;
	q.FromEuler(rotx, roty, rotz);
	flkeyQ = new FlKeyQuaternion(keycode, q);
	interpolator->AddKey(flkeyQ);
	//translation
	double tx, ty, tz;
	m_view->GetTranslations(tx, ty, tz);
	//x
	keycode.l2_name = "translation_x";
	flkey = new FlKeyDouble(keycode, tx);
	interpolator->AddKey(flkey);
	//y
	keycode.l2_name = "translation_y";
	flkey = new FlKeyDouble(keycode, ty);
	interpolator->AddKey(flkey);
	//z
	keycode.l2_name = "translation_z";
	flkey = new FlKeyDouble(keycode, tz);
	interpolator->AddKey(flkey);
	//centers
	m_view->GetCenters(tx, ty, tz);
	//x
	keycode.l2_name = "center_x";
	flkey = new FlKeyDouble(keycode, tx);
	interpolator->AddKey(flkey);
	//y
	keycode.l2_name = "center_y";
	flkey = new FlKeyDouble(keycode, ty);
	interpolator->AddKey(flkey);
	//z
	keycode.l2_name = "center_z";
	flkey = new FlKeyDouble(keycode, tz);
	interpolator->AddKey(flkey);
	//obj traslation
	m_view->GetObjTrans(tx, ty, tz);
	//x
	keycode.l2_name = "obj_trans_x";
	flkey = new FlKeyDouble(keycode, tx);
	interpolator->AddKey(flkey);
	//y
	keycode.l2_name = "obj_trans_y";
	flkey = new FlKeyDouble(keycode, ty);
	interpolator->AddKey(flkey);
	//z
	keycode.l2_name = "obj_trans_z";
	flkey = new FlKeyDouble(keycode, tz);
	interpolator->AddKey(flkey);
	//scale
	double scale = m_view->m_glview->m_scale_factor;
	keycode.l2_name = "scale";
	flkey = new FlKeyDouble(keycode, scale);
	interpolator->AddKey(flkey);
	//intermixing mode
	int ival = m_view->GetVolMethod();
	keycode.l2_name = "volmethod";
	flkeyI = new FlKeyInt(keycode, ival);
	interpolator->AddKey(flkeyI);

	interpolator->End();

	FlKeyGroup* group = interpolator->GetKeyGroup(interpolator->GetLastIndex());
	if (group)
		group->type = interpolation;

	//insert
	//if (index >= 0)
	//	interpolator->MoveKeyBefore(interpolator->GetLastIndex(), index+1);
}
Exemple #4
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();
   }
}
Exemple #5
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();
   }
}