
    lj                        d Z ddlmZ g dZddlmZ ddlmZ ddlm	Z	 dd	l
mZ dd
lmZ ddlmZ ddlmZ ddlmZ ddZddZddZdS )z$Utilities for working with mobjects.    )annotations)get_mobject_classget_point_mobject_classget_vectorized_mobject_class   )config)RendererType   )Mobject)OpenGLMobject)OpenGLPMobject)OpenGLVMobject)PMobject)VMobjectreturntypec                     t           j        t          j        k    rt          S t           j        t          j        k    rt          S t          d          )aD  Gets the base mobject class, depending on the currently active renderer.

    .. NOTE::

        This method is intended to be used in the code base of Manim itself
        or in plugins where code should work independent of the selected
        renderer.

    Examples
    --------

    The function has to be explicitly imported. We test that
    the name of the returned class is one of the known mobject
    base classes::

        >>> from manim.mobject.utils import get_mobject_class
        >>> get_mobject_class().__name__ in ['Mobject', 'OpenGLMobject']
        True
    z:Base mobjects are not implemented for the active renderer.)r   rendererr	   CAIROr   OPENGLr   NotImplementedError     N/home/agentuser/manim-venv/lib/python3.11/site-packages/manim/mobject/utils.pyr   r      sD    ( ,,,,,---
D  r   c                     t           j        t          j        k    rt          S t           j        t          j        k    rt          S t          d          )af  Gets the vectorized mobject class, depending on the currently
    active renderer.

    .. NOTE::

        This method is intended to be used in the code base of Manim itself
        or in plugins where code should work independent of the selected
        renderer.

    Examples
    --------

    The function has to be explicitly imported. We test that
    the name of the returned class is one of the known mobject
    base classes::

        >>> from manim.mobject.utils import get_vectorized_mobject_class
        >>> get_vectorized_mobject_class().__name__ in ['VMobject', 'OpenGLVMobject']
        True
    z@Vectorized mobjects are not implemented for the active renderer.)r   r   r	   r   r   r   r   r   r   r   r   r   r   2   sD    * ,,,,,---
J  r   c                     t           j        t          j        k    rt          S t           j        t          j        k    rt          S t          d          )a]  Gets the point cloud mobject class, depending on the currently
    active renderer.

    .. NOTE::

        This method is intended to be used in the code base of Manim itself
        or in plugins where code should work independent of the selected
        renderer.

    Examples
    --------

    The function has to be explicitly imported. We test that
    the name of the returned class is one of the known mobject
    base classes::

        >>> from manim.mobject.utils import get_point_mobject_class
        >>> get_point_mobject_class().__name__ in ['PMobject', 'OpenGLPMobject']
        True
    zAPoint cloud mobjects are not implemented for the active renderer.)r   r   r	   r   r   r   r   r   r   r   r   r   r   P   sD    * ,,,,,---
K  r   N)r   r   )__doc__
__future__r   __all___configr   	constantsr	   mobjectr   opengl.opengl_mobjectr   !opengl.opengl_point_cloud_mobjectr    opengl.opengl_vectorized_mobjectr   types.point_cloud_mobjectr   types.vectorized_mobjectr   r   r   r   r   r   r   <module>r(      s   * * " " " " " "         $ $ $ $ $ $       0 0 0 0 0 0 = = = = = = < < < < < < / / / / / / . . . . . .   :   <     r   