]> Creatis software - creaContours.git/blobdiff - lib/kernel_ManagerContour_NDimensions/KernelManagerContour.cxx
Parser Osirix
[creaContours.git] / lib / kernel_ManagerContour_NDimensions / KernelManagerContour.cxx
index 24307db8f8a38c16da8466286620a8f0d25c2dd2..57f9228ee6499549b0e365b5c5903e11b158e520 100644 (file)
@@ -34,7 +34,8 @@ KernelManagerContour::KernelManagerContour(){
 **/
 
 }
-KernelManagerContour::KernelManagerContour(std::vector<vtkImageData*> images,std::string datadir,std::string tmpdir){
+KernelManagerContour::KernelManagerContour(std::vector<vtkImageData*> images,std::string datadir,std::string tmpdir)
+{
 
 
 /**THIS ALL SHOULD BE IN AN OTHER LIB CALLED PERSISTANCE
@@ -75,7 +76,7 @@ std::vector<vtkImageData*> KernelManagerContour::getVectImages(){
 }
 void KernelManagerContour::setVectImages(std::vector<vtkImageData*> vectimg){
 
-       for(int i = 0; i < vectimg.size(); i++){
+       for(int i = 0; i < (int)(vectimg.size()); i++){
                vtkImageData* img = vectimg[i];
                vtkImageChangeInformation* change = vtkImageChangeInformation::New();
                change->SetInformationInput(img);
@@ -92,6 +93,7 @@ void KernelManagerContour::setVectImages(std::vector<vtkImageData*> vectimg){
 }
 
 void KernelManagerContour::initializeEnvironment(std::string datadir){
+       _datadir = datadir;
        std::string conceptsFN                  =  datadir+"holaConceptsFile.cf";
        std::string imageSourcesFN              =  datadir+"holaImagesInstantsFile.of";
        std::string imageSectionsFN             = "";
@@ -102,7 +104,7 @@ void KernelManagerContour::initializeEnvironment(std::string datadir){
        std::map<std::string, AxeThing *>* axesMap                                      = new std::map<std::string, AxeThing *>();
        std::map<std::string, ContourThing *>* outlinesMap                      = new std::map<std::string, ContourThing *>();  
 
-       for(int i = 0; i < vectimages.size(); i++){
+       for(int i = 0; i < (int)(vectimages.size()); i++){
                vtkImageData* selectedimage = vectimages[i];
                ImageSourceThing * thing                                                                        = new ImageSourceThing(selectedimage);
                std::string imgstring = "Source Image "+intToString(i+1);
@@ -129,7 +131,7 @@ OutlineModelManager* KernelManagerContour::getOutlineModelManager(){
        return modelManager;
 }
 
-std::string KernelManagerContour::createOutline(manualContourModel * manModelContour,std::vector<int> instantVector){
+std::string KernelManagerContour::createOutline(manualBaseModel * manModelContour,std::vector<int> instantVector){
        return modelManager->createOutline( manModelContour, instantVector );
 }
 
@@ -152,8 +154,8 @@ std::vector<std::string> KernelManagerContour::GetLstNameThingsStatic(){
        return modelManager->GetLstNameThingsStatic();
 }
 
-void KernelManagerContour::SaveThingName(FILE* pFile, std::string name ){
-       modelManager->SaveThingName(pFile, name);
+void KernelManagerContour::SaveThingName(FILE* pFile, FILE *pFileData, std::string name ){
+       modelManager->SaveThingName(pFile, pFileData, name);
 }
 std::vector<std::string> KernelManagerContour::GetLstNameThings(){
        return modelManager->GetLstNameThings();
@@ -167,7 +169,7 @@ bool KernelManagerContour::IsPartOfStaticList(std::string theKeyName){
 }
 
 void KernelManagerContour::deleteCModel(std::string theKeyName){
-       manualContourModel* cModel              = modelManager->getOutlineByKeyName(theKeyName)->getModel();
+       manualBaseModel* cModel         = modelManager->getOutlineByKeyName(theKeyName)->getModel();
        modelManager->removeOutline( theKeyName );
 
        delete cModel;
@@ -206,7 +208,7 @@ std::string KernelManagerContour::createCopyContourOf ( std::string anExistingKN
 {
        return modelManager->createCopyContourOf(anExistingKName, instantNoTouchData);
 }
-manualContourModel* KernelManagerContour::getOutlineByKeyName(std::string cloneName){
+manualBaseModel* KernelManagerContour::getOutlineByKeyName(std::string cloneName){
        return modelManager->getOutlineByKeyName (cloneName )->getModel();
 }
 
@@ -313,11 +315,11 @@ void KernelManagerContour::CalculeSplinePropagation(){
        _contourPropagation->CalculeSplinePropagation();
 }
 
-manualContourModel* KernelManagerContour::GetPoints(int z,int type, std::vector<double>* vecCtrlPointX,std::vector<double>* vecCtrlPointY,std::vector<double>* vecCtrlPointZ, std::string& theName,int typeofcontour, std::vector<int> tempVector){
+manualBaseModel* KernelManagerContour::GetPoints(int z,int type, std::vector<double>* vecCtrlPointX,std::vector<double>* vecCtrlPointY,std::vector<double>* vecCtrlPointZ, std::string& theName,int typeofcontour, std::vector<int> tempVector){
     
        
        bool addedModel = false;
-       manualContourModel* manModelContour=NULL;
+       manualBaseModel* manModelContour=NULL;
 
        if (_contourPropagation->ifSliceKeyContourExist(z)==false){
 
@@ -342,7 +344,7 @@ manualContourModel* KernelManagerContour::GetPoints(int z,int type, std::vector<
                for (int j=0 ; j<sizeCtrPt ; j++)
                {
 //JSTG_16-07-08_----------------------------------------------------------------
-                       manModelContour->AddPoint( (*vecCtrlPointX)[j] , (*vecCtrlPointY)[j] , -900  );
+                       manModelContour->AddPoint( (*vecCtrlPointX)[j] , (*vecCtrlPointY)[j] , 900  );
 //--------------------------------------------------------------------
                } // for j
 
@@ -355,12 +357,14 @@ manualContourModel* KernelManagerContour::GetPoints(int z,int type, std::vector<
                
        }// ifSliceKeyContourExist
        return manModelContour;
-
 }
 
-manualContourModel * KernelManagerContour::factoryManualContourModel(int typeContour)
+manualBaseModel * KernelManagerContour::factoryManualContourModel(int typeContour)
 {      
-       manualContourModel *manModelContour=NULL;
+       manualBaseModel *manModelContour=NULL;
+
+       // Creating the model
+       // NOTE: The view and the controler are created in the wxVtkBaseView_SceneManager class, configureViewControlTo method
 
        // spline
        if (typeContour==0)
@@ -391,6 +395,18 @@ manualContourModel * KernelManagerContour::factoryManualContourModel(int typeCon
        {
                manModelContour = new manualContourModelLine();
        }
+       
+       // points
+       if (typeContour==7)
+       {
+               manModelContour = new manualBaseModel();
+       }
+
+       // polygon
+       if (typeContour==10)
+       {
+               manModelContour = new manualContourModelPolygon();
+       }
 
        return manModelContour;
 }
@@ -399,7 +415,7 @@ std::vector<std::string> KernelManagerContour::getOutlinesNameAtInstant(std::vec
        Instant instant(&tempvector);
        std::vector<ContourThing**> vectcont = modelManager->getOutlinesAtInstant( &instant );
        std::vector<std::string> vectname;
-       for(int i = 0; i < vectcont.size(); i++){
+       for(int i = 0; i < (int)(vectcont.size()); i++){
                ContourThing **contourthing = vectcont[i];
                vectname.push_back((*contourthing)->getName());
        }
@@ -410,9 +426,9 @@ std::vector<ContourThing**> KernelManagerContour::getOutlinesAtInstant(Instant*
        return modelManager->getOutlinesAtInstant(instant);
 }
 
-std::vector<manualContourModel*> KernelManagerContour::ExploseEachModel( std::vector<manualContourModel*> lstManConMod ){
-       std::vector<manualContourModel*> lstTmp;
-       std::vector<manualContourModel*> lstResult;
+std::vector<manualBaseModel*> KernelManagerContour::ExploseEachModel( std::vector<manualBaseModel*> lstManConMod ){
+       std::vector<manualBaseModel*> lstTmp;
+       std::vector<manualBaseModel*> lstResult;
        int j,jSize;
        int i,iSize=lstManConMod.size();
        for (i=0;i<iSize;i++)
@@ -435,7 +451,7 @@ void KernelManagerContour::getConceptsInformation(std::vector<std::string>& conc
 vtkImageData* KernelManagerContour::getImageAtInstant(std::vector<int> inst){
        int index = inst[5]-1;
 
-       if(index < vectimages.size()&&index!=_currentIndex){
+       if(index < (int)(vectimages.size())&&index!=_currentIndex){
                _currentIndex=index;
                return vectimages[index];
        }
@@ -450,4 +466,30 @@ void KernelManagerContour::setCurrentFileName(std::string filenam){
        this->filename = filenam;
 }
 
+std::string KernelManagerContour::parseOsirixFile(std::string filename){
+       
+
+#ifdef ParserOsirix_BUILD
+       vtkImageData* sourceimage;
+       std::string xsdfile;
+
+       xsdfile = _datadir;
+
+       xsdfile.append("\\XML\\osirixschema.xsd");
+
+       sourceimage = getSourceImage();
+       OsirixParser p(xsdfile.c_str(), sourceimage->GetSpacing(), sourceimage->GetExtent());
+
+       if(p.ParseFile(filename.c_str())!= 0){
+
+       }
+
+       return p.getContoursFileName();
+#else
+       return "";
+#endif 
+
+
+}
+