/*# --------------------------------------------------------------------- # # Copyright (c) CREATIS (Centre de Recherche en Acquisition et Traitement de l'Image # pour la Sant�) # Authors : Eduardo Davila, Frederic Cervenansky, Claire Mouton # Previous Authors : Laurent Guigues, Jean-Pierre Roux # CreaTools website : www.creatis.insa-lyon.fr/site/fr/creatools_accueil # # This software is governed by the CeCILL-B license under French law and # abiding by the rules of distribution of free software. You can use, # modify and/ or redistribute the software under the terms of the CeCILL-B # license as circulated by CEA, CNRS and INRIA at the following URL # http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html # or in the file LICENSE.txt. # # As a counterpart to the access to the source code and rights to copy, # modify and redistribute granted by the license, users are provided only # with a limited warranty and the software's author, the holder of the # economic rights, and the successive licensors have only limited # liability. # # The fact that you are presently reading this means that you have had # knowledge of the CeCILL-B license and that you accept its terms. # ------------------------------------------------------------------------ */ #ifdef _USE_WXWIDGETS_ #ifndef __bbcreaMaracasVisuShowNPoints_h_INCLUDED__ #define __bbcreaMaracasVisuShowNPoints_h_INCLUDED__ #include "bbtkWxBlackBox.h" #include #include "vtkActor.h" #include "vtkSphereSource.h" #include "vtkImageData.h" #include "vtkRenderer.h" #include "vtkTextActor3D.h" namespace bbcreaMaracasVisu { class ModelShowNPoints { public: ModelShowNPoints(); ~ModelShowNPoints(); std::vector GetLstPointsX(); std::vector GetLstPointsY(); std::vector GetLstPointsZ(); void GetIdPoint(int id, int *x, int *y, int *z); std::string GetIdLabel(int id); std::vector GetLstLabels(); void AddPoint(int x, int y, int z, std::string label); double Distance(double dX0, double dY0, double dZ0, double dX1, double dY1, double dZ1); int InsertPoint(int x, int y, int z, std::string label); void SavePoints(std::string filename); int ReadPoints(std::string filename); int GetNearestPoint(); int GetLstPointsSize(); void SetPointId_mReferencePoint(int id); int IdInsidePoint(); void SetReferencePoint(std::vector ppoint); std::vector GetReferencePoint(); void SetImage(vtkImageData *image); std::string CleanSpaces(std::string ss); vtkImageData* GetImage(); void SetRadio(double radio); double GetRadio(); int RenamePoint(std::string label); void ErasePoint(int id); private: std::vector lstPointsX; std::vector lstPointsY; std::vector lstPointsZ; std::vector lstLabels; std::vector mReferencePoint; double mradio; vtkImageData *mimage; }; class ShowNPoints; //-------------------------------------------------------------------------- class WidgetShowNPoints : public wxPanel { public: WidgetShowNPoints( wxWindow *parent, ShowNPoints *box); ~WidgetShowNPoints(); void OnAddPoint(wxCommandEvent &event); void OnInsertPoint (wxCommandEvent& event);//CFT void OnSetPoint(wxCommandEvent& event); void OnRenamePoint(wxCommandEvent& event); void OnErasePoint(wxCommandEvent& event); void OnEraseLastPoint(wxCommandEvent &event); void OnDeleteAllPoints(wxCommandEvent &event); void OnSavePoints(wxCommandEvent &event); void OnLoadPoints(wxCommandEvent &event); void UpdatePoints(wxCommandEvent &event); void RefreshPoint(int id); void SetColour(std::vector colour); void SetOpacity(double opacity); void SetRadio(double radio); void SetImage(vtkImageData *image); void SetRenderer(vtkRenderer *renderer); void SetReferencePoint(std::vector point); void AddPoint(int x, int y, int z, std::string label); void InsertPoint(int x, int y, int z, std::string label);//CFT ModelShowNPoints* GetModelShowNPoints(); void RefreshPoints(); void AddVtkPoint(); void SetInitLstPoints( std::vector initLstPointsX, std::vector initLstPointsY, std::vector initLstPointsZ, std::vector initLstLabels ); private: void ErasePoint(int id); void SetOutputBox(); ShowNPoints *mbbShowNPoints; vtkRenderer *renderer; std::vector lstActorsSphere;//NTU changed from prop3D to Actor std::vector lstActorsText; //NTU: For updating points std::vector lstSourceSphere; std::vector mcolour; double mopacity; wxStaticText *askPointLabel; wxTextCtrl *textCtrl; wxStaticText *txtNrPoints; wxSlider *sdrOpacity; wxSlider *sdrRadio; ModelShowNPoints *mmodelShowNPoints; }; class /*BBTK_EXPORT*/ ShowNPoints : public bbtk::WxBlackBox { BBTK_BLACK_BOX_INTERFACE(ShowNPoints,bbtk::WxBlackBox); BBTK_DECLARE_INPUT(In, std::vector ); BBTK_DECLARE_INPUT(Renderer, vtkRenderer* ); BBTK_DECLARE_INPUT(Image, vtkImageData* ); BBTK_DECLARE_INPUT(Colour, std::vector ); BBTK_DECLARE_INPUT(Opacity, double ); BBTK_DECLARE_INPUT(Radio, double ); BBTK_DECLARE_INPUT(InitLstPointsX, std::vector ); BBTK_DECLARE_INPUT(InitLstPointsY, std::vector ); BBTK_DECLARE_INPUT(InitLstPointsZ, std::vector ); BBTK_DECLARE_INPUT(InitLstLabels, std::vector ); BBTK_DECLARE_INPUT(Type, int ); BBTK_DECLARE_OUTPUT( lstPointsX, std::vector ); BBTK_DECLARE_OUTPUT( lstPointsY, std::vector ); BBTK_DECLARE_OUTPUT( lstPointsZ, std::vector ); BBTK_DECLARE_OUTPUT( lstLabels, std::vector ); BBTK_PROCESS(Process); void Process(); BBTK_CREATE_WIDGET(CreateWidget); void CreateWidget(wxWindow*); private: WidgetShowNPoints *mwxwidget; bool firsttime; }; BBTK_BEGIN_DESCRIBE_BLACK_BOX(ShowNPoints,bbtk::WxBlackBox); BBTK_NAME("ShowNPoints"); BBTK_AUTHOR("Eduardo DAVILA"); BBTK_DESCRIPTION("widget that shows N moints in 3D (vtkActors)"); BBTK_CATEGORY("widgetVtk"); BBTK_INPUT(ShowNPoints,In,"One Point",std::vector,""); BBTK_INPUT(ShowNPoints,Renderer,"Renderer",vtkRenderer*,""); BBTK_INPUT(ShowNPoints,Image,"vktkImageData",vtkImageData*,""); BBTK_INPUT(ShowNPoints,Colour,"Colour of the actor",std::vector,"colour"); BBTK_INPUT(ShowNPoints,Opacity,"Opacity of the actor 0..1 (default 1)",double,""); BBTK_INPUT(ShowNPoints,Radio,"Radio of the spheres 1..50 (default 10)",double,""); BBTK_INPUT(ShowNPoints,InitLstPointsX,"Initial lst of points X",std::vector,""); BBTK_INPUT(ShowNPoints,InitLstPointsY,"Initial lst of points Y",std::vector,""); BBTK_INPUT(ShowNPoints,InitLstPointsZ,"Initial lst of points Z",std::vector,""); BBTK_INPUT(ShowNPoints,InitLstLabels,"Initial lst of labels",std::vector,""); BBTK_INPUT(ShowNPoints,Type,"Type of the widget. 0(default): N-points, 1:Just one point",int,""); BBTK_OUTPUT(ShowNPoints , lstPointsX , " list of points X ", std::vector ,""); BBTK_OUTPUT(ShowNPoints , lstPointsY , " list of points Y ", std::vector ,""); BBTK_OUTPUT(ShowNPoints , lstPointsZ , " list of points Z ", std::vector ,""); BBTK_OUTPUT(ShowNPoints , lstLabels , " list of labels ", std::vector ,""); BBTK_END_DESCRIBE_BLACK_BOX(ShowNPoints); } // EO namespace bbcreaMaracasVisu #endif // __bbcreaMaracasVisuShowNPoints_h_INCLUDED__ #endif // _USE_WXWIDGETS_