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 }