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

from .vtkScalarTree import vtkScalarTree

class vtkSimpleScalarTree(vtkScalarTree):
    """
    vtkSimpleScalarTree - organize data according to scalar values (used
    to accelerate contouring operations)
    
    Superclass: vtkScalarTree
    
    vtkSimpleScalarTree creates a pointerless binary tree that helps
    search for cells that lie within a particular scalar range. This
    object is used to accelerate some contouring (and other scalar-based
    techniques).
    
    The tree consists of an array of (min,max) scalar range pairs per
    node in the tree. The (min,max) range is determined from looking at
    the range of the children of the tree node. If the node is a leaf,
    then the range is determined by scanning the range of scalar data in
    n cells in the dataset. The n cells are determined by arbitrary
    selecting cell ids from id(i) to id(i+n), and where n is specified
    using the BranchingFactor ivar. Note that leaf node i=0 contains the
    scalar range computed from cell ids (0,n-1); leaf node i=1 contains
    the range from cell ids (n,2n-1); and so on. The implication is that
    there are no direct lists of cell ids per leaf node, instead the cell
    ids are implicitly known. Despite the arbitrary grouping of cells, in
    practice this scalar tree actually performs quite well due to
    spatial/data coherence.
    
    This class has an API that supports both serial and parallel
    operation.  The parallel API enables the using class to grab arrays
    (or batches) of cells that potentially intersect the isocontour.
    These batches can then be processed in separate threads.
    
    @sa
    vtkScalarTree vtkSpanSpace
    """
    def BuildTree(self):
        """
        V.BuildTree()
        C++: void BuildTree() override;
        
        Construct the scalar tree from the dataset provided. Checks build
        times and modified time from input and reconstructs the tree if
        necessary.
        """
        ...
    
    def GetBranchingFactor(self):
        """
        V.GetBranchingFactor() -> int
        C++: virtual int GetBranchingFactor()
        
        Set the branching factor for the tree. This is the number of
        children per tree node. Smaller values (minimum is 2) mean deeper
        trees and more memory overhead. Larger values mean shallower
        trees, less memory usage, but worse performance.
        """
        ...
    
    def GetBranchingFactorMaxValue(self):
        """
        V.GetBranchingFactorMaxValue() -> int
        C++: virtual int GetBranchingFactorMaxValue()
        
        Set the branching factor for the tree. This is the number of
        children per tree node. Smaller values (minimum is 2) mean deeper
        trees and more memory overhead. Larger values mean shallower
        trees, less memory usage, but worse performance.
        """
        ...
    
    def GetBranchingFactorMinValue(self):
        """
        V.GetBranchingFactorMinValue() -> int
        C++: virtual int GetBranchingFactorMinValue()
        
        Set the branching factor for the tree. This is the number of
        children per tree node. Smaller values (minimum is 2) mean deeper
        trees and more memory overhead. Larger values mean shallower
        trees, less memory usage, but worse performance.
        """
        ...
    
    def GetCellBatch(self, p_int, p_int_1):
        """
        V.GetCellBatch(int, int) -> (int, ...)
        C++: const vtkIdType *GetCellBatch(vtkIdType batchNum,
            vtkIdType &numCells) override;
        
        Return the array of cell ids in the specified batch. The method
        also returns the number of cell ids in the array. Make sure to
        call GetNumberOfCellBatches() beforehand.
        """
        ...
    
    def GetLevel(self):
        """
        V.GetLevel() -> int
        C++: virtual int GetLevel()
        
        Get the level of the scalar tree. This value may change each time
        the scalar tree is built and the branching factor changes.
        """
        ...
    
    def GetMaxLevel(self):
        """
        V.GetMaxLevel() -> int
        C++: virtual int GetMaxLevel()
        
        Set the maximum allowable level for the tree.
        """
        ...
    
    def GetMaxLevelMaxValue(self):
        """
        V.GetMaxLevelMaxValue() -> int
        C++: virtual int GetMaxLevelMaxValue()
        
        Set the maximum allowable level for the tree.
        """
        ...
    
    def GetMaxLevelMinValue(self):
        """
        V.GetMaxLevelMinValue() -> int
        C++: virtual int GetMaxLevelMinValue()
        
        Set the maximum allowable level for the tree.
        """
        ...
    
    def GetNumberOfCellBatches(self, p_float):
        """
        V.GetNumberOfCellBatches(float) -> int
        C++: vtkIdType GetNumberOfCellBatches(double scalarValue)
            override;
        
        Get the number of cell batches available for processing as a
        function of the specified scalar value. Each batch contains a
        list of candidate cells that may contain the specified isocontour
        value.
        """
        ...
    
    def GetNumberOfGenerationsFromBase(self, string):
        """
        V.GetNumberOfGenerationsFromBase(string) -> int
        C++: vtkIdType GetNumberOfGenerationsFromBase(const char *type)
            override;
        
        Standard type related macros and PrintSelf() method.
        """
        ...
    
    def GetNumberOfGenerationsFromBaseType(self, string):
        """
        V.GetNumberOfGenerationsFromBaseType(string) -> int
        C++: static vtkIdType GetNumberOfGenerationsFromBaseType(
            const char *type)
        
        Standard type related macros and PrintSelf() method.
        """
        ...
    
    def Initialize(self):
        """
        V.Initialize()
        C++: void Initialize() override;
        
        Initialize locator. Frees memory and resets object as
        appropriate.
        """
        ...
    
    def InitTraversal(self, p_float):
        """
        V.InitTraversal(float)
        C++: void InitTraversal(double scalarValue) override;
        
        Begin to traverse the cells based on a scalar value. Returned
        cells will likely have scalar values that span the scalar value
        specified.
        """
        ...
    
    def IsA(self, string):
        """
        V.IsA(string) -> int
        C++: vtkTypeBool IsA(const char *type) override;
        
        Standard type related macros and PrintSelf() method.
        """
        ...
    
    def IsTypeOf(self, string):
        """
        V.IsTypeOf(string) -> int
        C++: static vtkTypeBool IsTypeOf(const char *type)
        
        Standard type related macros and PrintSelf() method.
        """
        ...
    
    def NewInstance(self):
        """
        V.NewInstance() -> vtkSimpleScalarTree
        C++: vtkSimpleScalarTree *NewInstance()
        
        Standard type related macros and PrintSelf() method.
        """
        ...
    
    def SafeDownCast(self, vtkObjectBase):
        """
        V.SafeDownCast(vtkObjectBase) -> vtkSimpleScalarTree
        C++: static vtkSimpleScalarTree *SafeDownCast(vtkObjectBase *o)
        
        Standard type related macros and PrintSelf() method.
        """
        ...
    
    def SetBranchingFactor(self, p_int):
        """
        V.SetBranchingFactor(int)
        C++: virtual void SetBranchingFactor(int _arg)
        
        Set the branching factor for the tree. This is the number of
        children per tree node. Smaller values (minimum is 2) mean deeper
        trees and more memory overhead. Larger values mean shallower
        trees, less memory usage, but worse performance.
        """
        ...
    
    def SetMaxLevel(self, p_int):
        """
        V.SetMaxLevel(int)
        C++: virtual void SetMaxLevel(int _arg)
        
        Set the maximum allowable level for the tree.
        """
        ...
    
    def ShallowCopy(self, vtkScalarTree):
        """
        V.ShallowCopy(vtkScalarTree)
        C++: void ShallowCopy(vtkScalarTree *stree) override;
        
        This method is used to copy data members when cloning an instance
        of the class. It does not copy heavy data.
        """
        ...
    
    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__ = ...


