U
    cqe-                     @  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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)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   Z
themeColor r   r   7/tmp/pip-unpacked-wheel-gx5hpqp3/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                   @  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#   2   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$   :   s
   
 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#d^d_d`daZ$e$j%d^dbdcdddaZ$e#ded_dfdgZ&e&j%dedbdcdhdgZ&e#ded_didjZ'e'j%dedkdldjZ'e#ded_dmdnZ(e(j%dedbdodpdnZ(e#dqd_drdsZ)e)j%dqdbdcdtdsZ)e#dqd_dudvZ*e*j%dqdkdwdvZ*e#dxd_dydzZ+e+j%dxdkd{dzZ+e#d|d_d}d~Z,e,j%d|dkdd~Z,ddqdddZ-ddqddd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:oMathr2      N)
successorszCT_String | NonerStyler3      zCT_Fonts | NonerFontsr4      zCT_OnOff | Nonebr5      r6      r7      r8      r9      r:   	   r;   
   r<      r=      r>      r?      r@      rA      rB      rC      rD      rE      zCT_HpsMeasure | NoneszrF      zCT_Highlight | None	highlightrG      zCT_Underline | NoneurH       zCT_VerticalAlignRun | None	vertAlignrI   !   rJ   "   rK   &   rL   '   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k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)rg   r   )rq   rg   r   r   r   highlight_val   s    zCT_RPr.highlight_valNone)valuers   c                 C  s&   |d kr|    d S |  }||_d S N)r,   r&   r   )rq   rv   rg   r   r   r   rt      s
    r   c                 C  s   | j }|dk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)rQ   r    rq   rQ   r   r   r   rFonts_ascii   s    zCT_RPr.rFonts_asciic                 C  s&   |d kr|    d S |  }||_d S rw   )r-   r'   r    rq   rv   rQ   r   r   r   ry      s
    c                 C  s   | j }|dkrdS |jS )z:The value of `w:rFonts/@w:hAnsi` or |None| if not present.N)rQ   r!   rx   r   r   r   rFonts_hAnsi   s    zCT_RPr.rFonts_hAnsi)rv   c                 C  s(   |d kr| j d krd S |  }||_d S rw   )rQ   r'   r!   rz   r   r   r   r{      s    c                 C  s   | j }|dkrdS |jS )zBString in `./w:rStyle/@val`, or None if `w:rStyle` is not present.N)rO   r   )rq   rO   r   r   r   style   s    zCT_RPr.style)r|   rs   c                 C  s6   |dkr|    n | jdk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   )r.   rO   r*   r   )rq   r|   r   r   r   r|      s
    

zbool | Nonec                 C  s&   | j }|dk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)rk   r   r   	SUBSCRIPTrq   rk   r   r   r   	subscript   s    zCT_RPr.subscriptc                 C  sP   |d kr|    n:t|dkr,tj|  _n | jd k	rL| jjtjkrL|    d S NT)r1   boolr   r}   r)   r   rk   rq   rv   r   r   r   r     s    
c                 C  s&   | j }|dkrdS |jtjkr"dS d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.
        NTF)rk   r   r   SUPERSCRIPTr~   r   r   r   superscript  s    zCT_RPr.superscriptc                 C  sP   |d kr|    n:t|dkr,tj|  _n | jd k	rL| jjtjkrL|    d S r   )r1   r   r   r   r)   r   rk   r   r   r   r   r   #  s    
zLength | Nonec                 C  s   | j }|dkrdS |jS )z4The value of `w:sz/@w:val` or |None| if not present.N)re   r   )rq   re   r   r   r   sz_val0  s    zCT_RPr.sz_valc                 C  s&   |d kr|    d S |  }||_d S rw   )r/   r(   r   )rq   rv   re   r   r   r   r   8  s
    WD_UNDERLINE | Nonec                 C  s   | j }|dk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)ri   r   )rq   ri   r   r   r   u_val@  s    zCT_RPr.u_valc                 C  s   |    |d k	r||  _d S rw   )r0   r+   r   r   r   r   r   r   L  s    str)namers   c                 C  s   t | |}|dkrdS |jS )zIValue of boolean child with `name`, e.g. "w:b", "w:i", and "w:smallCaps".Ngetattrr   )rq   r   elementr   r   r   _get_bool_valR  s    
zCT_RPr._get_bool_val)r   rv   c                 C  s6   |d krt | d|   d S t | d|  }||_d S )Nz
_remove_%szget_or_add_%sr   )rq   r   rv   r   r   r   r   _set_bool_valY  s
    zCT_RPr._set_bool_val)/r   r   r   r   r"   Z_tag_seqr   rO   rQ   rS   ZbCsiZiCsZcapsZ	smallCapsstrikeZdstrikeoutlineZshadowZembossZimprintZnoProofZ
snapToGridZvanishZ	webHiddencolorre   rg   ri   rk   rtlcsZ
specVanishZoMathrr   propertyrt   setterry   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_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                   @  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   k  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.oxml.sharedr   r   Zdocx.sharedr   r   r   r#   r$   r%   r   r   r   r   r   r   <module>   s(     !
