o
    h*                     @  s$  d Z ddlmZ ddlmZ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mZmZmZ dd	lmZmZmZmZ dd
lmZ erXddlmZmZ ddlmZ G dd deZG dd deZ G dd deZ!G dd deZ"G dd deZ#G dd deZ$G dd deZ%dS )z8Custom element classes related to run properties (font).    )annotations)TYPE_CHECKINGCallable)MSO_THEME_COLOR)WD_COLOR_INDEXWD_UNDERLINE)nsdecls)	parse_xml)ST_HexColorST_HpsMeasure	ST_StringST_VerticalAlignRun)BaseOxmlElementOptionalAttributeRequiredAttribute	ZeroOrOne)RGBColor)CT_OnOff	CT_String)Lengthc                   @  s6   e Zd ZU dZedeZded< ede	Z
ded< dS )	CT_ColorzL`w:color` element, specifying the color of a font and perhaps other objects.w:valzRGBColor | strvalzw:themeColorzMSO_THEME_COLOR | None
themeColorN)__name__
__module____qualname____doc__r   r
   r   __annotations__r   r   r    r   r   S/var/www/html/premium_crap/venv/lib/python3.10/site-packages/docx/oxml/text/font.pyr       s   
 r   c                   @  s6   e Zd ZU dZedeZded< edeZded< dS )CT_FontszW`<w:rFonts>` element.

    Specifies typeface name for the various language types.
    zw:ascii
