
    ^j                        d Z ddlmZ ddlmZmZmZmZ erddlm	Z	 ddl
mZmZ  G d de          Z G d d	          Z G d
 d          ZdS )z>Concept for higher level instance generation and organization.    )annotations)TYPE_CHECKINGAnyProtocolSequence)Batch)VertexInstance
VertexListc                  $    e Zd ZU ded<   ded<   dS )VertexListObjectr   batchr
   _vertex_listN)__name__
__module____qualname____annotations__     S/home/agentuser/manim-venv/lib/python3.11/site-packages/pyglet/graphics/instance.pyr   r      s'         LLLr   r   c                  J    e Zd ZU ded<   ddZedd	            ZddZddZdS )InstanceSourceMixinr
   r   
attributesSequence[str]returnNonec                <    t          |          | _        g | _        d S N)tuple_attributes
_instances)selfr   s     r   __init__zInstanceSourceMixin.__init__   s     ,,r   list[VertexInstance]c                    | j         S r   r    r!   s    r   	instanceszInstanceSourceMixin.instances   
    r   kwargsr   r	   c                ^     | j         j        di |}| j                            |           |S Nr   )r   add_instancer    appendr!   r)   instances      r   create_instancez#InstanceSourceMixin.create_instance   s8    14$1;;F;;x(((r   c                `    | j                                         }|                                 |S r   r    popdeleter!   r/   s     r   r3   zInstanceSourceMixin.pop    *    ?&&((r   N)r   r   r   r   r   r#   r)   r   r   r	   r   r	   )	r   r   r   r   r"   propertyr'   r0   r3   r   r   r   r   r      s~                X   
     r   r   c                  j    e Zd ZU ded<   dd	Zedd
            ZddZedd            ZddZ	ddZ
dS )InstanceGeneratortuple[str, ...]r   sourcer   r   r   r   r   c                    || _         t          |          | _        g | _        | j         j        t          d          | j         j        t          d          |                                  d S )NzNo vertex listzNo batch)r>   r   r   r    r   	Exceptionr   migrate)r!   r>   r   s      r   r"   zInstanceGenerator.__init__)   sd     ,,;#+,---;$J'''r   c                    | j         S r   )r   r&   s    r   instance_attributesz%InstanceGenerator.instance_attributes6   s    r   c                    | j         j        }| j         j        }|                    |j        | j                  }|                    || j                   d S r   )r>   r   r   _convert_to_instanceddomainr   set_instance_source)r!   vlistr   instanced_domains       r   rA   zInstanceGenerator.migrate:   sQ    (! 66u|TEUVV!!"2D4DEEEEEr   r#   c                    | j         S r   r%   r&   s    r   r'   zInstanceGenerator.instancesA   r(   r   r)   r   r	   c                h     | j         j        j        di |}| j                            |           |S r+   )r>   r   r,   r    r-   r.   s      r   createzInstanceGenerator.createE   s:    84;+8BB6BBx(((r   c                `    | j                                         }|                                 |S r   r2   r5   s     r   r3   zInstanceGenerator.popJ   r6   r   N)r>   r   r   r   r   r   )r   r=   )r   r   r7   r8   r9   )r   r   r   r   r"   r:   rC   rA   r'   rL   r3   r   r   r   r<   r<   &   s                       X F F F F    X   
     r   r<   N)__doc__
__future__r   typingr   r   r   r   pyglet.graphicsr   pyglet.graphics.vertexdomainr	   r
   r   r   r<   r   r   r   <module>rS      s    D D " " " " " " 9 9 9 9 9 9 9 9 9 9 9 9 H%%%%%%GGGGGGGG    x   
       ,' ' ' ' ' ' ' ' ' 'r   