Ë
    £èh´'  ã                  óˆ  — d dl mZ d dlmZmZ d dlZ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 d d
lmZmZmZmZmZ dgZej6                  ej8                  j6                  ej:                  ej8                  j:                  ej<                  ej8                  j<                  ej>                  ej8                  j>                  ej@                  ej8                  j>                  ejB                  ej8                  j6                  iZ"ejF                  ej8                  j6                  ejH                  ej8                  j6                  ejJ                  ej8                  j6                  ejL                  ej8                  j<                  ejN                  ej8                  j<                  ejP                  ej8                  j<                  ejR                  ej8                  j:                  ejT                  ej8                  j:                  ejV                  ej8                  j:                  i	Z,ejZ                  j\                  ejZ                  j^                  ejZ                  j`                  dœZ1dd„Z2	 	 	 	 	 	 dd„Z3	 	 	 	 	 	 	 	 	 	 dd„Z4dd„Z5	 	 	 d	 	 	 	 	 	 	 	 	 	 	 dd„Z6d„ Z7dd„Z8dd„Z9 G d„ dejt                  «      Z;y)é    )Úannotations)ÚSequenceÚOptionalN)Úconst)Úcolors)ÚMTextÚMTextColumns)ÚMTextParagraphAlignment)Úfonts)Útext_layout)ÚMTextParserÚMTextContextÚ	TokenTypeÚParagraphPropertiesÚestimate_mtext_extentsÚAbstractMTextRenderer)Ú^Ú/Ú#c                ó²   — g }d| z  }|}||k  rH|j                  t        j                  |t        j                  j                  «      «       ||z  }||k  rŒH|S )Ng      @)ÚappendÚtlÚTabStopÚTabStopTypeÚLEFT)Ú
cap_heightÚwidthÚ	tab_stopsÚstepÚposs        úDlib/python3.12/site-packages/ezdxf/render/abstract_mtext_renderer.pyÚmake_default_tab_stopsr"   8   sZ   € Ø€IØ�Ñ€DØ
€CØ
�Š+Ø×ÑœŸ™ C¬¯©×)<Ñ)<Ó=Ô>Øˆt‰ˆð �‹+ð Ðó    c                ó`   ‡— dŠ| r| d   j                   Š| j                  ˆfd„|D «       «       y )Nç        éÿÿÿÿc              3  óB   •K  — | ]  }|j                   ‰kD  sŒ|–— Œ y ­w©N)r    )Ú.0ÚstopÚlast_poss     €r!   Ú	<genexpr>z+append_default_tab_stops.<locals>.<genexpr>H   s   øè ø€ ÐK¡m˜d°t·x±xÀ(Ó7J”T¡mùs   ƒ˜)r    Úextend)r   Údefault_stopsr+   s     @r!   Úappend_default_tab_stopsr/   B   s0   ø€ ð €HÙØ˜R‘=×$Ñ$ˆØ×ÑÓK¡mÓKÕKr#   c                ó’  — g }|D ]³  }t        |t        «      rLt        |dd  «      }|d   dk(  rt        j                  j
                  }n@t        j                  j                  }n%t        j                  j                  }t        |«      }|| z  }||k  sŒ�|j                  t        j                  ||«      «       Œµ t        ||«       |S )Né   r   Úc)Ú
isinstanceÚstrÚfloatr   r   ÚCENTERÚRIGHTr   r   r   r/   )	r   r   r   r.   Ú
_tab_stopsr*   ÚvalueÚkindr    s	            r!   Úmake_tab_stopsr;   K   s©   € ð €JÛˆÜ�dœCÔ Ü˜$˜q˜r˜(“OˆEØ�A‰w˜#Š~Ü—~‘~×,Ñ,‘ä—~‘~×+Ñ+‘ä—>‘>×&Ñ&ˆDÜ˜$“KˆEØ�jÑ ˆØ�‹;Ø×ÑœbŸj™j¨¨dÓ3Õ4ð ô ˜Z¨Ô7ØÐr#   c                óR  — d}| j                   r|t        j                  j                  z  }| j                  r|t        j                  j
                  z  }| j                  r|t        j                  j                  z  }| j                  r|t        j                  j                  z  }|S )Nr   )
Ú	underliner   ÚStrokeÚ	UNDERLINEÚstrike_throughÚSTRIKE_THROUGHÚoverlineÚOVERLINEÚcontinue_strokeÚCONTINUE)ÚctxÚstrokes     r!   Ú
get_strokerH   d   s|   € Ø€FØ
‡}‚}Ø”"—)‘)×%Ñ%Ñ%ˆØ
×ÒØ”"—)‘)×*Ñ*Ñ*ˆØ
‡|‚|Ø”"—)‘)×$Ñ$Ñ$ˆØ
×ÒØ”"—)‘)×$Ñ$Ñ$ˆØ€Mr#   c                óê  — | rÏ|j                   }t        j                  |j                  t        j
                  j                  «      }|j                  |z  }|j                  |z  }	||j                  |z  z   }
|xs g }|}|j                  rt        |||j                  |«      }t	        j                  ||
||	f||¬«      }|j                  | «       |S t	        j                  |j                  |¬«      }|S )N)ÚalignÚindentÚline_spacingr   )r   rL   )Ú	paragraphÚALIGNÚgetrJ   r   ÚParagraphAlignmentr   ÚleftÚrightrK   r   r;   Ú	ParagraphÚappend_contentÚEmptyParagraphr   )ÚcellsrF   r   rL   r   r.   ÚprJ   rQ   rR   ÚfirstÚ_default_stopsr   rM   s                 r!   Únew_paragraphrZ   q   så   € ñ Ø�M‰MˆÜ—	‘	˜!Ÿ'™'¤2×#8Ñ#8×#=Ñ#=Ó>ˆØ�v‰v˜
Ñ"ˆØ—‘˜*Ñ$ˆØ�q—x‘x *Ñ,Ñ,ˆØ/<Ò/BÀˆØ"ˆ	Ø�;Š;Ü& z°5¸!¿+¹+À~ÓVˆIÜ—L‘LØØ˜4 Ð'Ø%Øô	
ˆ	ð 	× Ñ  Ô'ð
 Ðô ×%Ñ%Ø—~‘~°Lô
ˆ	ð Ðr#   c                 ó2   — t        j                  ddd¬«      S )Nr   )r   Ú	min_widthÚ	max_width)r   ÚNonBreakingSpace© r#   r!   Ú
super_gluer`   ‘   s   € Ü×Ñ Q°!¸qÔAÐAr#   c                ód   — | j                   j                  dd«      }|dk  rt        | «      \  }}|S )Nr   r%   ç�íµ ÷Æ°>)ÚdxfrO   r   )Úmtextr   Úheights      r!   Údefined_widthrf   •   s0   € Ø�I‰I�M‰M˜' 3Ó'€EØˆt‚|Ü.¨uÓ5‰ˆˆvØ€Lr#   c                ó¬   — | j                   rt        | j                   «      }d |d<   |S t        | j                  «      }|dk  rd gS |g| j                  z  S )Nr&   rb   )ÚheightsÚlistÚabsÚdefined_heightÚcount)Úcolumnsrh   rk   s      r!   Úcolumn_heightsrn   œ   sV   € à‡‚Ü�w—‘Ó'ˆàˆ�‰Øˆä˜×/Ñ/Ó0€NØ˜ÒØˆvˆØÐ˜gŸm™mÑ+Ð+r#   c                  óô   — e Zd Zdd„Zej
                  dd„«       Zej
                  dd„«       Zej
                  dd„«       Zej
                  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d„Zdd„Zy)r   c                ó   — i | _         y r(   )Ú_font_cache)Úselfs    r!   Ú__init__zAbstractMTextRenderer.__init__«   s
   € ØOQˆÕr#   c                 ó   — y r(   r_   )rr   ÚtestrF   s      r!   ÚwordzAbstractMTextRenderer.word®   ó   € àr#   c                 ó   — y r(   r_   )rr   ÚdatarF   s      r!   ÚfractionzAbstractMTextRenderer.fraction²   rw   r#   c                 ó   — y r(   r_   ©rr   rd   s     r!   Úget_font_facez#AbstractMTextRenderer.get_font_face¶   rw   r#   c                 ó   — y r(   r_   r|   s     r!   Úmake_bg_rendererz&AbstractMTextRenderer.make_bg_rendererº   rw   r#   c                óž  — t        «       }t        t        j                  |j                  j
                  t        j                  j                  «      ¬«      |_	        | j                  |«      |_        |j                  j                  |_        |j                  j                  |_        |j                   }|�t#        j$                  |Ž |_        |S )N)rJ   )r   r   ÚATTACHMENT_POINT_TO_ALIGNrO   rc   Úattachment_pointr   rP   r   rM   r}   Ú	font_faceÚchar_heightr   ÚcolorÚaciÚrgbr   ÚRGB)rr   rd   rF   r‡   s       r!   Úmake_mtext_contextz(AbstractMTextRenderer.make_mtext_context¾   s•   € Ü‹nˆÜ+Ü+×/Ñ/Ø—	‘	×*Ñ*¬B×,AÑ,A×,FÑ,Fóô
