Medical Imaging Interaction Toolkit  2026.06.00
Medical Imaging Interaction Toolkit

Paintbrush tool for InteractiveSegmentation. More...

#include <mitkPaintbrushTool.h>

Inheritance diagram for mitk::PaintbrushTool:
Collaboration diagram for mitk::PaintbrushTool:

Public Member Functions

 mitkClassMacro (PaintbrushTool, FeedbackContourTool)
 
void SetSize (int value)
 Sets the radius of the circular paintbrush pen. More...
 
- Public Member Functions inherited from mitk::FeedbackContourTool
 mitkClassMacro (FeedbackContourTool, SegTool2D)
 
- Public Member Functions inherited from mitk::SegTool2D
 mitkClassMacro (SegTool2D, Tool)
 
void SetShowMarkerNodes (bool show)
 Sets whether contour marker nodes should be visible in the DataStorage. More...
 
void SetEnable3DInterpolation (bool)
 Enables or disables the 3D interpolation after writing back the 2D segmentation result, and defaults to true. More...
 
void Activated () override
 Called when the tool gets activated. More...
 
void Deactivated () override
 Called when the tool gets deactivated. More...
 
virtual void SetIsTimePointChangeAware (bool _arg)
 
virtual bool GetIsTimePointChangeAware ()
 
virtual void IsTimePointChangeAwareOn ()
 
virtual void IsTimePointChangeAwareOff ()
 
DataNode * GetWorkingDataNode () const
 Returns the segmentation node that should be modified by the tool. More...
 
MultiLabelSegmentation * GetWorkingData () const
 Returns the working data (multi-label segmentation image). More...
 
DataNode * GetReferenceDataNode () const
 Returns the reference data node. More...
 
Image * GetReferenceData () const
 Returns the reference image data. More...
 
- Public Member Functions inherited from mitk::Tool
 mitkClassMacro (Tool, EventStateMachine)
 
virtual us::ModuleResource GetCursorIconResource () const
 Returns the cursor icon of the tool wrapped by a usModuleResource. More...
 
virtual us::ModuleResource GetIconResource () const
 Returns the tool button icon of the tool wrapped by a usModuleResource. More...
 
virtual const char * GetName () const =0
 Returns the name of this tool. Make it short! More...
 
virtual mitk::Label::AlgorithmType GetAlgorithmType () const
 Returns the intrinsic algorithm type of this tool, used to stamp label provenance. More...
 
virtual const char * GetGroup () const
 Name of a group. More...
 
virtual bool IsEligibleForAutoInit () const
 Returns whether this tool is eligible for auto-initialization by ToolManager. More...
 
virtual void InitializeStateMachine ()
 Initializes the state machine for this tool based on the interaction type. More...
 
virtual itk::Object::Pointer GetGUI (const std::string &toolkitPrefix, const std::string &toolkitPostfix)
 Interface for GUI creation. More...
 
virtual NodePredicateBase::ConstPointer GetReferenceDataPreference () const
 Returns a predicate describing valid reference data for this tool. More...
 
virtual NodePredicateBase::ConstPointer GetWorkingDataPreference () const
 Returns a predicate describing valid working data for this tool. More...
 
virtual bool CanHandle (const BaseData *referenceData, const BaseData *workingData) const
 Checks if a tool can handle the given reference data and optional working data. More...
 
virtual bool ConfirmBeforeDeactivation ()
 Method call to invoke a dialog box just before exiting. More...
 
- Public Member Functions inherited from mitk::EventStateMachine
 mitkClassMacro (EventStateMachine, InteractionEventHandler)
 
bool LoadStateMachine (const std::string &filename, const us::Module *module=nullptr)
 Load a state machine pattern from an XML resource file. More...
 
bool HandleEvent (InteractionEvent *event, DataNode *dataNode)
 Process an incoming interaction event. More...
 
void EnableUndo (bool enable)
 Enable or disable the undo mechanism for this state machine. More...
 
void EnableInteraction (bool enable)
 Enable or disable the state machine. More...
 
- Public Member Functions inherited from mitk::InteractionEventHandler
 mitkClassMacroItkParent (InteractionEventHandler, itk::Object)
 
