Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
103 changes: 13 additions & 90 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -1,22 +1,14 @@
name: ExamplePlugins
name: VolumeProjectorPlugin

on:
push:
pull_request:
workflow_dispatch:
inputs:
forceMacBuild:
description: 'If set true override the ENABLE_MACOS_BUILD to force a build'
type: boolean
default: false

env:
# Customize the CMake build type here (Release, Debug, RelWithDebInfo, etc.)
BUILD_TYPE: Release
MACENABLED: ${{ inputs.forceMacBuild }}
USERNAME: ManiVaultStudio
FEED_URL: https://nuget.pkg.github.com/ManiVaultStudio/index.json
VCPKG_BINARY_SOURCES: "clear;nuget,https://nuget.pkg.github.com/ManiVaultStudio/index.json,readwrite"

# for matrix check https://docs.github.com/en/actions/reference/specifications-for-github-hosted-runners
jobs:
Expand All @@ -28,7 +20,9 @@ jobs:
- name: Get matrix from file
id: matrix_setup
uses: ManiVaultStudio/github-actions/matrix_setup@main

with:
matrix_ids : 'windows_2022 linux_gcc13'

cross-platform-build:
name: Cross platform build
needs: prepare_matrix
Expand Down Expand Up @@ -79,84 +73,6 @@ jobs:
key: ${{ secrets.RULESSUPPORT_DEPLOY_KEY }}
known_hosts: github.com AAAAB3NzaC1yc2EAAAABIwAAAQEAq2A7hRGmdnm9tUDbO9IDSwBK6TbQa+PXYPCPy6rbTrTtw7PHkccKrpp0yVhp5HdEIcKr6pLlVDBfOLX9QUsyCOV0wzfjIJNlGEYsdlLJizHhbn2mUjvSAHQqZETYP81eFzLQNnPHt4EVVUh7VfDESU84KezmD5QlWpXLmvU31/yMf+Se8xhHTvKSCZIFImWwoG6mbUoWf9nzpIoaSjB+weqqUUmpaaasXVal72J+UX2B+2RPW3RcT0eOzQgqlJL3RKrTJvdsjE3JEAvGq3lGHSZXy28G3skua2SmVi/w4yCE6gbODqnTWlg7+wC604ydGXA8VJiS5ap43JXiUFFAaQ==

# Install vcpkg
- name: Clone vcpkg
run: |
cd ${{ github.workspace }}
git clone --branch 2024.08.23 --single-branch https://github.com/microsoft/vcpkg.git

# Bootstrap vcpkg
- name: Bootstrap vcpkg
if: startsWith(matrix.os, 'windows')
shell: pwsh
run: |
${{ github.workspace }}\vcpkg\bootstrap-vcpkg.bat
echo "VCPKG_ROOT=${{ github.workspace }}\vcpkg" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
echo "VCPKG_EXE=${{ github.workspace }}\vcpkg\vcpkg.exe" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
echo "VCPKG_LIBRARY_LINKAGE=dynamic" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append

- name: Bootstrap vcpkg
if: startsWith(matrix.os, 'ubuntu') || startsWith(matrix.os, 'macos')
shell: bash
run: |
${{ github.workspace }}/vcpkg/bootstrap-vcpkg.sh
echo "VCPKG_ROOT=${{ github.workspace }}/vcpkg" >> $GITHUB_ENV
echo "VCPKG_EXE=${{ github.workspace }}/vcpkg/vcpkg" >> $GITHUB_ENV
echo "VCPKG_LIBRARY_LINKAGE=dynamic" >> $GITHUB_ENV

# Use cached vcpkg packges if possible
- name: Add NuGet sources
if: startsWith(matrix.os, 'windows')
shell: pwsh
run: |
.$(${{ env.VCPKG_EXE }} fetch nuget) `
sources add `
-Source "${{ env.FEED_URL }}" `
-StorePasswordInClearText `
-Name GitHubPackages `
-UserName "${{ env.USERNAME }}" `
-Password "${{ secrets.GH_VCPKG_PACKAGES }}"
.$(${{ env.VCPKG_EXE }} fetch nuget) `
setapikey "${{ secrets.GH_VCPKG_PACKAGES }}" `
-Source "${{ env.FEED_URL }}"

