Mercurial > hg > orthanc
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]); + } + } + }