]> Creatis software - gdcm.git/blobdiff - Example/TestWrite.cxx
ENH: Add license to examples since they belong to gdcm
[gdcm.git] / Example / TestWrite.cxx
index bbdf452f22b81704f8f88318fa6f3e3726f004de..d5b6fa15bb990aed875e1d28c982a6e793165c91 100644 (file)
@@ -1,3 +1,20 @@
+/*=========================================================================
+                                                                                
+  Program:   gdcm
+  Module:    $RCSfile: TestWrite.cxx,v $
+  Language:  C++
+  Date:      $Date: 2004/11/16 04:26:18 $
+  Version:   $Revision: 1.9 $
+                                                                                
+  Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
+  l'Image). All rights reserved. See Doc/License.txt or
+  http://www.creatis.insa-lyon.fr/Public/Gdcm/License.html for details.
+                                                                                
+     This software is distributed WITHOUT ANY WARRANTY; without even
+     the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+     PURPOSE.  See the above copyright notices for more information.
+                                                                                
+=========================================================================*/
 #include <iostream>
 #include <stdio.h>
 #include "gdcm.h"
@@ -8,8 +25,8 @@ int main(int argc, char* argv[])
    char zozo[200];
 
 
-   gdcmHeader* e1;
-   gdcmFile  * f1;
+   gdcm::Header* e1;
+   gdcm::File  * f1;
 
    //gdcmDocument * d;  //not used
    void* imageData;
@@ -17,11 +34,14 @@ int main(int argc, char* argv[])
 
    if (argc < 3) {
          std::cerr << "usage: " << std::endl 
-                   << argv[0] << " fileName writtingMode "
+                   << argv[0] << " OriginalFileName writtingMode "
                 << std::endl 
-                   << "(a : ACR, d : DICOM Implicit VR,"
-                   << " x : DICOM Explicit VR  r : RAW)"
+                   << "(a : ACR, produces a file named OriginalFileName.ACR"
+                   << " x : DICOM Explicit VR, produces a file named OriginalFileName.XDCM"
+                   << " r : RAW, produces a file named OriginalFileName.RAW"
+                   << " v : explicit VR + computes the video inv image --> OriginalFileName.VDCM"
                 << std::endl;
+
          return 0;
    }
 /*
@@ -46,7 +66,7 @@ int main(int argc, char* argv[])
      
    toto = argv[1]; 
 
-   e1 = new gdcmHeader( toto.c_str() );
+   e1 = new gdcm::Header( toto.c_str() );
    if (!e1->IsReadable())
    {
        std::cerr << "Sorry, not a Readable DICOM / ACR File"  <<std::endl;
@@ -54,7 +74,7 @@ int main(int argc, char* argv[])
    }
   // e1->Print(); 
    
-   f1 = new gdcmFile(e1);
+   f1 = new gdcm::File(e1);
 // ---     
 
    dataSize = f1->GetImageDataSize();
@@ -89,7 +109,7 @@ int main(int argc, char* argv[])
       && transferSyntaxName != "Uncompressed ACR-NEMA"     ) {
       std::cout << std::endl << "==========================================="
                 << std::endl; 
-      f1->ParsePixelData();
+      f1->GetPixelConverter()->Print();
       std::cout << std::endl << "==========================================="
                 << std::endl; 
    }
@@ -105,7 +125,8 @@ int main(int argc, char* argv[])
       f1->WriteAcr(zozo);
       break;
 
-   case 'd' :
+   case 'd' :  // Not document in the 'usage', because the method is knowed to be bugged. 
+
            // ecriture d'un fichier DICOM Implicit VR 
            // à partir d'un dcmHeader correct.
 
@@ -132,6 +153,29 @@ int main(int argc, char* argv[])
       f1->WriteRawData(zozo);
       break;
 
+   case 'v' :
+
+     if ( f1->GetHeader()->GetBitsAllocated() == 8)
+     {
+        std::cout << "videoinv for 8 bits" << std::endl;
+        for (int i=0; i<dataSize; i++) 
+        {
+           ((uint8_t*)imageData)[i] += 127;
+        }
+     }
+     else
+     {
+        std::cout << "videoinv for 16 bits" << std::endl;    
+        for (int i=0; i<dataSize/2; i++) 
+        {
+           ((uint16_t*)imageData)[i] += 60000; //32767;
+        }
+     }
+     sprintf(zozo, "%s.VDCM", toto.c_str());
+     printf ("WriteDCM Explicit VR + VideoInv\n");
+     f1->WriteDcmExplVR(zozo);
+     break;
+
    }
   return 0;
 }