Refactored view ruler and orientation marker
Created by: jcfr
Ruler and orientation marker:
- available in both 2D and 3D viewers
- easier to discover (available in viewer controller widgets and application settings)
- more customizable (size, visibility, custom ruler scales, orientation marker models)
- implemented with cleaner design (using displayable managers for rendering and regular node attributes for data storage).
New features:
- Ruler and orientation marker is configurable per viewer in the slice/3D view controller widgets (same way as all view options)
- Ruler and orientation marker can be shown in 3D view
- Default ruler orientation marker settings (and additional 3D view settings, such as orthographic projection, show 3D cube, axis labels, depth peeling) can be configured in the application settings (saved in .ini file)
- Allow using any model in the scene as orientation marker (for example, set a custom orientation marker in the 3D viewer:
getNode('View1').SetOrientationMarkerHumanModelNodeID(getNode('ToriaClipped03').GetID() )
- All ruler and orientation marker settings (including custom orientation marker) are saved in the scene
- Added "thick" ruler mode: there is an option now to show the ruler with a thicker line and larger font so that it can be seen from a larger distance (e.g., interventional use)
Fixes bugs in the old implementation:
- ruler showed incorrect value when zoomed in or zoomed out very much (instead of hiding the ruler, it was kept displayed at an incorrect scale)
- Ruler was unusable in lightboxview: ruler line was clipped in half, label was not visible