3
ybW%!                 @   sd   d Z ddlmZmZmZ ddlmZ ddlmZm	Z	m
Z
mZ ddlmZ dd Zd	d
 Zdd ZdS )z
Text drawers.

    )cossinradians   )cairo)distance	normalizepoint_anglezip_letters)sizec             C   sn   d}xd| D ]\}|d t jkr&|d }q
|d t jkr
|d }t|d |d |d |d }||7 }|}q
W |S )zGet the length of ``path``.r   r   )r   PATH_MOVE_TOPATH_LINE_TOr   )pathtotal_lengthitem	old_point	new_pointlength r   U/var/www/html/enquirykeeper_venv/lib/python3.6/site-packages/cairosvg/surface/text.pypath_length"   s    

r   c       
      C   s   d}x| D ]}|d t jkr&|d }q
|d t jkr
|d }t|d |d |d |d }||7 }||k rp|}q
||| 8 }t|d |d |d |d }t|| |d  }t|| |d  }	||	fS q
W dS )z0Get the point at ``width`` distance on ``path``.r   r   N)r   r   r   r   r	   r   r   )
r   widthr   r   r   r   r   Zanglexyr   r   r   point_following_path1   s"    

r   c       )         s  |j dsd|d< t |j dd}|j dp0djdd jd	}ttd
|j d j tj}ttd|j d j tj} j	j
|||  j	j|  j	j \}}}}	}
|j ddp|jj dd} jj |jd}t |j d} j	j|jdd \}}}}g g g g dgf\}}}}}d|krL fddt|d j jdD }d|krz fddt|d j jdD }d|kr fddt|d j jdD }d|krև fddt|d j jdD }d|kr dd t|d j jdD }|d3 }t||||||j}|j d!}|d"kr>|d# | }n|d$krR|| }nd}|	dkrH|
dkrH|j d%}|j d&}|d"kr| d# | }n|d'kr| }n|d(kr| | }n|d)ks|d"kr|| d# | }nb|d*ks|d+ks|d'ks|d,kr|}n4|d-ks<|d.ks<|d(ks<|d/krD| }nd}|rd0 _ j| d1 _ j	j } j	j  t |j d2dt|}  j|7  _t| j\} }!|jrx0|D ]\\}}}}}"}#|rd jd< |rd jd <  jd  |pd7  <  jd   |pd7  <  j	j|#d }$ j	j  |rЈ  j|$| 7  _t| j jd  }%|%r|%\}&}'nq j	j| |!  j	jt| |!|&|'  j	jd jd    j	j dd |&|' } }!n|dkr j!d n|}|dkr j!d  n|} j	j || | || |$ |f}( j	j" j   j	j"| |  j	j|"dkrT|n|"  j	j#|#  j	j$  |s|( _!qW nf|r|d n j!d }|r|d n j!d  }|r|d nd}|r|d nd}|| || f _!dS )4zDraw a text ``node``.fillz#000000z	font-sizeZ12ptzfont-familyz
sans-serif,r   z"' zfont_slant_%sz
font-stylezfont_weight_%szfont-weightz"{http://www.w3.org/1999/xlink}href #zletter-spacingN   r   c                s   g | ]}t  |d qS )r   )r   ).0i)surfacer   r   
<listcomp>f   s   ztext.<locals>.<listcomp> r   c                s   g | ]}t  |d qS )r   )r   )r    r!   )r"   r   r   r#   i   s   dxc                s   g | ]}t  |d qS )r   )r   )r    r!   )r"   r   r   r#   l   s   dyc                s   g | ]}t  |d qS )r   )r   )r    r!   )r"   r   r   r#   o   s   rotatec             S   s    g | ]}|rt t|nd qS )r   )r   float)r    r!   r   r   r   r#   r   s   r   ztext-anchorZmiddleg       @endzdisplay-anchorzalignment-baselinetopZbottomZcentralztext-before-edgeZbefore_edgeztext-topztext-after-edgeZ
after_edgeztext-bottomFTZstartOffset)%getr   splitstripgetattrr   upperZFONT_SLANT_NORMALZFONT_WEIGHT_NORMALcontextZselect_font_faceZset_font_sizeZfont_extentsparentpathslstripZtext_extentstextr   r
   Zstroke_and_fillZdrawZcopy_path_flatnew_pathr   Ztext_path_widthr   Zcursor_d_positionsave	translater'   r	   Zmove_tocursor_positionZrel_move_to	text_pathZrestore))r"   nodeZ	font_sizeZfont_familyZ
font_styleZfont_weightZascentZdescent_Zmax_x_advanceZmax_y_advanceZtext_path_hrefr:   Zletter_spacingZ	x_bearingZ	y_bearingr   heightr   r   r%   r&   r'   Zlast_rZletters_positionsZtext_anchorZx_alignZdisplay_anchorZalignment_baselineZy_alignZ
cairo_pathZstart_offsetx1y1rletterZextentsZpoint_on_pathZx2y2r9   r   )r"   r   r5   G   s    




































r5   N)__doc__mathr   r   r   r   r   Zhelpersr   r   r	   r
   unitsr   r   r   r5   r   r   r   r   <module>   s   