Mercurial > hg > orthanc
comparison Plugins/Engine/OrthancPlugins.cpp @ 1829:31df3b48925e
OrthancPluginDecodeDicomImage
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Wed, 25 Nov 2015 17:35:52 +0100 |
parents | a71d74987090 |
children | 47d032c48818 |
comparison
equal
deleted
inserted
replaced
1828:a71d74987090 | 1829:31df3b48925e |
---|---|
1283 image.reset(new JpegReader); | 1283 image.reset(new JpegReader); |
1284 reinterpret_cast<JpegReader&>(*image).ReadFromMemory(p.data, p.size); | 1284 reinterpret_cast<JpegReader&>(*image).ReadFromMemory(p.data, p.size); |
1285 break; | 1285 break; |
1286 } | 1286 } |
1287 | 1287 |
1288 case OrthancPluginImageFormat_Dicom: | |
1289 { | |
1290 ParsedDicomFile dicom(p.data, p.size); | |
1291 image.reset(Decode(dicom, 0)); | |
1292 break; | |
1293 } | |
1294 | |
1288 default: | 1295 default: |
1289 throw OrthancException(ErrorCode_ParameterOutOfRange); | 1296 throw OrthancException(ErrorCode_ParameterOutOfRange); |
1290 } | 1297 } |
1291 | 1298 |
1292 *(p.target) = reinterpret_cast<OrthancPluginImage*>(image.release()); | 1299 *(p.target) = reinterpret_cast<OrthancPluginImage*>(image.release()); |
1454 { | 1461 { |
1455 const _OrthancPluginCreateDicom& p = | 1462 const _OrthancPluginCreateDicom& p = |
1456 *reinterpret_cast<const _OrthancPluginCreateDicom*>(parameters); | 1463 *reinterpret_cast<const _OrthancPluginCreateDicom*>(parameters); |
1457 | 1464 |
1458 Json::Value json; | 1465 Json::Value json; |
1459 Json::Reader reader; | 1466 |
1460 if (!reader.parse(p.json, json)) | 1467 if (p.json == NULL) |
1461 { | 1468 { |
1462 throw OrthancException(ErrorCode_BadJson); | 1469 json = Json::objectValue; |
1470 } | |
1471 else | |
1472 { | |
1473 Json::Reader reader; | |
1474 if (!reader.parse(p.json, json)) | |
1475 { | |
1476 throw OrthancException(ErrorCode_BadJson); | |
1477 } | |
1463 } | 1478 } |
1464 | 1479 |
1465 std::string dicom; | 1480 std::string dicom; |
1466 | 1481 |
1467 { | 1482 { |
1486 const _OrthancPluginCreateImage& p = | 1501 const _OrthancPluginCreateImage& p = |
1487 *reinterpret_cast<const _OrthancPluginCreateImage*>(parameters); | 1502 *reinterpret_cast<const _OrthancPluginCreateImage*>(parameters); |
1488 | 1503 |
1489 std::auto_ptr<ImageAccessor> result; | 1504 std::auto_ptr<ImageAccessor> result; |
1490 | 1505 |
1491 if (service == _OrthancPluginService_CreateImage) | 1506 switch (service) |
1492 { | 1507 { |
1493 result.reset(new Image(Plugins::Convert(p.format), p.width, p.height)); | 1508 case _OrthancPluginService_CreateImage: |
1494 } | 1509 result.reset(new Image(Plugins::Convert(p.format), p.width, p.height)); |
1495 else | 1510 break; |
1496 { | 1511 |
1497 result.reset(new ImageAccessor); | 1512 case _OrthancPluginService_CreateImageAccessor: |
1498 result->AssignWritable(Plugins::Convert(p.format), p.width, p.height, p.pitch, p.buffer); | 1513 result.reset(new ImageAccessor); |
1514 result->AssignWritable(Plugins::Convert(p.format), p.width, p.height, p.pitch, p.buffer); | |
1515 break; | |
1516 | |
1517 case _OrthancPluginService_DecodeDicomImage: | |
1518 { | |
1519 ParsedDicomFile dicom(p.constBuffer, p.bufferSize); | |
1520 result.reset(Decode(dicom, p.frameIndex)); | |
1521 break; | |
1522 } | |
1523 | |
1524 default: | |
1525 throw OrthancException(ErrorCode_InternalError); | |
1499 } | 1526 } |
1500 | 1527 |
1501 *(p.target) = reinterpret_cast<OrthancPluginImage*>(result.release()); | 1528 *(p.target) = reinterpret_cast<OrthancPluginImage*>(result.release()); |
1502 } | 1529 } |
1503 | 1530 |
2067 return true; | 2094 return true; |
2068 } | 2095 } |
2069 | 2096 |
2070 case _OrthancPluginService_CreateImage: | 2097 case _OrthancPluginService_CreateImage: |
2071 case _OrthancPluginService_CreateImageAccessor: | 2098 case _OrthancPluginService_CreateImageAccessor: |
2099 case _OrthancPluginService_DecodeDicomImage: | |
2072 ApplyCreateImage(service, parameters); | 2100 ApplyCreateImage(service, parameters); |
2073 return true; | 2101 return true; |
2074 | 2102 |
2075 default: | 2103 default: |
2076 { | 2104 { |