comparison Framework/Layers/OrthancFrameLayerSource.cpp @ 93:5945e81734a3 wasm

decoding of JPEG images
author Sebastien Jodogne <s.jodogne@gmail.com>
date Mon, 29 May 2017 17:28:31 +0200
parents 64e60018943f
children f8bce1bebe01
comparison
equal deleted inserted replaced
92:961ee171d933 93:5945e81734a3
27 #include "../../Resources/Orthanc/Core/OrthancException.h" 27 #include "../../Resources/Orthanc/Core/OrthancException.h"
28 #include "../Toolbox/DicomFrameConverter.h" 28 #include "../Toolbox/DicomFrameConverter.h"
29 29
30 #include <boost/lexical_cast.hpp> 30 #include <boost/lexical_cast.hpp>
31 31
32
33 // TODO REMOVE THIS
34 #include "../Widgets/LayerWidget.h"
35
36 namespace OrthancStone 32 namespace OrthancStone
37 { 33 {
38 void OrthancFrameLayerSource::NotifyGeometryReady(const OrthancSlicesLoader& loader) 34 void OrthancFrameLayerSource::NotifyGeometryReady(const OrthancSlicesLoader& loader)
39 { 35 {
40 if (loader.GetSliceCount() > 0) 36 if (loader.GetSliceCount() > 0)
41 { 37 {
42 // Make sure all the slices are parallel. TODO Alleviate this constraint 38 LayerSourceBase::NotifyGeometryReady();
43 for (size_t i = 1; i < loader.GetSliceCount(); i++)
44 {
45 if (!GeometryToolbox::IsParallel(loader.GetSlice(i).GetGeometry().GetNormal(),
46 loader.GetSlice(0).GetGeometry().GetNormal()))
47 {
48 LayerSourceBase::NotifyGeometryError();
49 return;
50 }
51 }
52 } 39 }
53 40 else
54 LayerSourceBase::NotifyGeometryReady(); 41 {
42 LayerSourceBase::NotifyGeometryError();
43 }
55 } 44 }
56 45
57 void OrthancFrameLayerSource::NotifyGeometryError(const OrthancSlicesLoader& loader) 46 void OrthancFrameLayerSource::NotifyGeometryError(const OrthancSlicesLoader& loader)
58 { 47 {
59 LayerSourceBase::NotifyGeometryError(); 48 LayerSourceBase::NotifyGeometryError();
60 } 49 }
61 50
62 void OrthancFrameLayerSource::NotifySliceImageReady(const OrthancSlicesLoader& loader, 51 void OrthancFrameLayerSource::NotifySliceImageReady(const OrthancSlicesLoader& loader,
63 unsigned int sliceIndex, 52 unsigned int sliceIndex,
64 const Slice& slice, 53 const Slice& slice,
65 Orthanc::ImageAccessor* image) 54 Orthanc::ImageAccessor* image,
55 SliceImageQuality quality)
66 { 56 {
67 LayerSourceBase::NotifyLayerReady(FrameRenderer::CreateRenderer(image, slice, true), slice); 57 bool isFull = (quality == SliceImageQuality_Full);
58 LayerSourceBase::NotifyLayerReady(FrameRenderer::CreateRenderer(image, slice, isFull), slice);
68 } 59 }
69 60
70 void OrthancFrameLayerSource::NotifySliceImageError(const OrthancSlicesLoader& loader, 61 void OrthancFrameLayerSource::NotifySliceImageError(const OrthancSlicesLoader& loader,
71 unsigned int sliceIndex, 62 unsigned int sliceIndex,
72 const Slice& slice) 63 const Slice& slice,
64 SliceImageQuality quality)
73 { 65 {
74 LayerSourceBase::NotifyLayerError(slice.GetGeometry()); 66 LayerSourceBase::NotifyLayerError(slice.GetGeometry());
75 } 67 }
76 68
77 OrthancFrameLayerSource::OrthancFrameLayerSource(IWebService& orthanc, 69 OrthancFrameLayerSource::OrthancFrameLayerSource(IWebService& orthanc,
131 123
132 if (loader_.IsGeometryReady()) 124 if (loader_.IsGeometryReady())
133 { 125 {
134 if (loader_.LookupSlice(index, viewportSlice)) 126 if (loader_.LookupSlice(index, viewportSlice))
135 { 127 {
136 loader_.ScheduleLoadSliceImage(index); 128 //loader_.ScheduleLoadSliceImage(index, SliceImageQuality_Full);
129 loader_.ScheduleLoadSliceImage(index, SliceImageQuality_Jpeg50);
137 } 130 }
138 else 131 else
139 { 132 {
140 LayerSourceBase::NotifyLayerError(viewportSlice); 133 LayerSourceBase::NotifyLayerError(viewportSlice);
141 } 134 }