]> Creatis software - gdcm.git/blobdiff - Example/WriteDicomSimple.cxx
Looping 10000000 times should be enought
[gdcm.git] / Example / WriteDicomSimple.cxx
index 8503e531d7ffd51319179e029805c260be482701..ab83ac19fdb65e12d13cf32aed1f2387e3396b2a 100644 (file)
@@ -3,8 +3,8 @@
   Program:   gdcm
   Module:    $RCSfile: WriteDicomSimple.cxx,v $
   Language:  C++
-  Date:      $Date: 2004/12/09 11:31:52 $
-  Version:   $Revision: 1.1 $
+  Date:      $Date: 2005/10/25 14:52:27 $
+  Version:   $Revision: 1.15 $
                                                                                 
   Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
   l'Image). All rights reserved. See Doc/License.txt or
  * The image content is a horizontal grayscale from 
  * 
  */
-#include "gdcmHeader.h"
 #include "gdcmFile.h"
-
+#include "gdcmFileHelper.h"
 #include <iostream>
+#include <sstream>
 
 // Image size
 #define SIZE_X          256
@@ -38,7 +39,7 @@
 #define COLOR_WINDOW    256
 #define COLOR_LEVEL     128
 
-int main(int argc, charargv[])
+int main(int argc, char *argv[])
 {
    if (argc < 3) 
    {
@@ -56,52 +57,52 @@ int main(int argc, char* argv[])
 
 
 // Step 1 : Create the header of the image
-   gdcm::Header *header = new gdcm::Header();
+   gdcm::File *header = gdcm::File::New();
    std::ostringstream str;
 
    // Set the image size
    str.str("");
    str << SIZE_X;
-   header->ReplaceOrCreateByNumber(str.str(),0x0028,0x0011);
+   header->InsertEntryString(str.str(),0x0028,0x0011); // Columns
 
    str.str("");
    str << SIZE_Y;
-   header->ReplaceOrCreateByNumber(str.str(),0x0028,0x0010);
+   header->InsertEntryString(str.str(),0x0028,0x0010); // Rows
 
    // Set the pixel type
    str.str("");
    str << COMPONENT_SIZE * 8;
-   header->ReplaceOrCreateByNumber(str.str(),0x0028,0x0100);
-   header->ReplaceOrCreateByNumber(str.str(),0x0028,0x0101);
+   header->InsertEntryString(str.str(),0x0028,0x0100); // Bits Allocated
+   header->InsertEntryString(str.str(),0x0028,0x0101); // Bits Stored
 
    str.str("");
-   str << COMPONENT_SIZE * 8 - 1;
-   header->ReplaceOrCreateByNumber(str.str(),0x0028,0x0102);
+   str << ( COMPONENT_SIZE * 8 ) - 1;
+   header->InsertEntryString(str.str(),0x0028,0x0102); // High Bit
 
    // Set the pixel representation
    str.str("");
    str << "0"; // Unsigned
-   header->ReplaceOrCreateByNumber(str.str(),0x0028,0x0103);
+   header->InsertEntryString(str.str(),0x0028,0x0103); // Pixel Representation
 
    // Set the samples per pixel
    str.str("");
    str << COMPONENT;
-   header->ReplaceOrCreateByNumber(str.str(),0x0028,0x0002);
+   header->InsertEntryString(str.str(),0x0028,0x0002); // Samples per Pixel
 
    // Set the Window / Level
    str.str("");
    str << COLOR_WINDOW;
-   header->ReplaceOrCreateByNumber(str.str(),0x0028,0x1051);
+   header->InsertEntryString(str.str(),0x0028,0x1051); // Window Width
    str.str("");
    str << COLOR_LEVEL;
-   header->ReplaceOrCreateByNumber(str.str(),0x0028,0x1050);
+   header->InsertEntryString(str.str(),0x0028,0x1050); // Window Center
 
    if( !header->IsReadable() )
    {
       std::cerr << "-------------------------------\n"
                 << "Error while creating the file\n"
                 << "This file is considered to be not readable\n";
-
+      header->Delete();
       return 1;
    }
 
@@ -116,21 +117,21 @@ int main(int argc, char* argv[])
       {
          for(int c=0;c<COMPONENT;c++)
          {
-            *tmp = j;
+            *tmp = (unsigned char)j;
             tmp += COMPONENT_SIZE; 
          }
       }
    }
 
 // Step 3 : Create the file of the image
-   gdcm::File *file = new gdcm::File(header);
+   gdcm::FileHelper *file = gdcm::FileHelper::New(header);
    file->SetImageData(imageData,size);
 
 // Step 4 : Set the writting mode and write the image
    std::string fileName = argv[1]; 
    std::string mode = argv[2];
 
-   file->SetWriteModeToDecompressed();
+   file->SetWriteModeToRaw();
    switch (mode[0])
    {
       case 'a' : // Write an ACR file
@@ -161,18 +162,17 @@ int main(int argc, char* argv[])
                    << "File :" << fileName << std::endl;
 
          delete[] imageData;
-         delete file;
-         delete header;
+         file->Delete();
+         header->Delete();
          return 0;
 
       default :
          std::cout << "-------------------------------\n"
                    << "Write mode undefined...\n"
                    << "No file written\n";
-
          delete[] imageData;
-         delete file;
-         delete header;
+         file->Delete();
+         header->Delete();
          return 1;
    }
 
@@ -184,8 +184,9 @@ int main(int argc, char* argv[])
    }
 
    delete[] imageData;
-   delete file;
-   delete header;
+   file->Delete();
+   header->Delete();
 
    return 0;
 }
+