ˆŒð
 ×*Ñ*¨5Ó1ˆŒØŸ™×.Ñ.ˆŒØ—)‘)—/‘/ˆŒØ�i‰iˆØˆ?Ü—j‘j #Ð&ˆCŒGØˆ
r#   c                ó$  — t        j                  |j                  «      }||j                  |j                  f}| j
                  j                  |«      }|€:t        j                  ||j                  |j                  «      }|| j
                  |<   |S r(   )r   Úfind_font_file_namerƒ   r   Úwidth_factorrq   rO   Ú	make_font)rr   rF   ÚttfÚkeyÚfonts        r!   Úget_fontzAbstractMTextRenderer.get_fontÍ   sx   € Ü×'Ñ'¨¯©Ó6ˆØ�C—N‘N C×$4Ñ$4Ð5ˆØ×Ñ×#Ñ# CÓ(ˆØˆ<Ü—?‘? 3¨¯©¸×8HÑ8HÓIˆDØ$(ˆD×Ñ˜SÑ!Øˆr#   c                ó   — t        |«      S r(   )rH   ©rr   rF   s     r!   rH   z AbstractMTextRenderer.get_strokeÖ   s   € Ü˜#‹Ðr#   c                ó^   — t         j                  |t        j                  j                  «      S r(   )ÚSTACKINGrO   r   ÚStackingÚLINE)rr   Útype_s     r!   Úget_stackingz"AbstractMTextRenderer.get_stackingÙ   s   € Ü�|‰|˜E¤2§;¡;×#3Ñ#3Ó4Ð4r#   c                ó@   — | j                  |«      j                  «       S r(   )r‘   Úspace_widthr“   s     r!   r›   z!AbstractMTextRenderer.space_widthÜ   s   € Ø�}‰}˜SÓ!×-Ñ-Ó/Ð/r#   c                óL   — t        j                  | j                  |«      ¬«      S ©N©r   )r   ÚSpacer›   r“   s     r!   ÚspacezAbstractMTextRenderer.spaceß   s   € Ü�x‰x˜d×.Ñ.¨sÓ3Ô4Ð4r#   c                óL   — t        j                  | j                  |«      ¬«      S r�   )r   Ú	Tabulatorr›   r“   s     r!   Ú	tabulatorzAbstractMTextRenderer.tabulatorâ   s   € Ü�|‰| $×"2Ñ"2°3Ó"7Ô8Ð8r#   c                óL   — t        j                  | j                  |«      ¬«      S r�   )r   r^   r›   r“   s     r!   Únon_breaking_spacez(AbstractMTextRenderer.non_breaking_spaceå   s   € Ü×"Ñ"¨×)9Ñ)9¸#Ó)>Ô?Ð?r#   c                óÖ  ‡‡	‡
