Mercurial > hg > orthanc
diff OrthancServer/Internals/DicomImageDecoder.h @ 1902:8b0ee8d5e6d0
Refactoring leading to speedups with custom image decoders
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Tue, 05 Jan 2016 13:26:51 +0100 |
parents | b1291df2f780 |
children | 554ec8422ec5 |
line wrap: on
line diff
--- a/OrthancServer/Internals/DicomImageDecoder.h Mon Jan 04 14:20:41 2016 +0100 +++ b/OrthancServer/Internals/DicomImageDecoder.h Tue Jan 05 13:26:51 2016 +0100 @@ -32,19 +32,23 @@ #pragma once -#include <memory> +#include "../ParsedDicomFile.h" -#include "../IDicomImageDecoder.h" +#include <memory> class DcmDataset; namespace Orthanc { - class DicomImageDecoder : public IDicomImageDecoder + class DicomImageDecoder : public boost::noncopyable { private: class ImageSource; + DicomImageDecoder() // This is a fully abstract class, no constructor + { + } + static ImageAccessor* DecodeUncompressedImageInternal(DcmDataset& dataset, unsigned int frame); @@ -62,14 +66,26 @@ unsigned int frame); #endif - public: - virtual ImageAccessor *Decode(ParsedDicomFile& dicom, - unsigned int frame); - static bool TruncateDecodedImage(std::auto_ptr<ImageAccessor>& image, PixelFormat format, bool allowColorConversion); static bool PreviewDecodedImage(std::auto_ptr<ImageAccessor>& image); + + static void ApplyExtractionMode(std::auto_ptr<ImageAccessor>& image, + ImageExtractionMode mode); + + public: + static ImageAccessor *Decode(ParsedDicomFile& dicom, + unsigned int frame); + + static void ExtractPngImage(std::string& result, + std::auto_ptr<ImageAccessor>& image, + ImageExtractionMode mode); + + static void ExtractJpegImage(std::string& result, + std::auto_ptr<ImageAccessor>& image, + ImageExtractionMode mode, + uint8_t quality); }; }