Mercurial > hg > orthanc-stone
comparison Framework/Toolbox/OrthancSlicesLoader.cpp @ 118:a4d0b6c82b29 wasm
using Orthanc::DicomMap instead of OrthancPlugins::DicomDatasetReader
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Mon, 02 Oct 2017 14:31:26 +0200 |
parents | 42c05a3baee3 |
children | ba83e38cf3ff |
comparison
equal
deleted
inserted
replaced
117:42c05a3baee3 | 118:a4d0b6c82b29 |
---|---|
29 #include <Core/Images/PngReader.h> | 29 #include <Core/Images/PngReader.h> |
30 #include <Core/Compression/GzipCompressor.h> | 30 #include <Core/Compression/GzipCompressor.h> |
31 #include <Core/Logging.h> | 31 #include <Core/Logging.h> |
32 #include <Core/OrthancException.h> | 32 #include <Core/OrthancException.h> |
33 #include <Core/Toolbox.h> | 33 #include <Core/Toolbox.h> |
34 #include <Plugins/Samples/Common/DicomDatasetReader.h> | |
35 #include <Plugins/Samples/Common/FullOrthancDataset.h> | 34 #include <Plugins/Samples/Common/FullOrthancDataset.h> |
36 | 35 |
37 #include <boost/lexical_cast.hpp> | 36 #include <boost/lexical_cast.hpp> |
38 | 37 |
39 | 38 |
293 slices_.Reserve(instances.size()); | 292 slices_.Reserve(instances.size()); |
294 | 293 |
295 for (size_t i = 0; i < instances.size(); i++) | 294 for (size_t i = 0; i < instances.size(); i++) |
296 { | 295 { |
297 OrthancPlugins::FullOrthancDataset dataset(series[instances[i]]); | 296 OrthancPlugins::FullOrthancDataset dataset(series[instances[i]]); |
298 OrthancPlugins::DicomDatasetReader reader(dataset); | 297 |
298 Orthanc::DicomMap dicom; | |
299 MessagingToolbox::ConvertDataset(dicom, dataset); | |
299 | 300 |
300 unsigned int frames; | 301 unsigned int frames; |
301 if (!reader.GetUnsignedIntegerValue(frames, OrthancPlugins::DICOM_TAG_NUMBER_OF_FRAMES)) | 302 if (!dicom.ParseUnsignedInteger32(frames, Orthanc::DICOM_TAG_NUMBER_OF_FRAMES)) |
302 { | 303 { |
303 frames = 1; | 304 frames = 1; |
304 } | 305 } |
305 | 306 |
306 for (unsigned int frame = 0; frame < frames; frame++) | 307 for (unsigned int frame = 0; frame < frames; frame++) |
307 { | 308 { |
308 Slice slice; | 309 Slice slice; |
309 if (slice.ParseOrthancFrame(dataset, instances[i], frame)) | 310 if (slice.ParseOrthancFrame(dicom, instances[i], frame)) |
310 { | 311 { |
311 slices_.AddSlice(slice); | 312 slices_.AddSlice(slice); |
312 } | 313 } |
313 else | 314 else |
314 { | 315 { |
357 userCallback_.NotifyGeometryError(*this); | 358 userCallback_.NotifyGeometryError(*this); |
358 return; | 359 return; |
359 } | 360 } |
360 | 361 |
361 OrthancPlugins::FullOrthancDataset dataset(tags); | 362 OrthancPlugins::FullOrthancDataset dataset(tags); |
362 OrthancPlugins::DicomDatasetReader reader(dataset); | 363 |
363 | 364 Orthanc::DicomMap dicom; |
365 MessagingToolbox::ConvertDataset(dicom, dataset); | |
366 | |
364 unsigned int frames; | 367 unsigned int frames; |
365 if (!reader.GetUnsignedIntegerValue(frames, OrthancPlugins::DICOM_TAG_NUMBER_OF_FRAMES)) | 368 if (!dicom.ParseUnsignedInteger32(frames, Orthanc::DICOM_TAG_NUMBER_OF_FRAMES)) |
366 { | 369 { |
367 frames = 1; | 370 frames = 1; |
368 } | 371 } |
369 | 372 |
370 LOG(INFO) << "Instance " << instanceId << " contains " << frames << " frame(s)"; | 373 LOG(INFO) << "Instance " << instanceId << " contains " << frames << " frame(s)"; |
372 state_ = State_GeometryReady; | 375 state_ = State_GeometryReady; |
373 | 376 |
374 for (unsigned int frame = 0; frame < frames; frame++) | 377 for (unsigned int frame = 0; frame < frames; frame++) |
375 { | 378 { |
376 Slice slice; | 379 Slice slice; |
377 if (slice.ParseOrthancFrame(dataset, instanceId, frame)) | 380 if (slice.ParseOrthancFrame(dicom, instanceId, frame)) |
378 { | 381 { |
379 slices_.AddSlice(slice); | 382 slices_.AddSlice(slice); |
380 } | 383 } |
381 else | 384 else |
382 { | 385 { |
404 } | 407 } |
405 | 408 |
406 OrthancPlugins::FullOrthancDataset dataset(tags); | 409 OrthancPlugins::FullOrthancDataset dataset(tags); |
407 | 410 |
408 state_ = State_GeometryReady; | 411 state_ = State_GeometryReady; |
409 | 412 |
413 Orthanc::DicomMap dicom; | |
414 MessagingToolbox::ConvertDataset(dicom, dataset); | |
415 | |
410 Slice slice; | 416 Slice slice; |
411 if (slice.ParseOrthancFrame(dataset, instanceId, frame)) | 417 if (slice.ParseOrthancFrame(dicom, instanceId, frame)) |
412 { | 418 { |
413 LOG(INFO) << "Loaded instance " << instanceId; | 419 LOG(INFO) << "Loaded instance " << instanceId; |
414 slices_.AddSlice(slice); | 420 slices_.AddSlice(slice); |
415 userCallback_.NotifyGeometryReady(*this); | 421 userCallback_.NotifyGeometryReady(*this); |
416 } | 422 } |