1 /*# ---------------------------------------------------------------------
3 # Copyright (c) CREATIS (Centre de Recherche en Acquisition et Traitement de l'Image
5 # Authors : Eduardo Davila, Frederic Cervenansky, Claire Mouton
6 # Previous Authors : Laurent Guigues, Jean-Pierre Roux
7 # CreaTools website : www.creatis.insa-lyon.fr/site/fr/creatools_accueil
9 # This software is governed by the CeCILL-B license under French law and
10 # abiding by the rules of distribution of free software. You can use,
11 # modify and/ or redistribute the software under the terms of the CeCILL-B
12 # license as circulated by CEA, CNRS and INRIA at the following URL
13 # http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html
14 # or in the file LICENSE.txt.
16 # As a counterpart to the access to the source code and rights to copy,
17 # modify and redistribute granted by the license, users are provided only
18 # with a limited warranty and the software's author, the holder of the
19 # economic rights, and the successive licensors have only limited
22 # The fact that you are presently reading this means that you have had
23 # knowledge of the CeCILL-B license and that you accept its terms.
24 # ------------------------------------------------------------------------ */
26 #include "bbmaracasvisuImageBrowserReader.h"
27 #include "bbmaracasvisuPackage.h"
29 #include <marDynData.h>
31 #include <wx/msgdlg.h>
33 namespace bbmaracasvisu
36 //------------------------------------------------------------------------------------------------------------------------------------
37 // Event handling auxiliar class
38 //------------------------------------------------------------------------------------------------------------------------------------
40 //--------------------------------------------------------------------------------------------------------------------------------
41 // Constructors ans destructors
42 //--------------------------------------------------------------------------------------------------------------------------------
43 wxMaracasImageBrowser02_EvtHandler::wxMaracasImageBrowser02_EvtHandler(
44 ImageBrowserReader *bbParent,
45 wxMaracasImageBrowser02 * wxmaracasimagebrowser02
49 mbbtkImageBrowserReader = bbParent;
50 mmaracasimagebrowser02 = wxmaracasimagebrowser02;
52 wxmaracasimagebrowser02->PushEventHandler(this);
53 Connect(mmaracasimagebrowser02->GetId(),wxEVT_MARACASIMAGEBROWSERCUTIMAGE,(wxObjectEventFunction) (wxCommandEventFunction) &wxMaracasImageBrowser02_EvtHandler::OnCutImage );
56 //--------------------------------------------------------------------------------------------------------------------------------
57 wxMaracasImageBrowser02_EvtHandler :: ~wxMaracasImageBrowser02_EvtHandler()
61 //--------------------------------------------------------------------------------------------------------------------------------
62 void wxMaracasImageBrowser02_EvtHandler :: OnCutImage(wxCommandEvent& event)
64 mbbtkImageBrowserReader->DefineImageOutput();
67 //--------------------------------------------------------------------
68 //--------------------------------------------------------------------
69 //--------------------------------------------------------------------
74 BBTK_ADD_BLACK_BOX_TO_PACKAGE(maracasvisu,ImageBrowserReader)
75 BBTK_BLACK_BOX_IMPLEMENTATION(ImageBrowserReader,bbtk::WxBlackBox);
77 //--------------------------------------------------------------------
78 void ImageBrowserReader::Process()
81 if (marparameters!=NULL){
85 marparameters = new marParameters();
88 if (wxmaracasimagebrowser02!=NULL){
89 delete wxmaracasimagebrowser02;
90 delete wxmaracasimagebrowser02_eventHandler;
91 wxmaracasimagebrowser02 = NULL;
92 wxmaracasimagebrowser02_eventHandler = NULL;
96 if (marfilesbase!=NULL){
97 marfilesbase->CleanListImages();
102 if (bbGetInputType()==-1 ) marfilesbase = new marGdcmDicomILPD(marparameters);
103 if (bbGetInputType()== 0 ) marfilesbase = new marRAWFiles(marparameters);
104 if (bbGetInputType()== 100) marfilesbase = new marGdcmDicomILPD(marparameters);
105 if (bbGetInputType()== 200) marfilesbase = new marRAW2Files(marparameters);
106 if (bbGetInputType()== 300) marfilesbase = new marRAW2AsciiFiles(marparameters);
108 if (marfilesbase!=NULL){
110 // marfilesbase->CleanListImages();
111 std::vector <std::string*> *lstStringFileName;
112 lstStringFileName = marfilesbase->GetListImages( );
113 int i,size = bbGetInputLstFileName().size();
114 for ( i=0 ; i<size; i++ ){
115 lstStringFileName->push_back( new std::string(bbGetInputLstFileName()[i]) );
118 wxmaracasimagebrowser02 = new wxMaracasImageBrowser02( bbGetOutputWidget() ,
120 marfilesbase->getParameters()
122 wxmaracasimagebrowser02_eventHandler = new wxMaracasImageBrowser02_EvtHandler(this,
123 wxmaracasimagebrowser02
126 wxBoxSizer *sizer= new wxBoxSizer(wxHORIZONTAL);
127 sizer->Add( wxmaracasimagebrowser02 , 1, wxALL|wxGROW, 0);
128 bbGetOutputWidget()->SetSizer(sizer);
129 bbGetOutputWidget()->Layout();
131 marfilesbase->loadActualSerie( NULL/*this->_progressGauge*/ );
132 vtkImageData *dummy = marfilesbase->getVolume( )->castVtk();
133 wxmaracasimagebrowser02->LoadData( new marImageData(dummy) );
134 wxmaracasimagebrowser02->Start();
136 } // if marfilesbase!=NULL
139 //--------------------------------------------------------------------
140 void ImageBrowserReader::CreateWidget()
142 bbSetOutputWidget( new wxPanel( bbGetWxParent() , -1 ) );
145 //--------------------------------------------------------------------
146 void ImageBrowserReader::bbUserConstructor()
148 bbSetInputType(-999);
149 marparameters = NULL;
151 wxmaracasimagebrowser02 = NULL;
152 wxmaracasimagebrowser02_eventHandler = NULL;
155 //--------------------------------------------------------------------
156 void ImageBrowserReader::bbUserCopyConstructor()
160 //--------------------------------------------------------------------
161 void ImageBrowserReader::bbUserDestructor()
165 void ImageBrowserReader::DefineImageOutput()
168 wxmaracasimagebrowser02->ForceToFinisReadActiveImages( );
169 wxmaracasimagebrowser02->GetROI( voi );
171 vtkImageData *imagedata;
172 marDynData *dyndata = new marDynData( marfilesbase->getParameters() );
173 dyndata->loadData( marfilesbase->getVolume( ) , voi );
174 imagedata = dyndata->getVolume( )->castVtk();
176 bbSetOutputOut( imagedata );
183 // EO namespace bbmaracasvisu