a
    ¥Q•h%,  ã                   @   s^   d Z ddlZddlmZ ddlmZ ddlmZ ddlm	Z	 dd	l
mZ G d
d„ dejƒZdS )zPDF stream.é    Né   )ÚLOGGER)ÚMatrix)Úffi)Úget_pango_font_keyé   )ÚFontc                       s  e Zd ZdZ‡ fdd„Zdd„ Zedd„ ƒZ‡ fdd	„Z‡ fd
d„Z	d7‡ fdd„	Z
‡ fdd„Z‡ fdd„Zd8dd„Z‡ fdd„Z‡ fdd„Zd9‡ fdd„	Zd:dd „Zd!d"„ Zd#d$„ Zd%d&„ Zd'd(„ Zd)d*„ Zd+d,„ Zd;‡ fd-d.„	Z‡ fd/d0„Zed1d2„ ƒZed3d4„ ƒZd5d6„ Z‡  ZS )<ÚStreamz&PDF stream object with extra features.c                    s˜   t ƒ j|i |¤Ž || _g | _|| _|| _|| _|| _d  | _| _	d  | _
| _d  | _| _d  | _| _tƒ g| _t d¡| _t d¡| _t d¡| _d S )Nzunsigned int *zPangoRectangle *)ÚsuperÚ__init__Úpage_rectangleÚmarkedÚ_fontsÚ
_resourcesÚ_imagesÚ_markÚ_current_colorÚ_current_color_strokeÚ_current_alphaÚ_current_alpha_strokeÚ_current_fontZ_current_font_sizeÚ	_old_fontZ_old_font_sizer   Ú
_ctm_stackr   ÚnewÚlengthÚink_rectÚlogical_rect)ÚselfÚfontsr   Ú	resourcesÚimagesÚmarkÚargsÚkwargs©Ú	__class__© úN/var/www/sistema_ama/venv/lib/python3.9/site-packages/weasyprint/pdf/stream.pyr      s    
zStream.__init__c                 K   sz   d|vr| j |d< d|vr$| j|d< d|vr6| j|d< d|vrH| j|d< d|vrZ| j|d< d|vrl| j|d< tf i |¤ŽS )Nr   r   r   r    r!   Úcompress)r   r   r   r   r   r(   r	   )r   r#   r&   r&   r'   Úclone!   s    





zStream.clonec                 C   s
   | j d S ©Néÿÿÿÿ)r   ©r   r&   r&   r'   Úctm0   s    z
Stream.ctmc                    s   t ƒ  ¡  | j | j¡ d S ©N)r
   Ú
push_stater   Úappendr-   r,   r$   r&   r'   r/   4   s    
zStream.push_statec                    s`   | j r | j d dkr | j  ¡  n
tƒ  ¡  d  | _| _d  | _| _d | _| j	 ¡  | j	s\J ‚d S )Nr+   ó   q)
ÚstreamÚpopr
   Ú	pop_stater   r   r   r   r   r   r,   r$   r&   r'   r4   8   s    

zStream.pop_stater   r   c                    s8   t ƒ  ||||||¡ t||||||ƒ| j | jd< d S r*   )r
   Ú
set_matrixr   r-   r   )r   ÚaÚbÚcÚdÚeÚfr$   r&   r'   Ú	transformC   s    zStream.transformc                    s6   | j r(| j d dkr(| j| _| j  ¡  n
tƒ  ¡  d S )Nr+   s   ET)r2   r   r   r3   r
   Ú
begin_textr,   r$   r&   r'   r=   G   s    zStream.begin_textc                    s   | j d  | _| _ tƒ  ¡  d S r.   )r   r   r
   Úend_textr,   r$   r&   r'   r>   N   s    zStream.end_textFc                 C   s4  |�^ }}|   ||¡ |rD|jg|¢R | jkr2d S |jg|¢R | _n(|jg|¢R | jkr\d S |jg|¢R | _|jdv r”| jg | d¡j¢|‘R Ž  nœ|jdv rÐ|  d|¡ | d¡j\}}}|  d ||||¡ n`|jdv �r|  d|¡ | d¡j\}}}|  d ||||¡ n"t	 
