comparison OrthancStone/Sources/Loaders/SeriesThumbnailsLoader.cpp @ 1571:85e117739eca

cppcheck
author Sebastien Jodogne <s.jodogne@gmail.com>
date Mon, 21 Sep 2020 17:46:39 +0200
parents e731e62692a9
children 4fb8fdf03314
comparison
equal deleted inserted replaced
1570:9a04f42098a3 1571:85e117739eca
224 Handler(loader, source, studyInstanceUid, seriesInstanceUid) 224 Handler(loader, source, studyInstanceUid, seriesInstanceUid)
225 { 225 {
226 } 226 }
227 227
228 virtual void HandleSuccess(const std::string& body, 228 virtual void HandleSuccess(const std::string& body,
229 const std::map<std::string, std::string>& headers) 229 const std::map<std::string, std::string>& headers) ORTHANC_OVERRIDE
230 { 230 {
231 Json::Reader reader; 231 Json::Reader reader;
232 Json::Value value; 232 Json::Value value;
233 233
234 if (!reader.parse(body, value) || 234 if (!reader.parse(body, value) ||
279 Handler(loader, source, studyInstanceUid, seriesInstanceUid) 279 Handler(loader, source, studyInstanceUid, seriesInstanceUid)
280 { 280 {
281 } 281 }
282 282
283 virtual void HandleSuccess(const std::string& body, 283 virtual void HandleSuccess(const std::string& body,
284 const std::map<std::string, std::string>& headers) 284 const std::map<std::string, std::string>& headers) ORTHANC_OVERRIDE
285 { 285 {
286 std::string mime = Orthanc::MIME_JPEG; 286 std::string mime = Orthanc::MIME_JPEG;
287 for (std::map<std::string, std::string>::const_iterator 287 for (std::map<std::string, std::string>::const_iterator
288 it = headers.begin(); it != headers.end(); ++it) 288 it = headers.begin(); it != headers.end(); ++it)
289 { 289 {
295 295
296 GetLoader()->AcquireThumbnail(GetSource(), GetStudyInstanceUid(), 296 GetLoader()->AcquireThumbnail(GetSource(), GetStudyInstanceUid(),
297 GetSeriesInstanceUid(), new Thumbnail(body, mime)); 297 GetSeriesInstanceUid(), new Thumbnail(body, mime));
298 } 298 }
299 299
300 virtual void HandleError() 300 virtual void HandleError() ORTHANC_OVERRIDE
301 { 301 {
302 // The DICOMweb wasn't able to generate a thumbnail, try to 302 // The DICOMweb wasn't able to generate a thumbnail, try to
303 // retrieve the SopClassUID tag using QIDO-RS 303 // retrieve the SopClassUID tag using QIDO-RS
304 304
305 std::map<std::string, std::string> arguments, headers; 305 std::map<std::string, std::string> arguments, headers;
365 instanceId_(instanceId) 365 instanceId_(instanceId)
366 { 366 {
367 } 367 }
368 368
369 virtual void HandleSuccess(const std::string& body, 369 virtual void HandleSuccess(const std::string& body,
370 const std::map<std::string, std::string>& headers) 370 const std::map<std::string, std::string>& headers) ORTHANC_OVERRIDE
371 { 371 {
372 SeriesThumbnailType type = ExtractSopClassUid(body); 372 SeriesThumbnailType type = ExtractSopClassUid(body);
373 373
374 if (type == SeriesThumbnailType_Pdf || 374 if (type == SeriesThumbnailType_Pdf ||
375 type == SeriesThumbnailType_Video) 375 type == SeriesThumbnailType_Video)
400 Handler(loader, source, studyInstanceUid, seriesInstanceUid) 400 Handler(loader, source, studyInstanceUid, seriesInstanceUid)
401 { 401 {
402 } 402 }
403 403
404 virtual void HandleSuccess(const std::string& body, 404 virtual void HandleSuccess(const std::string& body,
405 const std::map<std::string, std::string>& headers) 405 const std::map<std::string, std::string>& headers) ORTHANC_OVERRIDE
406 { 406 {
407 static const char* const INSTANCES = "Instances"; 407 static const char* const INSTANCES = "Instances";
408 408
409 Json::Value json; 409 Json::Value json;
410 Json::Reader reader; 410 Json::Reader reader;
420 { 420 {
421 // Select one instance of the series to generate the thumbnail 421 // Select one instance of the series to generate the thumbnail
422 Json::Value::ArrayIndex index = json[INSTANCES].size() / 2; 422 Json::Value::ArrayIndex index = json[INSTANCES].size() / 2;
423 if (json[INSTANCES][index].type() == Json::stringValue) 423 if (json[INSTANCES][index].type() == Json::stringValue)
424 { 424 {
425 std::map<std::string, std::string> arguments, headers;
426 arguments["quality"] = boost::lexical_cast<std::string>(JPEG_QUALITY);
427 headers["Accept"] = Orthanc::MIME_JPEG;
428
429 const std::string instance = json[INSTANCES][index].asString(); 425 const std::string instance = json[INSTANCES][index].asString();
430 426
431 std::unique_ptr<OrthancRestApiCommand> command(new OrthancRestApiCommand); 427 std::unique_ptr<OrthancRestApiCommand> command(new OrthancRestApiCommand);
432 command->SetUri("/instances/" + instance + "/metadata/SopClassUid"); 428 command->SetUri("/instances/" + instance + "/metadata/SopClassUid");
433 command->AcquirePayload( 429 command->AcquirePayload(
451 Handler(loader, source, studyInstanceUid, seriesInstanceUid) 447 Handler(loader, source, studyInstanceUid, seriesInstanceUid)
452 { 448 {
453 } 449 }
454 450
455 virtual void HandleSuccess(const std::string& body, 451 virtual void HandleSuccess(const std::string& body,
456 const std::map<std::string, std::string>& headers) 452 const std::map<std::string, std::string>& headers) ORTHANC_OVERRIDE
457 { 453 {
458 Json::Value json; 454 Json::Value json;
459 Json::Reader reader; 455 Json::Reader reader;
460 if (!reader.parse(body, json) || 456 if (!reader.parse(body, json) ||
461 json.type() != Json::arrayValue) 457 json.type() != Json::arrayValue)
628 height_(128) 624 height_(128)
629 { 625 {
630 } 626 }
631 627
632 628
633 boost::shared_ptr<SeriesThumbnailsLoader> SeriesThumbnailsLoader::Create(ILoadersContext::ILock& stone, 629 boost::shared_ptr<SeriesThumbnailsLoader> SeriesThumbnailsLoader::Create(
634 int priority) 630 const ILoadersContext::ILock& stone,
631 int priority)
635 { 632 {
636 boost::shared_ptr<SeriesThumbnailsLoader> result(new SeriesThumbnailsLoader(stone.GetContext(), priority)); 633 boost::shared_ptr<SeriesThumbnailsLoader> result(new SeriesThumbnailsLoader(stone.GetContext(), priority));
637 result->Register<GetOrthancImageCommand::SuccessMessage>(stone.GetOracleObservable(), &SeriesThumbnailsLoader::Handle); 634 result->Register<GetOrthancImageCommand::SuccessMessage>(stone.GetOracleObservable(), &SeriesThumbnailsLoader::Handle);
638 result->Register<HttpCommand::SuccessMessage>(stone.GetOracleObservable(), &SeriesThumbnailsLoader::Handle); 635 result->Register<HttpCommand::SuccessMessage>(stone.GetOracleObservable(), &SeriesThumbnailsLoader::Handle);
639 result->Register<OracleCommandExceptionMessage>(stone.GetOracleObservable(), &SeriesThumbnailsLoader::Handle); 636 result->Register<OracleCommandExceptionMessage>(stone.GetOracleObservable(), &SeriesThumbnailsLoader::Handle);
648 645
649 646
650 void SeriesThumbnailsLoader::SetThumbnailSize(unsigned int width, 647 void SeriesThumbnailsLoader::SetThumbnailSize(unsigned int width,
651 unsigned int height) 648 unsigned int height)
652 { 649 {
653 if (width <= 0 || 650 if (width == 0 ||
654 height <= 0) 651 height == 0)
655 { 652 {
656 throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange); 653 throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
657 } 654 }
658 else 655 else
659 { 656 {