Mercurial > hg > orthanc-wsi
comparison Framework/ImageToolbox.cpp @ 199:a1c265cb2174
replacing deprecated std::auto_ptr by std::unique_ptr
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Mon, 06 Jul 2020 16:29:41 +0200 |
parents | f299c191cd76 |
children | 628201cb48c2 |
comparison
equal
deleted
inserted
replaced
198:2d3fe6967894 | 199:a1c265cb2174 |
---|---|
23 #include "ImageToolbox.h" | 23 #include "ImageToolbox.h" |
24 | 24 |
25 #include "Jpeg2000Reader.h" | 25 #include "Jpeg2000Reader.h" |
26 #include "Jpeg2000Writer.h" | 26 #include "Jpeg2000Writer.h" |
27 | 27 |
28 #include <Compatibility.h> // For std::unique_ptr | |
28 #include <OrthancException.h> | 29 #include <OrthancException.h> |
29 #include <Images/ImageProcessing.h> | 30 #include <Images/ImageProcessing.h> |
30 #include <Images/PngReader.h> | 31 #include <Images/PngReader.h> |
31 #include <Images/PngWriter.h> | 32 #include <Images/PngWriter.h> |
32 #include <Images/JpegReader.h> | 33 #include <Images/JpegReader.h> |
131 { | 132 { |
132 switch (compression) | 133 switch (compression) |
133 { | 134 { |
134 case ImageCompression_Png: | 135 case ImageCompression_Png: |
135 { | 136 { |
136 std::auto_ptr<Orthanc::PngReader> reader(new Orthanc::PngReader); | 137 std::unique_ptr<Orthanc::PngReader> reader(new Orthanc::PngReader); |
137 reader->ReadFromMemory(source); | 138 reader->ReadFromMemory(source); |
138 return reader.release(); | 139 return reader.release(); |
139 } | 140 } |
140 | 141 |
141 case ImageCompression_Jpeg: | 142 case ImageCompression_Jpeg: |
142 { | 143 { |
143 std::auto_ptr<Orthanc::JpegReader> reader(new Orthanc::JpegReader); | 144 std::unique_ptr<Orthanc::JpegReader> reader(new Orthanc::JpegReader); |
144 reader->ReadFromMemory(source); | 145 reader->ReadFromMemory(source); |
145 return reader.release(); | 146 return reader.release(); |
146 } | 147 } |
147 | 148 |
148 case ImageCompression_Jpeg2000: | 149 case ImageCompression_Jpeg2000: |
149 { | 150 { |
150 std::auto_ptr<Jpeg2000Reader> reader(new Jpeg2000Reader); | 151 std::unique_ptr<Jpeg2000Reader> reader(new Jpeg2000Reader); |
151 reader->ReadFromMemory(source); | 152 reader->ReadFromMemory(source); |
152 return reader.release(); | 153 return reader.release(); |
153 } | 154 } |
154 | 155 |
155 default: | 156 default: |
192 memcpy(&target[i * pitch], source.GetConstRow(i), pitch); | 193 memcpy(&target[i * pitch], source.GetConstRow(i), pitch); |
193 } | 194 } |
194 } | 195 } |
195 else | 196 else |
196 { | 197 { |
197 std::auto_ptr<Orthanc::IImageWriter> writer; | 198 std::unique_ptr<Orthanc::IImageWriter> writer; |
198 | 199 |
199 switch (compression) | 200 switch (compression) |
200 { | 201 { |
201 case ImageCompression_Png: | 202 case ImageCompression_Png: |
202 writer.reset(new Orthanc::PngWriter); | 203 writer.reset(new Orthanc::PngWriter); |
230 { | 231 { |
231 target = source; | 232 target = source; |
232 } | 233 } |
233 else | 234 else |
234 { | 235 { |
235 std::auto_ptr<Orthanc::ImageAccessor> decoded(DecodeTile(source, sourceCompression)); | 236 std::unique_ptr<Orthanc::ImageAccessor> decoded(DecodeTile(source, sourceCompression)); |
236 EncodeTile(target, *decoded, targetCompression, quality); | 237 EncodeTile(target, *decoded, targetCompression, quality); |
237 } | 238 } |
238 } | 239 } |
239 | 240 |
240 | 241 |
326 throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented); | 327 throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented); |
327 } | 328 } |
328 | 329 |
329 const unsigned int bytesPerPixel = source.GetBytesPerPixel(); // Corresponds to the number of channels tx (*) | 330 const unsigned int bytesPerPixel = source.GetBytesPerPixel(); // Corresponds to the number of channels tx (*) |
330 | 331 |
331 std::auto_ptr<Orthanc::ImageAccessor> target(Allocate(source.GetFormat(), | 332 std::unique_ptr<Orthanc::ImageAccessor> target(Allocate(source.GetFormat(), |
332 source.GetWidth() / 2, | 333 source.GetWidth() / 2, |
333 source.GetHeight() / 2)); | 334 source.GetHeight() / 2)); |
334 | 335 |
335 for (unsigned int y = 0; y < target->GetHeight(); y++) | 336 for (unsigned int y = 0; y < target->GetHeight(); y++) |
336 { | 337 { |
356 } | 357 } |
357 | 358 |
358 | 359 |
359 Orthanc::ImageAccessor* Clone(const Orthanc::ImageAccessor& accessor) | 360 Orthanc::ImageAccessor* Clone(const Orthanc::ImageAccessor& accessor) |
360 { | 361 { |
361 std::auto_ptr<Orthanc::ImageAccessor> result(Allocate(accessor.GetFormat(), | 362 std::unique_ptr<Orthanc::ImageAccessor> result(Allocate(accessor.GetFormat(), |
362 accessor.GetWidth(), | 363 accessor.GetWidth(), |
363 accessor.GetHeight())); | 364 accessor.GetHeight())); |
364 Embed(*result, accessor, 0, 0); | 365 Embed(*result, accessor, 0, 0); |
365 | 366 |
366 return result.release(); | 367 return result.release(); |
368 | 369 |
369 | 370 |
370 Orthanc::ImageAccessor* Render(ITiledPyramid& pyramid, | 371 Orthanc::ImageAccessor* Render(ITiledPyramid& pyramid, |
371 unsigned int level) | 372 unsigned int level) |
372 { | 373 { |
373 std::auto_ptr<Orthanc::ImageAccessor> result(Allocate(pyramid.GetPixelFormat(), | 374 std::unique_ptr<Orthanc::ImageAccessor> result(Allocate(pyramid.GetPixelFormat(), |
374 pyramid.GetLevelWidth(level), | 375 pyramid.GetLevelWidth(level), |
375 pyramid.GetLevelHeight(level))); | 376 pyramid.GetLevelHeight(level))); |
376 | 377 |
377 LOG(INFO) << "Rendering a tiled image of size " << result->GetWidth() << "x" << result->GetHeight(); | 378 LOG(INFO) << "Rendering a tiled image of size " << result->GetWidth() << "x" << result->GetHeight(); |
378 | 379 |
379 for (unsigned int y = 0; y < result->GetHeight(); y += pyramid.GetTileHeight()) | 380 for (unsigned int y = 0; y < result->GetHeight(); y += pyramid.GetTileHeight()) |
380 { | 381 { |
381 for (unsigned int x = 0; x < result->GetWidth(); x += pyramid.GetTileWidth()) | 382 for (unsigned int x = 0; x < result->GetWidth(); x += pyramid.GetTileWidth()) |
382 { | 383 { |
383 std::auto_ptr<Orthanc::ImageAccessor> tile(pyramid.DecodeTile(level, | 384 std::unique_ptr<Orthanc::ImageAccessor> tile(pyramid.DecodeTile(level, |
384 x / pyramid.GetTileWidth(), | 385 x / pyramid.GetTileWidth(), |
385 y / pyramid.GetTileHeight())); | 386 y / pyramid.GetTileHeight())); |
386 Embed(*result, *tile, x, y); | 387 Embed(*result, *tile, x, y); |
387 } | 388 } |
388 } | 389 } |