o
    	'f-                     @  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 erRd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)CT_OnOff	CT_String)Lengthc                   @  s$   e Zd ZdZedeZedeZ	dS )CT_ColorzL`w:color` element, specifying the color of a font and perhaps other objects.w:valzw:themeColorN)
__name__
__module____qualname____doc__r   r
   valr   r   
themeColor r   r   K/home/ubuntu/flask/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!   __annotations__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%   2   
   
 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'   :   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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d-d dZed.ed/d dZed0ed1d dZed2ed3d dZed4ed5d dZed6ed7d dZed8ed9d 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dAd dZedBedCd dZedDedEd dZdFedG< edHedId dZdJedK< edLedMd dZdNedO< edPedQd dZdRedS< edTedUd dZedVedWd dZedXedYd dZ edZed[d dZ![d\d] Z"e#dd`daZ$e$j%ddddaZ$e#ddfdgZ&e&j%ddhdgZ&e#ddidjZ'e'j%ddkdjZ'e#ddldmZ(e(j%ddodmZ(e#ddqdrZ)e)j%ddsdrZ)e#ddtduZ*e*j%ddvduZ*e#ddxdyZ+e+j%ddzdyZ+e#dd|d}Z,e,j%dd~d}Z,dddZ-dddZ.dS )CT_RPrz7`<w:rPr>` element, containing the properties for a run.z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_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:oMathr5      N)
successorszCT_String | NonerStyler6      zCT_Fonts | NonerFontsr7      zCT_OnOff | Nonebr8      r9      r:      r;      r<      r=   	   r>   
   r?      r@      rA      rB      rC      rD      rE      rF      rG      rH      zCT_HpsMeasure | NoneszrI      zCT_Highlight | None	highlightrJ      zCT_Underline | NoneurK       zCT_VerticalAlignRun | None	vertAlignrL   !   rM   "   rN   &   rO   '   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)rj   r   )rt   rj   r   r   r   highlight_val   s   zCT_RPr.highlight_valvalueNonec                 C  &   |d u r
|    d S |  }||_d S N)r/   r)   r   )rt   rz   rj   r   r   r   ry      
   
r    c                 C  rx   )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)rT   r!   rt   rT   r   r   r   rFonts_ascii   s   zCT_RPr.rFonts_asciic                 C  r|   r}   )r0   r*   r!   rt   rz   rT   r   r   r   r      r~   c                 C  rx   )z:The value of `w:rFonts/@w:hAnsi` or |None| if not present.N)rT   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}   )rT   r*   r"   r   r   r   r   r      s   
c                 C  rx   )zBString in `./w:rStyle/@val`, or None if `w:rStyle` is not present.N)rR   r   )rt   rR   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   )r1   rR   r-   r   )rt   r   r   r   r   r      s
   
bool | Nonec                 C  &   | j }|du r	dS |jtjkrdS d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.
        NTF)rn   r   r   	SUBSCRIPTrt   rn   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)r4   boolr   r   r,   r   rn   rt   rz   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.
        NTF)rn   r   r   SUPERSCRIPTr   r   r   r   superscript  r   zCT_RPr.superscriptc                 C  r   r   )r4   r   r   r   r,   r   rn   r   r   r   r   r   #  r   Length | Nonec                 C  rx   )z4The value of `w:sz/@w:val` or |None| if not present.N)rh   r   )rt   rh   r   r   r   sz_val0  r   zCT_RPr.sz_valc                 C  r|   r}   )r2   r+   r   )rt   rz   rh   r   r   r   r   8  r~   WD_UNDERLINE | Nonec                 C  rx   )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)rl   r   )rt   rl   r   r   r   u_val@  s   zCT_RPr.u_valc                 C  s"   |    |d ur||  _d S d S r}   )r3   r.   r   r   r   r   r   r   L  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   )rt   r   elementr   r   r   _get_bool_valR  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   )rt   r   rz   r   r   r   r   _set_bool_valY  s
   
zCT_RPr._set_bool_val)rv   rw   )rz   rw   rv   r{   )rv   r    )rz   r    rv   r{   )rz   r    )r   r    rv   r{   )rv   r   )rz   r   rv   r{   )rz   r   )rv   r   )rz   r   )rv   r   )rz   r   )r   r   rv   r   )r   r   rz   r   )/r   r   r   r   r#   _tag_seqr   rR   rT   rV   bCsiiCscaps	smallCapsstrikedstrikeoutlineshadowembossimprintnoProof
snapToGridvanish	webHiddencolorrh   rj   rl   rn   rtlcs
specVanishoMathru   propertyry   setterr   r   r   r   r   r   r   r   r   r   r   r   r   r(   B   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   a  s   
 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   k  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.oxml.sharedr   r   docx.sharedr   r   r   r%   r'   r(   r   r   r   r   r   r   <module>   s*      !
