Mercurial > hg > orthanc
changeset 534:31f1b7d5d7d2 laaw
cleaning up
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Fri, 19 Jul 2013 17:17:36 +0200 |
parents | 7f9467b5f33b |
children | 2890721b0f57 |
files | OrthancCppClient/Package/OrthancCppClient.cmake OrthancCppClient/Package/Test/Basic/Build.sh OrthancCppClient/Package/Test/Basic/CMakeLists.txt OrthancCppClient/Package/Test/Basic/main.cpp OrthancCppClient/Package/Test/Vtk/CMakeLists.txt OrthancCppClient/Package/Test/Vtk/main.cpp Resources/Archives/OrthancCppClient.cmake |
diffstat | 7 files changed, 62 insertions(+), 365 deletions(-) [+] |
line wrap: on
line diff
--- a/OrthancCppClient/Package/OrthancCppClient.cmake Fri Jul 19 17:16:15 2013 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,62 +0,0 @@ -include_directories(${ORTHANC_ROOT}/OrthancCppClient/Package/Laaw) - -set(STATIC_BUILD ON) -include(${ORTHANC_ROOT}/Resources/CMake/DownloadPackage.cmake) -include(${ORTHANC_ROOT}/Resources/CMake/JsonCppConfiguration.cmake) -include(${ORTHANC_ROOT}/Resources/CMake/LibCurlConfiguration.cmake) -include(${ORTHANC_ROOT}/Resources/CMake/LibPngConfiguration.cmake) -include(${ORTHANC_ROOT}/Resources/CMake/BoostConfiguration.cmake) -include(${ORTHANC_ROOT}/Resources/CMake/ZlibConfiguration.cmake) - -if (${CMAKE_COMPILER_IS_GNUCXX}) - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -pedantic -Wno-implicit-function-declaration") # --std=c99 makes libcurl not to compile - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -pedantic -Wno-long-long -Wno-variadic-macros") - set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--as-needed") - set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--no-undefined") -elseif (${MSVC}) - add_definitions(-D_CRT_SECURE_NO_WARNINGS=1) -endif() - -if (${CMAKE_SYSTEM_NAME} STREQUAL "Windows") - if (${CMAKE_SIZEOF_VOID_P} EQUAL 4) - set(WINDOWS_DEF ${ORTHANC_ROOT}/OrthancCppClient/Package/Build/Windows32.def) - elseif (${CMAKE_SIZEOF_VOID_P} EQUAL 8) - set(WINDOWS_DEF ${ORTHANC_ROOT}/OrthancCppClient/Package/Build/Windows64.def) - else() - message(FATAL_ERROR "Support your platform here") - endif() -endif() - -add_library(OrthancCppClient SHARED - ${THIRD_PARTY_SOURCES} - ${ORTHANC_ROOT}/Core/OrthancException.cpp - ${ORTHANC_ROOT}/Core/Enumerations.cpp - ${ORTHANC_ROOT}/Core/Toolbox.cpp - ${ORTHANC_ROOT}/Core/HttpClient.cpp - ${ORTHANC_ROOT}/Core/MultiThreading/ArrayFilledByThreads.cpp - ${ORTHANC_ROOT}/Core/MultiThreading/ThreadedCommandProcessor.cpp - ${ORTHANC_ROOT}/Core/MultiThreading/SharedMessageQueue.cpp - ${ORTHANC_ROOT}/Core/FileFormats/PngReader.cpp - ${ORTHANC_ROOT}/OrthancCppClient/OrthancConnection.cpp - ${ORTHANC_ROOT}/OrthancCppClient/Series.cpp - ${ORTHANC_ROOT}/OrthancCppClient/Study.cpp - ${ORTHANC_ROOT}/OrthancCppClient/Instance.cpp - ${ORTHANC_ROOT}/OrthancCppClient/Patient.cpp - ${ORTHANC_ROOT}/OrthancCppClient/Package/SharedLibrary.cpp - ${ORTHANC_ROOT}/Resources/sha1/sha1.cpp - ${ORTHANC_ROOT}/Resources/md5/md5.c - ${ORTHANC_ROOT}/Resources/base64/base64.cpp - ${WINDOWS_DEF} - ) - -if (${CMAKE_SYSTEM_NAME} STREQUAL "Linux") - set_target_properties(OrthancCppClient - PROPERTIES LINK_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--no-undefined -Wl,--version-script=${ORTHANC_ROOT}/OrthancCppClient/Package/Laaw/VersionScript.map" - ) - target_link_libraries(OrthancCppClient pthread) -else() - set_target_properties(OrthancCppClient - PROPERTIES LINK_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--allow-multiple-definition -static-libgcc -static-libstdc++" - ) - target_link_libraries(OrthancCppClient ws2_32) -endif()
--- a/OrthancCppClient/Package/Test/Basic/Build.sh Fri Jul 19 17:16:15 2013 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,16 +0,0 @@ -#!/bin/bash - -rm -rf i w32 w64 -mkdir i -mkdir w32 -mkdir w64 - -cd i && cmake .. && cd .. && \ - cd w32 && cmake .. -DCMAKE_TOOLCHAIN_FILE=../../../../Resources/MinGWToolchain.cmake && cd .. && \ - cd w64 && cmake .. -DCMAKE_TOOLCHAIN_FILE=../../../../Resources/MinGW64Toolchain.cmake && cd .. - -make -C i -j12 -make -C w32 -j12 -make -C w64 -j12 - -nm -C -D --defined-only i/libOrthancCppClient.so
--- a/OrthancCppClient/Package/Test/Basic/CMakeLists.txt Fri Jul 19 17:16:15 2013 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,14 +0,0 @@ -cmake_minimum_required(VERSION 2.8) - -project(OrthancCppClientTest) - -set(ORTHANC_ROOT ${CMAKE_SOURCE_DIR}/../../../..) -include(../../OrthancCppClient.cmake) - -add_executable(Test main.cpp) - -if (${CMAKE_SYSTEM_NAME} STREQUAL "Linux") - target_link_libraries(Test dl) -else() - set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -static-libgcc -static-libstdc++") -endif()
--- a/OrthancCppClient/Package/Test/Basic/main.cpp Fri Jul 19 17:16:15 2013 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,75 +0,0 @@ -/** - * Orthanc - A Lightweight, RESTful DICOM Store - * Copyright (C) 2012-2013 Medical Physics Department, CHU of Liege, - * Belgium - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - **/ - - -#include <iostream> - -#include "../../Build/OrthancClient.h" - -int main() -{ - try - { -#ifdef _WIN32 - OrthancClient::Initialize("libOrthancCppClient.dll"); -#else - OrthancClient::Initialize("libOrthancCppClient.so"); -#endif - - // Display the content of the local Orthanc instance - OrthancClient::OrthancConnection orthanc("http://localhost:8042"); - - for (unsigned int i = 0; i < orthanc.GetPatientCount(); i++) - { - OrthancClient::Patient patient = orthanc.GetPatient(i); - std::cout << "Patient: " << patient.GetId() << std::endl; - - for (unsigned int j = 0; j < patient.GetStudyCount(); j++) - { - OrthancClient::Study study = patient.GetStudy(j); - std::cout << " Study: " << study.GetId() << std::endl; - - for (unsigned int k = 0; k < study.GetSeriesCount(); k++) - { - OrthancClient::Series series = study.GetSeries(k); - std::cout << " Series: " << series.GetId() << std::endl; - - for (unsigned int l = 0; l < series.GetInstanceCount(); l++) - { - std::cout << " Instance: " << series.GetInstance(l).GetId() << std::endl; - } - } - } - } - - return 0; - } - catch (OrthancClient::OrthancClientException e) - { - std::cerr << "EXCEPTION: [" << e.What() << "]" << std::endl; - return -1; - } -}
--- a/OrthancCppClient/Package/Test/Vtk/CMakeLists.txt Fri Jul 19 17:16:15 2013 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,19 +0,0 @@ -cmake_minimum_required(VERSION 2.8) - -project(OrthancCppClientTest) - -set(ORTHANC_ROOT ${CMAKE_SOURCE_DIR}/../../../..) -include(../../OrthancCppClient.cmake) - -find_package(VTK REQUIRED) -include(${VTK_USE_FILE}) - -add_executable(Test - main.cpp - ) - -if(VTK_LIBRARIES) - target_link_libraries(Test ${VTK_LIBRARIES}) -else() - target_link_libraries(Test vtkHybrid vtkVolumeRendering) -endif()
--- a/OrthancCppClient/Package/Test/Vtk/main.cpp Fri Jul 19 17:16:15 2013 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,179 +0,0 @@ -/** - * Orthanc - A Lightweight, RESTful DICOM Store - * Copyright (C) 2012-2013 Medical Physics Department, CHU of Liege, - * Belgium - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - **/ - - -#include <iostream> - -#include <vtkRenderWindow.h> -#include <vtkImageData.h> -#include <vtkPiecewiseFunction.h> -#include <vtkFixedPointVolumeRayCastMapper.h> -#include <vtkColorTransferFunction.h> -#include <vtkVolumeProperty.h> -#include <vtkRenderWindowInteractor.h> -#include <vtkRenderer.h> -#include <vtkSmartPointer.h> -#include <vtkOpenGLRenderer.h> -#include <vtkInteractorStyleTrackballCamera.h> - -#include "../../Build/OrthancClient.h" - - -void Display(OrthancClient::Series& series) -{ - /** - * Load the 3D image from Orthanc into VTK. - **/ - - vtkSmartPointer<vtkImageData> image = vtkSmartPointer<vtkImageData>::New(); - image->SetDimensions(series.GetWidth(), series.GetHeight(), series.GetInstanceCount()); - image->SetScalarType(VTK_SHORT); - image->AllocateScalars(); - - if (series.GetWidth() != 0 && - series.GetHeight() != 0 && - series.GetInstanceCount() != 0) - { - series.Load3DImage(image->GetScalarPointer(0, 0, 0), Orthanc::PixelFormat_SignedGrayscale16, - 2 * series.GetWidth(), 2 * series.GetHeight() * series.GetWidth()); - } - - image->SetSpacing(series.GetVoxelSizeX(), - series.GetVoxelSizeY(), - series.GetVoxelSizeZ()); - - - /** - * The following code is based on the VTK sample for MIP - * http://www.vtk.org/Wiki/VTK/Examples/Cxx/VolumeRendering/MinIntensityRendering - **/ - - // Create a transfer function mapping scalar value to opacity - double range[2]; - image->GetScalarRange(range); - - vtkSmartPointer<vtkPiecewiseFunction> opacityTransfer = - vtkSmartPointer<vtkPiecewiseFunction>::New(); - opacityTransfer->AddSegment(range[0], 0.0, range[1], 1.0); - - vtkSmartPointer<vtkColorTransferFunction> colorTransfer = - vtkSmartPointer<vtkColorTransferFunction>::New(); - colorTransfer->AddRGBPoint(0, 1.0, 1.0, 1.0); - colorTransfer->AddRGBPoint(range[1], 1.0, 1.0, 1.0); - - vtkSmartPointer<vtkVolumeProperty> property = - vtkSmartPointer<vtkVolumeProperty>::New(); - property->SetScalarOpacity(opacityTransfer); - property->SetColor(colorTransfer); - property->SetInterpolationTypeToLinear(); - - // Create a Maximum Intensity Projection rendering - vtkSmartPointer<vtkFixedPointVolumeRayCastMapper> mapper = - vtkSmartPointer<vtkFixedPointVolumeRayCastMapper>::New(); - mapper->SetBlendModeToMaximumIntensity(); - mapper->SetInput(image); - - vtkSmartPointer<vtkVolume> volume = vtkSmartPointer<vtkVolume>::New(); - volume->SetMapper(mapper); - volume->SetProperty(property); - - vtkSmartPointer<vtkRenderer> renderer = vtkSmartPointer<vtkOpenGLRenderer>::New(); - renderer->AddViewProp(volume); - renderer->SetBackground(0.1, 0.2, 0.3); // Background color dark blue - - vtkSmartPointer<vtkInteractorStyleTrackballCamera> style = - vtkSmartPointer<vtkInteractorStyleTrackballCamera>::New(); - - vtkSmartPointer<vtkRenderWindow> window = vtkSmartPointer<vtkRenderWindow>::New(); - window->AddRenderer(renderer); - - vtkSmartPointer<vtkRenderWindowInteractor> interactor = vtkSmartPointer<vtkRenderWindowInteractor>::New(); - interactor->SetRenderWindow(window); - interactor->SetInteractorStyle(style); - interactor->Start(); -} - - -int main() -{ - try - { - OrthancClient::Initialize("libOrthancCppClient.so"); - - // Use the commented code below if you know the identifier of a - // series that corresponds to a 3D image. - - /* - { - OrthancClient::OrthancConnection orthanc("http://localhost:8042"); - OrthancClient::Series series(orthanc, "c1c4cb95-05e3bd11-8da9f5bb-87278f71-0b2b43f5"); - Display(series); - return 0; - } - */ - - - // Try and find a 3D image inside the local store - OrthancClient::OrthancConnection orthanc("http://localhost:8042"); - - for (unsigned int i = 0; i < orthanc.GetPatientCount(); i++) - { - OrthancClient::Patient patient = orthanc.GetPatient(i); - std::cout << "Patient: " << patient.GetId() << std::endl; - - for (unsigned int j = 0; j < patient.GetStudyCount(); j++) - { - OrthancClient::Study study = patient.GetStudy(j); - std::cout << " Study: " << study.GetId() << std::endl; - - for (unsigned int k = 0; k < study.GetSeriesCount(); k++) - { - OrthancClient::Series series = study.GetSeries(k); - std::cout << " Series: " << series.GetId() << std::endl; - - if (series.Is3DImage()) - { - Display(series); - return 0; - } - else - { - std::cout << " => Not a 3D image..." << std::endl; - } - } - } - } - - std::cout << "Unable to find a 3D image in the local Orthanc store" << std::endl; - - return 0; - } - catch (OrthancClient::OrthancClientException e) - { - std::cerr << "EXCEPTION: [" << e.What() << "]" << std::endl; - return -1; - } -}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Resources/Archives/OrthancCppClient.cmake Fri Jul 19 17:17:36 2013 +0200 @@ -0,0 +1,62 @@ +include_directories(${ORTHANC_ROOT}/OrthancCppClient/Package/Laaw) + +set(STATIC_BUILD ON) +include(${ORTHANC_ROOT}/Resources/CMake/DownloadPackage.cmake) +include(${ORTHANC_ROOT}/Resources/CMake/JsonCppConfiguration.cmake) +include(${ORTHANC_ROOT}/Resources/CMake/LibCurlConfiguration.cmake) +include(${ORTHANC_ROOT}/Resources/CMake/LibPngConfiguration.cmake) +include(${ORTHANC_ROOT}/Resources/CMake/BoostConfiguration.cmake) +include(${ORTHANC_ROOT}/Resources/CMake/ZlibConfiguration.cmake) + +if (${CMAKE_COMPILER_IS_GNUCXX}) + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -pedantic -Wno-implicit-function-declaration") # --std=c99 makes libcurl not to compile + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -pedantic -Wno-long-long -Wno-variadic-macros") + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--as-needed") + set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--no-undefined") +elseif (${MSVC}) + add_definitions(-D_CRT_SECURE_NO_WARNINGS=1) +endif() + +if (${CMAKE_SYSTEM_NAME} STREQUAL "Windows") + if (${CMAKE_SIZEOF_VOID_P} EQUAL 4) + set(WINDOWS_DEF ${ORTHANC_ROOT}/OrthancCppClient/Package/Build/Windows32.def) + elseif (${CMAKE_SIZEOF_VOID_P} EQUAL 8) + set(WINDOWS_DEF ${ORTHANC_ROOT}/OrthancCppClient/Package/Build/Windows64.def) + else() + message(FATAL_ERROR "Support your platform here") + endif() +endif() + +add_library(OrthancCppClient SHARED + ${THIRD_PARTY_SOURCES} + ${ORTHANC_ROOT}/Core/OrthancException.cpp + ${ORTHANC_ROOT}/Core/Enumerations.cpp + ${ORTHANC_ROOT}/Core/Toolbox.cpp + ${ORTHANC_ROOT}/Core/HttpClient.cpp + ${ORTHANC_ROOT}/Core/MultiThreading/ArrayFilledByThreads.cpp + ${ORTHANC_ROOT}/Core/MultiThreading/ThreadedCommandProcessor.cpp + ${ORTHANC_ROOT}/Core/MultiThreading/SharedMessageQueue.cpp + ${ORTHANC_ROOT}/Core/FileFormats/PngReader.cpp + ${ORTHANC_ROOT}/OrthancCppClient/OrthancConnection.cpp + ${ORTHANC_ROOT}/OrthancCppClient/Series.cpp + ${ORTHANC_ROOT}/OrthancCppClient/Study.cpp + ${ORTHANC_ROOT}/OrthancCppClient/Instance.cpp + ${ORTHANC_ROOT}/OrthancCppClient/Patient.cpp + ${ORTHANC_ROOT}/OrthancCppClient/Package/SharedLibrary.cpp + ${ORTHANC_ROOT}/Resources/sha1/sha1.cpp + ${ORTHANC_ROOT}/Resources/md5/md5.c + ${ORTHANC_ROOT}/Resources/base64/base64.cpp + ${WINDOWS_DEF} + ) + +if (${CMAKE_SYSTEM_NAME} STREQUAL "Linux") + set_target_properties(OrthancCppClient + PROPERTIES LINK_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--no-undefined -Wl,--version-script=${ORTHANC_ROOT}/OrthancCppClient/Package/Laaw/VersionScript.map" + ) + target_link_libraries(OrthancCppClient pthread) +else() + set_target_properties(OrthancCppClient + PROPERTIES LINK_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--allow-multiple-definition -static-libgcc -static-libstdc++" + ) + target_link_libraries(OrthancCppClient ws2_32) +endif()