Mercurial > hg > orthanc-wsi
diff Framework/Inputs/DicomPyramidInstance.cpp @ 196:b0bd22077cd8
sharing code with orthanc-stone
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Wed, 01 Jul 2020 17:57:38 +0200 |
parents | e57e6ca5303d |
children | 2a4e1f7de5ab |
line wrap: on
line diff
--- a/Framework/Inputs/DicomPyramidInstance.cpp Tue Jun 30 18:11:30 2020 +0200 +++ b/Framework/Inputs/DicomPyramidInstance.cpp Wed Jul 01 17:57:38 2020 +0200 @@ -23,8 +23,8 @@ #include "DicomPyramidInstance.h" #include "../DicomToolbox.h" -#include "Orthanc/DicomDatasetReader.h" -#include "Orthanc/FullOrthancDataset.h" +#include "../../Resources/Orthanc/Stone/DicomDatasetReader.h" +#include "../../Resources/Orthanc/Stone/FullOrthancDataset.h" #include <Logging.h> #include <OrthancException.h> @@ -35,18 +35,26 @@ #define SERIALIZED_METADATA "4200" + namespace OrthancWSI { - static ImageCompression DetectImageCompression(OrthancPlugins::IOrthancConnection& orthanc, + static const Orthanc::DicomTag DICOM_TAG_COLUMN_POSITION_IN_TOTAL_IMAGE_PIXEL_MATRIX(0x0048, 0x021e); + static const Orthanc::DicomTag DICOM_TAG_PER_FRAME_FUNCTIONAL_GROUPS_SEQUENCE(0x5200, 0x9230); + static const Orthanc::DicomTag DICOM_TAG_PLANE_POSITION_SLIDE_SEQUENCE(0x0048, 0x021a); + static const Orthanc::DicomTag DICOM_TAG_ROW_POSITION_IN_TOTAL_IMAGE_PIXEL_MATRIX(0x0048, 0x021f); + static const Orthanc::DicomTag DICOM_TAG_TOTAL_PIXEL_MATRIX_COLUMNS(0x0048, 0x0006); + static const Orthanc::DicomTag DICOM_TAG_TOTAL_PIXEL_MATRIX_ROWS(0x0048, 0x0007); + + static ImageCompression DetectImageCompression(OrthancStone::IOrthancConnection& orthanc, const std::string& instanceId) { - using namespace OrthancPlugins; + using namespace OrthancStone; FullOrthancDataset dataset(orthanc, "/instances/" + instanceId + "/header"); DicomDatasetReader header(dataset); std::string s = Orthanc::Toolbox::StripSpaces - (header.GetMandatoryStringValue(DICOM_TAG_TRANSFER_SYNTAX_UID)); + (header.GetMandatoryStringValue(Orthanc::DICOM_TAG_TRANSFER_SYNTAX_UID)); if (s == "1.2.840.10008.1.2" || s == "1.2.840.10008.1.2.1") @@ -72,12 +80,12 @@ static void DetectPixelFormat(Orthanc::PixelFormat& format, Orthanc::PhotometricInterpretation& photometric, - OrthancPlugins::DicomDatasetReader& reader) + OrthancStone::DicomDatasetReader& reader) { - using namespace OrthancPlugins; + using namespace OrthancStone; std::string p = Orthanc::Toolbox::StripSpaces - (reader.GetMandatoryStringValue(DICOM_TAG_PHOTOMETRIC_INTERPRETATION)); + (reader.GetMandatoryStringValue(Orthanc::DICOM_TAG_PHOTOMETRIC_INTERPRETATION)); photometric = Orthanc::StringToPhotometricInterpretation(p.c_str()); @@ -89,9 +97,9 @@ unsigned int bitsStored, samplesPerPixel, tmp; - if (!reader.GetUnsignedIntegerValue(bitsStored, DICOM_TAG_BITS_STORED) || - !reader.GetUnsignedIntegerValue(samplesPerPixel, DICOM_TAG_SAMPLES_PER_PIXEL) || - !reader.GetUnsignedIntegerValue(tmp, DICOM_TAG_PIXEL_REPRESENTATION)) + if (!reader.GetUnsignedIntegerValue(bitsStored, Orthanc::DICOM_TAG_BITS_STORED) || + !reader.GetUnsignedIntegerValue(samplesPerPixel, Orthanc::DICOM_TAG_SAMPLES_PER_PIXEL) || + !reader.GetUnsignedIntegerValue(tmp, Orthanc::DICOM_TAG_PIXEL_REPRESENTATION)) { throw Orthanc::OrthancException(Orthanc::ErrorCode_InexistentTag); } @@ -117,7 +125,7 @@ } - ImageCompression DicomPyramidInstance::GetImageCompression(OrthancPlugins::IOrthancConnection& orthanc) + ImageCompression DicomPyramidInstance::GetImageCompression(OrthancStone::IOrthancConnection& orthanc) { /** * Lazy detection of the image compression using the transfer @@ -138,16 +146,16 @@ } - void DicomPyramidInstance::Load(OrthancPlugins::IOrthancConnection& orthanc, + void DicomPyramidInstance::Load(OrthancStone::IOrthancConnection& orthanc, const std::string& instanceId) { - using namespace OrthancPlugins; + using namespace OrthancStone; FullOrthancDataset dataset(orthanc, "/instances/" + instanceId + "/tags"); DicomDatasetReader reader(dataset); - if (reader.GetMandatoryStringValue(DICOM_TAG_SOP_CLASS_UID) != "1.2.840.10008.5.1.4.1.1.77.1.6" || - reader.GetMandatoryStringValue(DICOM_TAG_MODALITY) != "SM") + if (reader.GetMandatoryStringValue(Orthanc::DICOM_TAG_SOP_CLASS_UID) != "1.2.840.10008.5.1.4.1.1.77.1.6" || + reader.GetMandatoryStringValue(Orthanc::DICOM_TAG_MODALITY) != "SM") { throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange); } @@ -156,11 +164,11 @@ DetectPixelFormat(format_, photometric_, reader); unsigned int tmp; - if (!reader.GetUnsignedIntegerValue(tileWidth_, DICOM_TAG_COLUMNS) || - !reader.GetUnsignedIntegerValue(tileHeight_, DICOM_TAG_ROWS) || + if (!reader.GetUnsignedIntegerValue(tileWidth_, Orthanc::DICOM_TAG_COLUMNS) || + !reader.GetUnsignedIntegerValue(tileHeight_, Orthanc::DICOM_TAG_ROWS) || !reader.GetUnsignedIntegerValue(totalWidth_, DICOM_TAG_TOTAL_PIXEL_MATRIX_COLUMNS) || !reader.GetUnsignedIntegerValue(totalHeight_, DICOM_TAG_TOTAL_PIXEL_MATRIX_ROWS) || - !reader.GetUnsignedIntegerValue(tmp, DICOM_TAG_NUMBER_OF_FRAMES)) + !reader.GetUnsignedIntegerValue(tmp, Orthanc::DICOM_TAG_NUMBER_OF_FRAMES)) { throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat); } @@ -221,7 +229,7 @@ } - DicomPyramidInstance::DicomPyramidInstance(OrthancPlugins::IOrthancConnection& orthanc, + DicomPyramidInstance::DicomPyramidInstance(OrthancStone::IOrthancConnection& orthanc, const std::string& instanceId, bool useCache) : instanceId_(instanceId), @@ -313,7 +321,7 @@ hasCompression_ = false; Json::Value content; - OrthancPlugins::IOrthancConnection::ParseJson(content, s); + OrthancStone::IOrthancConnection::ParseJson(content, s); if (content.type() != Json::objectValue || !content.isMember("Frames") ||