bool SetEventConfig (const std::string &filename, const us::Module *module=nullptr)
 Loads a configuration from an XML resource. More...
 
bool SetEventConfig (const EventConfig &config)
 Loads a configuration from an EventConfig object. More...
 
EventConfig GetEventConfig () const
 Returns the current configuration. More...
 
bool AddEventConfig (const std::string &filename, const us::Module *module=nullptr)
 This method extends the configuration. More...
 
bool AddEventConfig (const EventConfig &config)
 This method extends the configuration. The configuration from the EventConfig object is loaded and only the ones conflicting are replaced by the new one. This way several configurations can be combined. More...
 
- Public Member Functions inherited from mitk::InteractionEventObserver
 InteractionEventObserver ()
 
virtual ~InteractionEventObserver ()
 
void Disable ()
 Disable this observer so it no longer receives notifications. More...
 
void Enable ()
 Enable this observer so it receives notifications. More...
 
bool IsEnabled () const
 Check whether this observer is currently enabled. More...
 

Static Public Member Functions

static ContourModel::Pointer CreateBrushContour (int size)
 Builds a closed circular brush contour of the given size in 2D index coordinates, centered at the origin. More...
 
static ContourModel::Pointer CreateGapContour (const Point3D &from, const Point3D &to, double radius)
 Builds a closed four-vertex rectangle ContourModel that fills the gap swept between two brush positions, in 2D index coordinates. More...
 
- Static Public Member Functions inherited from mitk::SegTool2D
static bool DetermineAffectedImageSlice (const Image *image, const PlaneGeometry *plane, int &affectedDimension, int &affectedSlice)
 Calculates for a given Image and PlaneGeometry, which slice of the image (in index coordinates) is meant by the plane. More...
 
static void UpdateAllSurfaceInterpolations (const MultiLabelSegmentation *workingImage, TimeStepType timeStep, const PlaneGeometry *plane, bool detectIntersection)
 Updates the surface interpolations by extracting contours from the given slice. More...
 
static Image::Pointer GetAffectedImageSliceAs2DImage (const InteractionPositionEvent *positionEvent, const Image *image, unsigned int component=0)
 Extract the slice of an image that the user just scribbles on. The given component denotes the vector component of an vector image. More...
 
static Image::Pointer GetAffectedImageSliceAs2DImage (const PlaneGeometry *planeGeometry, const Image *image, TimeStepType timeStep, unsigned int component=0)
 Extract the slice of an image cut by given plane. The given component denotes the vector component of a vector image. More...
 
static Image::Pointer GetAffectedImageSliceAs2DImageByTimePoint (const PlaneGeometry *planeGeometry, const Image *image, TimePointType timePoint, unsigned int component=0)
 Extract the slice of an image cut by the given plane at a specified time point. More...
 
static void WriteBackSegmentationResult (const DataNode *workingNode, const PlaneGeometry *planeGeometry, const Image *segmentationResult, TimeStepType timeStep, const std::string &toolName)
 Writes the provided segmentation result slice into the data of the passed workingNode. More...
 
static void WriteSliceToVolume (Image *workingImage, const PlaneGeometry *planeGeometry, const Image *slice, TimeStepType timeStep)
 Writes a provided slice into the passed working image. More...
 

Public Attributes

Message1< int > SizeChanged
 Emitted when the pen size changes or should be updated in a GUI. More...
 
- Public Attributes inherited from mitk::Tool
Message GUIProcessEventsMessage
 To let GUI process new events (e.g. qApp->processEvents() ) More...
 
Message1< std::string > ErrorMessage
 To send error messages (to be shown by some GUI) More...
 
Message1< bool > CurrentlyBusy
 To send whether the tool is busy (to be shown by some GUI) More...
 
Message1< std::string > GeneralMessage
 To send general messages (to be shown by some GUI) More...
 

Protected Member Functions

 PaintbrushTool (bool startWithFillMode=true)
 
 ~PaintbrushTool () override
 
void ConnectActionsAndFunctions () override
 
void Activated () override
 Called when the tool gets activated. More...
 
void Deactivated () override
 Called when the tool gets deactivated. More...
 
virtual void OnMousePressed (StateMachineAction *, InteractionEvent *)
 
