
    ^j/                       d Z ddlmZ ddlZddlZddlmZ ddlmZ ddl	m
Z
mZmZ ddlZddlmZ e
rddlmZ dd	lmZ d7dZi d ed          d ed          d ed          d ed          d ed          d ed          d ed          d ed          d ed          d  ed!          d" ed#          d$ ed          d% ed&          d' ed(          d) ed*          d+ ed,          Zd8d/Z ej        d0ej                  Zd1d2gZg d3Zg d4Z G d5 d6eej                  ZdS )9a  Decode HTML into attributed text.

A subset of HTML 4.01 Transitional is implemented.  The following elements are
supported fully::

    B BLOCKQUOTE BR CENTER CODE DD DIR DL EM FONT H1 H2 H3 H4 H5 H6 I IMG KBD
    LI MENU OL P PRE Q SAMP STRONG SUB SUP TT U UL VAR

The mark (bullet or number) of a list item is separated from the body of the
list item with a tab, as the pyglet document model does not allow
out-of-stream text.  This means lists display as expected, but behave a little
oddly if edited.

No CSS styling is supported.
    )annotationsN)entities)
HTMLParser)TYPE_CHECKINGAnyClassVar)
structured)AbstractImage)Locationvalintreturnlist[int, int, int, int]c                ,    | dz	  dz  | dz	  dz  | dz  dgS )N          )r   s    S/home/agentuser/manim-venv/lib/python3.11/site-packages/pyglet/text/formats/html.py
_hex_colorr       s'    BY$T 13:sCC    blacksilveri grayi whitei marooni   redi   purplei  fucsiai   greeni   limei  olivei  yellownavy   bluer   teali  aquai  valuestrc                    |                      d          r%t          t          | dd          d                    S 	 t          |                                          S # t
          $ r Y nw xY wt          )N#   r   )
startswithr   r   _color_nameslowerKeyError
ValueError)r)   s    r   _parse_colorr3   8   sx     .#eABBi,,---EKKMM**    s   A 
A('A(u   [ 	​
]+headtitle)ph1h2h3h4h5h6uloldirmenupredldivcenternoscriptnoframes
blockquoteformisindexhrtablefieldsetaddresslidddt)
_top_blockbodyrC   rD   objectappletrG   insdelrO   rN   rH   rL   buttonthtdiframerE   rF   r=   r>   r?   r@   rB   c                      e Zd ZU dZddddddZded	<   d
dddddddZded<   d)dZd*dZd+dZ	d,dZ
d-d#Zd.d$Zd/d&Zd/d'Zd(S )0HTMLDecoderzDecoder for HTML documents.zTimes New Roman   12ptnormalF)	font_name	font_sizemargin_bottomweightitaliczClassVar[dict[str, Any]]default_styler   
            0   )r-                     zClassVar[dict[int, int]]
font_sizestextr*   locationr   r   Nonec                Z   || _         dg| _        | j                            t	          j        i                      d| _        d| _        d| _        dg| _	        d| _
        d| _        |                     d| j                   |                     |           |                                  d S )Nrl   TFrQ   _default)rs   _font_size_stack
list_stackappendr	   UnorderedListBuilderstrip_leading_spaceblock_beginneed_block_beginelement_stackin_metadatain_pre
push_stylere   feedclose)selfrr   rs   s      r   decode_structuredzHTMLDecoder.decode_structuredo   s     !"z>rBBCCC#'  %*^ 
D$6777		$

r   filenamer
   c                t    t           j                            || j                            |                    S )N)file)pygletimageloadrs   open)r   r   s     r   	get_imagezHTMLDecoder.get_image   s-    |  0B0B80L0L MMMr   c                ^    | j         r%|                     d           d| _        d| _         d S d S )N
