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

from .vtk3DWidget import vtk3DWidget

class vtkLineWidget(vtk3DWidget):
    """
    vtkLineWidget - 3D widget for manipulating a line
    
    Superclass: vtk3DWidget
    
    This 3D widget defines a line that can be interactively placed in a
    scene. The line has two handles (at its endpoints), plus the line can
    be picked to translate it in the scene.  A nice feature of the object
    is that the vtkLineWidget, like any 3D widget, will work with the
    current interactor style and any other widgets present in the scene.
    That is, if vtkLineWidget does not handle an event, then all other
    registered observers (including the interactor style) have an
    opportunity to process the event. Otherwise, the vtkLineWidget 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 vtkLineWidget will appear. (See superclass
    documentation for information about changing this behavior.) By
    grabbing one of the two end point handles (use the left mouse
    button), the line can be oriented and stretched (the other end point
    remains fixed). By grabbing the line itself, or using the middle
    mouse button, the entire line can be translated.  Scaling (about the
    center of the line) is achieved by using the right mouse button. By
    moving the mouse "up" the render window the line will be made bigger;
    by moving "down" the render window the widget will be made smaller.
    Turn off the widget by pressing the "i" key again (or invoke the
    Off() method). (Note: picking the line or either one of the two end
    point handles causes a vtkPointWidget to appear.  This widget has the
    ability to constrain motion to an axis by pressing the "shift" key
    while moving the mouse.)
    
    The vtkLineWidget has several methods that can be used in conjunction
    with other VTK objects. The Set/GetResolution() methods control the
    number of subdivisions of the line; the GetPolyData() method can be
    used to get the polygonal representation and can be used for things
    like seeding streamlines. 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 line. For example, you
    can set the property for the handles and line. In addition there are
    methods to constrain the line so that it is aligned along the x-y-z
    axes.
    
    @sa
    vtk3DWidget vtkBoxWidget vtkPlaneWidget
    """
    def ClampToBoundsOff(self):
        """
        V.ClampToBoundsOff()
        C++: virtual void ClampToBoundsOff()
        
        Enable/disable clamping of the point end points to the bounding
        box of the data. The bounding box is defined from the last
        PlaceWidget() invocation, and includes the effect of the
        PlaceFactor which is used to gram/shrink the bounding box.
        """
        ...
    
    def ClampToBoundsOn(self):
        """
        V.ClampToBoundsOn()
        C++: virtual void ClampToBoundsOn()
        
        Enable/disable clamping of the point end points to the bounding
        box of the data. The bounding box is defined from the last
        PlaceWidget() invocation, and includes the effect of the
        PlaceFactor which is used to gram/shrink the bounding box.
        """
        ...
    
    def GetAlign(self):
        """
        V.GetAlign() -> int
        C++: virtual int GetAlign()
        
        Force the line widget to be aligned with one of the x-y-z axes.
        Remember that when the state changes, a ModifiedEvent is invoked.
        This can be used to snap the line to the axes if it is originally
        not aligned.
        """
        ...
    
    def GetAlignMaxValue(self):
        """
        V.GetAlignMaxValue() -> int
        C++: virtual int GetAlignMaxValue()
        
        Force the line widget to be aligned with one of the x-y-z axes.
        Remember that when the state changes, a ModifiedEvent is invoked.
        This can be used to snap the line to the axes if it is originally
        not aligned.
        """
        ...
    
    def GetAlignMinValue(self):
        """
        V.GetAlignMinValue() -> int
        C++: virtual int GetAlignMinValue()
        
        Force the line widget to be aligned with one of the x-y-z axes.
        Remember that when the state changes, a ModifiedEvent is invoked.
        This can be used to snap the line to the axes if it is originally
        not aligned.
        """
        ...
    
    def GetClampToBounds(self):
        """
        V.GetClampToBounds() -> int
        C++: virtual vtkTypeBool GetClampToBounds()
        
        Enable/disable clamping of the point end points to the bounding
        box of the data. The bounding box is defined from the last
        PlaceWidget() invocation, and includes the effect of the
        PlaceFactor which is used to gram/shrink the bounding box.
        """
        ...
    
    def GetHandleProperty(self):
        """
        V.GetHandleProperty() -> vtkProperty
        C++: virtual vtkProperty *GetHandleProperty()
        
        Get the handle properties (the little balls are the handles). The
        properties of the handles when selected and normal can be
        manipulated.
        """
        ...
    
    def GetLineProperty(self):
        """
        V.GetLineProperty() -> vtkProperty
        C++: virtual vtkProperty *GetLineProperty()
        
        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 GetPoint1(self):
        """
        V.GetPoint1() -> (float, float, float)
        C++: double *GetPoint1()
        V.GetPoint1([float, float, float])
        C++: void GetPoint1(double xyz[3])
        """
        ...
    
    def GetPoint2(self):
        """
        V.GetPoint2() -> (float, float, float)
        C++: double *GetPoint2()
        V.GetPoint2([float, float, float])
        C++: void GetPoint2(double xyz[3])
        """
        ...
    
    def GetPolyData(self, vtkPolyData):
        """
        V.GetPolyData(vtkPolyData)
        C++: void GetPolyData(vtkPolyData *pd)
        
        Grab the polydata (including points) that defines the line.  The
        polydata consists of n+1 points, where n is the resolution of the
        line. 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 polyline are
        added to it.
        """
        ...
    
    def GetResolution(self):
        """
        V.GetResolution() -> int
        C++: int GetResolution()
        """
        ...
    
    def GetSelectedHandleProperty(self):
        """
        V.GetSelectedHandleProperty() -> vtkProperty
        C++: virtual vtkProperty *GetSelectedHandleProperty()
        
        Get the handle properties (the little balls 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()
        
        Get the line properties. The properties of the line when selected
        and unselected can be manipulated.
        """
        ...
    
    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() -> vtkLineWidget
        C++: vtkLineWidget *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 SafeDownCast(self, vtkObjectBase):
        """
        V.SafeDownCast(vtkObjectBase) -> vtkLineWidget
        C++: static vtkLineWidget *SafeDownCast(vtkObjectBase *o)
        """
        ...
    
    def SetAlign(self, p_int):
        """
        V.SetAlign(int)
        C++: virtual void SetAlign(int _arg)
        
        Force the line widget to be aligned with one of the x-y-z axes.
        Remember that when the state changes, a ModifiedEvent is invoked.
        This can be used to snap the line to the axes if it is originally
        not aligned.
        """
        ...
    
    def SetAlignToNone(self):
        """
        V.SetAlignToNone()
        C++: void SetAlignToNone()
        
        Force the line widget to be aligned with one of the x-y-z axes.
        Remember that when the state changes, a ModifiedEvent is invoked.
        This can be used to snap the line to the axes if it is originally
        not aligned.
        """
        ...
    
    def SetAlignToXAxis(self):
        """
        V.SetAlignToXAxis()
        C++: void SetAlignToXAxis()
        
        Force the line widget to be aligned with one of the x-y-z axes.
        Remember that when the state changes, a ModifiedEvent is invoked.
        This can be used to snap the line to the axes if it is originally
        not aligned.
        """
        ...
    
    def SetAlignToYAxis(self):
        """
        V.SetAlignToYAxis()
        C++: void SetAlignToYAxis()
        
        Force the line widget to be aligned with one of the x-y-z axes.
        Remember that when the state changes, a ModifiedEvent is invoked.
        This can be used to snap the line to the axes if it is originally
        not aligned.
        """
        ...
    
    def SetAlignToZAxis(self):
        """
        V.SetAlignToZAxis()
        C++: void SetAlignToZAxis()
        
        Force the line widget to be aligned with one of the x-y-z axes.
        Remember that when the state changes, a ModifiedEvent is invoked.
        This can be used to snap the line to the axes if it is originally
        not aligned.
        """
        ...
    
    def SetClampToBounds(self, p_int):
        """
        V.SetClampToBounds(int)
        C++: virtual void SetClampToBounds(vtkTypeBool _arg)
        
        Enable/disable clamping of the point end points to the bounding
        box of the data. The bounding box is defined from the last
        PlaceWidget() invocation, and includes the effect of the
        PlaceFactor which is used to gram/shrink the bounding box.
        """
        ...
    
    def SetEnabled(self, p_int):
        """
        V.SetEnabled(int)
        C++: void SetEnabled(int) override;
        
        Methods that satisfy the superclass' API.
        """
        ...
    
    def SetPoint1(self, p_float, p_float_1, p_float_2):
        """
        V.SetPoint1(float, float, float)
        C++: void SetPoint1(double x, double y, double z)
        V.SetPoint1([float, float, float])
        C++: void SetPoint1(double x[3])
        
        Set/Get the position of first end point.
        """
        ...
    
    def SetPoint2(self, p_float, p_float_1, p_float_2):
        """
        V.SetPoint2(float, float, float)
        C++: void SetPoint2(double x, double y, double z)
        V.SetPoint2([float, float, float])
        C++: void SetPoint2(double x[3])
        
        Set position of other end point.
        """
        ...
    
    def SetResolution(self, p_int):
        """
        V.SetResolution(int)
        C++: void SetResolution(int r)
        
        Set/Get the resolution (number of subdivisions) of the line.
        """
        ...
    
    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__ = ...