virtual void OnMouseMoved (StateMachineAction *, InteractionEvent *)
 
virtual void OnPrimaryButtonPressedMoved (StateMachineAction *, InteractionEvent *)
 
virtual void MouseMoved (mitk::InteractionEvent *interactionEvent, bool leftMouseButtonPressed)
 
virtual void OnMouseReleased (StateMachineAction *, InteractionEvent *)
 
void UpdateFeedbackColor ()
 
virtual void OnInvertLogic (StateMachineAction *, InteractionEvent *)
 
virtual int GetFillValue () const
 
void UpdateContour (const InteractionPositionEvent *)
 
bool CheckIfCurrentSliceHasChanged (const InteractionPositionEvent *event)
 
void ResetWorkingSlice (const InteractionPositionEvent *event)
 
void OnToolManagerWorkingDataModified ()
 
- Protected Member Functions inherited from mitk::FeedbackContourTool
 FeedbackContourTool (const char *)
 
 ~FeedbackContourTool () override
 
const ContourModel * GetFeedbackContour () const
 
void InitializeFeedbackContour (bool isClosed)
 
void ClearsCurrentFeedbackContour (bool isClosed)
 
void UpdateCurrentFeedbackContour (const ContourModel *sourceModel, TimeStepType sourceTimeStep=0)
 
void UpdateFeedbackContour (const ContourModel *sourceModel, TimeStepType feedbackTimeStep, TimeStepType sourceTimeStep=0)
 
void AddVertexToCurrentFeedbackContour (const Point3D &point)
 
void AddVertexToFeedbackContour (const Point3D &point, TimeStepType feedbackTimeStep)
 
void SetFeedbackContourVisible (bool)
 
void SetFeedbackContourColor (float r, float g, float b)
 Provide values from 0.0 (black) to 1.0 (full color) More...
 
void SetFeedbackContourColor (const Color &color)
 
void SetFeedbackContourColorDefault ()
 
void SetFeedbackContourWidth (float width)
 
ContourModel::Pointer ProjectContourTo2DSlice (const Image *slice, const ContourModel *contourIn3D)
 Projects a contour onto an image point by point. Converts from world to index coordinates. More...
 
ContourModel::Pointer BackProjectContourFrom2DSlice (const BaseGeometry *sliceGeometry, const ContourModel *contourIn2D)
 Projects a slice index coordinates of a contour back into world coordinates. More...
 
void WriteBackFeedbackContourAsSegmentationResult (const InteractionPositionEvent *positionEvent, MultiLabelSegmentation::LabelValueType labelValue, bool addMode, bool setInvisibleAfterSuccess=true)
 Checks preconditions and writes the feedback contour as a segmentation result. More...
 
mitk::Image::Pointer GenerateSliceWithContourUpdate (const MultiLabelSegmentation *seg, const PlaneGeometry *sliceGeometry, const ContourModel *contour, MultiLabelSegmentation::LabelValueType labelValue, TimePointType timePoint, bool addMode)
 Generates an updated slice image with the contour applied. More...
 
- Protected Member Functions inherited from mitk::SegTool2D
 SegTool2D ()
 
 SegTool2D (const char *, const us::Module *interactorModule=nullptr)
 
 ~SegTool2D () override
 
virtual void OnTimePointChanged ()
 
bool FilterEvents (InteractionEvent *interactionEvent, DataNode *dataNode) override
 Filters events that cannot be handled by 2D segmentation tools. More...
 
Image::Pointer GetAffectedWorkingSlice (const InteractionPositionEvent *) const
 Extract the slice of the currently selected working image that the user just scribbles on. More...
 
Image::Pointer GetAffectedReferenceSlice (const InteractionPositionEvent *) const
 Extract the slice of the currently selected reference image that the user just scribbles on. More...
 
Image::Pointer GetAffectedReferenceSlice (const PlaneGeometry *planeGeometry, TimeStepType timeStep) const
 
void WriteBackSegmentationResult (const InteractionPositionEvent *, const Image *segmentationResult)
 
void WriteBackSegmentationResult (const PlaneGeometry *planeGeometry, const Image *segmentationResult, TimeStepType timeStep)
 
