comparison Samples/Sdl/Loader.cpp @ 683:dbc1d8bfc68a

reorganizing ImageBuffer3D
author Sebastien Jodogne <s.jodogne@gmail.com>
date Thu, 16 May 2019 16:01:36 +0200
parents 9723fceccb9f
children 7719eb852dd5
comparison
equal deleted inserted replaced
681:9723fceccb9f 683:dbc1d8bfc68a
23 #include "../../Framework/Messages/IMessage.h" 23 #include "../../Framework/Messages/IMessage.h"
24 #include "../../Framework/Messages/IObservable.h" 24 #include "../../Framework/Messages/IObservable.h"
25 #include "../../Framework/Messages/MessageBroker.h" 25 #include "../../Framework/Messages/MessageBroker.h"
26 #include "../../Framework/StoneInitialization.h" 26 #include "../../Framework/StoneInitialization.h"
27 #include "../../Framework/Toolbox/GeometryToolbox.h" 27 #include "../../Framework/Toolbox/GeometryToolbox.h"
28 #include "../../Framework/Toolbox/SlicesSorter.h"
28 #include "../../Framework/Volumes/ImageBuffer3D.h" 29 #include "../../Framework/Volumes/ImageBuffer3D.h"
29 #include "../../Framework/Toolbox/SlicesSorter.h" 30 #include "../../Framework/Scene2D/ScenePoint2D.h"
30 31
31 // From Orthanc framework 32 // From Orthanc framework
32 #include <Core/Compression/GzipCompressor.h> 33 #include <Core/Compression/GzipCompressor.h>
33 #include <Core/Compression/ZlibCompressor.h> 34 #include <Core/Compression/ZlibCompressor.h>
34 #include <Core/DicomFormat/DicomArray.h> 35 #include <Core/DicomFormat/DicomArray.h>
42 #include <Core/Images/PngReader.h> 43 #include <Core/Images/PngReader.h>
43 #include <Core/Images/PngWriter.h> 44 #include <Core/Images/PngWriter.h>
44 #include <Core/Logging.h> 45 #include <Core/Logging.h>
45 #include <Core/MultiThreading/SharedMessageQueue.h> 46 #include <Core/MultiThreading/SharedMessageQueue.h>
46 #include <Core/OrthancException.h> 47 #include <Core/OrthancException.h>
48 #include <Core/SystemToolbox.h>
47 #include <Core/Toolbox.h> 49 #include <Core/Toolbox.h>
48 #include <Core/SystemToolbox.h>
49 50
50 #include <json/reader.h> 51 #include <json/reader.h>
51 #include <json/value.h> 52 #include <json/value.h>
52 #include <json/writer.h> 53 #include <json/writer.h>
53 54
97 98
98 virtual void Schedule(const OrthancStone::IObserver& receiver, 99 virtual void Schedule(const OrthancStone::IObserver& receiver,
99 IOracleCommand* command) = 0; // Takes ownership 100 IOracleCommand* command) = 0; // Takes ownership
100 }; 101 };
101 102
103
104
105 class IVolumeSlicer : public boost::noncopyable
106 {
107 public:
108 virtual ~IVolumeSlicer()
109 {
110 }
111
112 virtual void SetViewportPlane(const OrthancStone::CoordinateSystem3D& plane) = 0;
113 };
102 114
103 115
104 116
105 class OracleCommandWithPayload : public IOracleCommand 117 class OracleCommandWithPayload : public IOracleCommand
106 { 118 {
1442 1454
1443 OrthancStone::CoordinateSystem3D geometry = instance->GetGeometry(); 1455 OrthancStone::CoordinateSystem3D geometry = instance->GetGeometry();
1444 slices.AddSlice(geometry, instance.release()); 1456 slices.AddSlice(geometry, instance.release());
1445 } 1457 }
1446 1458
1447 that_.image_.SetGeometry(slices); 1459 that_.volume_.SetGeometry(slices);
1448 1460
1449 for (size_t i = 0; i < that_.image_.GetSlicesCount(); i++) 1461 for (size_t i = 0; i < that_.volume_.GetSlicesCount(); i++)
1450 { 1462 {
1451 const DicomInstanceParameters& slice = that_.image_.GetSliceParameters(i); 1463 const DicomInstanceParameters& slice = that_.volume_.GetSliceParameters(i);
1452 1464
1453 const std::string& instance = slice.GetOrthancInstanceIdentifier(); 1465 const std::string& instance = slice.GetOrthancInstanceIdentifier();
1454 if (instance.empty()) 1466 if (instance.empty())
1455 { 1467 {
1456 throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError); 1468 throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
1488 command->SetHttpHeader("Accept", std::string(Orthanc::EnumerationToString(Orthanc::MimeType_Pam))); 1500 command->SetHttpHeader("Accept", std::string(Orthanc::EnumerationToString(Orthanc::MimeType_Pam)));
1489 command->SetUri(uri); 1501 command->SetUri(uri);
1490 #endif 1502 #endif
1491 1503
1492 command->SetExpectedPixelFormat(slice.GetExpectedPixelFormat()); 1504 command->SetExpectedPixelFormat(slice.GetExpectedPixelFormat());
1493 command->SetPayload(new LoadSliceImage(that_.image_, i)); 1505 command->SetPayload(new LoadSliceImage(that_.volume_, i));
1494 1506
1495 that_.oracle_.Schedule(that_, command.release()); 1507 that_.oracle_.Schedule(that_, command.release());
1496 } 1508 }
1497 } 1509 }
1498 }; 1510 };
1519 }; 1531 };
1520 1532
1521 1533
1522 IOracle& oracle_; 1534 IOracle& oracle_;
1523 bool active_; 1535 bool active_;
1524 DicomVolumeImage image_; 1536 DicomVolumeImage volume_;
1525 1537
1526 public: 1538 public:
1527 VolumeSeriesOrthancLoader(IOracle& oracle, 1539 VolumeSeriesOrthancLoader(IOracle& oracle,
1528 OrthancStone::IObservable& oracleObservable) : 1540 OrthancStone::IObservable& oracleObservable) :
1529 IObserver(oracleObservable.GetBroker()), 1541 IObserver(oracleObservable.GetBroker()),