Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
40 commits
Select commit Hold shift + click to select a range
d651165
Add initial OpenGL volume renderer
JulianThijssen Jul 31, 2023
63fc104
Change perspective to 90deg
JulianThijssen Aug 7, 2023
61f3567
Lower camera distance
JulianThijssen Aug 7, 2023
9d30020
No longer vertically flip the volume
JulianThijssen Aug 7, 2023
3e716a6
Add action class for picking renderer backend
JulianThijssen Aug 7, 2023
f9d9dff
Integrate renderer toggle into plugin
JulianThijssen Aug 7, 2023
50a00f0
Move OpenGL renderer and widget into separate folder
JulianThijssen Aug 7, 2023
6c72408
No longer ask for a specific Qt patch version
JulianThijssen Aug 7, 2023
72bca9d
Insert overarching widget between plugin and renderer widgets
JulianThijssen Aug 7, 2023
b510472
Update rendering of OpenGL viewer
JulianThijssen Aug 14, 2023
1316a5b
Increase background points opacity
JulianThijssen Aug 15, 2023
fe829cf
Change background color
JulianThijssen Aug 15, 2023
06f7ba1
Change opacity a little again
JulianThijssen Aug 15, 2023
f340da5
Change camera perspective
JulianThijssen Aug 22, 2023
bdcb13c
Change opacity curve of scalars
JulianThijssen Aug 22, 2023
be8e072
Change rendering a bit
JulianThijssen Aug 22, 2023
4416cf8
Add cursor dot
JulianThijssen Aug 22, 2023
454ac1e
Serialize renderer and dataset in volume viewer
JulianThijssen Aug 23, 2023
4ff5364
Lower cursor size
JulianThijssen Aug 23, 2023
bcc51d9
Update view after setting data and set initial camera position
JulianThijssen Aug 23, 2023
f50fb26
Serialize color dataset
JulianThijssen Aug 23, 2023
2ef05c6
Make cursor size a little larger
JulianThijssen Aug 23, 2023
bc4b066
Add upload_user details for CI
bldrvnlw Aug 21, 2023
2ecaeee
CI - remove ssh key agent install
bldrvnlw Aug 21, 2023
d069172
Correct file name in include
bldrvnlw Aug 21, 2023
55a73a8
[skip ci] Update hdps URL to ManiVaultStudio
bldrvnlw Aug 25, 2023
63f5456
Purge VTK from the dependencies
JulianThijssen Aug 30, 2023
83664ee
update to latest core
ChangLi27 Feb 20, 2024
4fedd3a
Add focus selection and focus floodfill
ChangLi27 Apr 4, 2024
f907784
Use the same color as GeneSurfer
ChangLi27 Apr 22, 2024
3edd81d
Add Focus selection norm and Focus floodfill norm
ChangLi27 May 6, 2024
c3a26bb
Renove rebundant code for initializing focus floodfill
ChangLi27 May 6, 2024
c880f65
Update CI build files
JulianThijssen May 7, 2024
0dd9542
Update conanfile to remove VTK deps
JulianThijssen May 7, 2024
95e5042
Update CMakeLists and conanfile
JulianThijssen May 7, 2024
f892c20
Change capitalization of Common.h
JulianThijssen May 7, 2024
5f6bae5
Fix compiler capitalization issue
JulianThijssen May 7, 2024
1b4e012
Add Points dependency
JulianThijssen May 10, 2024
8195093
Remove Focus Floodfill
ChangLi27 May 13, 2024
75fcbd6
Update CMake to latest core v1.2
JulianThijssen Feb 2, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
66 changes: 23 additions & 43 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,6 @@ name: VolumeViewerPlugin