- name: Add NuGet sources
if: startsWith(matrix.os, 'ubuntu') || startsWith(matrix.os, 'macos')
shell: bash
run: |
mono `${{ env.VCPKG_EXE }} fetch nuget | tail -n 1` \
sources add \
-Source "${{ env.FEED_URL }}" \
-StorePasswordInClearText \
-Name GitHubPackages \
-UserName "${{ env.USERNAME }}" \
-Password "${{ secrets.GH_VCPKG_PACKAGES }}"
mono `${{ env.VCPKG_EXE }} fetch nuget | tail -n 1` \
setapikey "${{ secrets.GH_VCPKG_PACKAGES }}" \
-Source "${{ env.FEED_URL }}"

# Install vcpkg dependencies
- name: Install vcpkg dependencies
if: startsWith(matrix.os, 'windows')
shell: pwsh
run: |
cd ${{ github.workspace }}
${{ env.VCPKG_EXE }} install --triplet x64-windows

- name: Install vcpkg dependencies
if: startsWith(matrix.os, 'ubuntu')
shell: bash
run: |
cd ${{ github.workspace }}
${{ env.VCPKG_EXE }} install --triplet x64-linux-dynamic

- name: Install vcpkg dependencies
if: startsWith(matrix.os, 'macos')
shell: bash
run: |
cd ${{ github.workspace }}
${{ env.VCPKG_EXE }} install --triplet x64-osx-dynamic

# Build the package
- name: Windows build
if: startsWith(matrix.os, 'windows')
Expand All @@ -169,6 +85,11 @@ jobs:
conan-password: ${{secrets.LKEB_UPLOAD_USER_PASSWORD}}
conan-pem: ${{secrets.LKEB_UPLOAD_CERT_CHAIN}}
rs_ssh_key: ${{ secrets.RULESSUPPORT_DEPLOY_KEY }}
sentry-upload: startsWith(github.ref, 'refs/heads/release/')
sentry-url: ${{secrets.LKEB_SENTRY_URL }}
sentry-org: ${{secrets.LKEB_SENTRY_ORG }}
sentry-project: ${{secrets.LKEB_SENTRY_PROJECT }}
sentry-auth-token: ${{secrets.LKEB_SENTRY_AUTH_TOKEN }}

- name: Linux build
if: startsWith(matrix.os, 'ubuntu')
Expand All @@ -179,21 +100,23 @@ jobs:
conan-libcxx-version: ${{matrix.build-libcxx}}
conan-build-type: ${{matrix.build-config}}
conan-build-os: ${{matrix.build-os}}
build-arch: ${{matrix.build-arch}}
conan-user: ${{secrets.LKEB_UPLOAD_USER}}
conan-password: ${{secrets.LKEB_UPLOAD_USER_PASSWORD}}
conan-pem: ${{secrets.LKEB_UPLOAD_CERT_CHAIN}}
conan-cc: gcc-${{matrix.build-cversion}}
conan-cxx: g++-${{matrix.build-cversion}}

- name: Mac build
if: startsWith(matrix.os, 'macos') && (env.MACENABLED == 'true' || vars.ENABLE_MACOS_BUILD == 'True')
if: startsWith(matrix.os, 'macos')
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}}
build-arch: ${{matrix.build-arch}}
conan-user: ${{secrets.LKEB_UPLOAD_USER}}
conan-password: ${{secrets.LKEB_UPLOAD_USER_PASSWORD}}
conan-pem: ${{secrets.LKEB_UPLOAD_CERT_CHAIN}}
conan-pem: ${{secrets.LKEB_UPLOAD_CERT_CHAIN}}
39 changes: 29 additions & 10 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,23 +1,42 @@
cmake_minimum_required(VERSION 3.17)
cmake_minimum_required(VERSION 3.22)

if(NOT DEFINED MV_EXAMPLES_USE_VCPKG)
set(MV_EXAMPLES_USE_VCPKG OFF)
elseif(MV_EXAMPLES_USE_VCPKG)
if(NOT DEFINED MV_DRV_USE_VCPKG)
set(MV_DRV_USE_VCPKG OFF)
elseif(MV_DRV_USE_VCPKG)
message(STATUS "DVRPlugins: Using vcpkg to install dependencies")
endif()

# -----------------------------------------------------------------------------
# ExamplePlugins
# -----------------------------------------------------------------------------
option(MV_UNITY_BUILD "Combine target source files into batches for faster compilation" OFF)

