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

from .vtkImplicitFunction import vtkImplicitFunction

class vtkImplicitBoolean(vtkImplicitFunction):
    """
    vtkImplicitBoolean - implicit function consisting of boolean
    combinations of implicit functions
    
    Superclass: vtkImplicitFunction
    
    vtkImplicitBoolean is an implicit function consisting of boolean
    combinations of implicit functions. The class has a list of functions
    (FunctionList) that are combined according to a specified operator
    (VTK_UNION or VTK_INTERSECTION or VTK_DIFFERENCE). You can use nested
    combinations of vtkImplicitFunction's (and/or vtkImplicitBoolean) to
    create elaborate implicit functions.  vtkImplicitBoolean is a
    concrete implementation of vtkImplicitFunction.
    
    The operators work as follows. The VTK_UNION operator takes the
    minimum value of all implicit functions. The VTK_INTERSECTION
    operator takes the maximum value of all implicit functions. The
    VTK_DIFFERENCE operator subtracts the 2nd through last implicit
    functions from the first. The VTK_UNION_OF_MAGNITUDES takes the
    minimum absolute value of the implicit functions.
    """
    def AddFunction(self, vtkImplicitFunction):
        """
        V.AddFunction(vtkImplicitFunction)
        C++: void AddFunction(vtkImplicitFunction *in)
        
        Add another implicit function to the list of functions.
        """
        ...
    
    def EvaluateFunction(self, p_float=..., p_float=..., p_float=...):
        """
        V.EvaluateFunction([float, float, float]) -> float
        C++: double EvaluateFunction(double x[3]) override;
        V.EvaluateFunction(vtkDataArray, vtkDataArray)
        C++: virtual void EvaluateFunction(vtkDataArray *input,
            vtkDataArray *output)
        V.EvaluateFunction(float, float, float) -> float
        C++: virtual double EvaluateFunction(double x, double y, double z)
        
        Evaluate boolean combinations of implicit function using current
        operator.
        """
        ...
    
    def EvaluateGradient(self, p_float=..., p_float=..., p_float=..., *args, **kwargs):
        """
        V.EvaluateGradient([float, float, float], [float, float, float])
        C++: void EvaluateGradient(double x[3], double g[3]) override;
        
        Evaluate gradient of boolean combination.
        """
        ...
    
    def GetFunction(self):
        """
        V.GetFunction() -> vtkImplicitFunctionCollection
        C++: vtkImplicitFunctionCollection *GetFunction()
        
        Return the collection of implicit functions.
        """
        ...
    
    def GetMTime(self):
        """
        V.GetMTime() -> int
        C++: vtkMTimeType GetMTime() override;
        
        Override modified time retrieval because of object dependencies.
        """
        ...
    
    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 GetOperationType(self):
        """
        V.GetOperationType() -> int
        C++: virtual int GetOperationType()
        
        Specify the type of boolean operation.
        """
        ...
    
    def GetOperationTypeAsString(self):
        """
        V.GetOperationTypeAsString() -> string
        C++: const char *GetOperationTypeAsString()
        
        Specify the type of boolean operation.
        """
        ...
    
    def GetOperationTypeMaxValue(self):
        """
        V.GetOperationTypeMaxValue() -> int
        C++: virtual int GetOperationTypeMaxValue()
        
        Specify the type of boolean operation.
        """
        ...
    
    def GetOperationTypeMinValue(self):
        """
        V.GetOperationTypeMinValue() -> int
        C++: virtual int GetOperationTypeMinValue()
        
        Specify the type of boolean operation.
        """
        ...
    
    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() -> vtkImplicitBoolean
        C++: vtkImplicitBoolean *NewInstance()
        """
        ...
    
    def RemoveFunction(self, vtkImplicitFunction):
        """
        V.RemoveFunction(vtkImplicitFunction)
        C++: void RemoveFunction(vtkImplicitFunction *in)
        
        Remove a function from the list of implicit functions to boolean.
        """
        ...
    
    def SafeDownCast(self, vtkObjectBase):
        """
        V.SafeDownCast(vtkObjectBase) -> vtkImplicitBoolean
        C++: static vtkImplicitBoolean *SafeDownCast(vtkObjectBase *o)
        """
        ...
    
    def SetOperationType(self, p_int):
        """
        V.SetOperationType(int)
        C++: virtual void SetOperationType(int _arg)
        
        Specify the type of boolean operation.
        """
        ...
    
    def SetOperationTypeToDifference(self):
        """
        V.SetOperationTypeToDifference()
        C++: void SetOperationTypeToDifference()
        
        Specify the type of boolean operation.
        """
        ...
    
    def SetOperationTypeToIntersection(self):
        """
        V.SetOperationTypeToIntersection()
        C++: void SetOperationTypeToIntersection()
        
        Specify the type of boolean operation.
        """
        ...
    
    def SetOperationTypeToUnion(self):
        """
        V.SetOperationTypeToUnion()
        C++: void SetOperationTypeToUnion()
        
        Specify the type of boolean operation.
        """
        ...
    
    def SetOperationTypeToUnionOfMagnitudes(self):
        """
        V.SetOperationTypeToUnionOfMagnitudes()
        C++: void SetOperationTypeToUnionOfMagnitudes()
        
        Specify the type of boolean operation.
        """
        ...
    
    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__ = ...
    OperationType = ...
    VTK_DIFFERENCE = ...
    VTK_INTERSECTION = ...
    VTK_UNION = ...
    VTK_UNION_OF_MAGNITUDES = ...
    __dict__ = ...
    __vtkname__ = ...


