Mercurial > hg > orthanc-wsi
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 } |