set(PROJECT "DVRPlugins")
PROJECT(${PROJECT})

# -----------------------------------------------------------------------------
# CMake Options
# -----------------------------------------------------------------------------
set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_AUTOMOC ON)

if(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W3 /DWIN32 /EHsc /MP /permissive- /Zc:__cplusplus")
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /MDd")
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} /MD")
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /MD")
endif()

# -----------------------------------------------------------------------------
# DVRPlugins
# -----------------------------------------------------------------------------

set(DVRVolumeData_INCLUDE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/DVRVolumeData")

add_subdirectory(DVRVolumeData) # add first since other projects depend on it
add_subdirectory(DVRVolumeLoader)
add_subdirectory(DVRViewPlugin)
add_subdirectory(DVRTransferFunction)


set_target_properties(DVRVolumeLoader DVRViewPlugin DVRTransferFunction
set_target_properties(DVRVolumeData DVRVolumeLoader DVRViewPlugin DVRTransferFunction
PROPERTIES
FOLDER DVRPlugins
)
)
69 changes: 22 additions & 47 deletions DVRTransferFunction/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,34 +1,18 @@
cmake_minimum_required(VERSION 3.17)

option(MV_UNITY_BUILD "Combine target source files into batches for faster compilation" OFF)
cmake_minimum_required(VERSION 3.23)

# -----------------------------------------------------------------------------
# TransferFunction Plugin
# -----------------------------------------------------------------------------
set(PROJECT "DVRTransferFunction")
PROJECT(${PROJECT})

# -----------------------------------------------------------------------------
# CMake Options
# -----------------------------------------------------------------------------
set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_AUTOMOC ON)

if(MSVC)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W3 /DWIN32 /EHsc /MP /permissive- /Zc:__cplusplus")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /NODEFAULTLIB:LIBCMT")
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /MDd")
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /MD")
endif(MSVC)
set(DVRTRANSFERFUNCTION "DVRTransferFunction")
PROJECT("DVRTransferFunction"
LANGUAGES CXX
)

# -----------------------------------------------------------------------------
# Dependencies
# -----------------------------------------------------------------------------
find_package(Qt6 COMPONENTS Widgets WebEngineWidgets OpenGL OpenGLWidgets REQUIRED)

find_package(ManiVault COMPONENTS Core PointData ImageData CONFIG)
find_package(ManiVault COMPONENTS Core PointData ImageData CONFIG QUIET)

# -----------------------------------------------------------------------------
# Source files
Expand All @@ -38,10 +22,6 @@ set(PLUGIN
src/TransferFunctionPlugin.cpp
)

set(PLUGIN_MOC_HEADERS
src/TransferFunctionPlugin.h
)

