]> Creatis software - creaImageIO.git/blobdiff - src/creaImageIOVtkImageReader.cpp
#3185 creaImageIO Feature New Normal - Clean code
[creaImageIO.git] / src / creaImageIOVtkImageReader.cpp
index 0d3780ac827a22f80dc45bbce6feac23e104e77c..6cb4defb1656b9109d86d7e1bee3b0617e6ce7f4 100644 (file)
@@ -1,7 +1,38 @@
+/*
+# ---------------------------------------------------------------------
+#
+# 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.
+# ------------------------------------------------------------------------
+*/
+
+
 #include <creaImageIOVtkImageReader.h>
 #include <vtkImageReader2.h>
-#include <creaImageIOSystem.h>
+
 #include "boost/filesystem/path.hpp"
+#if defined(_WIN32)
+#pragma warning(disable: 4996)
+#endif
 
 namespace creaImageIO{
   //=====================================================================
@@ -10,21 +41,26 @@ namespace creaImageIO{
                                       const std::string& extensions)
     : mReader(r), mExtensions(extensions)
   {
+         
+       //EED 21 mars 2012  FLIP probleme  ..PLOP..
+       mReader->FileLowerLeftOff();
+         
     if (name.size() == 0) 
       {
                  const char *test =mReader->GetDescriptiveName();
-                 if(test != "")
+                 //warning: comparison with string literal results in unspecified behaviour
+                 //if(test != "")
+                 std::string emptyString("");
+                 if(test != emptyString)
                  {
                        SetName ( "toto");// mReader->GetDescriptiveName());
                  }
-               
       }
     else 
       {
        SetName ( name );
       }
-    GimmickDebugMessage(5,"Constructing vtkImageReader : "<<GetName()
-                       <<std::endl);
+
       
   }
   //=====================================================================
@@ -52,17 +88,66 @@ namespace creaImageIO{
          }*/
   }
   //=====================================================================
-  
+  void VtkImageReader::getAttributes(const std::string filename,
+               std::map <std::string , std::string> &infos, std::vector<std::string> i_attr)
+   {
+   }
   //=====================================================================
   vtkImageData* VtkImageReader::ReadImage(const std::string& filename)
   {
     vtkImageData* im = 0;
     try
       {
-       mReader->SetFileName(filename.c_str());
+       printf("EED VtkImageReader::ReadImage  Name:%s\n", GetName().c_str() );
+       mReader->SetFileName( filename.c_str() );
        mReader->Update();
        im = vtkImageData::New();
+
        im->ShallowCopy(mReader->GetOutput());
+
+
+printf("EED ......\n"); 
+printf("EED ......\n");
+printf("EED VtkImageReader::ReadImage line 108   Missing FlipImage for JPEG, PNG, etc\n");
+printf("EED ......\n"); 
+printf("EED ......\n"); 
+/*
+        im=FlipImageY(im);          
+
+       if ( (GetName()=="JPEG") || (GetName()=="PNG") )
+       {
+
+               im->Update();
+               int inputdims[3];
+               im->GetDimensions (inputdims);
+
+                int nbScalComp = im->GetNumberOfScalarComponents();
+               int scalarSize  = im->GetScalarSize();
+               int lineSize    = inputdims[0]*scalarSize*nbScalComp;      
+               int planeSize   = inputdims[1]*lineSize;
+                int volumeSize  = inputdims[2]*planeSize;
+               char *pixelsIn  = (char *)im->GetScalarPointer();
+               char *pixelsOut = (char *)mImageOut->GetScalarPointer();
+       
+               char *lineIn;
+               char *lineOut;
+               char *debPlanIn;
+               char *debPlanOut;
+               int i,j,k;
+
+               for(k=0; k<inputdims[2]; k++)  // iterate  planes
+                       {  
+                               debPlanIn       = pixelsIn+k*planeSize;
+                               debPlanOut      = pixelsOut+k*planeSize;
+                               for(j=0; j<inputdims[1]; j++)  // iterates  rows
+                               { 
+                                       lineIn = debPlanIn+j*lineSize;
+                                       lineOut = debPlanOut+(inputdims[1]-1-j)*lineSize;
+                                       memcpy(lineOut,  lineIn, lineSize);
+                               }       // for j
+                       } // for k
+       } // FLIP : JPEG PNG
+*/
       }
     catch (...)
       {
@@ -113,7 +198,7 @@ namespace creaImageIO{
   void VtkImageReader::ReadAttributes(const std::string& filename, 
                                      std::map<std::string,std::string>& attr)
   {
-    GimmickMessage(2,"Reading attributes from '"<<filename<<std::endl);
+
     // Get image dimensions
     // How to get the image info without loading it in vtk ?
     mReader->SetFileName(filename.c_str());
@@ -138,7 +223,7 @@ namespace creaImageIO{
     if ( (i = attr.find("D0004_1500")) != attr.end())
       {
        boost::filesystem::path full_path(filename);
-       std::string f = full_path.leaf();
+       std::string f = full_path.leaf().string();
        i->second = f;
       }
     if ( (i = attr.find("D0028_0010")) != attr.end())
@@ -160,7 +245,7 @@ namespace creaImageIO{
                 i->second = filename.substr(0, last_pos);
          }
 
-    GimmickMessage(2,"Attributes map:"<<std::endl<<attr<<std::endl);
+
   }
   //=====================================================================