Mercurial > hg > orthanc-stone
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 { |