Mercurial > hg > orthanc-stone
comparison OrthancStone/Sources/Toolbox/DicomInstanceParameters.cpp @ 1919:ed4831e08961
added DicomInstanceParameters::CreateOverlayTexture()
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Mon, 21 Mar 2022 15:50:29 +0100 |
parents | 898774b4e02d |
children | f4050908c6bc |
comparison
equal
deleted
inserted
replaced
1918:fc6009c43bd9 | 1919:ed4831e08961 |
---|---|
567 | 567 |
568 return converted.release(); | 568 return converted.release(); |
569 } | 569 } |
570 | 570 |
571 | 571 |
572 TextureBaseSceneLayer* DicomInstanceParameters::CreateTexture | 572 TextureBaseSceneLayer* DicomInstanceParameters::CreateTexture( |
573 (const Orthanc::ImageAccessor& pixelData) const | 573 const Orthanc::ImageAccessor& pixelData) const |
574 { | 574 { |
575 // { | 575 // { |
576 // const Orthanc::ImageAccessor& source = pixelData; | 576 // const Orthanc::ImageAccessor& source = pixelData; |
577 // const void* sourceBuffer = source.GetConstBuffer(); | 577 // const void* sourceBuffer = source.GetConstBuffer(); |
578 // intptr_t sourceBufferInt = reinterpret_cast<intptr_t>(sourceBuffer); | 578 // intptr_t sourceBufferInt = reinterpret_cast<intptr_t>(sourceBuffer); |
645 | 645 |
646 return texture.release(); | 646 return texture.release(); |
647 } | 647 } |
648 | 648 |
649 | 649 |
650 LookupTableTextureSceneLayer* DicomInstanceParameters::CreateLookupTableTexture | 650 LookupTableTextureSceneLayer* DicomInstanceParameters::CreateLookupTableTexture( |
651 (const Orthanc::ImageAccessor& pixelData) const | 651 const Orthanc::ImageAccessor& pixelData) const |
652 { | 652 { |
653 std::unique_ptr<FloatTextureSceneLayer> texture; | 653 std::unique_ptr<LookupTableTextureSceneLayer> texture; |
654 | 654 |
655 if (pixelData.GetFormat() == Orthanc::PixelFormat_Float32) | 655 if (pixelData.GetFormat() == Orthanc::PixelFormat_Float32) |
656 { | 656 { |
657 return new LookupTableTextureSceneLayer(pixelData); | 657 texture.reset(new LookupTableTextureSceneLayer(pixelData)); |
658 } | 658 } |
659 else | 659 else |
660 { | 660 { |
661 std::unique_ptr<Orthanc::ImageAccessor> converted(ConvertToFloat(pixelData)); | 661 std::unique_ptr<Orthanc::ImageAccessor> converted(ConvertToFloat(pixelData)); |
662 return new LookupTableTextureSceneLayer(*converted); | 662 texture.reset(new LookupTableTextureSceneLayer(*converted)); |
663 } | 663 } |
664 | |
665 if (HasPixelSpacing()) | |
666 { | |
667 texture->SetPixelSpacing(GetPixelSpacingX(), GetPixelSpacingY()); | |
668 } | |
669 | |
670 return texture.release(); | |
664 } | 671 } |
665 | 672 |
666 | 673 |
674 LookupTableTextureSceneLayer* DicomInstanceParameters::CreateOverlayTexture( | |
675 int originX, | |
676 int originY, | |
677 const Orthanc::ImageAccessor& overlay) const | |
678 { | |
679 if (overlay.GetFormat() != Orthanc::PixelFormat_Grayscale8) | |
680 { | |
681 throw Orthanc::OrthancException(Orthanc::ErrorCode_IncompatibleImageFormat); | |
682 } | |
683 | |
684 std::unique_ptr<LookupTableTextureSceneLayer> texture(CreateLookupTableTexture(overlay)); | |
685 | |
686 texture->SetOrigin(static_cast<double>(originX - 1) * texture->GetPixelSpacingX(), | |
687 static_cast<double>(originY - 1) * texture->GetPixelSpacingY()); | |
688 | |
689 return texture.release(); | |
690 } | |
691 | |
692 | |
667 unsigned int DicomInstanceParameters::GetIndexInSeries() const | 693 unsigned int DicomInstanceParameters::GetIndexInSeries() const |
668 { | 694 { |
669 if (data_.hasIndexInSeries_) | 695 if (data_.hasIndexInSeries_) |
670 { | 696 { |
671 return data_.indexInSeries_; | 697 return data_.indexInSeries_; |