
    ^j,                       d Z ddlmZ ddlZddlmZmZmZ ddlZddl	Zddl
mZmZmZmZmZmZmZmZmZ er&ddlmZ ddlmZ ddlmZmZ dd	lmZ dd
lmZ ddl	mZ  G d dej         j                  Z! G d dej"        j#        j                  Z$ddZ% G d d          Z& G d de&          Z' G d de&          Z( G d dej"        j)                  Z*dS )z:Base class for structured (hierarchical) document formats.    )annotationsN)TYPE_CHECKINGAnyNoReturn)	GL_BLENDGL_ONE_MINUS_SRC_ALPHAGL_SRC_ALPHAGL_TEXTURE0glActiveTextureglBindTextureglBlendFunc	glDisableglEnable)Group)ShaderProgram)AbstractImageTexture)Location)InlineElement)
TextLayoutc                  F     e Zd Z	 	 dd fdZddZddZddZddZ xZS )_InlineElementGroup   Ntexturer   programr   orderintparentGroup | NonereturnNonec                h    t                                          ||           || _        || _        d S N)super__init__r   r   )selfr   r   r   r   	__class__s        Y/home/agentuser/manim-venv/lib/python3.11/site-packages/pyglet/text/formats/structured.pyr%   z_InlineElementGroup.__init__   s/    '''    c                   | j                                          t          t                     t	          | j        j        | j        j                   t          t                     t          t          t                     d S r#   )r   user   r
   r   r   targetidr   r   r   r	   r   r&   s    r(   	set_statez_InlineElementGroup.set_state%   sb    $$$dl)4<?;;;L"899999r)   c                `    t          t                     | j                                         d S r#   )r   r   r   stopr.   s    r(   unset_statez_InlineElementGroup.unset_state.   s*    (r)   otherboolc                    | j         |j         u oc| j        |j        k    oS| j        |j        k    oC| j        |j        k    o3| j        j        |j        j        k    o| j        j        |j        j        k    S r#   )r'   _orderr   r   r   r   r,   r-   )r&   r3   s     r(   __eq__z_InlineElementGroup.__eq__2   sy    %/1 4u{*4-4 u|+4 #u}';;	4
 5=#33	5r)   c                p    t          | j        | j        | j        | j        j        | j        j        f          S r#   )hashr6   r   r   r   r,   r-   r.   s    r(   __hash__z_InlineElementGroup.__hash__:   s3    T[$,\($,/; < < 	<r)   )r   N)
r   r   r   r   r   r   r   r   r    r!   )r    r!   )r3   r   r    r4   )r    r   )	__name__
__module____qualname__r%   r/   r2   r7   r:   __classcell__r'   s   @r(   r   r      s        NO(,      : : : :   5 5 5 5< < < < < < < <r)   r   c                  |     e Zd ZU dZded<   ded<   d%d& fdZd'dZd(dZd)dZd*d Z	d+d!Z
d,d"Zd-d#Zd.d$Z xZS )/ImageElementzAdds an image into the layout.r   heightwidthNimager   
int | Noner    r!   c                P   |                                 | _        |p|j        | _        |p|j        | _        i | _        | j        |j        z  |j        z  }t          d| j        |z
            }t          d|           }t                      	                    ||| j                   d S Nr   )
get_texturerD   rC   rB   vertex_listsanchor_ymaxminr$   r%   )r&   rD   rC   rB   rJ   ascentdescentr'   s          r(   r%   zImageElement.__init__D   s    &&((
)ek
,;%,.?Qh.//a(##$*55555r)   layoutr   xfloatyzline_xline_yrotationvisibler4   anchor_xrJ   c                   t           j        j                                        }t	          | j                                        |d|j                  }|}|| j        z   }|| j	        z   }|| j
        z   | j        z   }|                    dt           j        j        g d|j        |d||||||||||||ffd|||fdz  fd| j        j        fd|fdz  fd|fdz  fd|	|
fdz  f          }|| j        |<   d S )Nr      )r   r      r   r[      f)positiontranslation
tex_coordsrW   rV   anchor)pyglettextrO   get_default_image_layout_shaderr   rD   rH   grouprN   rC   rB   vertex_list_indexedglGL_TRIANGLESbatchr`   rI   )r&   rO   rP   rR   rS   rT   rU   rV   rW   rX   rJ   r   re   x1y1x2y2vertex_lists                     r(   placezImageElement.placeO   s+   +$DDFF#DJ$:$:$<$<gq&,WWdl"dj dk!DL011!VY5KM_M_M_28,<?"b!RQSUVXZ\^`acegiklAm;n?BQ1IPQM>R>A4:CX=Y;>
Q:O<?(q;Q:=(?SVW?W9X 2 4 4 %0&!!!r)   c                p    |||f}| j                                         D ]}||j        z  |j        d d <   d S r#   )rI   valuescountr_   )r&   rP   rR   rS   r_   _vertex_lists         r(   update_translationzImageElement.update_translationd   sU    !Qi -4466 	K 	KL*58J*JL$QQQ''	K 	Kr)   color	list[int]c                    d S r#    )r&   ru   s     r(   update_colorzImageElement.update_colori   s    r)   translate_xtranslate_yc                t    | | df}| j                                         D ]}||j        z  |j        d d <   d S rG   )rI   rq   rr   view_translation)r&   rz   r{   r}   rs   s        r(   update_view_translationz$ImageElement.update_view_translationm   s[    (L;,: -4466 	U 	UL/?,BT/TL)!!!,,	U 	Ur)   c                l    |f}| j                                         D ]}||j        z  |j        d d <   d S r#   )rI   rq   rr   rV   )r&   rV   	rot_tuplers   s       r(   update_rotationzImageElement.update_rotationr   sQ    K	 -4466 	E 	EL&/,2D&D< ##	E 	Er)   c                l    |f}| j                                         D ]}||j        z  |j        d d <   d S r#   )rI   rq   rr   rW   )r&   rW   visible_tuplers   s       r(   update_visibilityzImageElement.update_visibilityw   sQ     
 -4466 	H 	HL%2\5G%G<""	H 	Hr)   c                n    ||f}| j                                         D ]}||j        z  |j        d d <   d S r#   )rI   rq   rr   ra   )r&   rX   rJ   ra   rs   s        r(   update_anchorzImageElement.update_anchor|   sT    H% -4466 	A 	AL%+l.@%@L""	A 	Ar)   c                T    | j         |                                          | j         |= d S r#   )rI   delete)r&   rO   s     r(   removezImageElement.remove   s-    &!((***f%%%r)   )NN)rD   r   rC   rE   rB   rE   r    r!   )rO   r   rP   rQ   rR   rQ   rS   rQ   rT   rQ   rU   rQ   rV   rQ   rW   r4   rX   rQ   rJ   rQ   r    r!   )rP   rQ   rR   rQ   rS   rQ   r    r!   )ru   rv   r    r!   )rz   rQ   r{   rQ   r    r!   )rV   rQ   r    r!   )rW   r4   r    r!   )rX   rQ   rJ   rQ   r    r!   )rO   r   r    r!   )r;   r<   r=   __doc____annotations__r%   ro   rt   ry   r~   r   r   r   r   r>   r?   s   @r(   rA   rA   ?   s        ((KKKJJJ	6 	6 	6 	6 	6 	6 	60 0 0 0*K K K K
   U U U U
E E E E
H H H H
A A A A
& & & & & & & &r)   rA   numberr   r    strc                    d| cxk     rdk     sn d}t          |          d}d}d}t          t          |                    D ]6}t          | ||         z            }|||         |z  z  }| ||         |z  z  } 7|S )Nr   i  z#Argument must be between 1 and 3999)i  i  i  i  d   Z   2   (   
   	      rZ   r   )MCMDCDCXCLXLXIXVIVI )
ValueErrorrangelenr   )r   msgintegersnumeralsresultirr   s          r(   _int_to_romanr      s    v3ooNHOHF3x==!! & &Fhqk)**(1+%%(1+%%Mr)   c                  *    e Zd ZddZdddZdddZdS )ListBuilderdecoderStructuredTextDecoderstyledict[str, Any]r    r!   c                    |j                             d          pd}|j                             d          }|rt          |          }ng }|                    |dz              |dz   |d<   d|d<   ||d<   dS )zBegin a list.

        Args:
            decoder:
                Decoder.
            style:
                Style dictionary that applies over the entire list.
        margin_leftr   	tab_stopsr   iindentN)current_stylegetlistappend)r&   r   r   left_marginr   s        r(   beginzListBuilder.begin   s     +//>>C!)--k::	 	YIIIr)****R/mh&kr)   Nvalue
str | Nonec                    |                      |          }|r|                    |           |                    d           dS )a/  Begin a list item.

        Args:
            decoder:
                `StructuredTextDecoder` Decoder.
            style:
                Style dictionary that applies over the list item.
            value:
                Optional value of the list item.  The meaning is list-type dependent.

        	N)get_markadd_text)r&   r   r   r   marks        r(   itemzListBuilder.item   sK     }}U## 	#T"""r)   r   c                    dS )zGet the mark text for the next list item.

        Args:
            value:
                Optional value of the list item.  The meaning is list-type dependent.
        r   rx   r&   r   s     r(   r   zListBuilder.get_mark   s	     rr)   )r   r   r   r   r    r!   r#   )r   r   r   r   r   r   r    r!   r   r   r    r   )r;   r<   r=   r   r   r   rx   r)   r(   r   r      sZ        ' ' ' '(    "      r)   r   c                  ,    e Zd ZU ded<   d
dZddd	ZdS )UnorderedListBuilderr   r   r    r!   c                    || _         dS )zCreate an unordered list with constant mark text.

        Args:
            mark:
                Mark to prepend to each list item.

        Nr   )r&   r   s     r(   r%   zUnorderedListBuilder.__init__   s     			r)   Nr   r   c                    | j         S r#   r   r   s     r(   r   zUnorderedListBuilder.get_mark   s
    yr)   )r   r   r    r!   r#   r   )r;   r<   r=   r   r%   r   rx   r)   r(   r   r      sL         III         r)   r   c                  @    e Zd Z ej        d          ZddZdddZd	S )OrderedListBuilderz(.*?)([1aAiI])(.*)startr   fmtr   r    r!   c                    || _         | j                            |                                          \  | _        | _        | _        | j        dv sJ dS )a  Create an ordered list with sequentially numbered mark text.

        The format is composed of an optional prefix text, a numbering
        scheme character followed by suffix text. Valid numbering schemes
        are:

        ``1``
            Decimal Arabic
        ``a``
            Lowercase alphanumeric
        ``A``
            Uppercase alphanumeric
        ``i``
            Lowercase Roman
        ``I``
            Uppercase Roman

        Prefix text may typically be ``(`` or ``[`` and suffix text is
        typically ``.``, ``)`` or empty, but either can be any string.

        Args:
            start:
                First list item number.
            fmt:
                Format style, for example ``"1."``.

        1aAiIN)
next_value	format_rematchgroupsprefix	numberingsuffix)r&   r   r   s      r(   r%   zOrderedListBuilder.__init__   sR    8  37>3G3G3L3L3S3S3U3U0T^T[~((((((r)   Nr   r   c                   || j         }|dz   | _         | j        dv rP	 d|dz
           }n# t          $ r d}Y nw xY w| j        dk    r|                                }| j         | | j         S | j        dv rT	 t          |          }n# t          $ r d}Y nw xY w| j        dk    r|                                }| j         | | j         S | j         | | j         S )Nr   aAabcdefghijklmnopqrstuvwxyz?AiIr   )r   r   r   upperr   r   r   lower)r&   r   r   s      r(   r   zOrderedListBuilder.get_mark   s&   =OE!)>T!!3EAI>   ~$$zz||k646666>T!!$U++   ~$$zz||k646666+3u3dk333s   * 997B BB)r   r   r   r   r    r!   r#   r   )r;   r<   r=   recompiler   r%   r   rx   r)   r(   r   r      sT        
/00I) ) ) )B4 4 4 4 4 4 4r)   r   c                  @    e Zd ZdddZdd
ZddZddZddZddZdS )r   Nrc   r   locationLocation | Noner    &pyglet.text.document.FormattedDocumentc                   d| _         i | _        i | _        g | _        g | _        t
          j        j                                        | _        |t
          j	        
                    d          }|                     ||           | j        S )Nr   r   )len_textr   
next_stylestack
list_stackrb   rc   documentFormattedDocumentresourceFileLocationdecode_structuredr&   rc   r   s      r(   decodezStructuredTextDecoder.decode  sw    
,>>@@33B77HtX...}r)   r   c                    t           r#   )NotImplementedErrorr   s      r(   r   z'StructuredTextDecoder.decode_structured"  s    !!r)   keystylesr   r!   c                    i }|D ]}| j                             |          ||<    | j                            ||f           | j                             |           | j                            |           d S r#   )r   r   r   r   updater   )r&   r   r   
old_stylesnames        r(   
push_stylez StructuredTextDecoder.push_style%  s    
 	< 	<D#155d;;Jt
3
+,,,!!&)))v&&&&&r)   c                    | j         D ]\  }}||k    r nd S 	 | j                                         \  }}| j                            |           | j                            |           ||k    rd S Yr#   )r   popr   r   r   )r&   r   r   _r   s        r(   	pop_stylezStructuredTextDecoder.pop_style-  s    
 	 	HE1e||  F	 $
 0 0E:O"":...%%j111||	r)   c                    | j                             | j        || j                   | j                                         | xj        t          |          z  c_        d S r#   )r   insert_textr   r   clearr   )r&   rc   s     r(   r   zStructuredTextDecoder.add_text=  sN    !!$-tGGGT"r)   elementr   c                    | j                             | j        || j                   | j                                         | xj        dz  c_        d S )Nr   )r   insert_elementr   r   r  )r&   r  s     r(   add_elementz!StructuredTextDecoder.add_elementB  sH    $$T]GT_MMMr)   r#   )rc   r   r   r   r    r   )rc   r   r   r   r    r   )r   r   r   r   r    r!   )r   r   r    r!   )rc   r   r    r!   )r  r   r    r!   )	r;   r<   r=   r   r   r   r   r   r  rx   r)   r(   r   r     s        
 
 
 
 
" " " "' ' ' '    # # # #
     r)   r   )r   r   r    r   )+r   
__future__r   r   typingr   r   r   rb   pyglet.text.layout	pyglet.glr   r   r	   r
   r   r   r   r   r   pyglet.graphicsr   pyglet.graphics.shaderr   pyglet.imager   r   pyglet.resourcer   pyglet.text.documentr   r   graphicsr   rc   r   rA   r   r   r   r   DocumentDecoderr   rx   r)   r(   <module>r     sy   @ @ " " " " " " 				 / / / / / / / / / /     
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
  .%%%%%%44444433333333((((((222222------< < < < <&// < < <BD& D& D& D& D&6;'5 D& D& D&N   . . . . . . . .b    ;   $:4 :4 :4 :4 :4 :4 :4 :4z0 0 0 0 0FK7 0 0 0 0 0r)   