"""
This type stub file was generated by pyright.
"""

from .vtk3DWidget import vtk3DWidget

class vtkImageTracerWidget(vtk3DWidget):
    """
    vtkImageTracerWidget - 3D widget for tracing on planar props.
    
    Superclass: vtk3DWidget
    
    vtkImageTracerWidget is different from other widgets in three
    distinct ways:
    1) any sub-class of vtkProp can be input rather than just vtkProp3D,
       so that vtkImageActor can be set as the prop and then traced over,
    2) the widget fires pick events at the input prop to decide where to
       move its handles, 3) the widget has 2D glyphs for handles instead
       of 3D spheres as is done in other sub-classes of vtk3DWidget. This
    widget is primarily designed for manually tracing over image data.
       The button actions and key modifiers are as follows for
       controlling the widget:
    1) left button click over the image, hold and drag draws a free hand
       line.
    2) left button click and release erases the widget line, if it
       exists, and repositions the first handle.
    3) middle button click starts a snap drawn line.  The line is
       terminated by clicking the middle button while depressing the ctrl
    key.
    4) when tracing a continuous or snap drawn line, if the last cursor
       position is within a specified tolerance to the first handle, the
       widget line will form a closed loop.
    5) right button clicking and holding on any handle that is part of a
       snap drawn line allows handle dragging: existing line segments are
    updated accordingly.  If the path is open and AutoClose is set to On,
    the path can be closed by repositioning the first and last points
       over one another.
    6) ctrl key + right button down on any handle will erase it: existing
       snap drawn line segments are updated accordingly.  If the line was
    formed by continuous tracing, the line is deleted leaving one handle.
    7) shift key + right button down on any snap drawn line segment will
       insert a handle at the cursor position.  The line segment is split
    accordingly.
    
    @warning
    the input vtkDataSet should be vtkImageData.
    
    @sa
    vtk3DWidget vtkBoxWidget vtkLineWidget vtkPointWidget vtkSphereWidget
    vtkImagePlaneWidget vtkImplicitPlaneWidget vtkPlaneWidget
    """
    def AutoCloseOff(self):
        """
        V.AutoCloseOff()
        C++: virtual void AutoCloseOff()
        
        In concert with a CaptureRadius value, automatically form a
        closed path by connecting first to last path points. Default is
        Off.
        """
        ...
    
    def AutoCloseOn(self):
        """
        V.AutoCloseOn()
        C++: virtual void AutoCloseOn()
        
        In concert with a CaptureRadius value, automatically form a
        closed path by connecting first to last path points. Default is
        Off.
        """
        ...
    
    def GetAutoClose(self):
        """
        V.GetAutoClose() -> int
        C++: virtual vtkTypeBool GetAutoClose()
        
        In concert with a CaptureRadius value, automatically form a
        closed path by connecting first to last path points. Default is
        Off.
        """
        ...
    
    def GetCaptureRadius(self):
        """
        V.GetCaptureRadius() -> float
        C++: virtual double GetCaptureRadius()
        
        Set/Get the capture radius for automatic path closing.  For image
        data, capture radius should be half the distance between
        voxel/pixel centers. Default is 1.0
        """
        ...
    
    def GetGlyphSource(self):
        """
        V.GetGlyphSource() -> vtkGlyphSource2D
        C++: vtkGlyphSource2D *GetGlyphSource()
        
        Get the handles' geometric representation via vtkGlyphSource2D.
        """
        ...
    
    def GetHandleLeftMouseButton(self):
        """
        V.GetHandleLeftMouseButton() -> int
        C++: virtual vtkTypeBool GetHandleLeftMouseButton()
        
        Enable/Disable mouse button events
        """
        ...
    
    def GetHandleMiddleMouseButton(self):
        """
        V.GetHandleMiddleMouseButton() -> int
        C++: virtual vtkTypeBool GetHandleMiddleMouseButton()
        
        Enable/Disable mouse button events
        """
        ...
    
    def GetHandlePosition(self, p_int, p_float=..., p_float=..., p_float=...):
        """
        V.GetHandlePosition(int, [float, float, float])
        C++: void GetHandlePosition(int handle, double xyz[3])
        V.GetHandlePosition(int) -> (float, float, float)
        C++: double *GetHandlePosition(int handle)
        
        Set/Get the handle position in terms of a zero-based array of
        handles.
        """
        ...
    
    def GetHandleProperty(self):
        """
        V.GetHandleProperty() -> vtkProperty
        C++: virtual vtkProperty *GetHandleProperty()
        
        Set/Get the handle properties (the 2D glyphs are the handles).
        The properties of the handles when selected and normal can be
        manipulated.
        """
        ...
    
    def GetHandleRightMouseButton(self):
        """
        V.GetHandleRightMouseButton() -> int
        C++: virtual vtkTypeBool GetHandleRightMouseButton()
        
        Enable/Disable mouse button events
        """
        ...
    
    def GetImageSnapType(self):
        """
        V.GetImageSnapType() -> int
        C++: virtual int GetImageSnapType()
        
        Set/Get the type of snapping to image data: center of a
        pixel/voxel or nearest point defining a pixel/voxel.
        """
        ...
    
    def GetImageSnapTypeMaxValue(self):
        """
        V.GetImageSnapTypeMaxValue() -> int
        C++: virtual int GetImageSnapTypeMaxValue()
        
        Set/Get the type of snapping to image data: center of a
        pixel/voxel or nearest point defining a pixel/voxel.
        """
        ...
    
    def GetImageSnapTypeMinValue(self):
        """
        V.GetImageSnapTypeMinValue() -> int
        C++: virtual int GetImageSnapTypeMinValue()
        
        Set/Get the type of snapping to image data: center of a
        pixel/voxel or nearest point defining a pixel/voxel.
        """
        ...
    
    def GetInteraction(self):
        """
        V.GetInteraction() -> int
        C++: virtual vtkTypeBool GetInteraction()
        
        Enable/disable mouse interaction when the widget is visible.
        """
        ...
    
    def GetLineProperty(self):
        """
        V.GetLineProperty() -> vtkProperty
        C++: virtual vtkProperty *GetLineProperty()
        
        Set/Get the line properties. The properties of the line when
        selected and unselected can be manipulated.
        """
        ...
    
    def GetNumberOfGenerationsFromBase(self, string):
        """
        V.GetNumberOfGenerationsFromBase(string) -> int
        C++: vtkIdType GetNumberOfGenerationsFromBase(const char *type)
            override;
        
        Given a the name of a base class of this class type, return the
        distance of inheritance between this class type and the named
        class (how many generations of inheritance are there between this
        class and the named class). If the named class is not in this
        class's inheritance tree, return a negative value. Valid
        responses will always be nonnegative. This method works in
        combination with vtkTypeMacro found in vtkSetGet.h.
        """
        ...
    
    def GetNumberOfGenerationsFromBaseType(self, string):
        """
        V.GetNumberOfGenerationsFromBaseType(string) -> int
        C++: static vtkIdType GetNumberOfGenerationsFromBaseType(
            const char *type)
        
        Given a the name of a base class of this class type, return the
        distance of inheritance between this class type and the named
        class (how many generations of inheritance are there between this
        class and the named class). If the named class is not in this
        class's inheritance tree, return a negative value. Valid
        responses will always be nonnegative. This method works in
        combination with vtkTypeMacro found in vtkSetGet.h.
        """
        ...
    
    def GetNumberOfHandles(self):
        """
        V.GetNumberOfHandles() -> int
        C++: virtual int GetNumberOfHandles()
        
        Get the number of handles.
        """
        ...
    
    def GetPath(self, vtkPolyData):
        """
        V.GetPath(vtkPolyData)
        C++: void GetPath(vtkPolyData *pd)
        
        Grab the points and lines that define the traced path. These
        point values are guaranteed to be up-to-date when either the
        InteractionEvent or EndInteraction events are invoked. The user
        provides the vtkPolyData and the points and cells representing
        the line are added to it.
        """
        ...
    
    def GetProjectionNormal(self):
        """
        V.GetProjectionNormal() -> int
        C++: virtual int GetProjectionNormal()
        
        Set the projection normal.  The normal in SetProjectionNormal is
        0,1,2 for YZ,XZ,XY planes respectively.  Since the handles are 2D
        glyphs, it is necessary to specify a plane on which to generate
        them, even though ProjectToPlane may be turned off.
        """
        ...
    
    def GetProjectionNormalMaxValue(self):
        """
        V.GetProjectionNormalMaxValue() -> int
        C++: virtual int GetProjectionNormalMaxValue()
        
        Set the projection normal.  The normal in SetProjectionNormal is
        0,1,2 for YZ,XZ,XY planes respectively.  Since the handles are 2D
        glyphs, it is necessary to specify a plane on which to generate
        them, even though ProjectToPlane may be turned off.
        """
        ...
    
    def GetProjectionNormalMinValue(self):
        """
        V.GetProjectionNormalMinValue() -> int
        C++: virtual int GetProjectionNormalMinValue()
        
        Set the projection normal.  The normal in SetProjectionNormal is
        0,1,2 for YZ,XZ,XY planes respectively.  Since the handles are 2D
        glyphs, it is necessary to specify a plane on which to generate
        them, even though ProjectToPlane may be turned off.
        """
        ...
    
    def GetProjectionPosition(self):
        """
        V.GetProjectionPosition() -> float
        C++: virtual double GetProjectionPosition()
        
        Set the position of the widgets' handles in terms of a plane's
        position. e.g., if ProjectionNormal is 0, all of the x-coordinate
        values of the handles are set to ProjectionPosition.  No attempt
        is made to ensure that the position is within the bounds of
        either the underlying image data or the prop on which tracing is
        performed.
        """
        ...
    
    def GetProjectToPlane(self):
        """
        V.GetProjectToPlane() -> int
        C++: virtual vtkTypeBool GetProjectToPlane()
        
        Force handles to be on a specific ortho plane. Default is Off.
        """
        ...
    
    def GetSelectedHandleProperty(self):
        """
        V.GetSelectedHandleProperty() -> vtkProperty
        C++: virtual vtkProperty *GetSelectedHandleProperty()
        
        Set/Get the handle properties (the 2D glyphs are the handles).
        The properties of the handles when selected and normal can be
        manipulated.
        """
        ...
    
    def GetSelectedLineProperty(self):
        """
        V.GetSelectedLineProperty() -> vtkProperty
        C++: virtual vtkProperty *GetSelectedLineProperty()
        
        Set/Get the line properties. The properties of the line when
        selected and unselected can be manipulated.
        """
        ...
    
    def GetSnapToImage(self):
        """
        V.GetSnapToImage() -> int
        C++: virtual vtkTypeBool GetSnapToImage()
        
        Force snapping to image data while tracing. Default is Off.
        """
        ...
    
    def HandleLeftMouseButtonOff(self):
        """
        V.HandleLeftMouseButtonOff()
        C++: virtual void HandleLeftMouseButtonOff()
        
        Enable/Disable mouse button events
        """
        ...
    
    def HandleLeftMouseButtonOn(self):
        """
        V.HandleLeftMouseButtonOn()
        C++: virtual void HandleLeftMouseButtonOn()
        
        Enable/Disable mouse button events
        """
        ...
    
    def HandleMiddleMouseButtonOff(self):
        """
        V.HandleMiddleMouseButtonOff()
        C++: virtual void HandleMiddleMouseButtonOff()
        
        Enable/Disable mouse button events
        """
        ...
    
    def HandleMiddleMouseButtonOn(self):
        """
        V.HandleMiddleMouseButtonOn()
        C++: virtual void HandleMiddleMouseButtonOn()
        
        Enable/Disable mouse button events
        """
        ...
    
    def HandleRightMouseButtonOff(self):
        """
        V.HandleRightMouseButtonOff()
        C++: virtual void HandleRightMouseButtonOff()
        
        Enable/Disable mouse button events
        """
        ...
    
    def HandleRightMouseButtonOn(self):
        """
        V.HandleRightMouseButtonOn()
        C++: virtual void HandleRightMouseButtonOn()
        
        Enable/Disable mouse button events
        """
        ...
    
    def InitializeHandles(self, vtkPoints):
        """
        V.InitializeHandles(vtkPoints)
        C++: void InitializeHandles(vtkPoints *)
        
        Initialize the widget with a set of points and generate lines
        between them.  If AutoClose is on it will handle the case wherein
        the first and last points are congruent.
        """
        ...
    
    def InteractionOff(self):
        """
        V.InteractionOff()
        C++: virtual void InteractionOff()
        
        Enable/disable mouse interaction when the widget is visible.
        """
        ...
    
    def InteractionOn(self):
        """
        V.InteractionOn()
        C++: virtual void InteractionOn()
        
        Enable/disable mouse interaction when the widget is visible.
        """
        ...
    
    def IsA(self, string):
        """
        V.IsA(string) -> int
        C++: vtkTypeBool IsA(const char *type) override;
        
        Return 1 if this class is the same type of (or a subclass of) the
        named class. Returns 0 otherwise. This method works in
        combination with vtkTypeMacro found in vtkSetGet.h.
        """
        ...
    
    def IsClosed(self):
        """
        V.IsClosed() -> int
        C++: int IsClosed()
        
        Is the path closed or open?
        """
        ...
    
    def IsTypeOf(self, string):
        """
        V.IsTypeOf(string) -> int
        C++: static vtkTypeBool IsTypeOf(const char *type)
        
        Return 1 if this class type is the same type of (or a subclass
        of) the named class. Returns 0 otherwise. This method works in
        combination with vtkTypeMacro found in vtkSetGet.h.
        """
        ...
    
    def NewInstance(self):
        """
        V.NewInstance() -> vtkImageTracerWidget
        C++: vtkImageTracerWidget *NewInstance()
        """
        ...
    
    def PlaceWidget(self, p_float=..., p_float=..., p_float=..., p_float=..., p_float=..., p_float=...):
        """
        V.PlaceWidget([float, float, float, float, float, float])
        C++: void PlaceWidget(double bounds[6]) override;
        V.PlaceWidget()
        C++: void PlaceWidget() override;
        V.PlaceWidget(float, float, float, float, float, float)
        C++: void PlaceWidget(double xmin, double xmax, double ymin,
            double ymax, double zmin, double zmax) override;
        
        Methods that satisfy the superclass' API.
        """
        ...
    
    def ProjectToPlaneOff(self):
        """
        V.ProjectToPlaneOff()
        C++: virtual void ProjectToPlaneOff()
        
        Force handles to be on a specific ortho plane. Default is Off.
        """
        ...
    
    def ProjectToPlaneOn(self):
        """
        V.ProjectToPlaneOn()
        C++: virtual void ProjectToPlaneOn()
        
        Force handles to be on a specific ortho plane. Default is Off.
        """
        ...
    
    def SafeDownCast(self, vtkObjectBase):
        """
        V.SafeDownCast(vtkObjectBase) -> vtkImageTracerWidget
        C++: static vtkImageTracerWidget *SafeDownCast(vtkObjectBase *o)
        """
        ...
    
    def SetAutoClose(self, p_int):
        """
        V.SetAutoClose(int)
        C++: virtual void SetAutoClose(vtkTypeBool _arg)
        
        In concert with a CaptureRadius value, automatically form a
        closed path by connecting first to last path points. Default is
        Off.
        """
        ...
    
    def SetCaptureRadius(self, p_float):
        """
        V.SetCaptureRadius(float)
        C++: virtual void SetCaptureRadius(double _arg)
        
        Set/Get the capture radius for automatic path closing.  For image
        data, capture radius should be half the distance between
        voxel/pixel centers. Default is 1.0
        """
        ...
    
    def SetEnabled(self, p_int):
        """
        V.SetEnabled(int)
        C++: void SetEnabled(int) override;
        
        Methods that satisfy the superclass' API.
        """
        ...
    
    def SetHandleLeftMouseButton(self, p_int):
        """
        V.SetHandleLeftMouseButton(int)
        C++: virtual void SetHandleLeftMouseButton(vtkTypeBool _arg)
        
        Enable/Disable mouse button events
        """
        ...
    
    def SetHandleMiddleMouseButton(self, p_int):
        """
        V.SetHandleMiddleMouseButton(int)
        C++: virtual void SetHandleMiddleMouseButton(vtkTypeBool _arg)
        
        Enable/Disable mouse button events
        """
        ...
    
    def SetHandlePosition(self, p_int, p_float=..., p_float=..., p_float=...):
        """
        V.SetHandlePosition(int, [float, float, float])
        C++: void SetHandlePosition(int handle, double xyz[3])
        V.SetHandlePosition(int, float, float, float)
        C++: void SetHandlePosition(int handle, double x, double y,
            double z)
        
        Set/Get the handle position in terms of a zero-based array of
        handles.
        """
        ...
    
    def SetHandleProperty(self, vtkProperty):
        """
        V.SetHandleProperty(vtkProperty)
        C++: virtual void SetHandleProperty(vtkProperty *)
        
        Set/Get the handle properties (the 2D glyphs are the handles).
        The properties of the handles when selected and normal can be
        manipulated.
        """
        ...
    
    def SetHandleRightMouseButton(self, p_int):
        """
        V.SetHandleRightMouseButton(int)
        C++: virtual void SetHandleRightMouseButton(vtkTypeBool _arg)
        
        Enable/Disable mouse button events
        """
        ...
    
    def SetImageSnapType(self, p_int):
        """
        V.SetImageSnapType(int)
        C++: virtual void SetImageSnapType(int _arg)
        
        Set/Get the type of snapping to image data: center of a
        pixel/voxel or nearest point defining a pixel/voxel.
        """
        ...
    
    def SetInteraction(self, p_int):
        """
        V.SetInteraction(int)
        C++: void SetInteraction(vtkTypeBool interact)
        
        Enable/disable mouse interaction when the widget is visible.
        """
        ...
    
    def SetLineProperty(self, vtkProperty):
        """
        V.SetLineProperty(vtkProperty)
        C++: virtual void SetLineProperty(vtkProperty *)
        
        Set/Get the line properties. The properties of the line when
        selected and unselected can be manipulated.
        """
        ...
    
    def SetProjectionNormal(self, p_int):
        """
        V.SetProjectionNormal(int)
        C++: virtual void SetProjectionNormal(int _arg)
        
        Set the projection normal.  The normal in SetProjectionNormal is
        0,1,2 for YZ,XZ,XY planes respectively.  Since the handles are 2D
        glyphs, it is necessary to specify a plane on which to generate
        them, even though ProjectToPlane may be turned off.
        """
        ...
    
    def SetProjectionNormalToXAxes(self):
        """
        V.SetProjectionNormalToXAxes()
        C++: void SetProjectionNormalToXAxes()
        
        Set the projection normal.  The normal in SetProjectionNormal is
        0,1,2 for YZ,XZ,XY planes respectively.  Since the handles are 2D
        glyphs, it is necessary to specify a plane on which to generate
        them, even though ProjectToPlane may be turned off.
        """
        ...
    
    def SetProjectionNormalToYAxes(self):
        """
        V.SetProjectionNormalToYAxes()
        C++: void SetProjectionNormalToYAxes()
        
        Set the projection normal.  The normal in SetProjectionNormal is
        0,1,2 for YZ,XZ,XY planes respectively.  Since the handles are 2D
        glyphs, it is necessary to specify a plane on which to generate
        them, even though ProjectToPlane may be turned off.
        """
        ...
    
    def SetProjectionNormalToZAxes(self):
        """
        V.SetProjectionNormalToZAxes()
        C++: void SetProjectionNormalToZAxes()
        
        Set the projection normal.  The normal in SetProjectionNormal is
        0,1,2 for YZ,XZ,XY planes respectively.  Since the handles are 2D
        glyphs, it is necessary to specify a plane on which to generate
        them, even though ProjectToPlane may be turned off.
        """
        ...
    
    def SetProjectionPosition(self, p_float):
        """
        V.SetProjectionPosition(float)
        C++: void SetProjectionPosition(double position)
        
        Set the position of the widgets' handles in terms of a plane's
        position. e.g., if ProjectionNormal is 0, all of the x-coordinate
        values of the handles are set to ProjectionPosition.  No attempt
        is made to ensure that the position is within the bounds of
        either the underlying image data or the prop on which tracing is
        performed.
        """
        ...
    
    def SetProjectToPlane(self, p_int):
        """
        V.SetProjectToPlane(int)
        C++: virtual void SetProjectToPlane(vtkTypeBool _arg)
        
        Force handles to be on a specific ortho plane. Default is Off.
        """
        ...
    
    def SetSelectedHandleProperty(self, vtkProperty):
        """
        V.SetSelectedHandleProperty(vtkProperty)
        C++: virtual void SetSelectedHandleProperty(vtkProperty *)
        
        Set/Get the handle properties (the 2D glyphs are the handles).
        The properties of the handles when selected and normal can be
        manipulated.
        """
        ...
    
    def SetSelectedLineProperty(self, vtkProperty):
        """
        V.SetSelectedLineProperty(vtkProperty)
        C++: virtual void SetSelectedLineProperty(vtkProperty *)
        
        Set/Get the line properties. The properties of the line when
        selected and unselected can be manipulated.
        """
        ...
    
    def SetSnapToImage(self, p_int):
        """
        V.SetSnapToImage(int)
        C++: void SetSnapToImage(vtkTypeBool snap)
        
        Force snapping to image data while tracing. Default is Off.
        """
        ...
    
    def SetViewProp(self, vtkProp):
        """
        V.SetViewProp(vtkProp)
        C++: void SetViewProp(vtkProp *prop)
        
        Set the prop, usually a vtkImageActor, to trace over.
        """
        ...
    
    def SnapToImageOff(self):
        """
        V.SnapToImageOff()
        C++: virtual void SnapToImageOff()
        
        Force snapping to image data while tracing. Default is Off.
        """
        ...
    
    def SnapToImageOn(self):
        """
        V.SnapToImageOn()
        C++: virtual void SnapToImageOn()
        
        Force snapping to image data while tracing. Default is Off.
        """
        ...
    
    def __delattr__(self, *args, **kwargs):
        """ Implement delattr(self, name). """
        ...
    
    def __getattribute__(self, *args, **kwargs):
        """ Return getattr(self, name). """
        ...
    
    def __init__(self, *args, **kwargs) -> None:
        ...
    
    @staticmethod
    def __new__(*args, **kwargs):
        """ Create and return a new object.  See help(type) for accurate signature. """
        ...
    
    def __repr__(self, *args, **kwargs):
        """ Return repr(self). """
        ...
    
    def __setattr__(self, *args, **kwargs):
        """ Implement setattr(self, name, value). """
        ...
    
    def __str__(self, *args, **kwargs) -> str:
        """ Return str(self). """
        ...
    
    __this__ = ...
    __dict__ = ...
    __vtkname__ = ...


