diff OrthancCppClient/Instance.cpp @ 540:eaca3d38b2aa laaw

many fixes
author Sebastien Jodogne <s.jodogne@gmail.com>
date Thu, 12 Sep 2013 12:55:07 +0200
parents 50d9660f960c
children 2d0a347e8cfc
line wrap: on
line diff
--- a/OrthancCppClient/Instance.cpp	Mon Aug 12 10:56:35 2013 +0200
+++ b/OrthancCppClient/Instance.cpp	Thu Sep 12 12:55:07 2013 +0200
@@ -79,6 +79,22 @@
     }
   }
 
+  void Instance::DownloadDicom()
+  {
+    if (dicom_.get() == NULL)
+    {
+      Orthanc::HttpClient client(connection_.GetHttpClient());
+      client.SetUrl(std::string(connection_.GetOrthancUrl()) +  "/instances/" + id_ + "/file");
+
+      dicom_.reset(new std::string);
+
+      if (!client.Apply(*dicom_))
+      {
+        throw OrthancClientException(Orthanc::ErrorCode_NetworkProtocol);
+      }
+    }
+  }
+
   Instance::Instance(const OrthancConnection& connection,
                      const char* id) :
     connection_(connection),
@@ -176,6 +192,11 @@
     reader_.reset();
   }
 
+  void Instance::DiscardDicom()
+  {
+    dicom_.reset();
+  }
+
 
   void Instance::SetImageExtractionMode(Orthanc::ImageExtractionMode mode)
   {
@@ -220,4 +241,28 @@
       throw OrthancClientException(Orthanc::ErrorCode_BadFileFormat);
     }
   }
+
+
+  const uint64_t Instance::GetDicomSize()
+  {
+    DownloadDicom();
+    assert(dicom_.get() != NULL);
+    return dicom_->size();
+  }
+
+  const void* Instance::GetDicom()
+  {
+    DownloadDicom();
+    assert(dicom_.get() != NULL);
+
+    if (dicom_->size() == 0)
+    {
+      return NULL;
+    }
+    else
+    {
+      return &((*dicom_) [0]);
+    }
+  }
+
 }