void WriteBackSegmentationResults (const std::vector< SliceInformation > &sliceList, bool writeSliceToVolume=true)
 
virtual MultiLabelSegmentation::LabelValueVectorType GetAffectedLabelValues () const
 Returns the label value(s) whose pixels this tool's writeback actually modifies, so the provenance stamp at the writeback choke point lands on the right label. The default is the active label; tools that write a label other than the active one (e.g. erase/close operate on the clicked label) override this. An empty result records no tool use. More...
 
int AddContourmarker (const PlaneGeometry *planeGeometry, unsigned int sliceIndex)
 Adds a new node called Contourmarker to the datastorage which holds a mitk::PlanarFigure. By selecting this node the slicestack will be reoriented according to the passed PlanarFigure's Geometry. More...
 
void DisableContourMarkers ()
 
void InteractiveSegmentationBugMessage (const std::string &message) const
 
virtual TimePointType GetLastTimePointTriggered ()
 
void PushCursor ()
 Pushes the current tool cursor onto the cursor stack. More...
 
void PushCursor (us::ModuleResource cursorResource)
 Pushes a custom cursor onto the cursor stack. More...
 
void PopCursor (bool popFirstCursor=false)
 Pops the most recently pushed cursor from the stack. More...
 
void PopAllCursors ()
 Pops all cursors from the stack, restoring the default cursor. More...
 
- Protected Member Functions inherited from mitk::Tool
virtual void SetToolManager (ToolManager *)
 
ToolManager * GetToolManager () const
 
mitk::DataStorage * GetDataStorage () const
 
void ConnectActionsAndFunctions () override
 
 Tool (const char *, const us::Module *interactorModule=nullptr)
 
 ~Tool () override
 
void Notify (InteractionEvent *interactionEvent, bool isHandled) override
 Called by the Dispatcher to notify this observer about an InteractionEvent. More...
 
bool FilterEvents (InteractionEvent *, DataNode *) override
 
- Protected Member Functions inherited from mitk::EventStateMachine
 EventStateMachine ()
 
 ~EventStateMachine () override
 
void AddActionFunction (const std::string &action, const ActionFunctionDelegate &delegate)
 
void AddConditionFunction (const std::string &condition, const ConditionFunctionDelegate &delegate)
 
StateMachineState * GetCurrentState () const
 
void ResetToStartState ()
 ResetToStartState Reset state machine to it initial starting state. More...
 
virtual bool CheckCondition (const StateMachineCondition &condition, const InteractionEvent *interactionEvent)
 
virtual void ExecuteAction (StateMachineAction *action, InteractionEvent *interactionEvent)
 
void SetMouseCursor (const char *xpm[], int hotspotX, int hotspotY)
 Sets the specified mouse cursor. More...
 
void ResetMouseCursor ()
 Resets the mouse cursor to its original state. More...
 
StateMachineTransition * GetExecutableTransition (InteractionEvent *event)
 Returns the executable transition for the given event. More...
 
- Protected Member Functions inherited from mitk::InteractionEventHandler
 InteractionEventHandler ()
 
 ~InteractionEventHandler () override
 
PropertyList::Pointer GetAttributes () const
 
std::string MapToEventVariant (InteractionEvent *interactionEvent)
 
virtual void ConfigurationChanged ()
 

Static Protected Member Functions

static mitk::Point2D upperLeft (mitk::Point2D p)
 
- Static Protected Member Functions inherited from mitk::SegTool2D
static void UpdateSurfaceInterpolation (const std::vector< SliceInformation > &sliceInfos, const Image *workingImage, bool detectIntersection, mitk::Label::PixelType activeLabelValue, bool silent=false)
 Updates the surface interpolation by extracting contours from given slices. More...
 
static void WriteBackSegmentationResults (const DataNode *workingNode, const std::vector< SliceInformation > &sliceList, bool writeSliceToVolume=true, bool allowUndo=true, const std::string &toolName="")
 Writes all provided source slices into the data of the passed workingNode. The function does the following: 1) for every passed slice write it to workingNode (and generate and undo/redo step); 2) update the surface interpolation and 3) mark the node as modified. More...
 
static void WriteSliceToVolume (Image *workingImage, const SliceInformation &sliceInfo)
 
