comparison Framework/Inputs/PyramidWithRawTiles.cpp @ 167:605247fc8758

Fix issue #144 (OrthancWSIDicomizer PhotometricInterpretation)
author Sebastien Jodogne <s.jodogne@gmail.com>
date Fri, 12 Jul 2019 12:00:31 +0200
parents 6b8ccfc02051
children e3cbf890b588
comparison
equal deleted inserted replaced
166:f0dac1e8f736 167:605247fc8758
20 20
21 21
22 #include "../PrecompiledHeadersWSI.h" 22 #include "../PrecompiledHeadersWSI.h"
23 #include "PyramidWithRawTiles.h" 23 #include "PyramidWithRawTiles.h"
24 24
25 #include <Core/Images/PngReader.h> 25 #include "../ImageToolbox.h"
26 #include <Core/Images/JpegReader.h>
27 #include <Core/OrthancException.h>
28 #include "../Jpeg2000Reader.h"
29 26
30 namespace OrthancWSI 27 namespace OrthancWSI
31 { 28 {
32 Orthanc::ImageAccessor* PyramidWithRawTiles::DecodeTile(unsigned int level, 29 Orthanc::ImageAccessor* PyramidWithRawTiles::DecodeTile(unsigned int level,
33 unsigned int tileX, 30 unsigned int tileX,
38 35
39 if (!ReadRawTile(tile, compression, level, tileX, tileY)) 36 if (!ReadRawTile(tile, compression, level, tileX, tileY))
40 { 37 {
41 return NULL; 38 return NULL;
42 } 39 }
43 40 else if (compression == ImageCompression_None)
44 std::auto_ptr<Orthanc::ImageAccessor> result;
45
46 switch (compression)
47 { 41 {
48 case ImageCompression_None: 42 return ImageToolbox::DecodeRawTile(tile, GetPixelFormat(), GetTileWidth(), GetTileHeight());
49 result.reset(new Orthanc::ImageAccessor);
50 result->AssignReadOnly(GetPixelFormat(),
51 GetTileWidth(),
52 GetTileHeight(),
53 GetBytesPerPixel(GetPixelFormat()) * GetTileWidth(),
54 tile.c_str());
55 break;
56
57 case ImageCompression_Jpeg:
58 result.reset(new Orthanc::JpegReader);
59 dynamic_cast<Orthanc::JpegReader&>(*result).ReadFromMemory(tile);
60 break;
61
62 case ImageCompression_Png:
63 result.reset(new Orthanc::PngReader);
64 dynamic_cast<Orthanc::PngReader&>(*result).ReadFromMemory(tile);
65 break;
66
67 case ImageCompression_Jpeg2000:
68 result.reset(new Jpeg2000Reader);
69 dynamic_cast<Jpeg2000Reader&>(*result).ReadFromMemory(tile);
70 break;
71
72 default:
73 throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);
74 } 43 }
75 44 else
76 return result.release(); 45 {
46 return ImageToolbox::DecodeTile(tile, compression);
47 }
77 } 48 }
78 } 49 }