
    Oge"                    "   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      ]/var/www/html/public_html/myphp/venv/lib/python3.12/site-packages/ezdxf/entities/textstyle.pyr8   zTextstyle.load_dxf_attribs`   s-     g&y1..s4J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(%'  2J2O2O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)zReturns 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NN6*E 5zA~$)!H!
E%"F$)!H!
E%!$++"56F		E 12Dvt## "" 		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TYY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    ENNE3E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#46HIIr@   c                F    | j                  t        j                  |d       y ri   )rj   r   rn   rk   s     r?   ro   zTextstyle.is_upside_down   s    E--u6H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#97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2E7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.     xx}}"?tDHHNNQ,>'??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     	&&&#'#>#>#@ FFD)/XY
%)cs*ENN!K	 0e//	:((,,vu'8'89C"9##Cs!2JJ<3#688>>LusJ==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+CZPJ)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 	
 // 	
 2q) $B2r3/ 5#:#:;1b)S*-
\ ,J7  `>	 `> `>r@   