‡‡‡‡— |j                   j                  Š|j                   j                  Šˆˆ	ˆ
ˆˆˆˆfd„}| j                  |«      }t	        |«      Št        ‰‰«      Š
t        j                  ‰¬«      Š|j                  rJ|j                  }|€J ‚t        |«      D ]+  }‰j                  |j                  ||j                  |¬«       Œ- n‰j                  |¬«       |j                  «       }| j                  |«      Š	g Št!        |‰	«      D �]H  }|j"                  Š	|j$                  t&        j(                  k(  r |«        Œ5|j$                  t&        j*                  k(  r |«        ‰j-                  «        Œj|j$                  t&        j.                  k(  r!‰j1                  | j3                  ‰	«      «       Œ¨|j$                  t&        j4                  k(  r!‰j1                  | j7                  ‰	«      «       Œæ|j$                  t&        j8                  k(  r"‰j1                  | j;                  ‰	«      «       �Œ%|j$                  t&        j<                  k(  ru‰rFt?        ‰d   t        j@                  t        jB                  f«      r‰j1                  tE        «       «       ‰j1                  | jG                  |jH                  ‰	«      «       �Œ·|j$                  t&        jJ                  k(  s�ŒÖ‰rFt?        ‰d   t        j@                  t        jB                  f«      r‰j1                  tE        «       «       ‰j1                  | jM                  |jH                  ‰	«      «       �ŒK ‰r |«        ‰S )Nc                 ój   •— t        ‰‰‰‰‰‰«      } ‰j                  | g«       ‰j                  «        y r(   )rZ   Úappend_paragraphsÚclear)rM   rV   rF   r.   Úinitial_cap_heightÚlayoutrL   r   s    €€€€€€€r!   Úappend_paragraphz=AbstractMTextRenderer.layout_engine.<locals>.append_paragraphì   s:   ø€ Ü%ØØØ"ØØØóˆIð ×$Ñ$ i [Ô1Ø�K‰K�Mr#   rž   )r   re   ÚgutterÚrenderer)r®   r&   )'rc   r„   Úline_spacing_factorr   rf   r"   r   ÚLayoutÚhas_columnsrm   rn   Úappend_columnr   Úgutter_widthÚall_columns_raw_contentr‰   r   rF   Útyper   ÚNEW_PARAGRAPHÚ
NEW_COLUMNÚnext_columnÚSPACEr   r    ÚNBSPr¥   Ú	TABULATORr£   ÚWORDr3   ÚTextÚFractionr`   rv   ry   ÚSTACKrz   )rr   rd   r¬   Úbg_rendererrm   re   ÚcontentÚtokenrV   rF   r.   rª   r«   rL   r   s           @@@@@@@r!   Úlayout_enginez#AbstractMTextRenderer.layout_engineè   ss  þ€ Ø"ŸY™Y×2Ñ2ÐØ—y‘y×4Ñ4ˆ÷
	ò 
	ð ×+Ñ+¨EÓ2ˆÜ˜eÓ$ˆÜ.Ð/AÀ5ÓIˆÜ—‘ Ô'ˆØ×ÒØ—m‘mˆGØÐ&Ð&Ð&Ü(¨Ö1�Ø×$Ñ$Ø!Ÿ-™-Ø!Ø"×/Ñ/Ø(ð	 %õ ñ 2ð × Ñ ¨+Ð Ô6à×/Ñ/Ó1ˆØ×%Ñ% eÓ,ˆØ!ˆÜ  ¨#×.ˆEØ—)‘)ˆCØ�z‰zœY×4Ñ4Ò4Ù Õ"Ø—‘œy×3Ñ3Ò3Ù Ô"Ø×"Ñ"Õ$Ø—‘œyŸ™Ò.Ø—‘˜TŸZ™Z¨›_Õ-Ø—‘œyŸ~™~Ò-Ø—‘˜T×4Ñ4°SÓ9Õ:Ø—‘œy×2Ñ2Ò2Ø—‘˜TŸ^™^¨CÓ0Ö1Ø—‘œyŸ~™~Ò-ÙœZ¨¨b©	´B·G±G¼R¿[¹[Ð3IÔJà—L‘L¤£Ô.Ø—‘˜TŸY™Y u§z¡z°3Ó7Ö8Ø—‘œyŸ™Ô.ÙœZ¨¨b©	´B·G±G¼R¿[¹[Ð3IÔJà—L‘L¤£Ô.Ø—‘˜TŸ]™]¨5¯:©:°sÓ;Ö<ð- /ñ0 ÙÔàˆr#   N)ÚreturnÚNone)ru   r4   rF   r   rÄ   útl.ContentCell)ry   ztuple[str, str, str]rF   r   rÄ   rÆ   )rd   r   rÄ   zfonts.FontFace)rd   r   rÄ   ztl.ContentRenderer)rd   r   rÄ   r   )rF   r   rÄ   zfonts.AbstractFont©rF   r   rÄ   Úint)r˜   r4   rÄ   ztl.Stacking)rF   r   rÄ   r5   )rF   r   )rd   r   rÄ   z	tl.Layout)Ú__name__Ú
__module__Ú__qualname__rs   ÚabcÚabstractmethodrv   rz   r}   r   r‰   r‘   rH   r™   r›   r    r£   r¥   rÃ   r_   r#   r!   r   r   ª   sŸ   „ óRð 	×Ñòó ðð 	×Ñòó ðð 	×Ñòó ðð 	×Ñòó ðóóóó5ó0ó5ó9ó@ô@r#   )r   r5   r   r5   rÄ   úlist[tl.TabStop])r   rÎ   r.   úSequence[tl.TabStop]rÄ   rÅ   )
r   r5   r   r5   r   r   r.   rÏ   rÄ   rÎ   rÇ   )r1   r   N)rV   ri   rF   r   r   r5   rL   r5   r   r5   r.   zOptional[Sequence[tl.TabStop]])rd   r   rÄ   r5   )rm   r	   rÄ   zlist[Optional[float]])<Ú
__future__r   Útypingr   r   rÌ   Úezdxf.lldxfr   Úezdxfr   Úezdxf.entities.mtextr   r	   Úezdxf.enumsr
   Úezdxf.fontsr   Úezdxf.toolsr   r   Úezdxf.tools.textr   r   r   r   r   Ú__all__r   rP   r7   r6   Ú	JUSTIFIEDÚDISTRIBUTEDÚDEFAULTrN   ÚMTEXT_TOP_LEFTÚMTEXT_MIDDLE_LEFTÚMTEXT_BOTTOM_LEFTÚMTEXT_TOP_CENTERÚMTEXT_MIDDLE_CENTERÚMTEXT_BOTTOM_CENTERÚMTEXT_TOP_RIGHTÚMTEXT_MIDDLE_RIGHTÚMTEXT_BOTTOM_RIGHTr�   r–   ÚOVERr—   ÚSLANTEDr•   r"   r/   r;   rH   rZ   r`   rf   rn   ÚABCr   r_   r#   r!   Ú<module>ré      sŸ  ðõ #ß %Û 