static bool IsPositionEventInsideImageRegion (InteractionPositionEvent *positionEvent, const BaseData *data)
 

Protected Attributes

bool m_FillMode
 
int m_Size
 
ContourModel::Pointer m_MasterContour
 
int m_LastContourSize
 
Image::Pointer m_WorkingSlice
 
Image::Pointer m_PaintingSlice
 
PlaneGeometry::ConstPointer m_CurrentPlane
 
DataNode::Pointer m_PaintingNode
 
mitk::Point3D m_LastPosition
 
- Protected Attributes inherited from mitk::SegTool2D
BaseRenderer * m_LastEventSender
 
unsigned int m_LastEventSlice
 
- Protected Attributes inherited from mitk::Tool
std::string m_EventConfig
 Let subclasses change their event configuration. More...
 
- Protected Attributes inherited from mitk::EventStateMachine
bool m_IsActive
 
UndoController * m_UndoController
 
bool m_UndoEnabled
 

Additional Inherited Members

- Public Types inherited from mitk::Tool
typedef mitk::Label::PixelType DefaultSegmentationDataType
 
- Public Types inherited from mitk::EventStateMachine
typedef itk::SmartPointer< StateMachineState > StateMachineStateType
 
- Protected Types inherited from mitk::EventStateMachine
typedef MessageAbstractDelegate2< StateMachineAction *, InteractionEvent *, void > ActionFunctionDelegate
 
typedef MessageAbstractDelegate1< const InteractionEvent *, bool > ConditionFunctionDelegate
 

Detailed Description

Paintbrush tool for InteractiveSegmentation.

See also
FeedbackContourTool
ExtractImageFilter

Simple paintbrush drawing tool. Right now there are only circular pens of varying size.

Warning
Only to be instantiated by mitk::ToolManager.
Author
maleike

Definition at line 41 of file mitkPaintbrushTool.h.

Constructor & Destructor Documentation

◆ PaintbrushTool()

mitk::PaintbrushTool::PaintbrushTool ( bool  startWithFillMode = true)
protected

◆ ~PaintbrushTool()

mitk::PaintbrushTool::~PaintbrushTool ( )
overrideprotected

Member Function Documentation

◆ Activated()

void mitk::PaintbrushTool::Activated ( )
overrideprotectedvirtual

Called when the tool gets activated.

Derived tools should call their parents implementation at the beginning of the overriding function.

Reimplemented from mitk::FeedbackContourTool.

◆ CheckIfCurrentSliceHasChanged()

bool mitk::PaintbrushTool::CheckIfCurrentSliceHasChanged ( const InteractionPositionEvent *  event)
protected

Checks if the current slice has changed and updates (if needed m_CurrentPlane).

◆ ConnectActionsAndFunctions()

void mitk::PaintbrushTool::ConnectActionsAndFunctions ( )
overrideprotectedvirtual

Is called after loading a statemachine. Overwrite this function in specific interactor implementations. Connect actions and functions using the CONNECT_FUNCTION macro within this function.

Reimplemented from mitk::EventStateMachine.

◆ CreateBrushContour()

static ContourModel::Pointer mitk::PaintbrushTool::CreateBrushContour ( int  size)
static

Builds a closed circular brush contour of the given size in 2D index coordinates, centered at the origin.

Half-pixel corner correction is applied so that even and odd sizes stamp symmetrically around the index where the brush is rendered.

Precondition
size > 0 (a non-positive size yields a degenerate contour).

◆ CreateGapContour()

static ContourModel::Pointer mitk::PaintbrushTool::CreateGapContour ( const Point3D &  from,
const Point3D &  to,
double  radius 
)
static

Builds a closed four-vertex rectangle ContourModel that fills the gap swept between two brush positions, in 2D index coordinates.

Used to avoid holes when the mouse moves more than one brush radius between successive samples.

Precondition
from != to (a zero-length vector causes the internal direction.normalize() to produce NaNs).

◆ Deactivated()

void mitk::PaintbrushTool::Deactivated ( )
overrideprotectedvirtual

Called when the tool gets deactivated.

Derived tools should call their parents implementation at the end of the overriding function.

Reimplemented from mitk::FeedbackContourTool.

