Ë
    £èh†&  ã                  óŠ  — d dl mZ d dlmZm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 d dlmZmZ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mZmZ ddl m!Z! dgZ"	 d	 	 	 	 	 	 	 	 	 	 	 dd„Z# G d„ de«      Z$ G d„ dejJ                  «      Z& G d„ de&«      Z' G d„ de&«      Z(	 	 	 	 	 	 	 	 	 	 dd„Z) G d„ de«      Z*y) é    )Úannotations)ÚIterableÚOptional)ÚProtocolN)Úcolors)ÚMText)Úconst)ÚMatrix44ÚVec3ÚAnyVec)ÚAbstractMTextRenderer)Úfonts)Útext_layout)ÚMTextContexté   )Ú
PropertiesÚRenderContextÚ
rgb_to_hex)ÚColorÚcomplex_mtext_rendererc                ót   — | |f||f||f| |f| |fg}|€t        j                  |«      S |j                  |«      S ©N)r   ÚgenerateÚtransform_vertices)ÚleftÚbottomÚrightÚtopÚmÚcornerss         úBlib/python3.12/site-packages/ezdxf/addons/drawing/mtext_complex.pyÚcorner_verticesr"      sU   € ð 
ˆsˆØ	�ˆØ	�ˆØ	ˆvˆØ	ˆsˆð€Gð 	€yÜ�}‰}˜WÓ%Ð%à×#Ñ# GÓ,Ð,ó    c                  óD   — e Zd Zdd„Z	 	 	 	 	 	 dd„Z	 	 	 	 	 	 	 	 	 	 dd„Zy)ÚDrawInterfacec                 ó   — y r   © )ÚselfÚstartÚendÚ
propertiess       r!   Ú	draw_linezDrawInterface.draw_line,   s   € Ør#   c                 ó   — y r   r'   )r(   Úpointsr+   s      r!   Údraw_filled_polygonz!DrawInterface.draw_filled_polygon/   s   € ð 	r#   c                 ó   — y r   r'   )r(   ÚtextÚ	transformr+   Ú
cap_heights        r!   Ú	draw_textzDrawInterface.draw_text4   s   € ð 	r#   N)r)   r   r*   r   r+   r   ÚreturnÚNone)r.   zIterable[AnyVec]r+   r   r5   r6   )
r1   Ústrr2   r
   r+   r   r3   Úfloatr5   r6   )Ú__name__Ú
__module__Ú__qualname__r,   r/   r4   r'   r#   r!   r%   r%   +   sY   „ óðØ&ðØ4>ðà	óð
àðð ðð ð	ð
 ðð 
ôr#   r%   c                  ó`   — e Zd Zdd„Z	 d	 	 	 	 	 	 	 	 	 	 	 dd„Zd	d„Z	 d	 	 	 	 	 	 	 	 	 	 	 d
d„Zy)ÚFrameRendererc                ó    — || _         || _        y r   )r+   Úbackend)r(   r+   r?   s      r!   Ú__init__zFrameRenderer.__init__?   s   € Ø$ˆŒØˆ�r#   Nc                óR   — | j                  t        t        |||||«      «      «       y r   )Ú_render_outlineÚlistr"   )r(   r   r   r   r   r   s         r!   ÚrenderzFrameRenderer.renderC   s$   € ð 	×ÑœT¤/°$¸ÀÀsÈAÓ"NÓOÕPr#   c                óŽ   — | j                   }| j                  }|j                  d«      }|D ]  }|j                  |||«       |}Œ y )Nr   )r?   r+   Úpopr,   )r(   Úverticesr?   r+   ÚprevÚvertexs         r!   rB   zFrameRenderer._render_outlineM   sB   € Ø—,‘,ˆØ—_‘_ˆ
Ø�|‰|˜A‹ˆÛˆFØ×Ñ˜d F¨JÔ7Ø‰Dñ r#   c                óÀ   — ||f||fg}|�|j                  |«      \  }}nt        j                  |«      \  }}| j                  j	                  ||| j
                  «       y r   )r   r   r   r?   r,   r+   )	r(   Úx1Úy1Úx2Úy2r   r.   Úp1Úp2s	            r!   ÚlinezFrameRenderer.lineU   s[   € ð �r�(˜R ˜HÐ%ˆØˆ=Ø×)Ñ)¨&Ó1‰FˆB‘ä—]‘] 6Ó*‰FˆB�Ø�‰×Ñ˜r 2 t§¡Õ7r#   )r+   r   r?   r%   r   ©r   r8   r   r8   r   r8   r   r8   r   r
   r5   r6   )rG   z
