Manipulator to transform an ROI (Region of Interest). More...
#include <LDM/manips/SoROIManip.h>
Public Member Functions | |
virtual SoType | getTypeId () const |
SoROIManip () | |
SoDragger * | getDragger () |
SbBool | replaceNode (SoPath *p) |
SbBool | replaceManip (SoPath *p, SoROI *newOne) const |
Static Public Member Functions | |
static SoType | getClassTypeId () |
Public Attributes | |
SoSFBool | boxOn |
SoSFBool | constrained |
This class defines a manipulator to transform an ROI (Region of Interest). The manipulator is a composite of SoROI and an SoTabBoxDragger that allows the user to interactively move and resize the ROI.
To define a simple ROI, set the limits of the ROI in the box field (and do not set the subVolume field). The same result is obtained by setting the box and subVolume fields to the same value, but this is not necessary. But note that, like SoROI, the default ROI box is not automatically the full volume. You must initialize the ROI box to something, for example the volume dimensions minus one. See SoROI for more details.
// Initialize ROI box to full volume SoVolumeData* volData = new SoVolumeData(); . . . SoROIManip* roiManip = new SoROIManip(); roiManip->box.setValue( SbVec3i32(0,0,0), volData->data.getSize() - SbVec3i32(1,1,1) ); root->addChild( roiManip );
subVolume | 0 0 0 0 0 0 |
box | 0 0 0 1 1 1 |
flags | 7 |
relative | FALSE |
boxOn | TRUE |
constrained | FALSE |
MedicalComputeHistogram, MedicalRoiManip, MedicalRotateROI, ComputeHistogram, RoiManip, VolRend
SoROIManip::SoROIManip | ( | ) |
Constructor.
static SoType SoROIManip::getClassTypeId | ( | ) | [static] |
Returns the type identifier for this class.
Reimplemented from SoROI.
SoDragger* SoROIManip::getDragger | ( | ) |
Returns the dragger node being employed by this manip.
virtual SoType SoROIManip::getTypeId | ( | ) | const [virtual] |
Returns the type identifier for this specific instance.
Reimplemented from SoROI.
Replaces the tail of the path, which must be this manipulator, with the given SoROI node.
If the path has a nodekit, this will try to use setPart() to insert the new node. Otherwise, the manipulator requires that the next-to-last node in the path chain be a group.
The field values from the manipulator will be copied to the ROI node, and the manipulator will be replaced.
The manipulator will not call ref() or unref() on the node which is replacing it, nor will it make any changes to field connections.
The calling process is thus responsible for keeping track of its own nodes and field connections.
Replaces the tail of the path with this manipulator.
The tail of the path must be an SoROI node (or subclass thereof). If the path has a nodekit, this will try to use setPart() to insert the manipulator. Otherwise, the manipulator requires that the next-to-last node in the path chain be a group.
The field values from the ROI node will be copied to this manipulator, and the ROI node will be replaced.
The manipulator will not call ref() on the node it is replacing.
The old node will disappear if it has no references other than from the input path p and its parent, since this manipulator will be replacing it in both of those places. Nor will the manipulator make any changes to field connections of the old node. The calling process is thus responsible for keeping track of its own nodes and field connections.
Constrains the dragger to fit in the data volume.
Default value is FALSE.