Skip to content

Releases: saalfeldlab/paintera

paintera-0.23.1

19 Feb 15:13
Compare
Choose a tag to compare

Paintera 0.23.1

Previous release: 0.23.0

Changelog

Bug Fixes

  • Set appropriate log levels in SegmentMaskGenerators (#392)

Pull Requests

#392

Merge pull request #392 from saalfeldlab/appropriate-log-level-in-segment-mask-generators

[BUGFIX] Set appropriate log levels in SegmentMaskGenerators

Paintera 0.23.0

18 Feb 18:29
Compare
Choose a tag to compare

Changelog

New Features

  • Adaptive level of detail for meshes in 3D view. (#267)
  • New settings for changing transparency and shading of the orthoslices in the 3D viewer (#382)
  • Add 3d mesh visualization for thresholded sources. By default, 3d meshes are disabled for thresholded sources but they can be enabled with the checkbox at the Meshes section in the thresholded source preferences. In order to unify 3d mesh generation, the label-centric MeshManager interface was removed and replaced with the AdaptiveResolutionMeshManager. Source-specific mesh menagers simply wrap around and translate and forward requests to the AdaptiveResolutionMeshManager. This simplifies the code a lot and reduces code duplication. In the course of this refactoring, cancellation of tasks does not need to be controlled at the level of iteration of a tight loop, which makes the Interruptible and similar interfaces obsolete. Use the LabeLBlockLookup directly instead, which may be cached, anyways. (#377)

Bug Fixes

  • Committing canvas failed for new n5 label block lookup backends (#374). Initialize lookup properly when committing to fix this issue. (#377)

Pull Requests

#267

Merge pull request #267 from saalfeldlab/adaptive-mesh-resolution

[FEATURE] Adaptive level of detail for meshes in 3D view.

  • Only blocks that are visible inside the 3D viewer screen will now be rendered, and the order in which meshes are generated is now determined by the distance between a block and the camera (closest blocks will be rendered first).
  • The blocks are quickly re-prioritized every time the user turns the camera with respect to the new orientation. The delay with which the blocks are updated can be changed in the 3D Viewer settings tab (Update delay).
  • The appropriate resolution for a block is also chosen based on the distance from the camera and can be controlled with the new settings (Level of detail, Finest scale level, Coarsest scale level). For instance, when the user zooms in or rotates the camera such that some of the blocks are closer to the camera, the resoluton for them is gradually increased. When the user zooms out, the resolution is decreased again.
  • To reduce variations in mesh appearance between several scale levels, there is a new setting 'Min label ratio'. It allows to control the thickness of the binary mask used to generate the meshes. For example, 0.25 means that at least 25% of all labels in a given pixel must be occurrences of this particular label in order for a pixel in the mask to be set to 'true'. 0.0 would mean that a pixel in the mask is set to 'true' if the pixel contains any number of occurrences of this particular label.
  • The block size for generating meshes is now independent from the block size of the data source and can be controlled via the new setting in the 3D Viewer settings tab (Renderer block size). Smaller blocks help to increase the granularity of the 3D scene and make individual meshes smaller so that there is less visible lag when a mesh is being uploaded onto the scene.
  • Additionally, there is now a throttling queue for uploading meshes onto the scene. It aims to solve the following problem: when the meshes are initially generated, the speed with which the meshes are produced is limited by the marching cubes algorithm. The generated meshes are memory-cached then, and on subsequent requests they are quickly retrieved from the cache. This leads to trying to add hundreds of meshes to the scene at the same time, which implicitly blocks the main thread and the application freezes. The new throttling queue limits the number of meshes added a a time and helps to keep the application responsive. Its parameters can be tweaked in the 3D Viewer settings tab (Elements per frame, Frame delay).

#382

Merge pull request #382 from saalfeldlab/orthoslices-transparency

[FEATURE] New settings for changing transparency and shading of the orthoslices in the 3D viewer

#377

Merge pull request #377 from saalfeldlab/3d-visualize-masks

[FEATURE] Add 3d mesh visualization for thresholded sources. By default, 3d meshes are disabled for thresholded sources but they can be enabled with the checkbox at the Meshes section in the thresholded source preferences. In order to unify 3d mesh generation, the label-centric MeshManager interface was removed and replaced with the AdaptiveResolutionMeshManager. Source-specific mesh menagers simply wrap around and translate and forward requests to the AdaptiveResolutionMeshManager. This simplifies the code a lot and reduces code duplication. In the course of this refactoring, cancellation of tasks does not need to be controlled at the level of iteration of a tight loop, which makes the Interruptible and similar interfaces obsolete. Use the LabeLBlockLookup directly instead, which may be cached, anyways.
[BUGFIX] Committing canvas failed for new n5 label block lookup backends (#374). Initialize lookup properly when committing to fix this issue.

paintera-0.22.0

16 Jan 19:15
Compare
Choose a tag to compare

Paintera 0.22.0

Previous release: 0.21.0

Changelog

New Features

  • Remove from Paintera repository classes that were extracted into saalfx. (#326)
  • Expose brush radius and scale factor in UI (#355)
  • Add support for data sets relative to project directory. Previously, if data sets within the project directory were imported into Paintera, the project would become corrupted after moving or copying the project directory into a different location (#207). #343 introduced new classes that separate the data backend from the functionality, thus making it easier to implement support for relative data location. Now, only the data set---and not the container---is stored in the Paintera project if the dataset is relative to/within the Paintera project and the Paintera project can be moved/copy into any location and still be functional. In order to conserve previous work, users are asked if they would like to convert their existing projects on start-up. After conversion, previous versions of Paitnera will not be able to open this project anymore. Eventually, old-style projects will not be supported anymore. (#343)

Bug Fixes

  • Maximizing the current viewer would instead split-maximize the current viewer and 3D viewer (#350). Fix by bumping the saalfx dependency. Thanks @igorpisarev (#351)
  • Always change brush radius by multiplication and remove upper bound for brush radius (#355)
  • Replace paintera-conversion-helper with paintera-convert in README, thanks to @constantinpape (#359)
  • add <javadoc.skip> property (#364)
  • Use correct condition for single-scale/multi-scale n5 backend for label data, thanks @igorpisarev for reporting (#366)
  • Fix creating bookmark node after deserialization when its note is null (thanks to @igorpisarev) (#369)
  • Move locked segments into state rather than backend to make locked segments work again with new ConnectomicsLabelState. (#372)
  • Fix display status of ConnectomicsLabelState (#370) thanks to @igorpisarev (#378)
  • Explicitly add https repo for jcenter.bintray in changelog creation script (#381)

Other

  • Merge pull request #326 from saalfeldlab/use-saalfx: [FEATURE] Remove from Paintera repository classes that were extracted into saalfx.
    • Start extracting classes into saalfx package
    • Replace unnecessary use of SingleChildStackPane with StackPane
    • Fix minor issues
    • Adapt to latest changes in saalfx
    • Adapt to latest changes in saalfx
    • Bump saalfx dependency to release version
  • Merge pull request #351 from saalfeldlab/fix-maximize-viewer: [BUGFIX] Maximizing the current viewer would instead split-maximize the current viewer and 3D viewer (#350). Fix by bumping the saalfx dependency. Thanks @igorpisarev
    • fix maximize current viewer (fullscreen vs side by side with 3d view)
    • fixes #350
    • bump to saalfx-0.1.1
  • Merge pull request #352 from saalfeldlab/bump-saalfx: bump to saalfx-0.1.2
  • Merge pull request #368 from saalfeldlab/fix-select-all: Fix key binding for 'select all' action
  • Merge pull request #367 from saalfeldlab/disable-bounding-box-polygon: Add option to disable multi-box overlay

Pull Requests

#326

Merge pull request #326 from saalfeldlab/use-saalfx

[FEATURE] Remove from Paintera repository classes that were extracted into saalfx.

  • Start extracting classes into saalfx package
  • Replace unnecessary use of SingleChildStackPane with StackPane
  • Fix minor issues
  • Adapt to latest changes in saalfx
  • Adapt to latest changes in saalfx
  • Bump saalfx dependency to release version

#351

Merge pull request #351 from saalfeldlab/fix-maximize-viewer

[BUGFIX] Maximizing the current viewer would instead split-maximize the current viewer and 3D viewer (#350). Fix by bumping the saalfx dependency. Thanks @igorpisarev

  • fix maximize current viewer (fullscreen vs side by side with 3d view)
  • fixes #350
  • bump to saalfx-0.1.1

#352

Merge pull request #352 from saalfeldlab/bump-saalfx

bump to saalfx-0.1.2

#355

Merge pull request #355 from saalfeldlab/fix-brush-resize

[BUGFIX] Always change brush radius by multiplication and remove upper bound for brush radius
[FEATURE] Expose brush radius and scale factor in UI

#359

Merge pull request #359 from constantinpape/master

[BUGFIX] Replace paintera-conversion-helper with paintera-convert in README, thanks to @constantinpape

#343

Merge pull request #343 from saalfeldlab/relative-data-location

[FEATURE] Add support for data sets relative to project directory. Previously, if data sets within the project directory were imported into Paintera, the project would become corrupted after moving or copying the project directory into a different location (#207). #343 introduced new classes that separate the data backend from the functionality, thus making it easier to implement support for relative data location. Now, only the data set---and not the container---is stored in the Paintera project if the dataset is relative to/within the Paintera project and the Paintera project can be moved/copy into any location and still be functional. In order to conserve previous work, users are asked if they would like to convert their existing projects on start-up. After conversion, previous versions of Paitnera will not be able to open this project anymore. Eventually, old-style projects will not be supported anymore.

#364

Merge pull request #364 from saalfeldlab/fix-javadoc

[BUGFIX] add <javadoc.skip> property

#366

Merge pull request #366 from saalfeldlab/fix-incorrect-n5-backend-factory

[BUGFIX] Use correct condition for single-scale/multi-scale n5 backend for label data, thanks @igorpisarev for reporting

#368

Merge pull request #368 from saalfeldlab/fix-select-all

Fix key binding for 'select all' action

#369

Merge pull request #369 from saalfeldlab/fix-null-bookmark-note

[BUGFIX] Fix creating bookmark node after deserialization when its note is null (thanks to @igorpisarev)

#372

Merge pull request #372 from saalfeldlab/relative-data-location-locked-segments

[BUGFIX] Move locked segments into state rather than backend to make locked segments work again with new ConnectomicsLabelState.

#367

Merge pull request #367 from saalfeldlab/disable-bounding-box-polygon

Add option to disable multi-box overlay

#378

Merge pull request #378 from saalfeldlab/fix-connectomics-label-state-display-status

[BUGFIX] Fix display status of ConnectomicsLabelState (#370) thanks to @igorpisarev

#381

Merge pull request #381 from saalfeldlab/add-jcenter-bintray-https

[BUGFIX] Explicitly add https repo for jcenter.bintray in changelog creation script

paintera-0.21.0

07 Oct 15:24
Compare
Choose a tag to compare

Paintera 0.21.0

Previous release: 0.20.1

Changelog

New Features

  • Update imglib2-cache dependency to use Invalidate interface instead and remove Paintera's InvalidateAll and Invalidate interfaces (#316)
  • Remove global cache and rely on imglib2-caches only (#316)

Bug Fixes

  • clean-up masked source resources (#309) (#316)
  • Error message was confusing when paintera failed to deserialize project (#338). Print more helpful error message instead. (#339)
  • Filter-not-null label state preference pane nodes (#341)
  • Mesh resources would not be freed when not being used anymore (#337). An anonymous/lambda listener was the culprit. Explicilty naming and unbinding after use solved the problem. (#340)

Pull Requests

#316

Merge pull request #316 from saalfeldlab/remove-global-cache

[BUGFIX] clean-up masked source resources (#309)
[FEATURE] Update imglib2-cache dependency to use Invalidate interface instead and remove Paintera's InvalidateAll and Invalidate interfaces
[FEATURE] Remove global cache and rely on imglib2-caches only

#339

Merge pull request #339 from saalfeldlab/improve-max-id-error-message

[BUGFIX] Error message was confusing when paintera failed to deserialize project (#338). Print more helpful error message instead.

#341

Merge pull request #341 from saalfeldlab/ignore-preference-nodes-if-null

[BUGFIX] Filter-not-null label state preference pane nodes

Adding a state pane for label sources would fail if no masked source was provided because MaskedSourceNode.node would return null and VBox cannot have null children.

#340

Merge pull request #340 from saalfeldlab/fix-337

[BUGFIX] Mesh resources would not be freed when not being used anymore (#337). A anonymous/lambda listener was the culprit. Explicilty naming and unbinding after use solved the problem.

  • Release MeshGenerator resources when disposed

Fixes #337
Before this commit, a listener would be added to the isManagedProperty of the meshSettings to update the MeshGenerator with appropriate global or individual MeshSettings. For some reason, this kept the internal JavaFX classes NGMeshView and MeshView alive, prohibiting clean-up of their resources, and, as a result, leaking memory. This commit fixes this issue by adding a meshSettingsProperty to the MeshGenerator that the caller can unbind to remove the listener that holds on to the MeshManager's resources.

  • Set manager mesh settings to null and simplify removeAll

  • Revert back to unbinding mesh settings on separate thread

After @igorpisarev pointed out (and I confirmed) that unbinding is slow for a large number of selected meshes (e.g. select all on CREMI A), I had to revert the previous changes. I added a new single threaded executor to avoid creating new threads each time and inverted the call chain to avoid code duplication.

paintera-0.20.1

23 Sep 20:38
Compare
Choose a tag to compare

Paintera 0.20.1

Previous release: 0.20.0

Changelog

Bug Fixes

  • Unable to start Paintera in Windows (#331) because Windows paths contain backslash, which are interpreted as modifiers in regex. Use string replacement instead of regex, instead. (#333)
  • Add src/main/java to kapt to ensure that kotlin annotations will be considered, as well (#334)
  • Remove ?raw=true option from images in README.md to fix #325 (#335)

Pull Requests

#333

Merge pull request #333 from saalfeldlab/fix-331

[BUGFIX] Unable to start Paintera in Windows (#331) because Windows paths contain backslash, which are interpreted as modifiers in regex. Use string replacement instead of regex, instead.

#334

Merge pull request #334 from saalfeldlab/fix-kotlin-annotations

Add src/main/java to kapt

#335

Merge pull request #335 from saalfeldlab/fix-325

[BUGFIX] Remove ?raw=true option from images in README.md to fix #325

paintera-0.20.0

13 Sep 20:07
Compare
Choose a tag to compare

Paintera 0.20.0

Previous release: 0.19.3

Changelog

New Features

  • Make project directory mutable and add "Save As" button (#190) (#304)
  • Add menu bar on top (#304)
  • Toggle visibility of status bar at bottom (#304)
  • Add help message (#304)
  • Make SourceState responsible for providing a Node for the preference pane (#304)
  • Make SourceState responsible to provide key bindings (#304)
  • Manage key-only actions through KeyCombination and show in help message (#245) (#304)
  • Render README.md on button click in help message (#304)
  • Make general Paintera shortcuts available in menu bar (#304)
  • Add option to ignore lock file (#304)
  • Make Paintera version accessible in UI (#304)
  • Add SciJava repl (requested in #138) for scripting in running paintera (#318)
  • Use fontawesome icons for symbols such as close or refresh icons. This is more robust and less work than creating new icons with paths. (#320)
  • Add markdown support for bookmark notes (#322)

Bug Fixes

  • de-couple properties/settings from sources (SourceInfo not part of Properties2, #256) (#304)
  • The sym-linked README.md (into src/main/resources) was not available in the packaged jars (#323). Instead, copy README.md and img into target/classes and also convert README.md into target/classes/README.html at runtime. Images are still not displayed for readme from jar files but that can be resolved in a separate issue. (#324)
  • Using temporary project directories would crash the deprecated Paintera main class with a NullPointerException (#327) (#328)
  • Datasets specified on the CLI would not be added to the viewer in the updated Paintera2 main class (#329). The fix was simple, the responsible method would just not be called (#330)

Pull Requests

#304

Merge pull request #304 from saalfeldlab/make-project-directory-mutable

[FEATURE] Make project directory mutable and add "Save As" button (#190)
[FEATURE] Add menu bar on top
[FEATURE] Toggle visibility of status bar at bottom
[FEATURE] Add help message
[FEATURE] Make SourceState responsible for providing a Node for the preference pane
[FEATURE] Make SourceState responsible to provide key bindings
[FEATURE] Manage key-only actions through KeyCombination and show in help message (#245)
[FEATURE] Render README.md on button click in help message
[FEATURE] Make general Paintera shortcuts available in menu bar
[FEATURE] Add option to ignore lock file
[FEATURE] Make Paintera version accessible in UI
[BUGFIX] de-couple properties/settings from sources (SourceInfo not part of Properties2, #256)

#318

Merge pull request #318 from saalfeldlab/scijava-repl

[FEATURE] Add SciJava repl (requested in #138) for scripting in running paintera

#324

Merge pull request #324 from saalfeldlab/copy-readme-instead-of-symlink

[BUGFIX] The sym-linked README.md (into src/main/resources) was not available in the packaged jars (#323). Instead, copy README.md and img into target/classes and also convert README.md into target/classes/README.html at runtime. Images are still not displayed for readme from jar files but that can be resolved in a separate issue.

#320

Merge pull request #320 from saalfeldlab/fontawesome

[FEATURE] Use fontawesome icons for symbols such as close or refresh icons. This is more robust and less work than creating new icons with paths.

#322

Merge pull request #322 from saalfeldlab/bookmark-node-markdown

[FEATURE] Add markdown support for bookmark notes

#328

Merge pull request #328 from saalfeldlab/fix-temp-project-327

[BUGFIX] Using temporary project directories would crash the deprecated Paintera main class with a NullPointerException (#327)

#330

Merge pull request #330 from saalfeldlab/fix-add-datasets-cli-329

[BUGFIX] Datasets specified on the CLI would not be added to the viewer in the updated Paintera2 main class (#329). The fix was simple, the responsible method would just not be called

paintera-0.19.3

29 Aug 16:25
Compare
Choose a tag to compare

Paintera 0.19.3

Previous release: 0.19.2

Changelog

Bug Fixes

  • Orthogonal slices in 3D viewer would not be centered correctly when loading data with non-zero offset, in particular offset >> 0 (#307), fixed in #312

Pull Requests

#312

Merge pull request #312 from saalfeldlab/fix-307

Consider min of source interval when centering at a source

paintera-0.19.2

25 Aug 01:47
Compare
Choose a tag to compare

Paintera 0.19.2

Previous release: 0.19.1

Changelog

Bug Fixes

  • Erase-paint would be committed as transparent label into background. Users found that confusing because they expected erase-paint to erase what was painted in the canvas only and nothing to be committed to background where erased (#294). After discussion and evaluation, #305 changes the behavior of comitting canvas: Now, no special values will be written into background: Only background (0) or valid label ids will be written. This also means that all voxels in the data are assigned meaning (and not "UNKNOWN" or equivalent).

Pull Requests

#305

Merge pull request #305 from saalfeldlab/fix-294

Exclude all special value labels when committing canvas

paintera-0.19.1

14 Aug 18:16
Compare
Choose a tag to compare

Paintera 0.19.1

Previous release: 0.19.0

Changelog

Bug Fixes

  • Fix "Not a label multiset" error when persisting canvas and no "isLabelMultiset": true attribute is present (#297) by @igorpisarev in #298

Pull Requests

#298

Merge pull request #298 from saalfeldlab/fix-not-a-label-multiset-error

Fix "not a label multiset" error

paintera-0.19.0

13 Aug 19:48
Compare
Choose a tag to compare

Paintera 0.19.0

Previous release: 0.18.1

Changelog

New Features

  • Add a dialog to add intersecting source states through the Paintera UI (fixes #295). No need to copy and modify existing project files anymore, and much more reliable! (#296)

Pull Requests

#296

Merge pull request #296 from saalfeldlab/intersecting-source-state-dialog

[FEATURE] Add a dialog to add intersecting source states through the Paintera UI (fixes #295). No need to copy and modify existing project files anymore, and much more reliable!