Mercurial > hg > orthanc
diff OrthancServer/OrthancRestApi/OrthancRestResources.cpp @ 1824:b530c3dfe2a6
refactoring image decoding
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Wed, 25 Nov 2015 14:14:32 +0100 |
parents | 2dbf25006f88 |
children | ac5b0b4e2434 |
line wrap: on
line diff
--- a/OrthancServer/OrthancRestApi/OrthancRestResources.cpp Wed Nov 25 10:32:54 2015 +0100 +++ b/OrthancServer/OrthancRestApi/OrthancRestResources.cpp Wed Nov 25 14:14:32 2015 +0100 @@ -39,6 +39,7 @@ #include "../FromDcmtkBridge.h" #include "../ServerContext.h" #include "../SliceOrdering.h" +#include "../Internals/DicomImageDecoder.h" namespace Orthanc @@ -265,6 +266,7 @@ class ImageToEncode { private: + IDicomImageDecoder& decoder_; std::string format_; std::string encoded_; ParsedDicomFile& dicom_; @@ -272,9 +274,11 @@ ImageExtractionMode mode_; public: - ImageToEncode(ParsedDicomFile& dicom, + ImageToEncode(IDicomImageDecoder& decoder, + ParsedDicomFile& dicom, unsigned int frame, ImageExtractionMode mode) : + decoder_(decoder), dicom_(dicom), frame_(frame), mode_(mode) @@ -310,6 +314,11 @@ { output.AnswerBuffer(encoded_, format_); } + + IDicomImageDecoder& GetDecoder() const + { + return decoder_; + } }; class EncodePng : public HttpContentNegociation::IHandler @@ -327,7 +336,8 @@ { assert(type == "image"); assert(subtype == "png"); - image_.GetDicom().ExtractPngImage(image_.GetTarget(), image_.GetFrame(), image_.GetMode()); + image_.GetDicom().ExtractPngImage(image_.GetTarget(), image_.GetDecoder(), + image_.GetFrame(), image_.GetMode()); image_.SetFormat("image/png"); } }; @@ -367,7 +377,8 @@ { assert(type == "image"); assert(subtype == "jpeg"); - image_.GetDicom().ExtractJpegImage(image_.GetTarget(), image_.GetFrame(), image_.GetMode(), quality_); + image_.GetDicom().ExtractJpegImage(image_.GetTarget(), image_.GetDecoder(), + image_.GetFrame(), image_.GetMode(), quality_); image_.SetFormat("image/jpeg"); } }; @@ -399,7 +410,8 @@ try { - ImageToEncode image(dicom, frame, mode); + DicomImageDecoder decoder; // TODO plugins + ImageToEncode image(decoder, dicom, frame, mode); HttpContentNegociation negociation; EncodePng png(image); negociation.Register("image/png", png); @@ -453,7 +465,8 @@ ParsedDicomFile dicom(dicomContent); ImageBuffer buffer; - dicom.ExtractImage(buffer, frame); + DicomImageDecoder decoder; // TODO plugin + dicom.ExtractImage(buffer, decoder, frame); ImageAccessor accessor(buffer.GetConstAccessor());