d|j¡ | jg |¢|‘R Ž  d S )	N)ÚsrgbÚhslÚhwbr?   )zxyz-d65ÚoklabÚoklchzlab-d65Úlab)zxyz-d50rD   Úlchzlab-d50z,Unsupported color space %s, use sRGB instead)Ú	set_alphaÚspacer   r   Úset_color_rgbÚtoÚcoordinatesÚset_color_spaceÚset_color_specialr   Úwarn)r   ÚcolorÚstrokeÚchannelsÚalphaZ	lightnessr6   r7   r&   r&   r'   Ú	set_colorR   s*    


zStream.set_colorc                    s.   ||f| j krd S ||f| _ tƒ  ||¡ d S r.   )r   r
   Úset_font_size)r   ÚfontÚsizer$   r&   r'   rS   o   s    
zStream.set_font_sizec                    s2   dt | jd ƒ› �}|| jd |< tƒ  |¡ d S )NÚsÚ	ExtGState)Úlenr   r
   Ú	set_state)r   ÚstateÚkeyr$   r&   r'   rY   u   s    zStream.set_stateNc                    s²   |d u r| }|r^d|› �}|| j kr^|| _ || jd vrRt d|i¡| jd |< tƒ  |¡ |r®d|› �}|| jkr®|| _|| jd vr¢t d|i¡| jd |< tƒ  |¡ d S )NÚArW   ÚCAr6   Úca)r   r   ÚpydyfÚ
Dictionaryr
   rY   r   )r   rQ   rO   Úfillr[   r$   r&   r'   rF   z   s     



zStream.set_alphaÚ
luminosityc              	   C   sJ   |   ||||¡}t dt dd| ¡ › �|dœ¡dddœ¡}|  |¡ |S )Nú
/ExtGStatez/Maskú/)ÚTypeÚSÚGr   Úfalse)re   ÚSMaskr^   ZAIS)Ú	add_groupr_   r`   Ú
capitalizerY   )r   ÚxÚyÚwidthÚheightÚmodeÚalpha_streamZalpha_stater&   r&   r'   Úset_alpha_stateŽ   s    ýø

zStream.set_alpha_statec                 C   s    |   t dd|› �dœ¡¡ d S )Nrc   rd   )re   ÚBM)rY   r_   r`   )r   rp   r&   r&   r'   Úset_blend_mode�   s    þzStream.set_blend_modec                 C   s8   t |ƒ\}}}|| jvr*t|||ƒ| j|< | j| |fS r.   )r   r   r   )r   Ú
pango_fontr[   ÚdescriptionÚ	font_sizer&   r&   r'   Úadd_font£   s    
zStream.add_fontc                 C   s¢   t  t  ¡ t  ¡ t  ¡ t  ¡ | jd d dœ¡}t  ddt  |||| || f¡|t  ddddd	œ¡d
œ¡}| j||d�}dt| jd ƒ› �|_|| jd |j< |S )NÚ
ColorSpace©rW   ÚXObjectÚPatternÚShadingry   r   z/XObjectz/Formz/Groupz/TransparencyÚtruez
/DeviceRGB)re   rf   ÚIZCS)re   ÚSubtypeÚBBoxÚ	ResourcesÚGroup©r   Úextrarl   r{   )r_   r`   r   ÚArrayr)   rX   Úid)r   rl   rm   rn   ro   r   r…   Úgroupr&   r&   r'   rj   ©   s0    úüûzStream.add_groupc                 C   s^   d|j › t|ƒ› �}d | jd |< || jv rD| j| d  |¡ |S |||hd dœ| j|< |S )NÚir{   Ú
dpi_ratios)ÚimageÚinterpolaterŠ   Úx_object)r‡   Úintr   r   Úadd)r   r‹   rŒ   ÚratioÚ
image_namer&   r&   r'   Ú	add_imageÃ   s    
üzStream.add_imagec                 C   s¢   t  t  ¡ t  ¡ t  ¡ t  ¡ | jd d dœ¡}t  ddt  |||| || g¡||ddt  |j¡|dœ	¡}	| j||	d�}
dt| jd ƒ› �|
_|
| jd |
j< |
S )	Nry   rz   z/Patternr   )	re   ZPatternTyper�   ZXStepZYStepZ
TilingTypeÚ	PaintTyper   r‚   r„   Úpr|   )r_   r`   r   r†   Úvaluesr)   rX   r‡   )r   rl   rm   rn   ro   Úrepeat_widthÚrepeat_heightÚmatrixr   r…   Úpatternr&   r&   r'   Úadd_patternÓ   s.    ú
÷zStream.add_patternc                 C   sd   t  |d|› �t  |¡t  |¡|dœ¡}|r:t  d¡|d< dt| jd ƒ› �|_|| jd |j< |S )Nz/Device)ÚShadingTypery   ÚDomainÚCoordsÚFunction)ó   truerŸ   ÚExtendrV   r}   )r_   r`   r†   rX   r   r‡   )r   Úshading_typeÚcolor_spaceÚdomainÚcoordsÚextendÚfunctionÚshadingr&   r&   r'   Úadd_shadingì   s    ûzStream.add_shadingc                    s\   | j s
d S d }|d u r"|  |j¡}|rJt dt| jƒi¡}| j ||f¡ tƒ  	||¡ d S )NZMCID)
r   Úget_marked_content_tagÚelement_tagr_   r`   rX   r   r0   r
   Úbegin_marked_content)r   ÚboxÚmcidÚtagÚproperty_listr$   r&   r'   r«   û   s    zStream.begin_marked_contentc                    s   | j s
