a
    ¥Q•h  ã                   @   s^   d Z ddlmZmZmZmZ ddlmZ ddlm	Z	 ddl
mZmZ G dd	„ d	ƒZd
d„ ZdS )z
Draw text.é    )ÚcosÚinfÚradiansÚsiné   )ÚMatrixé   )Úextend_bounding_box)Ú	normalizeÚsizec                   @   s$   e Zd ZdZdd„ Zedd„ ƒZdS )ÚTextBoxz!Dummy text box used to draw text.c                 C   s   || _ || _d S ©N)Úpango_layoutÚstyle)Úselfr   r   © r   úL/var/www/sistema_ama/venv/lib/python3.9/site-packages/weasyprint/svg/text.pyÚ__init__   s    zTextBox.__init__c                 C   s   | j jS r   )r   Útext)r   r   r   r   r      s    zTextBox.textN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   Úpropertyr   r   r   r   r   r   
   s   r   c           %         sö  ddl m} ddlm}m} ddlm} | ¡ }dd„ | dd¡ 	d	¡D ƒ|d
< | dd¡|d< | dd¡|d< ˆ|d< |d dkrŽd|d< nF|d dkr¤d|d< n0zt
|d ƒ|d< W n tyÒ   d|d< Y n0 ||j|ˆjtdƒ\}}	}	}
}}	g g g g dgf\‰‰‰ ‰‰d|jv �rB‡‡fdd„t|jd ƒ ¡  	d¡D ƒ‰d|jv �rv‡‡fdd„t|jd ƒ ¡  	d¡D ƒ‰d|jv �rª‡‡fdd„t|jd ƒ ¡  	d¡D ƒ‰ d|jv �rÞ‡‡fdd„t|jd ƒ ¡  	d¡D ƒ‰d|jv �rdd„ t|jd ƒ ¡  	d¡D ƒ‰ˆd  }‡ ‡‡‡‡fd!d„|jD ƒ}ˆ | d"¡ˆ¡}ˆ | d#¡ˆ¡}d$}|�rÎ|j�rÎt|jƒd$ }t|j d%¡ƒd&k�r¸|
||  }||| 9 }|||  }||
 }n|�rÊ||
 | }|}
ˆd' ˆd(  }}d}| d)¡}| d*| d+¡¡}|d,k�r| d }nZ|d-k�r"nN|d.k�r4| }n<|d/v �rP|| d | }n |d0v �r`|}n|d1v �rp| }|j�sâˆ�r†ˆd nˆjd ‰ˆ�ržˆd nˆjd$ ‰ˆ �r¶ˆ d nd‰ ˆ�rÈˆd nd‰ˆˆ  ˆˆ fˆ_d2S ˆj ¡  ˆj ¡  g }t|ƒD �]²\}\\‰‰‰ ‰}}ˆ�r*dˆjd< ˆ�r:dˆjd$< ˆjd  ˆ �pLd7  < ˆjd$  ˆ�pdd7  < |||ˆjtdƒ\}}	}	}
}}	ˆd2u �rœˆjd nˆ‰ˆd2u �r´ˆjd$ nˆ‰|
|9 }
|�rÎˆ|7 ‰ˆ|
 ˆfˆ_ˆˆjd  }ˆˆjd$  | }|d2u �r
|n|}||f||
 || ff} t|j| ƒ|_| |¡ ˆj|ˆd3d4� t|d ||d5�}!|�rŠt|ƒt |ƒ }"}#t|"|# |#|"ƒ|! }!|ˆjt!||ƒd6d6|!ƒ}$| "ˆˆˆ|$f¡ �qˆj #¡  ˆj $¡  |D ] \‰‰‰}$|ˆjˆˆˆ|$ƒ �qÐd2S )7zDraw text node.r   )ÚINITIAL_VALUES)Údraw_emojisÚdraw_first_line)Úsplit_first_linec                 S   s   g | ]}|  d ¡‘qS )z"')Ústrip)Ú.0Úfontr   r   r   Ú
<listcomp>   s   ztext.<locals>.<listcomp>zfont-familyz
sans-serifú,Úfont_familyz
font-styleÚnormalÚ
font_stylezfont-weighti�  Úfont_weightÚ	font_sizeÚboldi¼  r   Úxc                    s   g | ]}t |ˆ ˆjƒ‘qS r   ©r   Úinner_width©r   Úi©r'   Úsvgr   r   r!   3   s   ÿú Úyc                    s   g | ]}t |ˆ ˆjƒ‘qS r   ©r   Úinner_heightr,   r.   r   r   r!   6   s   ÿÚdxc                    s   g | ]}t |ˆ ˆjƒ‘qS r   r*   r,   r.   r   r   r!   9   s   ÿÚdyc                    s   g | ]}t |ˆ ˆjƒ‘qS r   r2   r,   r.   r   r   r!   <   s   ÿÚrotatec                 S   s    g | ]}|rt t|ƒƒnd ‘qS )r   )r   Úfloatr,   r   r   r   r!   ?   s   ÿéÿÿÿÿc                    s(   g | ] }d d„ ˆˆˆ ˆˆfD ƒ|f‘qS )c                 S   s   g | ]}|r|  d ¡nd‘qS )r   N)Úpop)r   Úplr   r   r   r!   C   ó    z#text.<locals>.<listcomp>.<listcomp>r   )r   Úchar)r4   r5   r6   r)   r1   r   r   r!   B   s   ÿzletter-spacingÚ
textLengthr   ÚlengthAdjustZspacingAndGlyphsgš™™™™™é?gš™™™™™É?zdisplay-anchorzdominant-baselinezalignment-baselineÚmiddleÚtopÚbottom)Zcentralr?   )ztext-before-edgeZbefore_edger@   Zhangingztext-top)ztext-after-edgeZ
after_edgerA   ztext-bottomNT)r   )ÚaÚdÚeÚfÚnone)%Zcss.propertiesr   Z	draw.textr   r   Ztext.line_breakr   ÚcopyÚgetÚsplitÚintÚ
ValueErrorr   Úcontextr   Úattribr
   r   ÚlengthÚlenÚcursor_positionÚstreamÚ
push_stateÚ
begin_textÚ	enumerateÚcursor_d_positionr	   Útext_bounding_boxÚ
reactivateÚfill_stroker   r   r   r   ÚappendÚend_textÚ	pop_state)%r/   Únoder'   r   r   r   r   r   ÚlayoutÚ_ÚwidthÚheightZlast_rZletters_positionsÚletter_spacingZtext_lengthÚscale_xZspaces_countZwidth_with_spacingZspaceless_text_lengthÚascentÚdescentZy_alignZdisplay_anchorZalignment_baselineZemoji_linesr-   ÚrÚletterÚ
x_positionÚ
y_positionÚangleÚpointsÚmatrixrB   ÚcZemojisr   )r4   r5   r'   r6   r/   r)   r1   r   r      sü    þ


ÿÿÿÿÿÿþ


ÿ







 

ÿþÿ
ÿ

r   N)r   Úmathr   r   r   r   rk   r   Úbounding_boxr	   Úutilsr
   r   r   r   r   r   r   r   Ú<module>   s   