a
    ]j*                     @  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rd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   O/var/www/html/assistant/venv/lib/python3.9/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                   @  s$   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   s   
r%   c                   @  s$   e Zd ZU dZedeZded< dS )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   s   
r&   c                   @  sD  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#dcdddedfZ$e$j%dcdgdhdidfZ$e#djdddkdlZ&e&j%djdgdhdmdlZ&e#djdddndoZ'e'j%djdpdqdoZ'e#djdddrdsZ(e(j%djdgdtdudsZ(e#dvdddwdxZ)e)j%dvdgdhdydxZ)e#dvdddzd{Z*e*j%dvdpd|d{Z*e#d}ddd~dZ+e+j%d}dpddZ+e#dddddZ,e,j%ddpddZ,ddvdddZ-ddvdddZ.dS )CT_RPrz7`<w:rPr>` element, containing the properties for a run.zCallable[[], CT_Color]Z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]Z_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:oMathr4      N)
successorszCT_String | NonerStyler5      zCT_Fonts | NonerFontsr6      zCT_OnOff | Nonebr7      r8      r9      r:      r;      r<   	   r=   
   r>      r?      r@      rA      rB      rC      rD      rE      rF      zCT_Color | NonecolorrG      zCT_HpsMeasure | NoneszrH      zCT_Highlight | None	highlightrI      zCT_Underline | NoneurJ       zCT_VerticalAlignRun | None	vertAlignrK   !   rL   "   rM   &   rN   '   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_colorzWD_COLOR_INDEX | None)returnc                 C  s   | 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None)valuerv   c                 C  s&   |d u r|    d S |  }||_d S N)r.   r(   r   )rt   ry   rj   r   r   r    rw      s
    r"   c                 C  s   | j }|du rdS |jS )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)rS   r#   rt   rS   r   r   r    rFonts_ascii   s    zCT_RPr.rFonts_asciic                 C  s&   |d u r|    d S |  }||_d S rz   )r/   r)   r#   rt   ry   rS   r   r   r    r|      s
    c                 C  s   | j }|du rdS |jS )z:The value of `w:rFonts/@w:hAnsi` or |None| if not present.N)rS   r$   r{   r   r   r    rFonts_hAnsi   s    zCT_RPr.rFonts_hAnsi)ry   c                 C  s(   |d u r| j d u rd S |  }||_d S rz   )rS   r)   r$   r}   r   r   r    r~      s    c                 C  s   | j }|du rdS |jS )zBString in `./w:rStyle/@val`, or None if `w:rStyle` is not present.N)rQ   r   )rt   rQ   r   r   r    style   s    zCT_RPr.style)r   rv   c                 C  s6   |du r|    n | jdu r*| j|d n|| 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   )r0   rQ   r,   r   )rt   r   r   r   r    r      s
    

zbool | Nonec                 C  s   | 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)rn   r   r   	SUBSCRIPTrt   rn   r   r   r    	subscript   s    zCT_RPr.subscriptc                 C  sP   |d u r|    n:t|du r,tj|  _n | jd urL| jjtjkrL|    d S NT)r3   boolr   r   r+   r   rn   rt   ry   r   r   r    r      s    
c                 C  s   | j }|du rdS |jtjkS )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)rn   r   r   SUPERSCRIPTr   r   r   r    superscript   s    zCT_RPr.superscriptc                 C  sP   |d u r|    n:t|du r,tj|  _n | jd urL| jjtjkrL|    d S r   )r3   r   r   r   r+   r   rn   r   r   r   r    r     s    
zLength | Nonec                 C  s   | j }|du rdS |jS )z4The value of `w:sz/@w:val` or |None| if not present.N)rh   r   )rt   rh   r   r   r    sz_val  s    zCT_RPr.sz_valc                 C  s&   |d u r|    d S |  }||_d S rz   )r1   r*   r   )rt   ry   rh   r   r   r    r     s
    WD_UNDERLINE | Nonec                 C  s   | j }|du rdS |jS )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 rz   )r2   r-   r   r   r   r   r    r   -  s    str)namerv   c                 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_val3  s    
zCT_RPr._get_bool_val)r   ry   c                 C  s6   |d u rt | d|   d S t | d|  }||_d S )Nz
_remove_%szget_or_add_%sr   )rt   r   ry   r   r   r   r    _set_bool_val:  s
    zCT_RPr._set_bool_val)/r   r   r   r   r   Z_tag_seqr   rQ   rS   rU   ZbCsiZiCsZcapsZ	smallCapsstrikeZdstrikeoutlineZshadowZembossZimprintZnoProofZ
snapToGridZvanishZ	webHiddenrf   rh   rj   rl   rn   rtlcsZ
specVanishZoMathru   propertyrw   setterr|   r~   r   r   r   r   r   r   r   r   r   r   r    r'   =   s   
)
		r'   c                   @  s$   e Zd ZU dZedeZded< dS )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  s   
r   c                   @  s$   e Zd ZU dZedeZded< dS )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  s   
r   N)&r   
__future__r   typingr   r   Zdocx.enum.dmlr   Zdocx.enum.textr   r   Zdocx.oxml.nsr   Zdocx.oxml.parserr	   Zdocx.oxml.simpletypesr
   r   r   r   Zdocx.oxml.xmlchemyr   r   r   r   Zdocx.sharedr   Zdocx.oxml.sharedr   r   r   r   r!   r%   r&   r'   r   r   r   r   r   r    <module>   s*   
  