on:
push:
branches:
- master
- main
- release/*
- feature/0.3

pull_request:
workflow_dispatch:

Expand All @@ -34,37 +28,30 @@ jobs:
build-runtime: MD
build-config: Release

# - name: Linux_gcc9
# os: ubuntu-18.04
# build-compiler: gcc
# build-cversion: 9
# build-config: Release
# build-os: Linux
# build-libcxx: libstdc++
- name: Linux_gcc11
os: ubuntu-22.04
build-cc: gcc
build-cxx: g++
build-compiler: gcc
build-cversion: 11
build-config: Release
build-os: Linux
build-libcxx: libstdc++

- name: Macos_xcode12.4
os: macos-11
- name: Macos_xcode13.4
os: macos-12
build-compiler: apple-clang
build-cversion: "12.0"
build-cversion: 13
build-config: Release
build-os: Macos
build-xcode-version: 12.4
build-xcode-version: 13.4
build-libcxx: libc++

steps:
- name: Checkout the source
if: github.event_name != 'pull_request'
uses: actions/checkout@v2
with:
submodules: recursive
fetch-depth: 0

- name: Checkout the source - pull request
if: github.event_name == 'pull_request'
uses: actions/checkout@v2
with:
submodules: recursive
fetch-depth: 0
ref: ${{ github.event.pull_request.head.ref }}

- name: Select Xcode for Mac only
Expand All @@ -75,17 +62,10 @@ jobs:
- name: Setup python version
uses: actions/setup-python@v1
with:
python-version: "3.7"

# windows-2016 need the SSHAgentFeature added
- name: Start ssh key agent
if: matrix.os == 'windows-2019'
run: |
choco install --no-progress -my openssh --params '"/SSHAgentFeature"'
refreshenv
python-version: "3.11"

- name: Start ssh key agent
uses: webfactory/ssh-agent@v0.5.0
uses: webfactory/ssh-agent@v0.7.0
with:
ssh-private-key: ${{ secrets.RULESSUPPORT_DEPLOY_KEY }}

Expand All @@ -97,25 +77,25 @@ jobs:

- name: Windows build
if: startsWith(runner.os, 'Windows')
uses: hdps/github-actions/conan_windows_build@main
uses: ManiVaultStudio/github-actions/conan_windows_build@main
with:
conan-visual-version: ${{matrix.build-cversion}}
conan-visual-runtime: ${{matrix.build-runtime}}
conan-build-type: ${{matrix.build-config}}
conan-user: ${{secrets.LKEB_ARTIFACTORY_USER}}
conan-password: ${{secrets.LKEB_ARTIFACTORY_PASSWORD}}
conan-pem: ${{secrets.LKEB_CERT_CHAIN}}
conan-user: ${{secrets.LKEB_UPLOAD_USER}}
conan-password: ${{secrets.LKEB_UPLOAD_USER_PASSWORD}}
conan-pem: ${{secrets.LKEB_UPLOAD_CERT_CHAIN}}
rs_ssh_key: ${{ secrets.RULESSUPPORT_DEPLOY_KEY }}

- name: Linux Mac build
if: "!startsWith(runner.os, 'Windows')"
uses: hdps/github-actions/conan_linuxmac_build@main
uses: ManiVaultStudio/github-actions/conan_linuxmac_build@main
with:
conan-compiler: ${{matrix.build-compiler}}
conan-compiler-version: ${{matrix.build-cversion}}
conan-libcxx-version: ${{matrix.build-libcxx}}
conan-build-type: ${{matrix.build-config}}
conan-build-os: ${{matrix.build-os}}
conan-user: ${{secrets.LKEB_ARTIFACTORY_USER}}
conan-password: ${{secrets.LKEB_ARTIFACTORY_PASSWORD}}
conan-pem: ${{secrets.LKEB_CERT_CHAIN}}
conan-user: ${{secrets.LKEB_UPLOAD_USER}}
conan-password: ${{secrets.LKEB_UPLOAD_USER_PASSWORD}}
conan-pem: ${{secrets.LKEB_UPLOAD_CERT_CHAIN}}
112 changes: 72 additions & 40 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -10,42 +10,80 @@ set(CMAKE_AUTORCC ON)
set(CMAKE_AUTOUIC ON)

if(MSVC)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /DWIN32 /EHsc /MP /permissive- /Zc:__cplusplus")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /LTCG /NODEFAULTLIB:LIBCMT")
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /MDd")
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /MD")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /DWIN32 /EHsc /MP /permissive- /Zc:__cplusplus")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /LTCG /NODEFAULTLIB:LIBCMT")
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /MDd")
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /MD")
endif(MSVC)

# vtk Dir build needs to be in the same mode as hdps is to be run. (for release hdps release vtk is needed)
#set(VTK_DIR $ENV{VTK_DIR})
find_package(VTK CONFIG REQUIRED)

# -----------------------------------------------------------------------------
# Dependencies
# -----------------------------------------------------------------------------
find_package(OpenGL REQUIRED)
find_package(Qt6 6.3.1 COMPONENTS Widgets WebEngineWidgets Xml OpenGL OpenGLWidgets REQUIRED)
find_package(Qt6 COMPONENTS Core Widgets WebEngineWidgets Xml OpenGL OpenGLWidgets REQUIRED)
find_package(OpenMP)
# Normalize the incoming install path
file(TO_CMAKE_PATH $ENV{HDPS_INSTALL_DIR} INSTALL_DIR)

find_package(ManiVault COMPONENTS Core PointData ClusterData ImageData CONFIG REQUIRED)

set(PLUGIN
src/Common.h
src/VolumeViewerPlugin.h
src/VolumeViewerPlugin.cpp
src/Common.h
src/VolumeViewerPlugin.h
src/VolumeViewerPlugin.cpp
)

set(RENDERERS
src/Renderer/OpenGL/VolumeRenderer.h
src/Renderer/OpenGL/VolumeRenderer.cpp
src/Renderer/OpenGL/OpenGLRendererWidget.h
src/Renderer/OpenGL/OpenGLRendererWidget.cpp
)

set(ACTIONS
src/ColoringAction.h
src/ColoringAction.cpp
src/DimensionAction.h
src/DimensionAction.cpp
src/PositionAction.h
src/PositionAction.cpp
src/RendererSettingsAction.h
src/RendererSettingsAction.cpp
src/SelectedPointsAction.h
src/SelectedPointsAction.cpp
src/SettingsAction.h
src/SettingsAction.cpp
src/SlicingAction.h
src/SlicingAction.cpp
src/ThresholdAction.h
src/ThresholdAction.cpp
src/Actions/PickRendererAction.h
src/Actions/PickRendererAction.cpp
)

file(GLOB ACTIONS src/*Action.*)
file(GLOB WIDGETS src/*Widget.*)
set(WIDGETS
src/Widgets/VolumeViewerWidget.h
src/Widgets/VolumeViewerWidget.cpp
)

set(QRESOURCES
res/ViewerResources.qrc
)

QT6_ADD_RESOURCES(RESOURCE_FILES ${QRESOURCES})

file(GLOB JSON src/*.json)

set(SOURCES ${PLUGIN} ${WIDGETS} ${ACTIONS})
set(SOURCES ${PLUGIN} ${RENDERERS} ${WIDGETS} ${ACTIONS})
set(AUX ${JSON})

source_group(Plugin FILES ${PLUGIN})
source_group(Renderers FILES ${RENDERERS})
source_group(Widgets FILES ${WIDGETS})
source_group(Actions FILES ${ACTIONS})
source_group(Resources FILES ${QRESOURCES})

add_library(${PROJECT} SHARED ${SOURCES} ${AUX})
add_library(${PROJECT} SHARED ${SOURCES} ${AUX} ${QRESOURCES} ${RESOURCE_FILES})

target_include_directories(${PROJECT} PRIVATE "${INSTALL_DIR}/$<CONFIGURATION>/include/")
target_include_directories(${PROJECT} PRIVATE "${ManiVault_INCLUDE_DIR}")
target_include_directories(${PROJECT} PRIVATE src)

target_compile_features(${PROJECT} PRIVATE cxx_std_17)
Expand All @@ -55,38 +93,32 @@ target_link_libraries(${PROJECT} PRIVATE Qt6::WebEngineWidgets)
target_link_libraries(${PROJECT} PRIVATE Qt6::OpenGL)
target_link_libraries(${PROJECT} PRIVATE Qt6::OpenGLWidgets)
target_link_libraries(${PROJECT} PRIVATE ${OPENGL_LIBRARIES})
target_link_libraries(${PROJECT} PRIVATE ${VTK_LIBRARIES})
vtk_module_autoinit(TARGETS ${PROJECT} MODULES ${VTK_LIBRARIES})

set(HDPS_LINK_PATH "${INSTALL_DIR}/$<CONFIGURATION>/lib")
set(PLUGIN_LINK_PATH "${INSTALL_DIR}/$<CONFIGURATION>/$<IF:$<CXX_COMPILER_ID:MSVC>,lib,Plugins>")
set(HDPS_LINK_SUFFIX $<IF:$<CXX_COMPILER_ID:MSVC>,${CMAKE_LINK_LIBRARY_SUFFIX},${CMAKE_SHARED_LIBRARY_SUFFIX}>)

set(HDPS_LINK_LIBRARY "${HDPS_LINK_PATH}/${CMAKE_SHARED_LIBRARY_PREFIX}HDPS_Public${HDPS_LINK_SUFFIX}")
set(POINTDATA_LINK_LIBRARY "${PLUGIN_LINK_PATH}/${CMAKE_SHARED_LIBRARY_PREFIX}PointData${HDPS_LINK_SUFFIX}")
set(IMAGEDATA_LINK_LIBRARY "${PLUGIN_LINK_PATH}/${CMAKE_SHARED_LIBRARY_PREFIX}ImageData${HDPS_LINK_SUFFIX}")
set(CLUSTERDATA_LINK_LIBRARY "${PLUGIN_LINK_PATH}/${CMAKE_SHARED_LIBRARY_PREFIX}ClusterData${HDPS_LINK_SUFFIX}")
set(MV_LINK_PATH "${ManiVault_INSTALL_DIR}/$<CONFIGURATION>/lib")
set(PLUGIN_LINK_PATH "${ManiVault_INSTALL_DIR}/$<CONFIGURATION>/$<IF:$<CXX_COMPILER_ID:MSVC>,lib,Plugins>")
set(MV_LINK_SUFFIX $<IF:$<CXX_COMPILER_ID:MSVC>,${CMAKE_LINK_LIBRARY_SUFFIX},${CMAKE_SHARED_LIBRARY_SUFFIX}>)

target_link_libraries(${PROJECT} PRIVATE "${HDPS_LINK_LIBRARY}")
target_link_libraries(${PROJECT} PRIVATE "${POINTDATA_LINK_LIBRARY}")
target_link_libraries(${PROJECT} PRIVATE "${IMAGEDATA_LINK_LIBRARY}")
target_link_libraries(${PROJECT} PRIVATE "${CLUSTERDATA_LINK_LIBRARY}")
# Link to ManiVault and data plugins
target_link_libraries(${PROJECT} PRIVATE ManiVault::Core)
target_link_libraries(${PROJECT} PRIVATE ManiVault::PointData)
target_link_libraries(${PROJECT} PRIVATE ManiVault::ClusterData)
target_link_libraries(${PROJECT} PRIVATE ManiVault::ImageData)

install(TARGETS ${PROJECT}
RUNTIME DESTINATION Plugins COMPONENT PLUGINS # Windows .dll
LIBRARY DESTINATION Plugins COMPONENT PLUGINS # Linux/Mac .so
)

add_custom_command(TARGET ${PROJECT} POST_BUILD
COMMAND "${CMAKE_COMMAND}"
--install ${CMAKE_CURRENT_BINARY_DIR}
--config $<CONFIGURATION>
--prefix ${INSTALL_DIR}/$<CONFIGURATION>
--verbose
COMMAND "${CMAKE_COMMAND}"
--install ${CMAKE_CURRENT_BINARY_DIR}
--config $<CONFIGURATION>
--prefix ${ManiVault_INSTALL_DIR}/$<CONFIGURATION>
--verbose
)

# Automatically set the debug environment (command + working directory) for MSVC
if(MSVC)
set_property(TARGET ${PROJECT} PROPERTY VS_DEBUGGER_WORKING_DIRECTORY $<IF:$<CONFIG:DEBUG>,${INSTALL_DIR}/debug,${INSTALL_DIR}/release>)
set_property(TARGET ${PROJECT} PROPERTY VS_DEBUGGER_COMMAND $<IF:$<CONFIG:DEBUG>,${INSTALL_DIR}/debug/HDPS.exe,${INSTALL_DIR}/release/HDPS.exe>)
set_property(TARGET ${PROJECT} PROPERTY VS_DEBUGGER_WORKING_DIRECTORY $<IF:$<CONFIG:DEBUG>,${ManiVault_INSTALL_DIR}/debug,${ManiVault_INSTALL_DIR}/release>)
set_property(TARGET ${PROJECT} PROPERTY VS_DEBUGGER_COMMAND $<IF:$<CONFIG:DEBUG>,${ManiVault_INSTALL_DIR}/debug/ManiVault\ Studio.exe,${ManiVault_INSTALL_DIR}/release/ManiVault\ Studio.exe>)
endif()
Loading