From e830c00a02162918c13ee81c06a4b4ea25682c0b Mon Sep 17 00:00:00 2001 From: toloudis Date: Tue, 16 Jan 2024 16:55:35 -0800 Subject: [PATCH 01/19] add some docs for the latest features --- docs/agave.rst | 31 ++++++++++++++++++++++++------- docs/index.rst | 2 +- 2 files changed, 25 insertions(+), 8 deletions(-) diff --git a/docs/agave.rst b/docs/agave.rst index 13321e79..494c1043 100644 --- a/docs/agave.rst +++ b/docs/agave.rst @@ -249,6 +249,16 @@ Click the checkbox to show or hide a bounding box line around the volume data. Clicking on the color square allows you to select a color for the bounding box lines. +Scale Bar +^^^^^^^^^ + +Click the checkbox to show or hide a scale bar at the bottom right corner +of the display. In a perspective camera, due to foreshortening, the +scale bar will represent the distance between tickmarks shown on the +bounding box of the volume. You will have to have bounding box turned on +in order to see it. The scale bar will use physical units if available +in the loaded volume data. + Volume Scale ~~~~~~~~~~~~ @@ -285,6 +295,13 @@ Area Light Theta, Phi, and Distance These three coordinates let you position the light anywhere on a sphere around the volume. Theta and Phi are in radians (where 3.14159 radians is half a circle). +If you press the R key while the main viewport has input focus +(you may have to click once inside the window to give it focus), an +interactive rotation widget will appear in the viewport. You can click +and drag on the widget to rotate the light direction around the volume. +If you click on the colored lines of the axes, rotation will be +constrained to that axis. Press R again to hide the rotate manipulator. + |image0| @@ -489,7 +506,7 @@ Camera Panel The camera panel controls will let you affect the image's exposure amount, and control the focus blurring. -Film Exposure +Exposure ~~~~~~~~~~~~~ The exposure value will brighten or darken the overall image. @@ -518,7 +535,7 @@ focus. A small aperture size will keep the entire image in focus at all times. A large aperture size will let you only focus on a thin plane a specific distance from the camera. -Projection Field of View +Field of View ~~~~~~~~~~~~~~~~~~~~~~~~ The field of view is an angle in degrees describing how narrow or wide @@ -542,11 +559,11 @@ Time Panel For time series data, move the time slider or change the numeric input to load a new time sample. Beware -that this is loading a whole new volume and can take some time. If your -dataset only has a single time, then the slider will have no effect. -Nothing will be loaded while dragging the -slider; AGAVE will load the new time sample when the slider is released -or the numeric input is incremented. +that this is loading a whole new volume and can take some time. Nothing +will be loaded while dragging the slider; AGAVE will load the new time +sample when the slider is released or the numeric input is incremented. +If your dataset only has a single time, then the Time Panel will be +hidden. Python Interface diff --git a/docs/index.rst b/docs/index.rst index ebb0fb14..98a67496 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -11,7 +11,7 @@ Advanced GPU Accelerated Volume Explorer AGAVE is a desktop application for viewing multichannel volume data. -AGAVE’s core viewing engine uses a "progressive path tracer". During interactive use, your image will appear grainy at first, but will refine over time as the rendering system builds up more and more render passes. The speed of refinement depends on your hardware, the size and complexity of the image, and the AGAVE parameters you set, i.e., the faster your GPU, the quicker a rendering will resolve. GPU memory dictates the maximum size of the files AGAVE can load. As soon as you change any viewing parameter, including your camera angle, the rendering will start over. +AGAVE's core viewing engine uses a "progressive path tracer". During interactive use, your image will appear grainy at first, but will refine over time as the rendering system builds up more and more render passes. The speed of refinement depends on your hardware, the size and complexity of the image, and the AGAVE parameters you set, i.e., the faster your GPU, the quicker a rendering will resolve. GPU memory dictates the maximum size of the files AGAVE can load. As soon as you change any viewing parameter, including your camera angle, the rendering will start over. .. toctree:: :includehidden: From 7fd9be8e9cc11ec84f9136d38fdd19c4a5c395e5 Mon Sep 17 00:00:00 2001 From: toloudis Date: Tue, 16 Jan 2024 17:22:32 -0800 Subject: [PATCH 02/19] one more doc update --- docs/agave.rst | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/docs/agave.rst b/docs/agave.rst index 494c1043..2e3fc6b8 100644 --- a/docs/agave.rst +++ b/docs/agave.rst @@ -127,6 +127,12 @@ Subregion For OME-Zarr data, you may select a sub-region in X, Y, and Z. This is useful for loading a subset of a large dataset. A typical usage might be to first load a very low resolution level and then select a sub-region of interest to then load at a higher resolution. +Keep Current AGAVE Settings +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +If you have already loaded a volume file and have made changes to the appearance, channel intensities, lighting, etc., you can choose to keep those settings when loading a new volume file. +This is useful if you are loading several images consecutively that have similar channels and dimensions, and want to apply a consistent appearance to each. + Adjusting the camera view ------------------------- From c972872e696040d935d6d701fd617b522cff44aa Mon Sep 17 00:00:00 2001 From: toloudis Date: Fri, 2 Feb 2024 09:52:47 -0800 Subject: [PATCH 03/19] add some docs for the latest features --- docs/agave.rst | 31 ++++++++++++++++++++++++------- docs/index.rst | 2 +- 2 files changed, 25 insertions(+), 8 deletions(-) diff --git a/docs/agave.rst b/docs/agave.rst index 13321e79..494c1043 100644 --- a/docs/agave.rst +++ b/docs/agave.rst @@ -249,6 +249,16 @@ Click the checkbox to show or hide a bounding box line around the volume data. Clicking on the color square allows you to select a color for the bounding box lines. +Scale Bar +^^^^^^^^^ + +Click the checkbox to show or hide a scale bar at the bottom right corner +of the display. In a perspective camera, due to foreshortening, the +scale bar will represent the distance between tickmarks shown on the +bounding box of the volume. You will have to have bounding box turned on +in order to see it. The scale bar will use physical units if available +in the loaded volume data. + Volume Scale ~~~~~~~~~~~~ @@ -285,6 +295,13 @@ Area Light Theta, Phi, and Distance These three coordinates let you position the light anywhere on a sphere around the volume. Theta and Phi are in radians (where 3.14159 radians is half a circle). +If you press the R key while the main viewport has input focus +(you may have to click once inside the window to give it focus), an +interactive rotation widget will appear in the viewport. You can click +and drag on the widget to rotate the light direction around the volume. +If you click on the colored lines of the axes, rotation will be +constrained to that axis. Press R again to hide the rotate manipulator. + |image0| @@ -489,7 +506,7 @@ Camera Panel The camera panel controls will let you affect the image's exposure amount, and control the focus blurring. -Film Exposure +Exposure ~~~~~~~~~~~~~ The exposure value will brighten or darken the overall image. @@ -518,7 +535,7 @@ focus. A small aperture size will keep the entire image in focus at all times. A large aperture size will let you only focus on a thin plane a specific distance from the camera. -Projection Field of View +Field of View ~~~~~~~~~~~~~~~~~~~~~~~~ The field of view is an angle in degrees describing how narrow or wide @@ -542,11 +559,11 @@ Time Panel For time series data, move the time slider or change the numeric input to load a new time sample. Beware -that this is loading a whole new volume and can take some time. If your -dataset only has a single time, then the slider will have no effect. -Nothing will be loaded while dragging the -slider; AGAVE will load the new time sample when the slider is released -or the numeric input is incremented. +that this is loading a whole new volume and can take some time. Nothing +will be loaded while dragging the slider; AGAVE will load the new time +sample when the slider is released or the numeric input is incremented. +If your dataset only has a single time, then the Time Panel will be +hidden. Python Interface diff --git a/docs/index.rst b/docs/index.rst index ebb0fb14..98a67496 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -11,7 +11,7 @@ Advanced GPU Accelerated Volume Explorer AGAVE is a desktop application for viewing multichannel volume data. -AGAVE’s core viewing engine uses a "progressive path tracer". During interactive use, your image will appear grainy at first, but will refine over time as the rendering system builds up more and more render passes. The speed of refinement depends on your hardware, the size and complexity of the image, and the AGAVE parameters you set, i.e., the faster your GPU, the quicker a rendering will resolve. GPU memory dictates the maximum size of the files AGAVE can load. As soon as you change any viewing parameter, including your camera angle, the rendering will start over. +AGAVE's core viewing engine uses a "progressive path tracer". During interactive use, your image will appear grainy at first, but will refine over time as the rendering system builds up more and more render passes. The speed of refinement depends on your hardware, the size and complexity of the image, and the AGAVE parameters you set, i.e., the faster your GPU, the quicker a rendering will resolve. GPU memory dictates the maximum size of the files AGAVE can load. As soon as you change any viewing parameter, including your camera angle, the rendering will start over. .. toctree:: :includehidden: From f44d83751f1c5ea90674d0c39d8f42c5cb01f7f2 Mon Sep 17 00:00:00 2001 From: toloudis Date: Fri, 2 Feb 2024 09:52:47 -0800 Subject: [PATCH 04/19] one more doc update --- docs/agave.rst | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/docs/agave.rst b/docs/agave.rst index 494c1043..2e3fc6b8 100644 --- a/docs/agave.rst +++ b/docs/agave.rst @@ -127,6 +127,12 @@ Subregion For OME-Zarr data, you may select a sub-region in X, Y, and Z. This is useful for loading a subset of a large dataset. A typical usage might be to first load a very low resolution level and then select a sub-region of interest to then load at a higher resolution. +Keep Current AGAVE Settings +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +If you have already loaded a volume file and have made changes to the appearance, channel intensities, lighting, etc., you can choose to keep those settings when loading a new volume file. +This is useful if you are loading several images consecutively that have similar channels and dimensions, and want to apply a consistent appearance to each. + Adjusting the camera view ------------------------- From 4fa44a2d265a0487a11ca64f113e511f765f5e1e Mon Sep 17 00:00:00 2001 From: toloudis Date: Tue, 6 Feb 2024 09:25:06 -0800 Subject: [PATCH 05/19] update several actions versions to fix github actions warnings --- .github/workflows/build_and_test.yml | 30 +++++++------- .github/workflows/tagged_master_release.yml | 44 ++++++++++----------- 2 files changed, 37 insertions(+), 37 deletions(-) diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index 8614aa03..cfc70568 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -7,7 +7,7 @@ jobs: docs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 with: submodules: "recursive" - uses: ammaraskar/sphinx-action@master @@ -18,22 +18,22 @@ jobs: docs-folder: "docs/" pre-build-command: "apt-get --allow-releaseinfo-change update -y && apt-get install -y latexmk texlive-latex-recommended texlive-latex-extra texlive-fonts-recommended" build-command: "make latexpdf" - - uses: actions/upload-artifact@v3 + - uses: actions/upload-artifact@v4 with: name: DocumentationHTML path: docs/_build/html/ - - uses: actions/upload-artifact@v3 + - uses: actions/upload-artifact@v4 with: name: agave-macos path: docs/_build/latex/agave.pdf - - uses: actions/upload-artifact@v3 + - uses: actions/upload-artifact@v4 with: name: agave-win path: docs/_build/latex/agave.pdf docs_pythonclient: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 with: submodules: "recursive" - uses: ammaraskar/sphinx-action@master @@ -45,15 +45,15 @@ jobs: docs-folder: "agave_pyclient/docs/" pre-build-command: "pip install -e ./agave_pyclient && apt-get --allow-releaseinfo-change update -y && apt-get install -y latexmk texlive-latex-recommended texlive-latex-extra texlive-fonts-recommended" build-command: "make latexpdf" - - uses: actions/upload-artifact@v3 + - uses: actions/upload-artifact@v4 with: name: DocumentationPythonClientHTML path: agave_pyclient/docs/_build/html/ - - uses: actions/upload-artifact@v3 + - uses: actions/upload-artifact@v4 with: name: agave-macos path: agave_pyclient/docs/_build/latex/agave_pyclient.pdf - - uses: actions/upload-artifact@v3 + - uses: actions/upload-artifact@v4 with: name: agave-win path: agave_pyclient/docs/_build/latex/agave_pyclient.pdf @@ -66,7 +66,7 @@ jobs: runs-on: ${{ matrix.os }} steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 with: submodules: "recursive" - name: Install Qt @@ -98,7 +98,7 @@ jobs: shell: bash - name: Upload mac artifact if: matrix.os == 'macos-latest' - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: agave-macos path: ./build/agave-macos.zip @@ -150,7 +150,7 @@ jobs: shell: cmd - name: Upload windows artifact if: matrix.os == 'windows-latest' - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: agave-win path: ./build/agave-win.zip @@ -158,7 +158,7 @@ jobs: lint-and-test-webclient: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 with: submodules: "recursive" - uses: actions/setup-node@v1 @@ -175,11 +175,11 @@ jobs: lint-and-test-pyclient: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Set up Python - uses: actions/setup-python@v4 + uses: actions/setup-python@v5 with: - python-version: 3.9 + python-version: "3.10" - name: Install Dependencies run: | python -m pip install --upgrade pip diff --git a/.github/workflows/tagged_master_release.yml b/.github/workflows/tagged_master_release.yml index baefab6d..f3366b1d 100644 --- a/.github/workflows/tagged_master_release.yml +++ b/.github/workflows/tagged_master_release.yml @@ -13,7 +13,7 @@ jobs: runs-on: ${{ matrix.os }} steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 with: submodules: "recursive" - name: Install Qt @@ -45,7 +45,7 @@ jobs: shell: bash - name: Upload mac artifact if: matrix.os == 'macos-latest' - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: agave-macos path: ./build/agave-macos.zip @@ -98,7 +98,7 @@ jobs: shell: cmd - name: Upload windows artifact if: matrix.os == 'windows-latest' - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: agave-win path: ./build/agave-win.zip @@ -106,7 +106,7 @@ jobs: publish_webclient: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 with: submodules: "recursive" - uses: actions/setup-node@v1 @@ -124,13 +124,13 @@ jobs: publish_pythonclient: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 with: submodules: "recursive" - - name: Install Python 3.9 version - uses: actions/setup-python@v4 + - name: Install Python + uses: actions/setup-python@v5 with: - python-version: "3.9" + python-version: "3.10" architecture: "x64" - name: Install Dependencies run: | @@ -145,12 +145,12 @@ jobs: with: user: __token__ password: ${{ secrets.PYPI_TOKEN }} - packages_dir: agave_pyclient/dist/ + packages-dir: agave_pyclient/dist/ verbose: true docs_pythonclient: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 with: submodules: "recursive" - run: | @@ -165,18 +165,18 @@ jobs: docs-folder: "agave_pyclient/docs/" pre-build-command: "pip install -e ./agave_pyclient && apt-get --allow-releaseinfo-change update -y && apt-get install -y latexmk texlive-latex-recommended texlive-latex-extra texlive-fonts-recommended" build-command: "make latexpdf" - - uses: actions/upload-artifact@v3 + - uses: actions/upload-artifact@v4 with: name: DocumentationPythonClientHTML path: agave_pyclient/docs/_build/html/ - - uses: actions/upload-artifact@v3 + - uses: actions/upload-artifact@v4 with: name: DocumentationPythonClientPDF path: agave_pyclient/docs/_build/latex/agave_pyclient.pdf - name: Publish Docs - uses: JamesIves/github-pages-deploy-action@4.1.4 + uses: JamesIves/github-pages-deploy-action@v4.5.0 with: - GITHUB_TOKEN: ${{ secrets.ACCESS_TOKEN }} + token: ${{ secrets.ACCESS_TOKEN }} branch: gh-pages # The branch the action should deploy to. folder: agave_pyclient/docs/_build/html/ # The folder the action should deploy. target-folder: agave_pyclient/ @@ -184,7 +184,7 @@ jobs: docs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 with: submodules: "recursive" - uses: ammaraskar/sphinx-action@master @@ -195,18 +195,18 @@ jobs: docs-folder: "docs/" pre-build-command: "apt-get --allow-releaseinfo-change update -y && apt-get install -y latexmk texlive-latex-recommended texlive-latex-extra texlive-fonts-recommended" build-command: "make latexpdf" - - uses: actions/upload-artifact@v3 + - uses: actions/upload-artifact@v4 with: name: DocumentationHTML path: docs/_build/html/ - - uses: actions/upload-artifact@v3 + - uses: actions/upload-artifact@v4 with: name: DocumentationPDF path: docs/_build/latex/agave.pdf - name: Publish Docs - uses: JamesIves/github-pages-deploy-action@4.1.4 + uses: JamesIves/github-pages-deploy-action@v4.5.0 with: - GITHUB_TOKEN: ${{ secrets.ACCESS_TOKEN }} + token: ${{ secrets.ACCESS_TOKEN }} branch: gh-pages # The branch the action should deploy to. folder: docs/_build/html/ # The folder the action should deploy. clean: false @@ -223,17 +223,17 @@ jobs: echo ${GITHUB_REF/refs\/tags\/v/} echo ::set-output name=VERSION::${GITHUB_REF/refs\/tags\/v/} - name: Get mac build artifact - uses: actions/download-artifact@v3 + uses: actions/download-artifact@v4 with: name: agave-macos path: agave-macos - name: Get windows build artifact - uses: actions/download-artifact@v3 + uses: actions/download-artifact@v4 with: name: agave-win path: agave-win - name: Get PDF documentation build artifact - uses: actions/download-artifact@v3 + uses: actions/download-artifact@v4 with: name: DocumentationPDF path: DocumentationPDF From 57e9beb8c2e960575577feb51cde3e2e1debc267 Mon Sep 17 00:00:00 2001 From: toloudis Date: Tue, 6 Feb 2024 09:26:41 -0800 Subject: [PATCH 06/19] update setup-node action --- .github/workflows/build_and_test.yml | 4 ++-- .github/workflows/tagged_master_release.yml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index cfc70568..e95814e8 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -161,9 +161,9 @@ jobs: - uses: actions/checkout@v4 with: submodules: "recursive" - - uses: actions/setup-node@v1 + - uses: actions/setup-node@v4 with: - node-version: 16 + node-version: 20 registry-url: https://registry.npmjs.org/ - run: | cd webclient diff --git a/.github/workflows/tagged_master_release.yml b/.github/workflows/tagged_master_release.yml index f3366b1d..e4706715 100644 --- a/.github/workflows/tagged_master_release.yml +++ b/.github/workflows/tagged_master_release.yml @@ -109,9 +109,9 @@ jobs: - uses: actions/checkout@v4 with: submodules: "recursive" - - uses: actions/setup-node@v1 + - uses: actions/setup-node@v4 with: - node-version: 16 + node-version: 20 registry-url: https://registry.npmjs.org/ - run: | cd webclient From da7e13ac6bdfaa93f15564adb47a9dc8b6d38b3b Mon Sep 17 00:00:00 2001 From: toloudis Date: Tue, 6 Feb 2024 17:22:33 -0800 Subject: [PATCH 07/19] fix new upload-artifact action --- .github/workflows/build_and_test.yml | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index e95814e8..397d4bc3 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -24,11 +24,7 @@ jobs: path: docs/_build/html/ - uses: actions/upload-artifact@v4 with: - name: agave-macos - path: docs/_build/latex/agave.pdf - - uses: actions/upload-artifact@v4 - with: - name: agave-win + name: DocumentationPDF path: docs/_build/latex/agave.pdf docs_pythonclient: runs-on: ubuntu-latest @@ -51,11 +47,7 @@ jobs: path: agave_pyclient/docs/_build/html/ - uses: actions/upload-artifact@v4 with: - name: agave-macos - path: agave_pyclient/docs/_build/latex/agave_pyclient.pdf - - uses: actions/upload-artifact@v4 - with: - name: agave-win + name: DocumentationPythonClientPDF path: agave_pyclient/docs/_build/latex/agave_pyclient.pdf cmake-build: strategy: From dbb7b5e38c98af2e9762e6f60008cecab45cb499 Mon Sep 17 00:00:00 2001 From: toloudis Date: Tue, 6 Feb 2024 17:28:18 -0800 Subject: [PATCH 08/19] set flag to enable glm experimental string cast --- renderlib/gesture/gesture.h | 1 + 1 file changed, 1 insertion(+) diff --git a/renderlib/gesture/gesture.h b/renderlib/gesture/gesture.h index d9bf83b9..f7b5c6c4 100644 --- a/renderlib/gesture/gesture.h +++ b/renderlib/gesture/gesture.h @@ -2,6 +2,7 @@ #include "glad/glad.h" #include +#define GLM_ENABLE_EXPERIMENTAL #include #include "BoundingBox.h" From 21112e723aebac7eefbaf8575a757494aa0a46ad Mon Sep 17 00:00:00 2001 From: toloudis Date: Tue, 6 Feb 2024 17:31:44 -0800 Subject: [PATCH 09/19] remove unused --- renderlib/gesture/gesture.h | 2 -- 1 file changed, 2 deletions(-) diff --git a/renderlib/gesture/gesture.h b/renderlib/gesture/gesture.h index f7b5c6c4..8c56e586 100644 --- a/renderlib/gesture/gesture.h +++ b/renderlib/gesture/gesture.h @@ -2,8 +2,6 @@ #include "glad/glad.h" #include -#define GLM_ENABLE_EXPERIMENTAL -#include #include "BoundingBox.h" #include "CCamera.h" From d525fd783b6d0e3b9cc60fa5f437b512eef6631e Mon Sep 17 00:00:00 2001 From: toloudis Date: Tue, 6 Feb 2024 17:47:26 -0800 Subject: [PATCH 10/19] try install python client separately before docs build --- .github/workflows/build_and_test.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index 397d4bc3..215aaf64 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -32,14 +32,16 @@ jobs: - uses: actions/checkout@v4 with: submodules: "recursive" + - name: install python cient package + run: | + pip install -e ./agave_pyclient - uses: ammaraskar/sphinx-action@master with: docs-folder: "agave_pyclient/docs/" - pre-build-command: "pip install -e ./agave_pyclient" - uses: ammaraskar/sphinx-action@master with: docs-folder: "agave_pyclient/docs/" - pre-build-command: "pip install -e ./agave_pyclient && apt-get --allow-releaseinfo-change update -y && apt-get install -y latexmk texlive-latex-recommended texlive-latex-extra texlive-fonts-recommended" + pre-build-command: "apt-get --allow-releaseinfo-change update -y && apt-get install -y latexmk texlive-latex-recommended texlive-latex-extra texlive-fonts-recommended" build-command: "make latexpdf" - uses: actions/upload-artifact@v4 with: From 82e809f2f2f74a35f1edb184cbd33a2356ea05e5 Mon Sep 17 00:00:00 2001 From: toloudis Date: Thu, 8 Feb 2024 15:38:44 -0800 Subject: [PATCH 11/19] put back the pip install step --- .github/workflows/build_and_test.yml | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index 215aaf64..f8a1d701 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -32,16 +32,14 @@ jobs: - uses: actions/checkout@v4 with: submodules: "recursive" - - name: install python cient package - run: | - pip install -e ./agave_pyclient - uses: ammaraskar/sphinx-action@master with: + pre-build-command: :"pip install -e ./agave_pyclient" docs-folder: "agave_pyclient/docs/" - uses: ammaraskar/sphinx-action@master with: docs-folder: "agave_pyclient/docs/" - pre-build-command: "apt-get --allow-releaseinfo-change update -y && apt-get install -y latexmk texlive-latex-recommended texlive-latex-extra texlive-fonts-recommended" + pre-build-command: "pip install -e ./agave_pyclient && apt-get --allow-releaseinfo-change update -y && apt-get install -y latexmk texlive-latex-recommended texlive-latex-extra texlive-fonts-recommended" build-command: "make latexpdf" - uses: actions/upload-artifact@v4 with: From 7b9b411c956fa8e019100b1537cb2849716d6f70 Mon Sep 17 00:00:00 2001 From: toloudis Date: Thu, 8 Feb 2024 15:48:38 -0800 Subject: [PATCH 12/19] try removing extra requirements file --- agave_pyclient/docs/requirements.txt | 3 --- 1 file changed, 3 deletions(-) delete mode 100644 agave_pyclient/docs/requirements.txt diff --git a/agave_pyclient/docs/requirements.txt b/agave_pyclient/docs/requirements.txt deleted file mode 100644 index effae255..00000000 --- a/agave_pyclient/docs/requirements.txt +++ /dev/null @@ -1,3 +0,0 @@ -m2r2 -sphinx_rtd_theme - From 669d16b2d5528271b818879a89ed9d298b0a8424 Mon Sep 17 00:00:00 2001 From: toloudis Date: Thu, 8 Feb 2024 15:52:40 -0800 Subject: [PATCH 13/19] try to get path right --- .github/workflows/build_and_test.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index f8a1d701..53f0a522 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -34,12 +34,12 @@ jobs: submodules: "recursive" - uses: ammaraskar/sphinx-action@master with: - pre-build-command: :"pip install -e ./agave_pyclient" + pre-build-command: :"pip install -e agave_pyclient/" docs-folder: "agave_pyclient/docs/" - uses: ammaraskar/sphinx-action@master with: docs-folder: "agave_pyclient/docs/" - pre-build-command: "pip install -e ./agave_pyclient && apt-get --allow-releaseinfo-change update -y && apt-get install -y latexmk texlive-latex-recommended texlive-latex-extra texlive-fonts-recommended" + pre-build-command: "pip install -e agave_pyclient/ && apt-get --allow-releaseinfo-change update -y && apt-get install -y latexmk texlive-latex-recommended texlive-latex-extra texlive-fonts-recommended" build-command: "make latexpdf" - uses: actions/upload-artifact@v4 with: From 6f29139c15107f85cc5d0556895589de5bb6109c Mon Sep 17 00:00:00 2001 From: toloudis Date: Thu, 8 Feb 2024 15:57:48 -0800 Subject: [PATCH 14/19] fix typo --- .github/workflows/build_and_test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index 53f0a522..7134400d 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -34,7 +34,7 @@ jobs: submodules: "recursive" - uses: ammaraskar/sphinx-action@master with: - pre-build-command: :"pip install -e agave_pyclient/" + pre-build-command: "pip install -e agave_pyclient/" docs-folder: "agave_pyclient/docs/" - uses: ammaraskar/sphinx-action@master with: From 4309a52a57c8574afdb07ef47d237ed26f745b28 Mon Sep 17 00:00:00 2001 From: toloudis Date: Thu, 8 Feb 2024 16:07:34 -0800 Subject: [PATCH 15/19] re-add requirements --- agave_pyclient/docs/requirements.txt | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 agave_pyclient/docs/requirements.txt diff --git a/agave_pyclient/docs/requirements.txt b/agave_pyclient/docs/requirements.txt new file mode 100644 index 00000000..dcc5db71 --- /dev/null +++ b/agave_pyclient/docs/requirements.txt @@ -0,0 +1,2 @@ +m2r2 +sphinx_rtd_theme From ba26238151c48136392c682686e4c6f6661bfd39 Mon Sep 17 00:00:00 2001 From: toloudis Date: Thu, 8 Feb 2024 17:55:47 -0800 Subject: [PATCH 16/19] fix time slider update function --- agave_app/Controls.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/agave_app/Controls.cpp b/agave_app/Controls.cpp index dc618882..69e1945d 100644 --- a/agave_app/Controls.cpp +++ b/agave_app/Controls.cpp @@ -405,10 +405,10 @@ QIntSlider::QIntSlider(QWidget* pParent /*= NULL*/) this->m_spinner.setValue(v); this->m_spinner.blockSignals(false); }); - // keep slider and spinner in sync - QObject::connect(&m_slider, &QSlider::sliderReleased, [this]() { + // note that m_slider's tracking state controls how often the valueChanged signal is emitted. + QObject::connect(&m_slider, &QSlider::valueChanged, [this](int v) { this->m_spinner.blockSignals(true); - this->m_spinner.setValue(this->m_slider.value()); + this->m_spinner.setValue(v); this->m_spinner.blockSignals(false); }); From b3a3d30bc4b0aa4b61bbf6b2ed10d5e95684309c Mon Sep 17 00:00:00 2001 From: toloudis Date: Mon, 12 Feb 2024 09:21:14 -0800 Subject: [PATCH 17/19] update Viewport controls section --- docs/agave.rst | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/docs/agave.rst b/docs/agave.rst index 2e3fc6b8..f4820b46 100644 --- a/docs/agave.rst +++ b/docs/agave.rst @@ -301,12 +301,16 @@ Area Light Theta, Phi, and Distance These three coordinates let you position the light anywhere on a sphere around the volume. Theta and Phi are in radians (where 3.14159 radians is half a circle). -If you press the R key while the main viewport has input focus -(you may have to click once inside the window to give it focus), an + +Viewport controls +^^^^^^^^^^^^^^^^^ + +If you check "Viewport controls" (or press the R key), an interactive rotation widget will appear in the viewport. You can click and drag on the widget to rotate the light direction around the volume. If you click on the colored lines of the axes, rotation will be -constrained to that axis. Press R again to hide the rotate manipulator. +constrained to that axis. Press R again or uncheck the checkbox to +hide the rotate manipulator. |image0| From 7dd8e1fcf17bc6fb347fe2079f75fc22e1b80172 Mon Sep 17 00:00:00 2001 From: toloudis Date: Mon, 12 Feb 2024 16:06:13 -0800 Subject: [PATCH 18/19] grammar tweak Co-authored-by: Peyton Lee --- docs/agave.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/agave.rst b/docs/agave.rst index f4820b46..773d7510 100644 --- a/docs/agave.rst +++ b/docs/agave.rst @@ -261,7 +261,7 @@ Scale Bar Click the checkbox to show or hide a scale bar at the bottom right corner of the display. In a perspective camera, due to foreshortening, the scale bar will represent the distance between tickmarks shown on the -bounding box of the volume. You will have to have bounding box turned on +bounding box of the volume. You will have to have the bounding box turned on in order to see it. The scale bar will use physical units if available in the loaded volume data. From f52cd3c1a91afb0f349d0fa5d2fae2767b1f88c2 Mon Sep 17 00:00:00 2001 From: toloudis Date: Tue, 13 Feb 2024 09:43:27 -0800 Subject: [PATCH 19/19] fix bug with selection buffer not being cleared --- renderlib/ViewerWindow.h | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/renderlib/ViewerWindow.h b/renderlib/ViewerWindow.h index 19984cf1..02972a2b 100644 --- a/renderlib/ViewerWindow.h +++ b/renderlib/ViewerWindow.h @@ -34,6 +34,13 @@ class ViewerWindow } m_activeTool = (tool ? tool : &m_defaultTool); + // clear out the buffer once. + // we could alternatively flag this for clearing on the next update. + // see in update() where we check for no vertices. + if (!tool) { + m_selection.clear(); + } + // Todo: this could be replaced with a push/pop mechanism to allow // the completion of a tool to restore a previous state. } @@ -43,8 +50,9 @@ class ViewerWindow template void forEachTool(Fn fn) { - for (ManipulationTool* tool : m_tools) + for (ManipulationTool* tool : m_tools) { fn(tool); + } fn(m_activeTool); }