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,