str | Noneasciizw:hAnsihAnsiN)	r   r   r   r   r   r   r#   r   r$   r   r   r   r    r!   '   s   
 r!   c                   @  $   e Zd ZU dZedeZded< dS )CT_HighlightzE`w:highlight` element, specifying font highlighting/background color.r   r   r   N)r   r   r   r   r   r   r   r   r   r   r   r    r&   1      
 r&   c                   @  r%   )CT_HpsMeasurezJUsed for `<w:sz>` element and others, specifying font size in half-points.r   r   r   N)r   r   r   r   r   r   r   r   r   r   r   r    r(   7   r'   r(   c                   @  s  e Zd ZU dZ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Zededd dZded< eded d dZd!ed"< ed#ed$d dZ	d%ed&< ed'ed(d dZ
ed)ed*d dZed+ed,d dZed-ed.d dZed/ed0d dZed1ed2d dZed3ed4d dZed5ed6d dZed7ed8d dZed9ed:d dZed;ed<d dZed=ed>d dZed?ed@d dZedAedBd dZedCedDd dZedEedFd dZdGedH< edIedJd dZdKedL< edMedNd dZdOedP< edQedRd dZdSedT< edUedVd dZdWedX< edYedZd dZed[ed\d dZed]ed^d dZ ed_ed`d dZ![dadb Z"e#ddedfZ$e$j%ddidfZ$e#ddkdlZ&e&j%ddmdlZ&e#ddndoZ'e'j%ddpdoZ'e#ddqdrZ(e(j%ddtdrZ(e#ddvdwZ)e)j%ddxdwZ)e#ddydzZ*e*j%dd{dzZ*e#dd}d~Z+e+j%ddd~Z+e#dddZ,e,j%dddZ,dddZ-dddZ.dS )CT_RPrz7`<w:rPr>` element, containing the properties for a run.zCallable[[], CT_Color]get_or_add_colorzCallable[[], CT_Highlight]get_or_add_highlightzCallable[[], CT_Fonts]get_or_add_rFontszCallable[[], CT_HpsMeasure]get_or_add_szz!Callable[[], CT_VerticalAlignRun]get_or_add_vertAlignzCallable[..., CT_String]_add_rStylezCallable[[], CT_Underline]_add_uzCallable[[], None]_remove_color_remove_highlight_remove_rFonts_remove_rStyle
_remove_sz	_remove_u_remove_vertAlign)'w:rStylew:rFontsw:bw:bCsw:iw:iCsw:capsw:smallCapsw:strike	w:dstrike	w:outlinew:shadoww:emboss	w:imprint	w:noProofw:snapToGridw:vanishw:webHiddenw:colorz	w:spacingzw:wzw:kernz
w:positionw:szzw:szCsw:highlightw:uzw:effectzw:bdrzw:shdz	w:fitTextw:vertAlignw:rtlw:cszw:emzw:langzw:eastAsianLayoutw:specVanishw:oMathr8      N)
successorszCT_String | NonerStyler9      zCT_Fonts | NonerFontsr:      zCT_OnOff | Nonebr;      r<      r=      r>      r?      r@   	   rA   
   rB      rC      rD      rE      rF      rG      rH      rI      rJ      zCT_Color | NonecolorrK      zCT_HpsMeasure | NoneszrL      zCT_Highlight | None	highlightrM      zCT_Underline | NoneurN       zCT_VerticalAlignRun | None	vertAlignrO   !   rP   "   rQ   &   rR   '   c                 C  s   t dtd S )zGOverride metaclass method to set `w:color/@val` to RGB black on create.z<w:color %s w:val="000000"/>w)r	   r   )selfr   r   r    
_new_color   s   zCT_RPr._new_colorreturnWD_COLOR_INDEX | Nonec                 C     | j }|du r	dS |jS )z|Value of `./w:highlight/@val`.

        Specifies font's highlight color, or `None` if the text is not highlighted.
        N)rn   r   )rx   rn   r   r   r    highlight_val   s   zCT_RPr.highlight_valvalueNonec                 C  &   |d u r
|    d S |  }||_d S N)r2   r+   r   )rx   r~   rn   r   r   r    r}      
   
r"   c                 C  r|   )a  The value of `w:rFonts/@w:ascii` or |None| if not present.

        Represents the assigned typeface name. The rFonts element also specifies other
        special-case typeface names; this method handles the case where just the common
        name is required.
        N)rW   r#   rx   rW   r   r   r    rFonts_ascii   s   zCT_RPr.rFonts_asciic                 C  r   r   )r3   r,   r#   rx   r~   rW   r   r   r    r      r   c                 C  r|   )z:The value of `w:rFonts/@w:hAnsi` or |None| if not present.N)rW   r$   r   r   r   r    rFonts_hAnsi      zCT_RPr.rFonts_hAnsic                 C  s(   |d u r| j d u rd S |  }||_d S r   )rW   r,   r$   r   r   r   r    r      s   
c                 C  r|   )zBString in `./w:rStyle/@val`, or None if `w:rStyle` is not present.N)rU   r   )rx   rU   r   r   r    style   r   zCT_RPr.styler   c                 C  s:   |du r
|    dS | jdu r| j|d dS || j_dS )zSet `./w:rStyle/@val` to `style`, adding the `w:rStyle` element if necessary.

        If `style` is |None|, remove `w:rStyle` element if present.
        N)r   )r4   rU   r/   r   )rx   r   r   r   r    r      s
   
bool | Nonec                 C     | j }|du r	dS |jtjkS )z|True| if `./w:vertAlign/@w:val` is "subscript".

        |False| if `w:vertAlign/@w:val` contains any other value. |None| if
        `w:vertAlign` is not present.
        N)rr   r   r   	SUBSCRIPTrx   rr   r   r   r    	subscript      zCT_RPr.subscriptc                 C  \   |d u r
|    d S t|du rtj|  _d S | jd ur*| jjtjkr,|    d S d S d S NT)r7   boolr   r   r.   r   rr   rx   r~   r   r   r    r         c                 C  r   )z|True| if `w:vertAlign/@w:val` is 'superscript'.

        |False| if `w:vertAlign/@w:val` contains any other value. |None| if
        `w:vertAlign` is not present.
        N)rr   r   r   SUPERSCRIPTr   r   r   r    superscript   r   zCT_RPr.superscriptc                 C  r   r   )r7   r   r   r   r.   r   rr   r   r   r   r    r     r   Length | Nonec                 C  r|   )z4The value of `w:sz/@w:val` or |None| if not present.N)rl   r   )rx   rl   r   r   r    sz_val  r   zCT_RPr.sz_valc                 C  r   r   )r5   r-   r   )rx   r~   rl   r   r   r    r     r   WD_UNDERLINE | Nonec                 C  r|   )zValue of `w:u/@val`, or None if not present.

        Values `WD_UNDERLINE.SINGLE` and `WD_UNDERLINE.NONE` are mapped to `True` and
        `False` respectively.
        N)rp   r   )rx   rp   r   r   r    u_val!  s   zCT_RPr.u_valc                 C  s"   |    |d ur||  _d S d S r   )r6   r0   r   r   r   r   r    r   -  s   namestrc                 C  s   t | |}|du rdS |jS )zIValue of boolean child with `name`, e.g. "w:b", "w:i", and "w:smallCaps".Ngetattrr   )rx   r   elementr   r   r    _get_bool_val3  s   
zCT_RPr._get_bool_valc                 C  s6   |d u rt | d|   d S t | d|  }||_d S )Nz
_remove_%szget_or_add_%sr   )rx   r   r~   r   r   r   r    _set_bool_val:  s
   
zCT_RPr._set_bool_val)rz   r{   )r~   r{   rz   r   )rz   r"   )r~   r"   rz   r   )r~   r"   )r   r"   rz   r   )rz   r   )r~   r   rz   r   )r~   r   )rz   r   )r~   r   )rz   r   )r~   r   )r   r   rz   r   )r   r   r~   r   )/r   r   r   r   r   _tag_seqr   rU   rW   rY   bCsiiCscaps	smallCapsstrikedstrikeoutlineshadowembossimprintnoProof
snapToGridvanish	webHiddenrj   rl   rn   rp   rr   rtlcs
specVanishoMathry   propertyr}   setterr   r   r   r   r   r   r   r   r   r   r   r   r    r)   =   s   
 )
		
r)   c                   @  r%   )CT_Underlinez<`<w:u>` element, specifying the underlining style for a run.r   r   r   N)r   r   r   r   r   r   r   r   r   r   r   r    r   B  r'   r   c                   @  r%   )CT_VerticalAlignRunz=`<w:vertAlign>` element, specifying subscript or superscript.r   r   r   N)r   r   r   r   r   r   r   r   r   r   r   r    r   H  r'   r   N)&r   
__future__r   typingr   r   docx.enum.dmlr   docx.enum.textr   r   docx.oxml.nsr   docx.oxml.parserr	   docx.oxml.simpletypesr
   r   r   r   docx.oxml.xmlchemyr   r   r   r   docx.sharedr   docx.oxml.sharedr   r   r   r   r!   r&   r(   r)   r   r   r   r   r   r    <module>   s,   
  