a
    [Xh%,                     @   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lengthZink_rectZlogical_rect)selffontsr   	resourcesimagesmarkargskwargs	__class__ Z/var/www/viveiro_mudafortebrasil/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%   r2   8   s    

zStream.pop_stater   r   c                    s8   t  |||||| t||||||| j | jd< d S r(   )r
   Z
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)r0   r   r   r1   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)srgbZhslZhwbr<   )zxyz-d65ZoklabZoklchzlab-d65lab)zxyz-d50r=   Zlchzlab-d50z,Unsupported color space %s, use sRGB instead)	set_alphaspacer   r   Zset_color_rgbtoZcoordinatesZset_color_spaceZset_color_specialr   warn)r   colorstrokeZchannelsalphaZ	lightnessr3   r4   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%   rF   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%   rL   u   s    zStream.set_stateNc                    s   |d u r| }|r^d| }|| j kr^|| _ || jd vrRtd|i| jd |< t | |rd| }|| jkr|| _|| jd vrtd|i| jd |< t | d S )NArJ   CAr3   ca)r   r   pydyf
Dictionaryr
   rL   r   )r   rD   rC   fillrN   r"   r$   r%   r>   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)rX   ZSMaskrQ   ZAIS)	add_grouprR   rS   
capitalizerL   )r   xywidthheightmodeZalpha_streamZalpha_stater$   r$   r%   set_alpha_state   s    

zStream.set_alpha_statec                 C   s    |  tdd| d d S )NrV   rW   )rX   ZBM)rL   rR   rS   )r   rb   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   Z
pango_fontrN   descriptionZ	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rJ   XObjectPatternShadingrg   r   z/XObjectz/Formz/Groupz/Transparencytruez
/DeviceRGB)rX   rY   ICS)rX   ZSubtypeBBox	ResourcesGroupr   extrar^   ri   )rR   rS   r   Arrayr'   rK   id)r   r^   r_   r`   ra   r   rs   groupr$   r$   r%   r\      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iri   
dpi_ratios)imageinterpolaterx   Zx_object)ru   intr   r   add)r   ry   rz   ZratioZ
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 )	Nrg   rh   z/Patternr   )	rX   ZPatternTypero   ZXStepZYStepZ
TilingTypeZ	PaintTyper   rp   rr   prj   )rR   rS   r   rt   valuesr'   rK   ru   )r   r^   r_   r`   ra   Zrepeat_widthZrepeat_heightmatrixr   rs   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)ZShadingTyperg   DomainZCoordsZFunction)   truer   ZExtendrI   rk   )rR   rS   rt   rK   r   ru   )r   Zshading_typeZcolor_spacedomainZcoordsextendfunctionZ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_tagrR   rS   rK   r   r.   r
   begin_marked_content)r   ZboxZmcidtagZ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   ZC0ZC1NrR   rS   rt   )r   Zc0Z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   ZEncodeZBoundsZ	Functionsr   )r   encodeZboundsZ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ddZLItableZ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)rU   )FN)__name__
__module____qualname____doc__r   r'   propertyr+   r-   r2   r9   r:   r;   rE   rF   rL   r>   rc   rd   rf   r\   r}   r   r   r   r   staticmethodr   r   r   __classcell__r$   r$   r"   r%   r	      s8   



	
	r	   )r   rR   loggerr   r   r   Ztext.ffir   Z
text.fontsr   r   r   r	   r$   r$   r$   r%   <module>   s   