list[Vec3]r5   r6   )rK   r8   rL   r8   rM   r8   rN   r8   r   r
   r5   r6   )r9   r:   r;   r@   rD   rB   rQ   r'   r#   r!   r=   r=   >   s“   „ óð ðQàðQð ðQð ð	Qð
 ðQð ðQð 
óQóð IMð8Øð8Ø"ð8Ø(-ð8Ø38ð8Ø=Eð8à	ô8r#   r=   c                  ó\   ‡ — e Zd Z	 	 	 d	 	 	 	 	 	 	 	 	 dˆ fd„Z	 d	 	 	 	 	 	 	 	 	 	 	 dd„Zˆ xZS )ÚColumnBackgroundRendererc                óP   •— t         ‰| �  ||«       || _        || _        || _        y r   )Úsuperr@   Úbg_propertiesÚoffsetÚhas_text_frame)r(   r+   r?   rW   rX   Ú
text_frameÚ	__class__s         €r!   r@   z!ColumnBackgroundRenderer.__init__a   s+   ø€ ô 	‰Ñ˜ WÔ-Ø*ˆÔØˆŒØ(ˆÕr#   c           	     ó  — | j                   }t        t        ||z
  ||z
  ||z   ||z   |«      «      }| j                  �&| j                  j                  || j                  «       | j                  r| j                  |«       y y r   )rX   rC   r"   rW   r?   r/   rY   rB   )r(   r   r   r   r   r   rX   rG   s           r!   rD   zColumnBackgroundRenderer.rendern   s~   € ð —‘ˆÜÜØ�v‘˜v¨™°¸±ÀÀfÁÈaóó
ˆð
 ×ÑÐ)Ø�L‰L×,Ñ,¨X°t×7IÑ7IÔJØ×ÒØ× Ñ  Õ*ð r#   )Nr   F)
