a
    Qh%,                     @   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 | |rd| }|| jkr|| _|| jd vrt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   