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

import vtkmodules.vtkCommonCore as __vtkmodules_vtkCommonCore

class vtkEdgeSubdivisionCriterion(__vtkmodules_vtkCommonCore.vtkObject):
    """
    vtkEdgeSubdivisionCriterion - how to decide whether a linear
    approximation to nonlinear geometry or field should be subdivided
    
    Superclass: vtkObject
    
    Descendants of this abstract class are used to decide whether a
    piecewise linear approximation (triangles, lines, ... ) to some
    nonlinear geometry should be subdivided. This decision may be based
    on an absolute error metric (chord error) or on some view-dependent
    metric (chord error compared to device resolution) or on some
    abstract metric (color error). Or anything else, really. Just so long
    as you implement the EvaluateLocationAndFields member, all will be
    well.
    
    @sa
    vtkDataSetSubdivisionAlgorithm vtkStreamingTessellator
    """
    def DontPassField(self, p_int, vtkStreamingTessellator):
        """
        V.DontPassField(int, vtkStreamingTessellator) -> bool
        C++: virtual bool DontPassField(int sourceId,
            vtkStreamingTessellator *t)
        
        This does the opposite of PassField(); it removes a field from
        the output (assuming the field was set to be passed). Returns
        true if any action was taken, false otherwise.
        """
        ...
    
    def EvaluateLocationAndFields(self, *float, **kwargs):
        """
        V.EvaluateLocationAndFields([float, ...], int) -> bool
        C++: virtual bool EvaluateLocationAndFields(double *p1,
            int field_start)
        
        You must implement this member function in a subclass. It will be
        called by vtkStreamingTessellator for each edge in each primitive
        that vtkStreamingTessellator generates.
        """
        ...
    
    def GetFieldIds(self):
        """
        V.GetFieldIds() -> (int, ...)
        C++: const int *GetFieldIds()
        
        Return the map from output field id to input field ids. That is,
        field i of any output vertex from vtkStreamingTessellator will be
        associated with GetFieldIds()[ i] on the input mesh.
        """
        ...
    
    def GetFieldOffsets(self):
        """
        V.GetFieldOffsets() -> (int, ...)
        C++: const int *GetFieldOffsets()
        
        Return the offset into an output vertex array of all fields. That
        is, field i of any output vertex, p, from vtkStreamingTessellator
        will have its first entry at p[ GetFieldOffsets()[ i] ] .
        """
        ...
    
    def GetNumberOfFields(self):
        """
        V.GetNumberOfFields() -> int
        C++: int GetNumberOfFields()
        
        Return the number of fields being evaluated at each output
        vertex. This is the length of the arrays returned by
        GetFieldIds() andGetFieldOffsets().
        """
        ...
    
    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 GetOutputField(self, p_int):
        """
        V.GetOutputField(int) -> int
        C++: int GetOutputField(int fieldId)
        
        Return the output ID of an input field. Returns -1 if fieldId is
        not set to be passed to the output.
        """
        ...
    
    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() -> vtkEdgeSubdivisionCriterion
        C++: vtkEdgeSubdivisionCriterion *NewInstance()
        """
        ...
    
    def PassField(self, p_int, p_int_1, vtkStreamingTessellator):
        """
        V.PassField(int, int, vtkStreamingTessellator) -> int
        C++: virtual int PassField(int sourceId, int sourceSize,
            vtkStreamingTessellator *t)
        
        This is a helper routine called by PassFields() which you may
        also call directly; it adds sourceSize to the size of the output
        vertex field values. The offset of the sourceId field in the
        output vertex array is returned.
        -1 is returned if sourceSize would force the output to have more
           than vtkStreamingTessellator::MaxFieldSize field values per
           vertex.
        """
        ...
    
    def ResetFieldList(self):
        """
        V.ResetFieldList()
        C++: virtual void ResetFieldList()
        
        Don't pass any field values in the vertex pointer. This is used
        to reset the list of fields to pass after a successful run of
        vtkStreamingTessellator.
        """
        ...
    
    def SafeDownCast(self, vtkObjectBase):
        """
        V.SafeDownCast(vtkObjectBase) -> vtkEdgeSubdivisionCriterion
        C++: static vtkEdgeSubdivisionCriterion *SafeDownCast(
            vtkObjectBase *o)
        """
        ...
    
    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__ = ...