TF)r}   add_textr|   )r   s    r   prepare_for_datazHTMLDecoder.prepare_for_data   s?      	*MM$#D$)D!!!	* 	*r   datac                   | j         rd S | j        r|                     |           d S t                              d|          }|                                rR|                                  | j        s| j        r|	                                }d| _        |                     |           |
                    d          | _        d S )N F)r   r   r   _whitespace_resubstripr   r|   r{   lstripendswith)r   r   s     r   handle_datazHTMLDecoder.handle_data   s     	F; 
	:MM$!%%c400Dzz|| $%%'''# -t'? -;;==D',D$d###'+}}S'9'9D$$$r   tag
case_attrsdict[str, Any]c                6   | j         rd S |                                }i }|D ]\  }}|||                                <   |t          v rd| _         n{|t          v rr| j        d         t
          vr4|                     | j        d                    | j        d         t
          v4| j        s#|                     d           d| _        d| _	        | j        
                    |           i }|dv rd|d<   n|dv rd|d	<   n|d
v rd|d<   n|dk    r'| j                            d          }|g d}||d<   n|dk    rd|v r|d                             d          |d<   d|v r|d         }		 |	                    d          r&| j        d         t!          |	dd                    z   }	nJ|	                    d          r&| j        d         t!          |	dd                    z
  }	nt!          |	          }	n# t"          $ r d}	Y nw xY w| j        
                    |	           |	| j        v r| j                            |	d          |d<   n^d|v r5t!          |d                   }	| j        
                    |	           |	|d<   n%| j        
                    | j        d                    d|v rIt'          j        t"                    5  t+          |d                   |d<   d d d            n# 1 swxY w Y   n|dk    r5| j        d         dz
  }	| j                            |	d          |d<   d|d<   n|dk    r5| j        d         dz
  }	| j                            |	d          |d<   d|d<   n|d k    rd!|d<   d|d<   d"|d#<   n|d$k    rd%|d<   d|d<   nr|d&k    rd'|d<   d|d<   n`|d(k    rd)|d<   d|d<   nN|d*k    rd+|d<   d|d<   n<|d,k    rd+|d<   d|d	<   n*|d-k    r|                     d.           d| _        n|d/k    r$|                    d#          d0v r|d#         |d#<   n|d"k    rd"|d#<   n|d1k    rd|d<   d2|d3<   d| _        n|d4k    rJ| j                            d5          pd2}
| j                            d6          pd2}|
d7z   |d5<   |d7z   |d6<   nf|d8k    r|                     d9           nI|d:k    r	 t!          |                    d;d                    }n# t"          $ r d}Y nw xY w|                    d<d=          d>z   }t3          j        ||          }|                    | |           | j        
                    |           n|d?v r|                    d<d@                                          }|dAk    rdB}n|dCk    rdD}ndE}t3          j        |          }|                    | |           | j        
                    |           n&|dFk    r)| j        d                             | |           d| _        n|dGk    rd2|d3<   n|dHk    r%| j                            d5          pd2}
|
dIz   |d5<   n|dJk    r|                     |                    dK                    }|r|                    dL          }|rt!          |          }|                    dM          }|rt!          |          }|                                   | !                    t3          j"        |||                     d| _        | #                    ||           d S )NNTr   F)bstrongboldrc   )iemvarrd   )ttcodesampkbdzCourier Newr`   ucolor)r   r   r   r   	underlinefontface,size+r-   -rl   ra   	real_sizesup3ptbaseliner   z-3ptr7   ri   rD   alignr8   rh   r9   r   r:   rg   r;   r]   r<   bru    r6   )leftrD   rightrA   r   rb   rG   margin_leftmargin_right<   qu   “r>   starttype1.)r=   r?   r@   disccircleu   ○squareu   □u   ●rN   rB   rO      imgsrcwidthheight)$r   r0   _metadata_elements_block_elementsr~   _block_containershandle_endtagr|   r   r}   ry   current_stylegetsplitr.   rw   r   r2   rq   
contextlibsuppressr3   r{   r   r   r	   OrderedListBuilderbeginrx   rz   itemr   r   add_elementImageElementr   )r   r   r   elementattrskeyr)   styler   r   left_marginright_marginr   fmtbuildertype_markr   r   r   s                       r   handle_starttagzHTMLDecoder.handle_starttag   sz    	F))++$ 	' 	'JC!&E#))++(((#D''$R(0AAA""4#5b#9::: $R(0AAA# .d####' (-%!!'***o%%$E(OO***"E(OO555!.E+^^&**733E}&!&E+%*6]%8%8%=%=k"V}s++ )#4R83tABBx==H-- )#4R83tABBx==H"4yy!   DDD%,,T2224?**)-)<)<T1)E)EE+&%%5-..%,,T222%)k""%,,T-B2-FGGG%(44 B B%1%.%A%AE'NB B B B B B B B B B B B B B B(,q0D!%!4!4T1!=!=E+ %E*(,q0D!%!4!4T1!=!=E+ &E*__!#E+$E(O%E'NN__!#E+$E(OO__!#E+$E(OO__!#E+$E(OO__!#E+$E(OO__!#E+"E(OO__MM(###'+D$$^^yy!!%@@@!&wg  %E'NN!.E+%&E/"DKK$$,00??D1K-11.AAFQL#.#3E- $02$5E.!!^^X&&&&__EIIgq1122   ))FC((3.C 3E3??GMM$&&&O""7++++---IIff--3355E  ("" 5d;;GMM$&&&O""7++++__OB$$T5111'+D$$__%&E/""__,00??D1K#.#3E-  NN599U#3#344E 	1		'** 'JJE8,, ) [[F%%'''  !8v!N!NOOO+0('''''s7   +BG1 1H ?H  K%%K),K)#S% %S43S4c                p   |                                 }|| j        vrd S |                     |           | j                                        |k    r	 | j                                        |k    |t          v rd| _        n|t          v rd| _        d| _        |dk    r3t          | j
                  dk    r| j
                                         d S |dk    r	d| _        d S |dk    r|                     d           d S |dv r3t          | j                  dk    r| j                                         d S d S d S )	NFTr   r-   rA   r   u   ”)r=   r>   )r0   r~   	pop_stylepopr   r   r   r|   r}   lenrw   r   r   rx   )r   r   r   s      r   r   zHTMLDecoder.handle_endtag,  s\   ))++$,,,Fw $$&&'11  $$&&'11 ((($D''$D$(D!fT%:!;!;a!?!?!%%'''''DKKK^^X&&&&&$$T_)=)=)A)AO!!!!! %$)A)Ar   namec                    |t           j        v r4|                     t          t           j        |                              d S d S )N)r   name2codepointr   chrr   r   s     r   handle_entityrefzHTMLDecoder.handle_entityrefD  sB    8***S!8!>??@@@@@ +*r   c           	     N   |                                 }	 |                    d          r:|                     t          t	          |dd          d                               d S |                     t          t	          |                               d S # t
          $ r Y d S w xY w)Nxr-   r   )r0   r.   r   r   r   r2   r   s     r   handle_charrefzHTMLDecoder.handle_charrefH  s    zz||	s## 1  Sabb2%6%6!7!788888  SYY00000 	 	 	DD	s   AB %/B 
B$#B$N)rr   r*   rs   r   r   rt   )r   r*   r   r
   )r   rt   )r   r*   r   rt   )r   r*   r   r   r   rt   )r   r*   r   rt   )r   r*   r   rt   )__name__
__module____qualname____doc__re   __annotations__rq   r   r   r   r   r   r   r   r   r   r   r   r\   r\   Y   s1        %% '/ /M     , ,J        N N N N* * * *: : : : R( R( R( R(h" " " "0A A A A     r   r\   )r   r   r   r   )r)   r*   r   r   )r   
__future__r   r   rehtmlr   html.parserr   typingr   r   r   r   pyglet.text.formatsr	   pyglet.imager
   pyglet.resourcer   r   r/   r3   compileDOTALLr   r   r   r   StructuredTextDecoderr\   r   r   r   <module>r     s    # " " " " "     				       " " " " " " / / / / / / / / / /  * * * * * * )******((((((D D D D

8$$

8$$ 

8$$ 

8$$	
 

8$$ 


8$$ 

8$$ 

8$$ 

8$$ 

8$$ 

8$$ 

8$$ 

8$$ 

8$$ 

8$$  

8$$!(	 	 	 	 =ryIIg& & & &6 6 6 w w w w w*j> w w w w wr   