◆ GetFillValue()

virtual int mitk::PaintbrushTool::GetFillValue ( ) const
protectedvirtual

◆ mitkClassMacro()

mitk::PaintbrushTool::mitkClassMacro ( PaintbrushTool  ,
FeedbackContourTool   
)

◆ MouseMoved()

virtual void mitk::PaintbrushTool::MouseMoved ( mitk::InteractionEvent *  interactionEvent,
bool  leftMouseButtonPressed 
)
protectedvirtual

◆ OnInvertLogic()

virtual void mitk::PaintbrushTool::OnInvertLogic ( StateMachineAction *  ,
InteractionEvent *   
)
protectedvirtual

◆ OnMouseMoved()

virtual void mitk::PaintbrushTool::OnMouseMoved ( StateMachineAction *  ,
InteractionEvent *   
)
protectedvirtual

◆ OnMousePressed()

virtual void mitk::PaintbrushTool::OnMousePressed ( StateMachineAction *  ,
InteractionEvent *   
)
protectedvirtual

◆ OnMouseReleased()

virtual void mitk::PaintbrushTool::OnMouseReleased ( StateMachineAction *  ,
InteractionEvent *   
)
protectedvirtual

◆ OnPrimaryButtonPressedMoved()

virtual void mitk::PaintbrushTool::OnPrimaryButtonPressedMoved ( StateMachineAction *  ,
InteractionEvent *   
)
protectedvirtual

◆ OnToolManagerWorkingDataModified()

void mitk::PaintbrushTool::OnToolManagerWorkingDataModified ( )
protected

◆ ResetWorkingSlice()

void mitk::PaintbrushTool::ResetWorkingSlice ( const InteractionPositionEvent *  event)
protected

◆ SetSize()

void mitk::PaintbrushTool::SetSize ( int  value)

Sets the radius of the circular paintbrush pen.

Parameters
[in]valueThe pen radius in pixels.

◆ UpdateContour()

void mitk::PaintbrushTool::UpdateContour ( const InteractionPositionEvent *  )
protected

◆ UpdateFeedbackColor()

void mitk::PaintbrushTool::UpdateFeedbackColor ( )
protected

◆ upperLeft()

static mitk::Point2D mitk::PaintbrushTool::upperLeft ( mitk::Point2D  p)
staticprotected

Little helper function. Returns the upper left corner of the given pixel.

Member Data Documentation

◆ m_CurrentPlane

PlaneGeometry::ConstPointer mitk::PaintbrushTool::m_CurrentPlane
protected

Definition at line 124 of file mitkPaintbrushTool.h.

◆ m_FillMode

bool mitk::PaintbrushTool::m_FillMode
protected

Definition at line 115 of file mitkPaintbrushTool.h.

◆ m_LastContourSize

int mitk::PaintbrushTool::m_LastContourSize
protected

Definition at line 120 of file mitkPaintbrushTool.h.

◆ m_LastPosition

mitk::Point3D mitk::PaintbrushTool::m_LastPosition
protected

Definition at line 126 of file mitkPaintbrushTool.h.

◆ m_MasterContour

ContourModel::Pointer mitk::PaintbrushTool::m_MasterContour
protected

Definition at line 118 of file mitkPaintbrushTool.h.

◆ m_PaintingNode

DataNode::Pointer mitk::PaintbrushTool::m_PaintingNode
protected

Definition at line 125 of file mitkPaintbrushTool.h.

◆ m_PaintingSlice

Image::Pointer mitk::PaintbrushTool::m_PaintingSlice
protected

Definition at line 123 of file mitkPaintbrushTool.h.

◆ m_Size

int mitk::PaintbrushTool::m_Size
protected

Definition at line 116 of file mitkPaintbrushTool.h.

◆ m_WorkingSlice

Image::Pointer mitk::PaintbrushTool::m_WorkingSlice
protected

Definition at line 122 of file mitkPaintbrushTool.h.

◆ SizeChanged

Message1<int> mitk::PaintbrushTool::SizeChanged

Emitted when the pen size changes or should be updated in a GUI.

Definition at line 45 of file mitkPaintbrushTool.h.


The documentation for this class was generated from the following file: