from __future__ import annotations
import omni.hydratexture._hydra_texture
import typing
import carb._carb
import carb.events._events
import omni.gpu_foundation_factory._gpu_foundation_factory
import omni.usd._usd

__all__ = [
    "EVENT_TYPE_DRAWABLE_CHANGED",
    "EVENT_TYPE_HYDRA_ENGINE_CHANGED",
    "EVENT_TYPE_RENDER_SETTINGS_CHANGED",
    "IHydraTexture",
    "IHydraTextureFactory",
    "TextureGpuReference",
    "acquire_hydra_texture_factory_interface"
]


class IHydraTexture():
    def cancel_all_picking(self) -> None: 
        """
        Cancel any picking or query requests that are in flight or queued.
        """
    def get_aov_info(self, result_handle: int = 0, aov_name: str = None, include_texture: bool = False) -> typing.List[dict]: 
        """
        Get AOV data durring EVENT_TYPE_DRAWABLE_CHANGED as a list of dictionaries: {
          'name'   : str,
          'texture': dict(),
        }

        Args:
          include_texture: bool   Include a dictionary for the AOVs texture, under the key 'texture'.
        """
    def get_async(self) -> bool: 
        """
        Returns whether it is desirable to perform rendering on another thread.
        """
    def get_camera_path(self) -> str: 
        """
        Returns the USD camera prim path that will be used by the HydraEngine.
        """
    def get_drawable_ldr_resource(self, result_handle: int = 0) -> omni.gpu_foundation_factory._gpu_foundation_factory.RpResource: 
        """
        Get the drawable resource for the low-dynamic-range color buffer.
        """
    def get_drawable_resource(self, result_handle: int = 0, aov_name: str = '') -> omni.gpu_foundation_factory._gpu_foundation_factory.RpResource: 
        """
        Get the drawable resource for an AOV.

        Args:
          aov_name: str The name of the AOV for the resource to return, defaults to the low-dynamic-range color AOV.
        """
    def get_event_stream(self) -> carb.events._events.IEventStream: 
        """
        Returns the event stream where events like drawable change are pumped.
        """
    def get_frame_info(self, result_handle: int = 0, include_aov_list: bool = False) -> dict: 
        """
        Get additional data durring EVENT_TYPE_DRAWABLE_CHANGED in dictionary form : {
          'view' : double[16],
          'projection' : double[16],
          'fps' : float,
          'resolution' : (uin32_t, uin32_t),
          'progression' : uin32_t
          'frame_number': size_t
          'subframe_count': uin32_t
          'progression' : uin32_t
          'aovs'        : list
        }
        """
    def get_height(self) -> int: 
        """
        Returns the texture height.
        """
    def get_hydra_engine(self) -> str: 
        """
        Returns HydraEngine that is used currently to render to the associated texture.
        """
    def get_imgui_reference(self, result_handle: int = 0, aov_name: str = '') -> capsule: 
        """
        Returns a reference for an AOV that can be used in ImGui-based UI widgets.

        Args:
          aov_name: str The name of the AOV for the reference to return, defaults to the low-dynamic-range color AOV.
        """
    def get_name(self) -> str: 
        """
        Returns name of the HydraTexture.
        """
    def get_render_product_path(self) -> str: 
        """
        Returns the prim path for the render product
        """
    def get_settings_path(self) -> str: 
        """
        Returns string path to the settings section where this HydraTexture tracks its state.
        """
    def get_updates_enabled(self) -> bool: 
        """
        Returns viewport updates state.
        """
    def get_usd_context_name(self) -> str: 
        """
        Returns name of a USD context associated with the HydraTexture.
        """
    def get_width(self) -> int: 
        """
        Returns the texture width.
        """
    def pick(self, x_left: int, y_top: int, x_right: int = 0, y_bottom: int = 0, mode: omni.usd._usd.PickingMode = PickingMode.TRACK, pick_name: str = '', y_down: bool = True) -> None: 
        """
        Pick a pixel in the HydraTexture.
        """
    def query(self, x: int, y: int, callback: typing.Callable[[str, carb._carb.Double3, carb._carb.Uint2], None] = None, add_outline: bool = False, query_name: str = '', y_down: bool = True) -> None: 
        """
        Query a pixel in the HydraTexture.
        """
    def request_pick(self, p0: carb._carb.Uint2, p1: carb._carb.Uint2, mode: omni.usd._usd.PickingMode = PickingMode.TRACK, pick_name: str = '', y_down: bool = True) -> bool: 
        """
        Pick a pixel in the HydraTexture.
        """
    @typing.overload
    def request_query(self, pixel: carb._carb.Uint2, callback: typing.Callable[[str, carb._carb.Double3, carb._carb.Uint2], None] = None, query_name: str = '', add_outline: bool = False, y_down: bool = True) -> bool: 
        """
        Query a pixel in the HydraTexture.

        Query a pixel in the HydraTexture.
        """
    @typing.overload
    def request_query(self, pixel: carb._carb.Uint2, callback: typing.Callable[[str, carb._carb.Double3, carb._carb.Uint2], None] = None, query_name: str = '', view: handle = None, projection: handle = None, add_outline: bool = False, y_down: bool = True) -> bool: ...
    def set_async(self, is_async: bool) -> None: 
        """
        Sets whether it is desirable to perform rendering on another thread.
        """
    def set_camera_path(self, usd_camera_path: str = '/OmniverseKit_Persp') -> None: 
        """
        Sets the USD camera prim path that will be used by the HydraEngine.
        """
    def set_height(self, height: int) -> None: 
        """
        Sets the texture height.
        """
    def set_hydra_engine(self, hydra_engine_name: str = 'rtx') -> None: 
        """
        Sets the desired HydraEngine that should render to the associated texture.
        """
    def set_render_product_path(self, prim_path: str, keep_camera: bool = False, keep_resolution: bool = False) -> bool: 
        """
        Sets the prim path for the render product.

        Args:
            prim_path (str):                The prim path to a valid UsdRenderProduct.
            keep_camera (bool) = False:     Keep the viewport's current camera.
            keep_resolution (bool) = False: Keep the viewport's current resolution.
        """
    def set_updates_enabled(self, updates_enabled: bool = True) -> None: 
        """
        Allows to pause/resume viewport updates. When paused, calls to associated HydraEngine are not made.
        """
    def set_width(self, width: int) -> None: 
        """
        Sets the texture width.
        """
    @property
    def camera_path(self) -> str:
        """
        Gets/sets the USD camera prim path that will be used by the HydraEngine.

        :type: str
        """
    @camera_path.setter
    def camera_path(self, arg1: str) -> None:
        """
        Gets/sets the USD camera prim path that will be used by the HydraEngine.
        """
    @property
    def height(self) -> int:
        """
        Gets/sets the texture height.

        :type: int
        """
    @height.setter
    def height(self, arg1: int) -> None:
        """
        Gets/sets the texture height.
        """
    @property
    def hydra_engine(self) -> str:
        """
        Gets/sets the desired HydraEngine that should render to the associated texture.

        :type: str
        """
    @hydra_engine.setter
    def hydra_engine(self, arg1: str) -> None:
        """
        Gets/sets the desired HydraEngine that should render to the associated texture.
        """
    @property
    def is_async(self) -> bool:
        """
        Gets/sets whether it is desirable to perform rendering on another thread.

        :type: bool
        """
    @is_async.setter
    def is_async(self, arg1: bool) -> None:
        """
        Gets/sets whether it is desirable to perform rendering on another thread.
        """
    @property
    def updates_enabled(self) -> bool:
        """
        Gets/sets viewport updates state. Allows to pause/resume viewport updates. When paused, calls to associated HydraEngine are not made.

        :type: bool
        """
    @updates_enabled.setter
    def updates_enabled(self, arg1: bool) -> None:
        """
        Gets/sets viewport updates state. Allows to pause/resume viewport updates. When paused, calls to associated HydraEngine are not made.
        """
    @property
    def width(self) -> int:
        """
        Gets/sets the texture width.

        :type: int
        """
    @width.setter
    def width(self, arg1: int) -> None:
        """
        Gets/sets the texture width.
        """
    pass
class IHydraTextureFactory():
    def create_hydra_texture(self, name: str, width: int, height: int, usd_context_name: str = '', usd_camera_path: str = '/OmniverseKit_Persp', hydra_engine_name: str = 'rtx', is_async: bool = True, is_async_low_latency: bool = False, hydra_tick_rate: int = 0, engine_creation_flags: int = 0, is_asyncLowLatency: bool = False, hydraTickRate: int = 0) -> IHydraTexture: ...
    def get_hydra_texture_from_handle(self, handle: int) -> IHydraTexture: ...
    def shutdown(self) -> bool: ...
    def startup(self) -> bool: ...
    pass
class TextureGpuReference():
    @property
    def gpu_index(self) -> int:
        """
        :type: int
        """
    pass
def acquire_hydra_texture_factory_interface(*args, **kwargs) -> typing.Any:
    pass
EVENT_TYPE_DRAWABLE_CHANGED = 11183105052706112355
EVENT_TYPE_HYDRA_ENGINE_CHANGED = 13015938697279081123
EVENT_TYPE_RENDER_SETTINGS_CHANGED = 5475677776228743414
