# HG changeset patch
# User am@osimis.io
# Date 1530528340 -7200
# Node ID 54c7284b0effb37dbd5a952c54b2f12bdf588ee5
# Parent 2da24bf88100d28644de466673b89d91dfa4aff4
merged useful changes from branch am
diff -r 2da24bf88100 -r 54c7284b0eff Applications/Samples/SimpleViewerApplication.h
--- a/Applications/Samples/SimpleViewerApplication.h Mon Jul 02 12:33:56 2018 +0200
+++ b/Applications/Samples/SimpleViewerApplication.h Mon Jul 02 12:45:40 2018 +0200
@@ -13,7 +13,7 @@
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Affero General Public License for more details.
- *
+ *
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see .
**/
@@ -34,8 +34,8 @@
namespace Samples
{
class SimpleViewerApplication :
- public SampleApplicationBase,
- private ILayerSource::IObserver
+ public SampleApplicationBase,
+ private ILayerSource::IObserver
{
private:
class Interactor : public IWorldSceneInteractor
@@ -71,7 +71,7 @@
Vector p = dynamic_cast(widget).GetSlice().MapSliceToWorldCoordinates(x, y);
char buf[64];
- sprintf(buf, "X = %.02f Y = %.02f Z = %.02f (in cm)",
+ sprintf(buf, "X = %.02f Y = %.02f Z = %.02f (in cm)",
p[0] / 10.0, p[1] / 10.0, p[2] / 10.0);
statusBar->SetMessage(buf);
}
@@ -82,21 +82,21 @@
KeyboardModifiers modifiers,
IStatusBar* statusBar)
{
-// int scale = (modifiers & KeyboardModifiers_Control ? 10 : 1);
+ // int scale = (modifiers & KeyboardModifiers_Control ? 10 : 1);
-// switch (direction)
-// {
-// case MouseWheelDirection_Up:
-// application_.OffsetSlice(-scale);
-// break;
+ // switch (direction)
+ // {
+ // case MouseWheelDirection_Up:
+ // application_.OffsetSlice(-scale);
+ // break;
-// case MouseWheelDirection_Down:
-// application_.OffsetSlice(scale);
-// break;
+ // case MouseWheelDirection_Down:
+ // application_.OffsetSlice(scale);
+ // break;
-// default:
-// break;
-// }
+ // default:
+ // break;
+ // }
}
virtual void KeyPressed(WorldSceneWidget& widget,
@@ -106,69 +106,72 @@
{
switch (key)
{
- case 's':
- widget.SetDefaultView();
- break;
+ case 's':
+ widget.SetDefaultView();
+ break;
+ case 'n':
+ application_.NextImage(widget);
+ break;
- default:
- break;
+ default:
+ break;
}
}
};
-// void OffsetSlice(int offset)
-// {
-// if (source_ != NULL)
-// {
-// int slice = static_cast(slice_) + offset;
+ // void OffsetSlice(int offset)
+ // {
+ // if (source_ != NULL)
+ // {
+ // int slice = static_cast(slice_) + offset;
-// if (slice < 0)
-// {
-// slice = 0;
-// }
+ // if (slice < 0)
+ // {
+ // slice = 0;
+ // }
-// if (slice >= static_cast(source_->GetSliceCount()))
-// {
-// slice = source_->GetSliceCount() - 1;
-// }
+ // if (slice >= static_cast(source_->GetSliceCount()))
+ // {
+ // slice = source_->GetSliceCount() - 1;
+ // }
-// if (slice != static_cast(slice_))
-// {
-// SetSlice(slice);
-// }
-// }
-// }
+ // if (slice != static_cast(slice_))
+ // {
+ // SetSlice(slice);
+ // }
+ // }
+ // }
-// void SetSlice(size_t index)
-// {
-// if (source_ != NULL &&
-// index < source_->GetSliceCount())
-// {
-// slice_ = index;
-
-//#if 1
-// widget_->SetSlice(source_->GetSlice(slice_).GetGeometry());
-//#else
-// // TEST for scene extents - Rotate the axes
-// double a = 15.0 / 180.0 * M_PI;
+ // void SetSlice(size_t index)
+ // {
+ // if (source_ != NULL &&
+ // index < source_->GetSliceCount())
+ // {
+ // slice_ = index;
+
+ //#if 1
+ // widget_->SetSlice(source_->GetSlice(slice_).GetGeometry());
+ //#else
+ // // TEST for scene extents - Rotate the axes
+ // double a = 15.0 / 180.0 * M_PI;
-//#if 1
-// Vector x; GeometryToolbox::AssignVector(x, cos(a), sin(a), 0);
-// Vector y; GeometryToolbox::AssignVector(y, -sin(a), cos(a), 0);
-//#else
-// // Flip the normal
-// Vector x; GeometryToolbox::AssignVector(x, cos(a), sin(a), 0);
-// Vector y; GeometryToolbox::AssignVector(y, sin(a), -cos(a), 0);
-//#endif
-
-// SliceGeometry s(source_->GetSlice(slice_).GetGeometry().GetOrigin(), x, y);
-// widget_->SetSlice(s);
-//#endif
-// }
-// }
-
+ //#if 1
+ // Vector x; GeometryToolbox::AssignVector(x, cos(a), sin(a), 0);
+ // Vector y; GeometryToolbox::AssignVector(y, -sin(a), cos(a), 0);
+ //#else
+ // // Flip the normal
+ // Vector x; GeometryToolbox::AssignVector(x, cos(a), sin(a), 0);
+ // Vector y; GeometryToolbox::AssignVector(y, sin(a), -cos(a), 0);
+ //#endif
+
+ // SliceGeometry s(source_->GetSlice(slice_).GetGeometry().GetOrigin(), x, y);
+ // widget_->SetSlice(s);
+ //#endif
+ // }
+ // }
+
virtual void NotifyGeometryReady(const ILayerSource& source)
{
@@ -195,7 +198,7 @@
const Slice& slice)
{
}
-
+
virtual void NotifyLayerReady(std::auto_ptr& layer,
const ILayerSource& source,
const CoordinateSystem3D& slice,
@@ -234,15 +237,15 @@
{
boost::program_options::options_description generic("Sample options");
generic.add_options()
-// ("study", boost::program_options::value(),
-// "Orthanc ID of the study")
- ("instance1", boost::program_options::value(),
- "Orthanc ID of the instances")
+ // ("study", boost::program_options::value(),
+ // "Orthanc ID of the study")
+ ("instance1", boost::program_options::value(),
+ "Orthanc ID of the instances")
("instance2", boost::program_options::value(),
"Orthanc ID of the instances")
- ;
+ ;
- options.add(generic);
+ options.add(generic);
}
virtual void Initialize(BasicApplicationContext* context,
@@ -316,6 +319,21 @@
AttachWidgetToWasmViewport("canvas2", mainViewport_);
}
#endif
+
+ void NextImage(WorldSceneWidget& widget) {
+ assert(context_);
+
+ currentInstanceIndex_ = (currentInstanceIndex_ + 1) % instances_.size();
+
+ std::auto_ptr layer
+ (new OrthancFrameLayerSource(context_->GetWebService()));
+ layer->LoadFrame(instances_[currentInstanceIndex_], 0);
+
+ mainViewport_->ReplaceLayer(0, layer.release());
+ // source_->LoadFrame("45b7e6bc-168e8ed1-063dc08d-cffd6431-133a276a", 0);
+ }
};
+
+
}
}
diff -r 2da24bf88100 -r 54c7284b0eff Platforms/Wasm/build-wasm.sh
--- a/Platforms/Wasm/build-wasm.sh Mon Jul 02 12:33:56 2018 +0200
+++ b/Platforms/Wasm/build-wasm.sh Mon Jul 02 12:45:40 2018 +0200
@@ -7,7 +7,7 @@
cd $wasmRootDir/build
source ~/Downloads/emsdk/emsdk_env.sh
-cmake -DCMAKE_TOOLCHAIN_FILE=${EMSCRIPTEN}/cmake/Modules/Platform/Emscripten.cmake .. -DCMAKE_BUILD_TYPE=Release -DSTONE_SOURCES_DIR=$currentDir/../../../orthanc-stone -DORTHANC_FRAMEWORK_SOURCE=path -DORTHANC_FRAMEWORK_ROOT=$currentDir/../../../orthanc -DALLOW_DOWNLOADS=ON -DSTATIC_BUILD=OFF
+cmake -DCMAKE_TOOLCHAIN_FILE=${EMSCRIPTEN}/cmake/Modules/Platform/Emscripten.cmake -DCMAKE_BUILD_TYPE=Release -DSTONE_SOURCES_DIR=$currentDir/../../../orthanc-stone -DORTHANC_FRAMEWORK_SOURCE=path -DORTHANC_FRAMEWORK_ROOT=$currentDir/../../../orthanc -DALLOW_DOWNLOADS=ON ..
make -j 5
echo "-- building the web application -- "
diff -r 2da24bf88100 -r 54c7284b0eff Resources/CMake/OrthancStoneConfiguration.cmake
--- a/Resources/CMake/OrthancStoneConfiguration.cmake Mon Jul 02 12:33:56 2018 +0200
+++ b/Resources/CMake/OrthancStoneConfiguration.cmake Mon Jul 02 12:45:40 2018 +0200
@@ -145,6 +145,7 @@
${ORTHANC_STONE_ROOT}/Platforms/Generic/WebServiceGetCommand.cpp
${ORTHANC_STONE_ROOT}/Platforms/Generic/WebServicePostCommand.cpp
${ORTHANC_STONE_ROOT}/Platforms/Generic/Oracle.cpp
+ ${ORTHANC_STONE_ROOT}/Platforms/Generic/OracleWebService.h
)
list(APPEND APPLICATIONS_SOURCES
@@ -174,6 +175,7 @@
${ORTHANC_STONE_ROOT}/Framework/Layers/DicomStructureSetRendererFactory.cpp
${ORTHANC_STONE_ROOT}/Framework/Layers/FrameRenderer.cpp
${ORTHANC_STONE_ROOT}/Framework/Layers/GrayscaleFrameRenderer.cpp
+ ${ORTHANC_STONE_ROOT}/Framework/Layers/ILayerSource.h
${ORTHANC_STONE_ROOT}/Framework/Layers/LayerSourceBase.cpp
${ORTHANC_STONE_ROOT}/Framework/Layers/LineLayerRenderer.cpp
${ORTHANC_STONE_ROOT}/Framework/Layers/LineMeasureTracker.cpp