comparison OrthancServer/Plugins/Engine/OrthancPlugins.cpp @ 5303:9504de20d43d am-experimental

new SDK function OrthancPluginEncodeDicomWebJson3 that allows injecting an empty PixelData element at the end
author Alain Mazy <am@osimis.io>
date Thu, 25 May 2023 17:19:52 +0200
parents e7529e6241d2
children
comparison
equal deleted inserted replaced
5301:f26ed26a7793 5303:9504de20d43d
1050 } 1050 }
1051 } 1051 }
1052 1052
1053 void Apply(char** target, 1053 void Apply(char** target,
1054 bool isJson, 1054 bool isJson,
1055 const ParsedDicomFile& dicom) 1055 const ParsedDicomFile& dicom,
1056 bool injectEmptyPixelData)
1056 { 1057 {
1057 DicomWebJsonVisitor visitor; 1058 DicomWebJsonVisitor visitor;
1058 visitor.SetFormatter(*this); 1059 visitor.SetFormatter(*this);
1059 1060
1060 dicom.Apply(visitor); 1061 dicom.Apply(visitor, injectEmptyPixelData);
1061 1062
1062 std::string s; 1063 std::string s;
1063 1064
1064 if (isJson) 1065 if (isJson)
1065 { 1066 {
1075 1076
1076 1077
1077 void Apply(char** target, 1078 void Apply(char** target,
1078 bool isJson, 1079 bool isJson,
1079 const void* dicom, 1080 const void* dicom,
1080 size_t dicomSize) 1081 size_t dicomSize,
1082 bool injectEmptyPixelData)
1081 { 1083 {
1082 ParsedDicomFile parsed(dicom, dicomSize); 1084 ParsedDicomFile parsed(dicom, dicomSize);
1083 Apply(target, isJson, parsed); 1085 Apply(target, isJson, parsed, injectEmptyPixelData);
1084 } 1086 }
1085 }; 1087 };
1086 } 1088 }
1087 1089
1088 1090
3634 } 3636 }
3635 3637
3636 DicomWebBinaryFormatter formatter(p.dicomWebCallback, p.dicomWebPayload); 3638 DicomWebBinaryFormatter formatter(p.dicomWebCallback, p.dicomWebPayload);
3637 formatter.Apply(p.targetStringToFree, 3639 formatter.Apply(p.targetStringToFree,
3638 (service == _OrthancPluginService_GetInstanceDicomWebJson), 3640 (service == _OrthancPluginService_GetInstanceDicomWebJson),
3639 instance.GetParsedDicomFile()); 3641 instance.GetParsedDicomFile(),
3642 false);
3640 return; 3643 return;
3641 } 3644 }
3642 3645
3643 default: 3646 default:
3644 throw OrthancException(ErrorCode_InternalError); 3647 throw OrthancException(ErrorCode_InternalError);
5193 *reinterpret_cast<const _OrthancPluginEncodeDicomWeb*>(parameters); 5196 *reinterpret_cast<const _OrthancPluginEncodeDicomWeb*>(parameters);
5194 5197
5195 DicomWebBinaryFormatter formatter(p.callback); 5198 DicomWebBinaryFormatter formatter(p.callback);
5196 formatter.Apply(p.target, 5199 formatter.Apply(p.target,
5197 (service == _OrthancPluginService_EncodeDicomWebJson), 5200 (service == _OrthancPluginService_EncodeDicomWebJson),
5198 p.dicom, p.dicomSize); 5201 p.dicom, p.dicomSize, false);
5199 return true; 5202 return true;
5200 } 5203 }
5201 5204
5202 case _OrthancPluginService_EncodeDicomWebJson2: 5205 case _OrthancPluginService_EncodeDicomWebJson2:
5203 case _OrthancPluginService_EncodeDicomWebXml2: 5206 case _OrthancPluginService_EncodeDicomWebXml2:
5206 *reinterpret_cast<const _OrthancPluginEncodeDicomWeb2*>(parameters); 5209 *reinterpret_cast<const _OrthancPluginEncodeDicomWeb2*>(parameters);
5207 5210
5208 DicomWebBinaryFormatter formatter(p.callback, p.payload); 5211 DicomWebBinaryFormatter formatter(p.callback, p.payload);
5209 formatter.Apply(p.target, 5212 formatter.Apply(p.target,
5210 (service == _OrthancPluginService_EncodeDicomWebJson2), 5213 (service == _OrthancPluginService_EncodeDicomWebJson2),
5211 p.dicom, p.dicomSize); 5214 p.dicom, p.dicomSize, false);
5215 return true;
5216 }
5217
5218 case _OrthancPluginService_EncodeDicomWebJson3:
5219 {
5220 const _OrthancPluginEncodeDicomWeb3& p =
5221 *reinterpret_cast<const _OrthancPluginEncodeDicomWeb3*>(parameters);
5222
5223 DicomWebBinaryFormatter formatter(p.callback, p.payload);
5224 formatter.Apply(p.target,
5225 (service == _OrthancPluginService_EncodeDicomWebJson3),
5226 p.dicom, p.dicomSize, p.injectEmptyPixelData);
5212 return true; 5227 return true;
5213 } 5228 }
5214 5229
5215 case _OrthancPluginService_GetTagName: 5230 case _OrthancPluginService_GetTagName:
5216 GetTagName(parameters); 5231 GetTagName(parameters);