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

from .vtk3DWidget import vtk3DWidget

class vtkBrokenLineWidget(vtk3DWidget):
    """
    vtkBrokenLineWidget - 3D widget for manipulating a broken line
    
    Superclass: vtk3DWidget
    
    This 3D widget defines a broken line that can be interactively placed
    in a scene. The broken line has handles, the number of which can be
    changed, plus it can be picked on the broken line itself to translate
    or rotate it in the scene. A nice feature of the object is that the
    vtkBrokenLineWidget, like any 3D widget, will work with the current
    interactor style. That is, if vtkBrokenLineWidget does not handle an
    event, then all other registered observers (including the interactor
    style) have an opportunity to process the event. Otherwise, the
    vtkBrokenLineWidget will terminate the processing of the event that
    it handles.
    
    To use this object, just invoke SetInteractor() with the argument of
    the method a vtkRenderWindowInteractor.  You may also wish to invoke
    "PlaceWidget()" to initially position the widget. The interactor will
    act normally until the "i" key (for "interactor") is pressed, at
    which point the vtkBrokenLineWidget will appear. (See superclass
    documentation for information about changing this behavior.) Events
    that occur outside of the widget (i.e., no part of the widget is
    picked) are propagated to any other registered obsevers (such as the
    interaction style).  Turn off the widget by pressing the "i" key
    again (or invoke the Off() method).
    
    The button actions and key modifiers are as follows for controlling
    the widget:
    1) left button down on and drag one of the spherical handles to
       change the shape of the broken line: the handles act as "control
       points".
    2) left button or middle button down on a line segment forming the
       broken line allows uniform translation of the widget.
    3) ctrl + middle button down on the widget enables spinning of the
       widget about its center.
    4) right button down on the widget enables scaling of the widget. By
       moving the mouse "up" the render window the broken line will be
       made bigger; by moving "down" the render window the widget will be
    made smaller.
    5) ctrl key + right button down on any handle will erase it providing
    there will be two or more points remaining to form a broken line.
    6) shift key + right button down on any line segment will insert a
       handle onto the broken line at the cursor position.
    
    The vtkBrokenLineWidget has several methods that can be used in
    conjunction with other VTK objects. The GetPolyData() method can be
    used to get the polygonal representation and can be used for things
    like seeding streamlines or probing other data sets. Typical usage of
    the widget is to make use of the StartInteractionEvent,
    InteractionEvent, and EndInteractionEvent events. The
    InteractionEvent is called on mouse motion; the other two events are
    called on button down and button up (either left or right button).
    
    Some additional features of this class include the ability to control
    the properties of the widget. You can set the properties of the
    selected and unselected representations of the broken line. For
    example, you can set the property for the handles and broken line. In
    addition there are methods to constrain the broken line so that it is
    aligned with a plane.  Note that a simple ruler widget can be derived
    by setting the resolution to 1, the number of handles to 2, and
    calling the GetSummedLength method!
    
    @par Thanks: This class was written by Philippe Pebay, Kitware SAS
    2012 This work was supported by CEA/DIF - Commissariat a l'Energie
    Atomique, Centre DAM Ile-De-France, BP12, F-91297 Arpajon, France.
    
    @sa
    vtk3DWidget vtkBoxWidget vtkLineWidget vtkPointWidget vtkSphereWidget
    vtkImagePlaneWidget vtkImplicitPlaneWidget vtkPlaneWidget
    """
    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, ...)
        C++: double *GetHandlePosition(int handle)
        
        Set/Get the position of the broken line handles. Call
        GetNumberOfHandles to determine the valid range of handle
        indices.
        """
        ...
    
    def GetHandleProperty(self):
        """
        V.GetHandleProperty() -> vtkProperty
        C++: virtual vtkProperty *GetHandleProperty()
        
        Set/Get the handle properties (the spheres are the handles). The
        properties of the handles when selected and unselected can be
        manipulated.
        """
        ...
    
    def GetHandleSizeFactor(self):
        """
        V.GetHandleSizeFactor() -> float
        C++: virtual double GetHandleSizeFactor()
        
        Set/Get the size factor to be applied to the handle radii.
        Default: 1.
        """
        ...
    
    def GetHandleSizeFactorMaxValue(self):
        """
        V.GetHandleSizeFactorMaxValue() -> float
        C++: virtual double GetHandleSizeFactorMaxValue()
        
        Set/Get the size factor to be applied to the handle radii.
        Default: 1.
        """
        ...
    
    def GetHandleSizeFactorMinValue(self):
        """
        V.GetHandleSizeFactorMinValue() -> float
        C++: virtual double GetHandleSizeFactorMinValue()
        
        Set/Get the size factor to be applied to the handle radii.
        Default: 1.
        """
        ...
    
    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()
        
        Set/Get the number of handles for this widget.
        """
        ...
    
    def GetPolyData(self, vtkPolyData):
        """
        V.GetPolyData(vtkPolyData)
        C++: void GetPolyData(vtkPolyData *pd)
        
        Grab the polydata (including points) that defines the broken
        line.  The polydata consists of points and line segments
        numbering nHandles and nHandles - 1, respectively. Points 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 polyline are added to it.
        """
        ...
    
    def GetProcessEvents(self):
        """
        V.GetProcessEvents() -> int
        C++: virtual vtkTypeBool GetProcessEvents()
        
        Turn on / off event processing for this widget. If off, the
        widget will not respond to user interaction
        """
        ...
    
    def GetProcessEventsMaxValue(self):
        """
        V.GetProcessEventsMaxValue() -> int
        C++: virtual vtkTypeBool GetProcessEventsMaxValue()
        
        Turn on / off event processing for this widget. If off, the
        widget will not respond to user interaction
        """
        ...
    
    def GetProcessEventsMinValue(self):
        """
        V.GetProcessEventsMinValue() -> int
        C++: virtual vtkTypeBool GetProcessEventsMinValue()
        
        Turn on / off event processing for this widget. If off, the
        widget will not respond to user interaction
        """
        ...
    
    def GetProjectionNormal(self):
        """
        V.GetProjectionNormal() -> int
        C++: virtual int GetProjectionNormal()
        """
        ...
    
    def GetProjectionNormalMaxValue(self):
        """
        V.GetProjectionNormalMaxValue() -> int
        C++: virtual int GetProjectionNormalMaxValue()
        """
        ...
    
    def GetProjectionNormalMinValue(self):
        """
        V.GetProjectionNormalMinValue() -> int
        C++: virtual int GetProjectionNormalMinValue()
        """
        ...
    
    def GetProjectionPosition(self):
        """
        V.GetProjectionPosition() -> float
        C++: virtual double GetProjectionPosition()
        
        Set the position of broken line handles and points in terms of a
        plane's position. i.e., if ProjectionNormal is 0, all of the
        x-coordinate values of the points are set to position. Any value
        can be passed (and is ignored) to update the broken line points
        when Projection normal is set to 3 for arbitrary plane
        orientations.
        """
        ...
    
    def GetProjectToPlane(self):
        """
        V.GetProjectToPlane() -> int
        C++: virtual vtkTypeBool GetProjectToPlane()
        
        Force the broken line widget to be projected onto one of the
        orthogonal planes. Remember that when the state changes, a
        ModifiedEvent is invoked. This can be used to snap the broken
        line to the plane if it is originally not aligned.  The normal in
        SetProjectionNormal is 0,1,2 for YZ,XZ,XY planes respectively and
        3 for arbitrary oblique planes when the widget is tied to a
        vtkPlaneSource.
        """
        ...
    
    def GetSelectedHandleProperty(self):
        """
        V.GetSelectedHandleProperty() -> vtkProperty
        C++: virtual vtkProperty *GetSelectedHandleProperty()
        
        Set/Get the handle properties (the spheres are the handles). The
        properties of the handles when selected and unselected 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 GetSummedLength(self):
        """
        V.GetSummedLength() -> float
        C++: double GetSummedLength()
        
        Get the summed lengths of the individual straight line segments.
        """
        ...
    
    def InitializeHandles(self, vtkPoints):
        """
        V.InitializeHandles(vtkPoints)
        C++: void InitializeHandles(vtkPoints *points)
        
        Convenience method to allocate and set the handles from a
        vtkPoints instance.
        """
        ...
    
    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 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() -> vtkBrokenLineWidget
        C++: vtkBrokenLineWidget *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 ProcessEventsOff(self):
        """
        V.ProcessEventsOff()
        C++: virtual void ProcessEventsOff()
        
        Turn on / off event processing for this widget. If off, the
        widget will not respond to user interaction
        """
        ...
    
    def ProcessEventsOn(self):
        """
        V.ProcessEventsOn()
        C++: virtual void ProcessEventsOn()
        
        Turn on / off event processing for this widget. If off, the
        widget will not respond to user interaction
        """
        ...
    
    def ProjectToPlaneOff(self):
        """
        V.ProjectToPlaneOff()
        C++: virtual void ProjectToPlaneOff()
        
        Force the broken line widget to be projected onto one of the
        orthogonal planes. Remember that when the state changes, a
        ModifiedEvent is invoked. This can be used to snap the broken
        line to the plane if it is originally not aligned.  The normal in
        SetProjectionNormal is 0,1,2 for YZ,XZ,XY planes respectively and
        3 for arbitrary oblique planes when the widget is tied to a
        vtkPlaneSource.
        """
        ...
    
    def ProjectToPlaneOn(self):
        """
        V.ProjectToPlaneOn()
        C++: virtual void ProjectToPlaneOn()
        
        Force the broken line widget to be projected onto one of the
        orthogonal planes. Remember that when the state changes, a
        ModifiedEvent is invoked. This can be used to snap the broken
        line to the plane if it is originally not aligned.  The normal in
        SetProjectionNormal is 0,1,2 for YZ,XZ,XY planes respectively and
        3 for arbitrary oblique planes when the widget is tied to a
        vtkPlaneSource.
        """
        ...
    
    def SafeDownCast(self, vtkObjectBase):
        """
        V.SafeDownCast(vtkObjectBase) -> vtkBrokenLineWidget
        C++: static vtkBrokenLineWidget *SafeDownCast(vtkObjectBase *o)
        """
        ...
    
    def SetEnabled(self, p_int):
        """
        V.SetEnabled(int)
        C++: void SetEnabled(int) override;
        
        Methods that satisfy the superclass' API.
        """
        ...
    
    def SetHandlePosition(self, p_int, p_float, p_float_1, p_float_2):
        """
        V.SetHandlePosition(int, float, float, float)
        C++: void SetHandlePosition(int handle, double x, double y,
            double z)
        V.SetHandlePosition(int, [float, float, float])
        C++: void SetHandlePosition(int handle, double xyz[3])
        
        Set/Get the position of the broken line handles. Call
        GetNumberOfHandles to determine the valid range of handle
        indices.
        """
        ...
    
    def SetHandleProperty(self, vtkProperty):
        """
        V.SetHandleProperty(vtkProperty)
        C++: virtual void SetHandleProperty(vtkProperty *)
        
        Set/Get the handle properties (the spheres are the handles). The
        properties of the handles when selected and unselected can be
        manipulated.
        """
        ...
    
    def SetHandleSizeFactor(self, p_float):
        """
        V.SetHandleSizeFactor(float)
        C++: virtual void SetHandleSizeFactor(double _arg)
        
        Set/Get the size factor to be applied to the handle radii.
        Default: 1.
        """
        ...
    
    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 SetNumberOfHandles(self, p_int):
        """
        V.SetNumberOfHandles(int)
        C++: virtual void SetNumberOfHandles(int npts)
        
        Set/Get the number of handles for this widget.
        """
        ...
    
    def SetPlaneSource(self, vtkPlaneSource):
        """
        V.SetPlaneSource(vtkPlaneSource)
        C++: void SetPlaneSource(vtkPlaneSource *plane)
        
        Set up a reference to a vtkPlaneSource that could be from another
        widget object, e.g. a vtkPolyDataSourceWidget.
        """
        ...
    
    def SetProcessEvents(self, p_int):
        """
        V.SetProcessEvents(int)
        C++: virtual void SetProcessEvents(vtkTypeBool _arg)
        
        Turn on / off event processing for this widget. If off, the
        widget will not respond to user interaction
        """
        ...
    
    def SetProjectionNormal(self, p_int):
        """
        V.SetProjectionNormal(int)
        C++: virtual void SetProjectionNormal(int _arg)
        """
        ...
    
    def SetProjectionNormalToOblique(self):
        """
        V.SetProjectionNormalToOblique()
        C++: void SetProjectionNormalToOblique()
        """
        ...
    
    def SetProjectionNormalToXAxes(self):
        """
        V.SetProjectionNormalToXAxes()
        C++: void SetProjectionNormalToXAxes()
        """
        ...
    
    def SetProjectionNormalToYAxes(self):
        """
        V.SetProjectionNormalToYAxes()
        C++: void SetProjectionNormalToYAxes()
        """
        ...
    
    def SetProjectionNormalToZAxes(self):
        """
        V.SetProjectionNormalToZAxes()
        C++: void SetProjectionNormalToZAxes()
        """
        ...
    
    def SetProjectionPosition(self, p_float):
        """
        V.SetProjectionPosition(float)
        C++: void SetProjectionPosition(double position)
        
        Set the position of broken line handles and points in terms of a
        plane's position. i.e., if ProjectionNormal is 0, all of the
        x-coordinate values of the points are set to position. Any value
        can be passed (and is ignored) to update the broken line points
        when Projection normal is set to 3 for arbitrary plane
        orientations.
        """
        ...
    
    def SetProjectToPlane(self, p_int):
        """
        V.SetProjectToPlane(int)
        C++: virtual void SetProjectToPlane(vtkTypeBool _arg)
        
        Force the broken line widget to be projected onto one of the
        orthogonal planes. Remember that when the state changes, a
        ModifiedEvent is invoked. This can be used to snap the broken
        line to the plane if it is originally not aligned.  The normal in
        SetProjectionNormal is 0,1,2 for YZ,XZ,XY planes respectively and
        3 for arbitrary oblique planes when the widget is tied to a
        vtkPlaneSource.
        """
        ...
    
    def SetSelectedHandleProperty(self, vtkProperty):
        """
        V.SetSelectedHandleProperty(vtkProperty)
        C++: virtual void SetSelectedHandleProperty(vtkProperty *)
        
        Set/Get the handle properties (the spheres are the handles). The
        properties of the handles when selected and unselected 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 __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__ = ...