set(UI
src/TransferFunctionWidget.h
src/TransferFunctionWidget.cpp
Expand Down Expand Up @@ -97,59 +77,54 @@ source_group(Aux FILES ${AUX})
# -----------------------------------------------------------------------------
# CMake Target
# -----------------------------------------------------------------------------
add_library(${PROJECT} SHARED ${SOURCES} ${RESOURCES} ${RESOURCE_FILES} ${AUX})
add_library(${DVRTRANSFERFUNCTION} SHARED ${SOURCES} ${RESOURCES} ${RESOURCE_FILES} ${AUX})

# -----------------------------------------------------------------------------
# Target include directories
# -----------------------------------------------------------------------------
target_include_directories(${PROJECT} PRIVATE "${ManiVault_INCLUDE_DIR}")
target_include_directories(${DVRTRANSFERFUNCTION} PRIVATE "${ManiVault_INCLUDE_DIR}")

# -----------------------------------------------------------------------------
# Target properties
# -----------------------------------------------------------------------------
target_compile_features(${PROJECT} PRIVATE cxx_std_17)
target_compile_features(${DVRTRANSFERFUNCTION} PRIVATE cxx_std_20)

if(MV_UNITY_BUILD)
set_target_properties(${PROJECT} PROPERTIES UNITY_BUILD ON)
set_target_properties(${DVRTRANSFERFUNCTION} PROPERTIES UNITY_BUILD ON)
endif()

# -----------------------------------------------------------------------------
# Target library linking
# -----------------------------------------------------------------------------
target_link_libraries(${PROJECT} PRIVATE Qt6::Widgets)
target_link_libraries(${PROJECT} PRIVATE Qt6::WebEngineWidgets)
target_link_libraries(${PROJECT} PRIVATE Qt6::OpenGL)
target_link_libraries(${PROJECT} PRIVATE Qt6::OpenGLWidgets)
target_link_libraries(${DVRTRANSFERFUNCTION} PRIVATE Qt6::Widgets)
target_link_libraries(${DVRTRANSFERFUNCTION} PRIVATE Qt6::WebEngineWidgets)
target_link_libraries(${DVRTRANSFERFUNCTION} PRIVATE Qt6::OpenGL)
target_link_libraries(${DVRTRANSFERFUNCTION} PRIVATE Qt6::OpenGLWidgets)

target_link_libraries(${PROJECT} PRIVATE ManiVault::Core)
target_link_libraries(${PROJECT} PRIVATE ManiVault::PointData)
target_link_libraries(${PROJECT} PRIVATE ManiVault::ImageData)
target_link_libraries(${DVRTRANSFERFUNCTION} PRIVATE ManiVault::Core)
target_link_libraries(${DVRTRANSFERFUNCTION} PRIVATE ManiVault::PointData)
target_link_libraries(${DVRTRANSFERFUNCTION} PRIVATE ManiVault::ImageData)

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

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

set_target_properties(${PROJECT}
PROPERTIES
FOLDER ViewPlugins
)

# -----------------------------------------------------------------------------
# Miscellaneous
# -----------------------------------------------------------------------------
# Automatically set the debug environment (command + working directory) for MSVC
if(MSVC)
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">)
if(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
set_property(TARGET ${DVRTRANSFERFUNCTION} PROPERTY VS_DEBUGGER_WORKING_DIRECTORY $<IF:$<CONFIG:DEBUG>,${ManiVault_INSTALL_DIR}/Debug,$<IF:$<CONFIG:RELWITHDEBINFO>,${ManiVault_INSTALL_DIR}/RelWithDebInfo,${ManiVault_INSTALL_DIR}/Release>>)
set_property(TARGET ${DVRTRANSFERFUNCTION} PROPERTY VS_DEBUGGER_COMMAND $<IF:$<CONFIG:DEBUG>,"${ManiVault_INSTALL_DIR}/Debug/ManiVault Studio.exe",$<IF:$<CONFIG:RELWITHDEBINFO>,"${ManiVault_INSTALL_DIR}/RelWithDebInfo/ManiVault Studio.exe","${ManiVault_INSTALL_DIR}/Release/ManiVault Studio.exe">>)
endif()
4 changes: 3 additions & 1 deletion DVRTransferFunction/src/DatasetsAction.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@
#include <ClusterData/ClusterData.h>
#include <ColorData/ColorData.h>

#include <util/StyledIcon.h>

#include <QMenu>

using namespace mv;
Expand All @@ -15,7 +17,7 @@ DatasetsAction::DatasetsAction(QObject* parent, const QString& title) :
_transferFunctionPlugin(dynamic_cast<TransferFunctionPlugin*>(parent->parent())),
_positionDatasetPickerAction(this, "Position")
{
setIcon(mv::Application::getIconFont("FontAwesome").getIcon("database"));
setIcon(util::StyledIcon("database"));
setToolTip("Manage loaded datasets for position and color");
setConfigurationFlag(WidgetAction::ConfigurationFlag::ForceCollapsedInGroup);
setLabelSizingType(LabelSizingType::Auto);
Expand Down
4 changes: 2 additions & 2 deletions DVRTransferFunction/src/GradientPickerAction.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -105,8 +105,8 @@ GradientPickerAction::Widget::Widget(QWidget* parent, GradientPickerAction* grad
_gradientTextureIDAction(this, "Texture ID", 0, 1, 0),
_gradientXOffsetAction(this, "X Offset", -1, 1, 0),
_gradientYOffsetAction(this, "Y Offset", -1, 1, 0),
_gradientWidthAction(this, "Width", 0.1, 5, 0),
_gradientHeightAction(this, "Height", 0.1, 5, 0),
_gradientWidthAction(this, "Width", 0.1f, 5, 0),
_gradientHeightAction(this, "Height", 0.1f, 5, 0),
_gradientRotationAction(this, "Rotation", 0, 90, 0),
_gradientImageLabel(new QLabel(this)),
_updateElements(true)
Expand Down
Loading