Conversation
These reflect the expected import paths in newer versions of scipy. The older ones were deprecated. Signed-off-by: Patrick Avery <patrick.avery@kitware.com>
This allows volumes to be rendered that are greater than the OpenGL limit (typically 2048 for many GPUs) by bricking them together. A single voxel of overlap is present between the bricks so that no seams are displayed. The bricking is only performed if the volume exceeds the limit size, so all volume rendering is the same performance if it is smaller than the limit. Signed-off-by: Patrick Avery <patrick.avery@kitware.com>
We have historically used `vtkDataArray::GetRange()/GetFiniteRange()`, but this function is not thread-safe (due to its cache), and we have been calling it in a background thread. I recently ran into a segmentation fault that is probably unlikely, but we want to avoid all crashes. So we must compute the histogram range ourselves to avoid all crashes. The result is actually cached one level up so this shouldn't affect performance. Signed-off-by: Patrick Avery <patrick.avery@kitware.com>
Previously, if we failed to read an HDF5 file (perhaps because it was open for writing in another process), it would kill the whole table setup. This makes several steps in the PyXRF source more robust to errors like this. Signed-off-by: Patrick Avery <patrick.avery@kitware.com>
Otherwise, the warning gets swallowed and it just shows up as "fail". Signed-off-by: Patrick Avery <patrick.avery@kitware.com>
This will help prevent flakiness in the CI Signed-off-by: Patrick Avery <patrick.avery@kitware.com>
The first issue was another case of calling OpenGL code from a background thread instead of the GUI thread. To fix it, we added a `ThreadUtils.h` file that provides helper functions, which allows us to consolidate repeated code sections. Then we used this helper function in the new volume block sections. We also made `m_node` a QPointer and guard against it being nullptr. That prevents another crash. Signed-off-by: Patrick Avery <patrick.avery@kitware.com>
They were just not appearing before. This was not an issue in the packaging. Signed-off-by: Patrick Avery <patrick.avery@kitware.com>
Previous scaling wouldn't work since arrays with different shapes were not allowed. This fixes the issue by cleaning the arrays out at the end and then putting the new arrays (with the new shapes) in. Signed-off-by: Patrick Avery <patrick.avery@kitware.com>
Previously, the dialog pop-ups, including the operator dialogs, could show up behind the main window, or if you click the main window they would move behind the main window. This is kind of annoying - the pop-up dialogs should remain in front. This adds a utility function that is utilized, as well as setting parents correctly in all of the dialogs, that fixes the issue. Signed-off-by: Patrick Avery <patrick.avery@kitware.com>
massive rip out of the legacy tomviz pipeline components
fix reentrant histogram LUT rebuild crashing color-map rescale
Instead of mentioning the environment variable, mention the UI element. The environment variable can be confusing since it automatically overrides whatever is in the UI. Signed-off-by: Patrick Avery <patrick.avery@kitware.com>
minor fixes
Export NvOptimusEnablement and AmdPowerXpressRequestHighPerformance from the executable so NVIDIA and AMD drivers pick the discrete GPU instead of the power-saving integrated one on hybrid laptops. Signed-off-by: Patrick Avery <patrick.avery@kitware.com>
Push() ignored the image origin when converting the plane center to a slice index, and pick points were mapped with the forward display transform instead of its inverse. Dragging the slice arrow on a volume with a nonzero origin, or one moved or rotated in the scene, made the plane jump to a volume face or leave the volume entirely. Signed-off-by: Patrick Avery <patrick.avery@kitware.com>
Crop keeps the vtkExtractVOI output extent, which starts at the crop minimum rather than zero. SetSliceIndex() and GetSliceIndex() assumed a zero extent minimum while SetPlaneOrientation() and the sinks are extent-aware, so slicing a cropped volume placed the plane outside it. Signed-off-by: Patrick Avery <patrick.avery@kitware.com>
Loading a state file left ports on the app-default medium because the saved InMemory mode is omitted. Persistence changes and transient data drops also emitted no signals, leaving stale port badges. Signed-off-by: Patrick Avery <patrick.avery@kitware.com>
We actually don't need the transpose because the output is already how tomviz expects it. Signed-off-by: Patrick Avery <patrick.avery@kitware.com>
The modeless dialog held a raw Node pointer, so deleting the node while the dialog was open left OK/Apply dereferencing freed memory and crashing in markStale(). Close the dialog on nodeRemoved and hold the node in a QPointer so the pointer can never dangle. Signed-off-by: Patrick Avery <patrick.avery@kitware.com>
RescaleTransferFunction operates on the proxy property, which still contained the placeholder nodes spanning the full data range, making Reset a no-op and Auto compress the window. Sync the stripped client state first, and match ImageJ's auto-threshold progression. Signed-off-by: Patrick Avery <patrick.avery@kitware.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.