r+   r   r?   r%   rW   zOptional[Properties]rX   r8   rZ   Úboolr   rR   )r9   r:   r;   r@   rD   Ú__classcell__©r[   s   @r!   rT   rT   `   s‡   ø„ ð
 /3ØØ ð)àð)ð ð)ð ,ð	)ð
 ð)ð õ)ð& ð+àð+ð ð+ð ð	+ð
 ð+ð ð+ð 
÷+r#   rT   c                  óZ   ‡ — e Zd ZdZ	 	 	 	 	 	 	 	 	 	 	 	 dˆ fd„Z	 d	 	 	 	 	 	 	 	 	 dd„Zˆ xZS )ÚTextRendererzText content renderer.c                ó^   •— t         ‰| �  ||«       || _        || _        || _        || _        y r   )rV   r@   r1   r3   Úwidth_factorÚoblique)r(   r1   r3   rc   rd   r+   r?   r[   s          €r!   r@   zTextRenderer.__init__‡   s1   ø€ ô 	‰Ñ˜ WÔ-ØˆŒ	Ø$ˆŒØ(ˆÔØˆ�r#   c                ó¸  — d}d}t        j                  | j                  dd¬«      s| j                  }t        | j                  «      dkD  r2t        j
                  t        j                  | j                  «      «      }t        |ddd|ddddddd||ddf«      }|�||z  }| j                  j                  | j                  || j                  | j                  «       y)zCreate/render the text contentg      ð?g        g�íµ ÷Æ°>)Úrel_tolgü©ñÒMbP?N)ÚmathÚiscloserc   Úabsrd   ÚtanÚradiansr
   r?   r4   r1   r+   r3   )	r(   r   r   r   r   r   ÚsxÚtxÚts	            r!   rD   zTextRenderer.render–   sÂ   € ð ˆØˆÜ�|‰|˜D×-Ñ-¨s¸DÕAØ×"Ñ"ˆBÜˆt�|‰|Ó˜tÒ#Ü—‘œ$Ÿ,™, t§|¡|Ó4Ó5ˆBäØ��S˜#Ø��S˜#Ø��c˜3Ø�&˜#˜sð	
ó ˆð ˆ=Ø�‰FˆAØ�‰×Ñ˜tŸy™y¨!¨T¯_©_¸d¿o¹oÕNr#   )r1   r7   r3   r8   rc   r8   rd   r8   r+   r   r?   r%   r   )
r   r8   r   r8   r   r8   r   r8   r   r
   )r9   r:   r;   Ú__doc__r@   rD   r^   r_   s   @r!   ra   ra   „   s…   ø„ Ù ðàðð ðð ð	ð
 ðð ðð õð* ðOàðOð ðOð ð	Oð
 ðOð ÷Or#   ra   c                ó  — t        | ||«      }t        j                  |j                  j                  «      }|j                  |«      }|j                  |¬«       |j                  |j                  «       j                  «       y )N)Úalign)
ÚComplexMTextRendererÚtlÚLayoutAlignmentÚdxfÚattachment_pointÚlayout_engineÚplacerD   ÚucsÚmatrix)Úctxr?   Úmtextr+   Úcmrrq   rw   s          r!   r   r   ²   sg   € ô ˜s G¨ZÓ
8€CÜ×Ñ˜uŸy™y×9Ñ9Ó:€EØ×%Ñ% eÓ,€MØ×Ñ˜eÐÔ$Ø×Ñ˜Ÿ™›×+Ñ+Õ,r#   c                  óŽ   ‡ — e Zd Z	 	 	 	 	 	 d
ˆ fd„Zdd„Zdd„Zdd„Zdd„Zedd„«       Z	dd„Z
	 	 	 	 	 	 dd„Z	 	 	 	 	 	 dd	„Zˆ xZS )rr   c                óL   •— t         ‰| �  «        || _        || _        || _        y r   )rV   r@   Ú_render_ctxÚ_backendÚ_properties)r(   r{   r?   r+   r[   s       €r!   r@   zComplexMTextRenderer.__init__À   s'   ø€ ô 	‰ÑÔØˆÔØˆŒØ%ˆÕr#   c                ó~  — t        j                  | j                  |«      j                  |«      |j                  t        j
                  |j                  «      | j                  |«      t        ||j                  |j                  |j                  | j                  | j                  |«      | j                  «      ¬«      S )N)ÚwidthÚheightÚvalignÚstrokeÚrenderer)rs   ÚTextÚget_fontÚ
text_widthr3   ÚCellAlignmentrq   Ú
get_strokera   rc   rd   Únew_text_propertiesr‚   r�   )r(   r1   r{   s      r!   ÚwordzComplexMTextRenderer.wordÍ   sŽ   € Ü�w‰wØ—-‘- Ó$×/Ñ/°Ó5Ø—>‘>Ü×#Ñ# C§I¡IÓ.Ø—?‘? 3Ó'Ü!ØØ—‘Ø× Ñ Ø—‘Ø×(Ñ(¨×)9Ñ)9¸3Ó?Ø—‘óô
ð 	
r#   c           	     ó  — |\  }}}|rft        j                  | j                  ||«      | j                  ||«      | j                  |«      t	        | j
                  | j                  «      ¬«      S | j                  ||«      S )N)r   r   Ústackingrˆ   )rs   ÚFractionr�   Úget_stackingr=   r‚   r�   )r(   Údatar{   ÚuprÚlwrÚtype_s         r!   ÚfractionzComplexMTextRenderer.fractionÝ   sr   € Ø‰ˆˆS�%ÙÜ—;‘;Ø—I‘I˜c 3Ó'Ø—y‘y  cÓ*Ø×*Ñ*¨5Ó1ä& t×'7Ñ'7¸¿¹ÓGôð ð —9‘9˜S #Ó&Ð&r#   c                ó.   — | j                   j                  S r   )r‚   Úfont)r(   r|   s     r!   Úget_font_facez"ComplexMTextRenderer.get_font_faceê   s   € Ø×Ñ×$Ñ$Ð$r#   c                óæ  — |j                   }|j                  dd«      }d }d }d }d}d}|r¤|j                  |j                  dd«      dz
  z  }|t        j                  z  rH|j                  d«      r|j                  }|j                  d«      rd }|j                  }|d	z  d	k(  rd }d }|t        j                  z  rd
}| j                  ||«      }t        | j                  | j                  |||¬«      S )NÚbg_fillr   FÚbox_fill_scaleg      ø?r   Úbg_fill_colorÚbg_fill_true_coloré   T)rX   rZ   )ru   ÚgetÚchar_heightr	   ÚMTEXT_BG_COLORÚhasattrrŸ   r    ÚMTEXT_TEXT_FRAMEÚnew_bg_propertiesrT   r‚   r�   )	r(   r|   ru   r�   Úbg_aciÚbg_true_colorrW   rY   rX   s	            r!   Úmake_bg_rendererz%ComplexMTextRenderer.make_bg_rendererí   sý   € Ø�i‰iˆØ—'‘'˜) QÓ'ˆàˆØˆØ.2ˆØˆØˆÙð —_‘_¨¯©Ð0@À#Ó(FÈÑ(JÑKˆFØœ×-Ñ-Ò-Ø—;‘;˜Ô/Ø ×.Ñ.�Fà—;‘;Ð3Ô4Ø!�FØ$'×$:Ñ$:�Mà˜a‘K AÒ%ð "�FØ$(�Màœ×/Ñ/Ò/Ø!%�Ø ×2Ñ2°6¸=ÓIˆMä'Ø×ÑØ�M‰MØØØ%ô
ð 	
r#   c                ó   — | j                   S r   )r�   )r(   s    r!   r?   zComplexMTextRenderer.backend  s   € à�}‰}Ðr#   c                ób   — | j                   j                  || j                  j                  «      S r   )r€   Úresolve_aci_colorr‚   Úlayer)r(   Úacis     r!   r­   z&ComplexMTextRenderer.resolve_aci_color  s'   € Ø×Ñ×1Ñ1°#°t×7GÑ7G×7MÑ7MÓNÐNr#   c                óà   — t        j                   |«      }|j                  €!| j                  |j                  «      |_        nt        |j                  «      |_        |j                  |_        |S r   )ÚcopyÚrgbr­   r¯   Úcolorr   Ú	font_facerš   )r(   r+   r{   Únew_propertiess       r!   rŽ   z(ComplexMTextRenderer.new_text_properties  sU   € ô Ÿ™ :Ó.ˆØ�7‰7ˆ?Ø#'×#9Ñ#9¸#¿'¹'Ó#BˆNÕ ä#-¨c¯g©gÓ#6ˆNÔ Ø!Ÿm™mˆÔØÐr#   c                ó  — t        j                   | j                  «      }| j                  j                  j                  |_        |€|�| j                  |«      |_        |S t        t        j                  |«      «      |_        |S r   )
r±   r‚   r€   Úcurrent_layout_propertiesÚbackground_colorr³   r­   r   r   Úint2rgb)r(   r¯   Ú
true_colorrµ   s       r!   r§   z&ComplexMTextRenderer.new_bg_properties)  s{   € ô Ÿ™ 4×#3Ñ#3Ó4ˆà×Ñ×6Ñ6×GÑGð 	Ôð ÐØˆØ'+×'=Ñ'=¸cÓ'B�Ô$ð Ðô $.¬f¯n©n¸ZÓ.HÓ#IˆNÔ ØÐr#   )r{   r   r?   r%   r+   r   )r1   r7   r{   r   r5   útl.ContentCell)r”   ztuple[str, str, str]r{   r   r5   r»   )r|   r   r5   zfonts.FontFace)r|   r   r5   ztl.ContentRenderer)r5   r%   )r¯   Úintr5   r   )r+   r   r{   r   r5   r   )r¯   úOptional[int]rº   r½   r5   r   )r9   r:   r;   r@   r�   r˜   r›   rª   Úpropertyr?   r­   rŽ   r§   r^   r_   s   @r!   rr   rr   ¿   s�   ø„ ð	&àð	&ð ð	&ð õ		&ó
ó 'ó%ó&
ðT òó ðóOð	Ø$ð	Ø+7ð	à	ó	ðØ ðØ.;ðà	÷r#   rr   r   )r   r8   r   r8   r   r8   r   r8   r   r
   r5   zIterable[Vec3])
r{   r   r?   r%   r|   r   r+   r   r5   r6   )+Ú
__future__r   Útypingr   r   Útyping_extensionsr   r±   rg   Úezdxfr   Úezdxf.entitiesr   Úezdxf.lldxfr	   Ú
ezdxf.mathr
   r   r   Ú$ezdxf.render.abstract_mtext_rendererr   Úezdxf.fontsr   Úezdxf.toolsr   rs   Úezdxf.tools.textr   r+   r   r   r   Ú
type_hintsr   Ú__all__r"   r%   ÚContentRendererr=   rT   ra   r   rr   r'   r#   r!   Ú<module>rÍ      s  ðõ #ß %Ý &Û Û å Ý  Ý ß -Ñ -Ý FÝ Ý )Ý )ß =Ñ =Ý à#Ð
$€ð ð-Ø
ð-àð-ð ð-ð 
ð	-ð
 ð-ð ó-ô(�Hô ô&8�B×&Ñ&ô 8ôD!+˜}ô !+ôH+O�=ô +Oð\
-Ø	ð
-àð
-ð ð
-ð ð	
-ð
 
ó
-ôwÐ0õ wr#   