Ý Ý ß 4õõ Ý )÷õ ð #Ð
#€ð × Ñ  "×"7Ñ"7×"<Ñ"<Ø×!Ñ! 2×#8Ñ#8×#>Ñ#>Ø×"Ñ" B×$9Ñ$9×$@Ñ$@Ø×%Ñ% r×'<Ñ'<×'FÑ'FØ×'Ñ'¨×)>Ñ)>×)HÑ)HØ×#Ñ# R×%:Ñ%:×%?Ñ%?ð	€ð 
×Ñ˜"×/Ñ/×4Ñ4Ø	×Ñ˜R×2Ñ2×7Ñ7Ø	×Ñ˜R×2Ñ2×7Ñ7Ø	×Ñ˜B×1Ñ1×8Ñ8Ø	×Ñ˜r×4Ñ4×;Ñ;Ø	×Ñ˜r×4Ñ4×;Ñ;Ø	×Ñ˜2×0Ñ0×6Ñ6Ø	×Ñ˜b×3Ñ3×9Ñ9Ø	×Ñ˜b×3Ñ3×9Ñ9ð
Ð ð 
�‰×	Ñ	Ø	�‰×	Ñ	Ø	�‰×	Ñ	ñ€óðLØðLØ0DðLà	óLðØðàðð ðð (ð	ð
 óó2
ð" ØØ48ðØðà	ðð ðð ð	ð
 ðð 2óò@Bóó,ô~˜CŸG™Gõ ~r#   