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

from .vtkUnstructuredGridVolumeRayCastFunction import vtkUnstructuredGridVolumeRayCastFunction

class vtkUnstructuredGridBunykRayCastFunction(vtkUnstructuredGridVolumeRayCastFunction):
    """
    vtkUnstructuredGridBunykRayCastFunction - a superclass for ray
    casting functions
    
    Superclass: vtkUnstructuredGridVolumeRayCastFunction
    
    vtkUnstructuredGridBunykRayCastFunction is a concrete implementation
    of a ray cast function for unstructured grid data. This class was
    based on the paper "Simple, Fast, Robust Ray Casting of Irregular
    Grids" by Paul Bunyk, Arie Kaufmna, and Claudio Silva. This method is
    quite memory intensive (with extra explicit copies of the data) and
    therefore should not be used for very large data. This method assumes
    that the input data is composed entirely of tetras - use
    vtkDataSetTriangleFilter before setting the input on the mapper.
    
    The basic idea of this method is as follows:
    
    1) Enumerate the triangles. At each triangle have space for some
       information that will be used during rendering. This includes
       which tetra the triangles belong to, the plane equation and the
       Barycentric coefficients.
    
    2) Keep a reference to all four triangles for each tetra.
    
    3) At the beginning of each render, do the precomputation. This
       includes creating an array of transformed points (in view
       coordinates) and computing the view dependent info per triangle
       (plane equations and barycentric coords in view space)
    
    4) Find all front facing boundary triangles (a triangle is on the
       boundary if it belongs to only one tetra). For each triangle, find
    all pixels in the image that intersect the triangle, and add this to
       the sorted (by depth) intersection list at each pixel.
    
    5) For each ray cast, traverse the intersection list. At each
       intersection, accumulate opacity and color contribution per tetra
       along the ray until you reach an exiting triangle (on the
       boundary).
    
    @sa
    vtkUnstructuredGridVolumeRayCastMapper
    """
    def Finalize(self):
        """
        V.Finalize()
        C++: void Finalize() override;
        
        Called by the ray cast mapper at the end of rendering
        """
        ...
    
    def GetImageOrigin(self):
        """
        V.GetImageOrigin() -> (int, int)
        C++: virtual int *GetImageOrigin()
        
        Access to an internal structure for the templated method.
        """
        ...
    
    def GetImageViewportSize(self):
        """
        V.GetImageViewportSize() -> (int, int)
        C++: virtual int *GetImageViewportSize()
        
        Access to an internal structure for the templated method.
        """
        ...
    
    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 GetPoints(self):
        """
        V.GetPoints() -> (float, ...)
        C++: double *GetPoints()
        
        Access to an internal structure for the templated method.
        """
        ...
    
    def GetViewToWorldMatrix(self):
        """
        V.GetViewToWorldMatrix() -> vtkMatrix4x4
        C++: virtual vtkMatrix4x4 *GetViewToWorldMatrix()
        
        Access to an internal structure for the templated method.
        """
        ...
    
    def Initialize(self, vtkRenderer, vtkVolume):
        """
        V.Initialize(vtkRenderer, vtkVolume)
        C++: void Initialize(vtkRenderer *ren, vtkVolume *vol) override;
        
        Called by the ray cast mapper at the start of rendering
        """
        ...
    
    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() -> vtkUnstructuredGridBunykRayCastFunction
        C++: vtkUnstructuredGridBunykRayCastFunction *NewInstance()
        """
        ...
    
    def NewIterator(self):
        """
        V.NewIterator() -> vtkUnstructuredGridVolumeRayCastIterator
        C++: vtkUnstructuredGridVolumeRayCastIterator *NewIterator()
            override;
        
        Returns a new object that will iterate over all the intersections
        of a ray with the cells of the input.  The calling code is
        responsible for deleting the returned object.
        """
        ...
    
    def SafeDownCast(self, vtkObjectBase):
        """
        V.SafeDownCast(vtkObjectBase)
            -> vtkUnstructuredGridBunykRayCastFunction
        C++: static vtkUnstructuredGridBunykRayCastFunction *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__ = ...


