Ë
    £èh]#  ã                  ó"  — d dl mZ d dlmZmZ d dlZd dlmZmZ d dl	m
Z
mZmZmZmZ d dlmZmZ d dlmZmZmZ d dlmZ d	d
lmZ erd dlmZ d dlmZ d dlmZ dgZ  ejB                  d«      Z" ed e
ddejF                  ¬«       e
dd ¬«       e
dd ejH                  e¬«       e
dd	ejJ                  e¬«       e
dd ¬«       e
dd ¬«       e
dd¬«       e
dejL                  ¬«       e
dd¬«      d œ	«      Z' ee'«      Z(e G d!„ de«      «       Z)y)"é    )Úannotations)ÚTYPE_CHECKINGÚOptionalN)Ú	validatorÚconst)ÚDXFAttrÚDXFAttributesÚDefSubclassÚRETURN_DEFAULTÚgroup_code_mapping)ÚDXF12ÚSUBCLASS_MARKER)Ú
base_classÚSubclassProcessorÚ	DXFEntity)Úacdb_symbol_table_recordé   )Úregister_entity)ÚDXFNamespace)ÚAbstractTagWriter©ÚfontsÚ	TextstyleÚezdxfÚAcDbTextStyleTableRecordé   ÚStandard)Údefaultr   éF   )r   é(   )r   r   Úfixeré)   é2   éG   é*   g      @é   é   Ú ©	ÚnameÚflagsÚheightÚwidthÚobliqueÚgeneration_flagsÚlast_heightÚfontÚbigfontc                  óf  ‡ — e Zd ZdZdZ eeee«      Z	dZ
dZ	 d	 	 	 dˆ fd„Zdˆ fd„Zedd„«       Zdd„Z	 dd	d	d
œ	 	 	 dd„Zd„ Zedd„«       Zej(                  dd„«       Zedd„«       Zej(                  dd„«       Zedd„«       Zej(                  dd„«       Zedd„«       Z	 	 d	 	 	 	 	 dd„Zˆ xZS )r   zDXF STYLE entityÚSTYLEi   i   c                óV   •— t         ‰| �  |«      }|r|j                  |t        «       |S ©N)ÚsuperÚload_dxf_attribsÚsimple_dxfattribs_loaderÚacdb_style_group_codes)ÚselfÚ	processorÚdxfÚ	__class__s      €ú8lib/python3.12/site-packages/ezdxf/entities/textstyle.pyr8   zTextstyle.load_dxf_attribs`   s-   ø€ ô ‰gÑ& yÓ1ˆÙØ×.Ñ.¨sÔ4JÔKØˆ
ó    c                ó  •— t         ‰| �  |«       |j                  t        kD  rH|j	                  t
        t        j                  «       |j	                  t
        t        j                  «       | j                  j                  |g d¢«       y )Nr)   )r7   Úexport_entityÚ
dxfversionr   Ú
write_tag2r   r   r*   Ú
acdb_styler=   Úexport_dxf_attribs)r;   Ú	tagwriterr>   s     €r?   rB   zTextstyle.export_entityh   sc   ø€ Ü‰Ñ˜iÔ(Ø×Ñ¤%Ò'Ø× Ñ ¤Ô2J×2OÑ2OÔPØ× Ñ ¤´*·/±/ÔBà�‰×#Ñ#Øò
õ	
r@   c                ó$   — | j                  d«      S )z2Returns ``True`` if extended font data is present.ÚACAD)Ú	has_xdata©r;   s    r?   Úhas_extended_font_dataz Textstyle.has_extended_font_data}   s   € ð �~‰~˜fÓ%Ð%r@   c                ó$  — d}d}d}	 | j                  d«      }t        |«      dkD  rM|d   \  }}|dk(  r|}|d   \  }}|dk(  r1t        | j                  |z  «      }t        | j                  |z  «      }	 |||fS # t
        j                  $ r Y Œw xY w)zëReturns extended font data as tuple (font-family, italic-flag,
        bold-flag).

        The extended font data is optional and not reliable! Returns
        ("", ``False``, ``False``) if extended font data is not present.

        r(   FrI   r   r   éè  é/  )Ú	get_xdataÚlenÚboolÚITALICÚBOLDr   ÚDXFValueError)r;   ÚfamilyÚitalicÚboldÚxdataÚ
group_codeÚvalues          r?   Úget_extended_font_dataz Textstyle.get_extended_font_data‚   s±   € ð ˆØˆØˆð	3Ø—N‘N 6Ó*ˆEô �5‹z˜AŠ~Ø$)¨!¡HÑ!�
˜EØ Ò%Ø"�FØ$)¨!¡HÑ!�
˜EØ Ò%Ü! $§+¡+°Ñ"5Ó6�FÜ §	¡	¨EÑ 1Ó2‘DØ�v˜tÐ#Ð#øô ×"Ñ"ò 	Ùð	ús   ˆA9 Á9BÂBF)rW   rX   c               óÀ   — | j                  d«      r| j                  d«       d}|r|| j                  z  }|r|| j                  z  }| j	                  dd|fd|fg«       y)z}Set extended font data, the font-family name `family` is not
        validated by `ezdxf`. Overwrites existing data.
        rI   é"   rN   rO   N)rJ   Údiscard_xdatarS   rT   Ú	set_xdata)r;   rV   rW   rX   r+   s        r?   Úset_extended_font_dataz Textstyle.set_extended_font_dataœ   s`   € ð �>‰>˜&Ô!Ø×Ñ˜vÔ&àˆÙØ�T—[‘[Ñ ˆEÙØ�T—Y‘YÑˆEØ�‰�v  v °°u°Ð>Õ?r@   c                ó&   — | j                  d«       y)zDiscard extended font data.rI   N)r_   rK   s    r?   Údiscard_extended_font_dataz$Textstyle.discard_extended_font_data¬   s   € à×Ñ˜6Õ"r@   c                óB   — | j                  t        j                  d«      S )z\Get/set text generation flag BACKWARDS, for mirrored text along the
        x-axis.
        r/   )Úget_flag_stater   ÚBACKWARDrK   s    r?   Úis_backwardzTextstyle.is_backward°   s   € ð
 ×"Ñ"¤5§>¡>Ð3EÓFÐFr@   c                óF   — | j                  t        j                  |d«       y ©Nr/   )Úset_flag_stater   rf   ©r;   Ústates     r?   rg   zTextstyle.is_backward·   s   € à×ÑœEŸN™N¨EÐ3EÕFr@   c                óB   — | j                  t        j                  d«      S )z_Get/set text generation flag UPSIDE_DOWN, for mirrored text along
        the y-axis.

        r/   )re   r   ÚUPSIDE_DOWNrK   s    r?   Úis_upside_downzTextstyle.is_upside_down»   s   € ð ×"Ñ"¤5×#4Ñ#4Ð6HÓIÐIr@   c                óF   — | j                  t        j                  |d«       y ri   )rj   r   rn   rk   s     r?   ro   zTextstyle.is_upside_downÃ   s   € à×ÑœE×-Ñ-¨uÐ6HÕIr@   c                óB   — | j                  t        j                  d«      S )z?Get/set style flag VERTICAL_STACKED, for vertical stacked text.r+   )re   r   ÚVERTICAL_STACKEDrK   s    r?   Úis_vertical_stackedzTextstyle.is_vertical_stackedÇ   s   € ð ×"Ñ"¤5×#9Ñ#9¸7ÓCÐCr@   c                óF   — | j                  t        j                  |d«       y )Nr+   )rj   r   rr   rk   s     r?   rs   zTextstyle.is_vertical_stackedÌ   s   € à×ÑœE×2Ñ2°E¸7ÕCr@   c                ó|   — | j                   j                  dk(  xr" t        | j                   j                  dz  «      S )z$``True`` if entry describes a shape.r(   r   )r=   r*   rR   r+   rK   s    r?   Úis_shape_filezTextstyle.is_shape_fileÐ   s.   € ð �x‰x�}‰} Ñ"Ò?¤t¨D¯H©H¯N©N¸QÑ,>Ó'?Ð?r@   c                óæ  — ddl m} d}| j                  rJ| j                  «       \  }}}|r^|rdnd}|rdnd}	 |j                  |||	¬«      }
 |j
                  |