d S tƒ  ¡  d S r.   )r   r
   Úend_marked_contentr,   r$   r&   r'   r°     s    zStream.end_marked_contentc                 C   s(   t  dt  | ¡t  |¡t  |¡|dœ¡S )Nr   )ÚFunctionTyperœ   ÚC0ÚC1ÚN©r_   r`   r†   )r£   Úc0Úc1Únr&   r&   r'   Úcreate_interpolation_function  s    ûz$Stream.create_interpolation_functionc              	   C   s.   t  dt  | ¡t  |¡t  |¡t  |¡dœ¡S )Né   )r±   rœ   ÚEncodeÚBoundsÚ	Functionsrµ   )r£   ÚencodeÚboundsÚsub_functionsr&   r&   r'   Úcreate_stitching_function  s    ûz Stream.create_stitching_functionc                 C   s¸   |dkrdS |dkrdS |dkr$dS |dkr0dS |d	kr<d
S |dkrHdS |dv rX|  ¡ S |dv rddS |dv rpdS |dkr|dS |dv rŒ|  ¡ S |dv r°|d d…   ¡ |dd …  S dS d S )NÚdivÚDivÚspanZSpanÚarticleZArtÚsectionZSectÚ
blockquoteZ
BlockQuoter”   ÚP)Úh1Úh2Úh3Úh4Úh5Úh6)ÚdlÚulÚolÚL)ÚliÚdtÚddÚLIÚtableÚTable)ÚtrÚthÚtd)ÚtheadÚtbodyÚtfootr   Z	NonStruct)Úupper)r   rª   r&   r&   r'   r©     s2    zStream.get_marked_content_tag)r   r   r   r   r   r   )F)FN)rb   )FN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r)   Úpropertyr-   r/   r4   r<   r=   r>   rR   rS   rY   rF   rr   rt   rx   rj   r’   rš   r¨   r«   r°   Ústaticmethodr¹   rÁ   r©   Ú__classcell__r&   r&   r$   r'   r	      s8   



	
	r	   )rã   r_   Úloggerr   r˜   r   Ztext.ffir   Ú
text.fontsr   r   r   r	   r&   r&   r&   r'   Ú<module>   s   