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

import vtkmodules.vtkFiltersGeneral as __vtkmodules_vtkFiltersGeneral

class vtkLoopSubdivisionFilter(__vtkmodules_vtkFiltersGeneral.vtkApproximatingSubdivisionFilter):
    """
    vtkLoopSubdivisionFilter - generate a subdivision surface using the
    Loop Scheme
    
    Superclass: vtkApproximatingSubdivisionFilter
    
    vtkLoopSubdivisionFilter is an approximating subdivision scheme that
    creates four new triangles for each triangle in the mesh. The user
    can specify the NumberOfSubdivisions. Loop's subdivision scheme is
    described in: Loop, C., "Smooth Subdivision surfaces based on
    triangles,", Masters Thesis, University of Utah, August 1987. For a
    nice summary of the technique see, Hoppe, H., et. al, "Piecewise
    Smooth Surface Reconstruction,:, Proceedings of Siggraph 94 (Orlando,
    Florida, July 24-29, 1994). In Computer Graphics Proceedings, Annual
    Conference Series, 1994, ACM SIGGRAPH, pp. 295-302.
    
    The filter only operates on triangles. Users should use the
    vtkTriangleFilter to triangulate meshes that contain polygons or
    triangle strips.
    
    The filter approximates point data using the same scheme. New
    triangles create at a subdivision step will have the cell data of
    their parent cell.
    
    @par Thanks: This work was supported by PHS Research Grant No. 1 P41
    RR13218-01 from the National Center for Research Resources.
    
    @sa
    vtkApproximatingSubdivisionFilter
    """
    def GetNumberOfGenerationsFromBase(self, string):
        """
        V.GetNumberOfGenerationsFromBase(string) -> int
        C++: vtkIdType GetNumberOfGenerationsFromBase(const char *type)
            override;
        
        Construct object with NumberOfSubdivisions set to 1.
        """
        ...
    
    def GetNumberOfGenerationsFromBaseType(self, string):
        """
        V.GetNumberOfGenerationsFromBaseType(string) -> int
        C++: static vtkIdType GetNumberOfGenerationsFromBaseType(
            const char *type)
        
        Construct object with NumberOfSubdivisions set to 1.
        """
        ...
    
    def IsA(self, string):
        """
        V.IsA(string) -> int
        C++: vtkTypeBool IsA(const char *type) override;
        
        Construct object with NumberOfSubdivisions set to 1.
        """
        ...
    
    def IsTypeOf(self, string):
        """
        V.IsTypeOf(string) -> int
        C++: static vtkTypeBool IsTypeOf(const char *type)
        
        Construct object with NumberOfSubdivisions set to 1.
        """
        ...
    
    def NewInstance(self):
        """
        V.NewInstance() -> vtkLoopSubdivisionFilter
        C++: vtkLoopSubdivisionFilter *NewInstance()
        
        Construct object with NumberOfSubdivisions set to 1.
        """
        ...
    
    def SafeDownCast(self, vtkObjectBase):
        """
        V.SafeDownCast(vtkObjectBase) -> vtkLoopSubdivisionFilter
        C++: static vtkLoopSubdivisionFilter *SafeDownCast(
            vtkObjectBase *o)
        
        Construct object with NumberOfSubdivisions set to 1.
        """
        ...
    
    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__ = ...