«      }n*| j                  j                  d	t        j                  «      }|dk(  rt        j                  }|�|d
k(  r| j                  j                  }|d
k(  rd}|�|d
k(  r| j                  j                  } |j                  |||«      S )aØ  Returns a font abstraction :class:`~ezdxf.tools.fonts.AbstractFont`
        for this text style. Returns a font for a cap height of 1, if the
        text style has auto height (:attr:`Textstyle.dxf.height` is 0) and
        the given `cap_height` is ``None`` or 0.
        Uses the :attr:`Textstyle.dxf.width` attribute if the given `width_factor`
        is ``None`` or 0, the default value is 1.
        The attribute :attr:`Textstyle.dxf.big_font` is ignored.
        r   r   r(   ÚItalicÚRegulari¼  i�  )rV   ÚstyleÚweightr1   g        g      ð?)Úezdxf.fontsr   rL   r\   ÚFontFaceÚfind_font_file_namer=   Úgetr   ÚDEFAULT_TTFr,   r-   Ú	make_font)r;   Ú
cap_heightÚwidth_factorr   ÚttfrV   rW   rX   Ú
text_styleÚtext_weightÚ	font_faces              r?   r�   zTextstyle.make_fontÕ   sì   € õ 	&àˆØ×&Ò&Ø#'×#>Ñ#>Ó#@Ñ ˆF�F˜DÙÙ)/™X°Y�
Ù%)™c¨s�Ø*˜EŸN™NØ!¨¸Kô�	ð 0�e×/Ñ/°	Ó:‘à—(‘(—,‘,˜v¤u×'8Ñ'8Ó9ˆCØ�"Š9Ü×#Ñ#ˆCØÐ ¨sÒ!2ØŸ™Ÿ™ˆJØ˜ÒØˆJØÐ <°3Ò#6ØŸ8™8Ÿ>™>ˆLØˆu�‰˜s J°Ó=Ð=r@   r6   )r<   zOptional[SubclassProcessor]Úreturnr   )rG   r   rˆ   ÚNone)rˆ   rR   )rˆ   ztuple[str, bool, bool])r(   )rV   Ústrrˆ   r‰   )rˆ   r‰   )NN)r‚   úOptional[float]rƒ   r‹   rˆ   zfonts.AbstractFont)Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚDXFTYPEr	   r   r   rE   Ú
DXFATTRIBSrS   rT   r8   rB   ÚpropertyrL   r\   ra   rc   rg   Úsetterro   rs   rv   r�   Ú__classcell__)r>   s   @r?   r   r   W   s^  ø„ áà€GÙ˜zÐ+CÀZÓP€JØ)€FØ'€Dð 8<ðØ4ðà	õõ
ð* ò&ó ð&ó$ð6 ð@Ø*/°eñ@Øð@à	ó@ò #ð òGó ðGð ×ÑòGó ðGð òJó ðJð ×ÑòJó ðJð òDó ðDð ×ÑòDó  ðDð ò@ó ð@ð '+Ø(,ð#>à#ð#>ð &ð#>ð 
÷	#>r@   )*Ú
__future__r   Útypingr   r   ÚloggingÚezdxf.lldxfr   r   Úezdxf.lldxf.attributesr   r	   r
   r   r   Úezdxf.lldxf.constr   r   Úezdxf.entities.dxfentityr   r   r   Úezdxf.entities.layerr   Úfactoryr   Úezdxf.entitiesr   Úezdxf.lldxf.tagwriterr   r|   r   Ú__all__Ú	getLoggerÚloggerÚis_valid_table_nameÚis_greater_or_equal_zeroÚis_greater_zeroÚDEFAULT_TEXT_FONTrE   r:   r   © r@   r?   Ú<module>r¨      s)  ðõ #ß *Û ß (÷õ ÷ 5ß MÑ MÝ 9Ý $áÝ+Ý7Ý!àˆ-€Ø	ˆ×	Ñ	˜7Ó	#€áØáØØØ×3Ñ3ô
ñ ˜ QÔ'áØØØ×8Ñ8Ø ô	
ñ ØØØ×/Ñ/Ø ô	
ñ ˜2 qÔ)ñ $ B°Ô2á˜r¨3Ô/ñ ˜ 5×#:Ñ#:Ô;á˜1 bÔ)ñS*ó-€
ñ\ ,¨JÓ7Ð ð ô`>�	ó `>ó ñ`>r@   