Mercurial > hg > orthanc-wsi
comparison Applications/Dicomizer.cpp @ 169:de783db2a7c3
making fix for issue #139 permanent
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Fri, 12 Jul 2019 12:53:26 +0200 |
parents | d3aea0af03e1 |
children | 1390d5c87603 |
comparison
equal
deleted
inserted
replaced
168:d3aea0af03e1 | 169:de783db2a7c3 |
---|---|
387 } | 387 } |
388 | 388 |
389 | 389 |
390 { | 390 { |
391 // Construct tag "Shared Functional Groups Sequence" (5200,9229) | 391 // Construct tag "Shared Functional Groups Sequence" (5200,9229) |
392 | |
393 #if 1 | |
394 // In the 2 lines below, remember to switch X/Y when going from physical to pixel coordinates! | |
395 float spacingX = volume.GetWidth() / static_cast<float>(source.GetLevelHeight(0)); | |
396 float spacingY = volume.GetHeight() / static_cast<float>(source.GetLevelWidth(0)); | |
397 | |
398 std::string spacing = (boost::lexical_cast<std::string>(spacingX) + '\\' + | |
399 boost::lexical_cast<std::string>(spacingY)); | |
400 | |
401 std::auto_ptr<DcmItem> item(new DcmItem); | |
402 | |
403 std::auto_ptr<DcmItem> item2(new DcmItem); | |
404 OrthancWSI::DicomToolbox::SetStringTag(*item2, DCM_SliceThickness, | |
405 boost::lexical_cast<std::string>(volume.GetDepth())); | |
406 OrthancWSI::DicomToolbox::SetStringTag(*item2, DCM_PixelSpacing, spacing); | |
407 | |
408 std::auto_ptr<DcmItem> item3(new DcmItem); | |
409 OrthancWSI::DicomToolbox::SetStringTag(*item3, DCM_OpticalPathIdentifier, opticalPathId); | |
410 | |
411 std::auto_ptr<DcmSequenceOfItems> sequence(new DcmSequenceOfItems(DCM_SharedFunctionalGroupsSequence)); | |
412 std::auto_ptr<DcmSequenceOfItems> sequence2(new DcmSequenceOfItems(DCM_PixelMeasuresSequence)); | |
413 std::auto_ptr<DcmSequenceOfItems> sequence3(new DcmSequenceOfItems(DCM_OpticalPathIdentificationSequence)); | |
414 | |
415 if (!sequence2->insert(item2.release(), false, false).good() || | |
416 !sequence3->insert(item3.release(), false, false).good() || | |
417 !item->insert(sequence2.release(), false, false).good() || | |
418 !item->insert(sequence3.release(), false, false).good() || | |
419 !sequence->insert(item.release(), false, false).good() || | |
420 !dataset.insert(sequence.release(), true /* replace */, false).good()) | |
421 { | |
422 throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError); | |
423 } | |
424 #else | |
425 std::auto_ptr<DcmItem> item(new DcmItem); | 392 std::auto_ptr<DcmItem> item(new DcmItem); |
426 | 393 |
427 std::auto_ptr<DcmItem> item3(new DcmItem); | 394 std::auto_ptr<DcmItem> item3(new DcmItem); |
428 OrthancWSI::DicomToolbox::SetStringTag(*item3, DCM_OpticalPathIdentifier, opticalPathId); | 395 OrthancWSI::DicomToolbox::SetStringTag(*item3, DCM_OpticalPathIdentifier, opticalPathId); |
429 | 396 |
435 !sequence->insert(item.release(), false, false).good() || | 402 !sequence->insert(item.release(), false, false).good() || |
436 !dataset.insert(sequence.release(), true /* replace */, false).good()) | 403 !dataset.insert(sequence.release(), true /* replace */, false).good()) |
437 { | 404 { |
438 throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError); | 405 throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError); |
439 } | 406 } |
440 #endif | |
441 } | 407 } |
442 } | 408 } |
443 | 409 |
444 | 410 |
445 static void EnrichDataset(DcmDataset& dataset, | 411 static void EnrichDataset(DcmDataset& dataset, |