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

import vtkmodules.vtkCommonCore as __vtkmodules_vtkCommonCore

class vtkScalarTree(__vtkmodules_vtkCommonCore.vtkObject):
    """
    vtkScalarTree - organize data according to scalar values (used to
    accelerate contouring operations)
    
    Superclass: vtkObject
    
    vtkScalarTree is an abstract class that defines the API to concrete
    scalar tree subclasses. A scalar tree is a data structure that
    organizes data according to its scalar value. This allows rapid
    access to data for those algorithms that access the data based on
    scalar value. For example, isocontouring operates on cells based on
    the scalar (isocontour) value.
    
    To use subclasses of this class, you must specify a dataset to
    operate on, and then specify a scalar value in the InitTraversal()
    method. Then calls to GetNextCell() return cells whose scalar data
    contains the scalar value specified. (This describes serial
    traversal.)
    
    Methods supporting parallel traversal (such as threading) are also
    supported. Basically thread-safe batches of cells (which are a
    portion of the whole dataset) are available for processing using a
    parallel For() operation. First request the number of batches, and
    then for each batch, retrieve the array of cell ids in that batch.
    These batches contain cell ids that are likely to contain the
    isosurface.
    
    @sa
    vtkSimpleScalarTree vtkSpanSpace
    """
    def BuildTree(self):
        """
        V.BuildTree()
        C++: virtual void BuildTree()
        
        Construct the scalar tree from the dataset provided. Checks build
        times and modified time from input and reconstructs the tree if
        necessary.
        """
        ...
    
    def GetCellBatch(self, p_int, p_int_1):
        """
        V.GetCellBatch(int, int) -> (int, ...)
        C++: virtual const vtkIdType *GetCellBatch(vtkIdType batchNum,
            vtkIdType &numCells)
        
        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 GetDataSet(self):
        """
        V.GetDataSet() -> vtkDataSet
        C++: virtual vtkDataSet *GetDataSet()
        
        Build the tree from the points/cells and scalars defining this
        dataset.
        """
        ...
    
    def GetNumberOfCellBatches(self, p_float):
        """
        V.GetNumberOfCellBatches(float) -> int
        C++: virtual vtkIdType GetNumberOfCellBatches(double scalarValue)
        
        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 GetScalars(self):
        """
        V.GetScalars() -> vtkDataArray
        C++: virtual vtkDataArray *GetScalars()
        
        Build the tree from the points/cells and scalars defining the
        dataset and scalars provided. Typically the scalars come from the
        vtkDataSet specified, but sometimes a separate vtkDataArray is
        provided to specify the scalars. If the scalar array is
        explicitly set, then it takes precedence over the scalars held in
        the vtkDataSet.
        """
        ...
    
    def GetScalarValue(self):
        """
        V.GetScalarValue() -> float
        C++: double GetScalarValue()
        
        Return the current scalar value over which tree traversal is
        proceeding. This is the scalar value provided in InitTraversal().
        """
        ...
    
    def Initialize(self):
        """
        V.Initialize()
        C++: virtual void Initialize()
        
        Initialize locator. Frees memory and resets object as
        appropriate.
        """
        ...
    
    def InitTraversal(self, p_float):
        """
        V.InitTraversal(float)
        C++: virtual void InitTraversal(double scalarValue)
        
        Begin to traverse the cells based on a scalar value (serial
        traversal). Returned cells will have scalar values that span the
        scalar value specified. Note that changing the scalarValue does
        not cause the scalar tree to be modified, and hence it does not
        rebuild.
        """
        ...
    
    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() -> vtkScalarTree
        C++: vtkScalarTree *NewInstance()
        
        Standard type related macros and PrintSelf() method.
        """
        ...
    
    def SafeDownCast(self, vtkObjectBase):
        """
        V.SafeDownCast(vtkObjectBase) -> vtkScalarTree
        C++: static vtkScalarTree *SafeDownCast(vtkObjectBase *o)
        
        Standard type related macros and PrintSelf() method.
        """
        ...
    
    def SetDataSet(self, vtkDataSet):
        """
        V.SetDataSet(vtkDataSet)
        C++: virtual void SetDataSet(vtkDataSet *)
        
        Build the tree from the points/cells and scalars defining this
        dataset.
        """
        ...
    
    def SetScalars(self, vtkDataArray):
        """
        V.SetScalars(vtkDataArray)
        C++: virtual void SetScalars(vtkDataArray *)
        
        Build the tree from the points/cells and scalars defining the
        dataset and scalars provided. Typically the scalars come from the
        vtkDataSet specified, but sometimes a separate vtkDataArray is
        provided to specify the scalars. If the scalar array is
        explicitly set, then it takes precedence over the scalars held in
        the vtkDataSet.
        """
        ...
    
    def ShallowCopy(self, vtkScalarTree):
        """
        V.ShallowCopy(vtkScalarTree)
        C++: virtual void ShallowCopy(vtkScalarTree *stree)
        
        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__ = ...


