Mercurial > hg > orthanc
diff OrthancServer/Internals/DicomImageDecoder.cpp @ 1824:b530c3dfe2a6
refactoring image decoding
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Wed, 25 Nov 2015 14:14:32 +0100 |
parents | 96582230ddcb |
children | ac5b0b4e2434 |
line wrap: on
line diff
--- a/OrthancServer/Internals/DicomImageDecoder.cpp Wed Nov 25 10:32:54 2015 +0100 +++ b/OrthancServer/Internals/DicomImageDecoder.cpp Wed Nov 25 14:14:32 2015 +0100 @@ -87,6 +87,7 @@ #include "../../Core/DicomFormat/DicomIntegerPixelAccessor.h" #include "../ToDcmtkBridge.h" #include "../FromDcmtkBridge.h" +#include "../ParsedDicomFile.h" #include <boost/lexical_cast.hpp> @@ -531,9 +532,11 @@ bool DicomImageDecoder::Decode(ImageBuffer& target, - DcmDataset& dataset, + ParsedDicomFile& dicom, unsigned int frame) { + DcmDataset& dataset = *dicom.GetDcmtkObject().getDataset(); + if (IsUncompressedImage(dataset)) { DecodeUncompressedImage(target, dataset, frame); @@ -588,20 +591,11 @@ } - bool DicomImageDecoder::DecodeAndTruncate(ImageBuffer& target, - DcmDataset& dataset, - unsigned int frame, - PixelFormat format, - bool allowColorConversion) + bool DicomImageDecoder::TruncateDecodedImage(ImageBuffer& target, + ImageBuffer& source, + PixelFormat format, + bool allowColorConversion) { - // TODO Special case for uncompressed images - - ImageBuffer source; - if (!Decode(source, dataset, frame)) - { - return false; - } - // If specified, prevent the conversion between color and // grayscale images bool isSourceColor = IsColorImage(source.GetFormat()); @@ -634,18 +628,9 @@ } - bool DicomImageDecoder::DecodePreview(ImageBuffer& target, - DcmDataset& dataset, - unsigned int frame) + bool DicomImageDecoder::PreviewDecodedImage(ImageBuffer& target, + ImageBuffer& source) { - // TODO Special case for uncompressed images - - ImageBuffer source; - if (!Decode(source, dataset, frame)) - { - return false; - } - switch (source.GetFormat()) { case PixelFormat_RGB24: