U
    :vhr                     @   s   d dl Z d dlmZ d dlmZmZmZ ddlmZ ddlm	Z	m
Z
mZ ddlmZmZmZmZmZmZmZ ddlmZ dd	lmZ dd
lmZ e	jfZG dd dZG dd deeZG dd deZG dd deZG dd deZ dS )    N)datetime)
NamedTupleTupleUnion   )Action)AnnotationFlagAnnotationNameFileAttachmentAnnotationName)build_obj_dictDestinationNamePDFContentStreamPDFDate	PDFObject	PDFString)create_dictionary_string)create_list_string)iobj_refc                   @   sz   e Zd Zeddddddddddddddfeeeeeeee ee f ee	e
eeeeeeeef ee eeedddZdS )AnnotationMixinNr    )subtypexywidthheightflagscontentsdestactioncolormodification_timetitlequad_pointsborder_widthnameink_list	file_spec
field_typedefault_appearancec              	   C   s^  t d| _t || _d|dd|| dd|| dd|dd	| _d| d| _|r^t |nd | _|| _ttdd |D | _	|rt
|d	d
nd | _|	| _|| _|
rd|
d  d|
d  d|
d  dnd | _|rt
|d	d
nd | _|rt|d	d
nd | _|rtdd |D nd | _d | _|| _|rHdtdd |D  d nd | _|| _|| _d S )NZAnnot[.2f ]z[0 0 c                 s   s   | ]}t |V  qd S N)r   Zcoerce).0flagr   r   4/tmp/pip-unpacked-wheel-dvf6lv8i/fpdf/annotations.py	<genexpr>7   s     z+AnnotationMixin.__init__.<locals>.<genexpr>T)encryptr   r      c                 s   s   | ]}|d V  qdS r+   Nr   )r/   Z
quad_pointr   r   r1   r2   ?   s     c                 s   s   | ]}|d V  qdS r5   r   )r/   Zcoordr   r   r1   r2   F   s     )r   typer   rectborderf_tvsumtuplefr   r   ar   ctr   mpdf_listr#   pr%   r&   f_sd_a)selfr   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   valuer)   r   r   r1   __init__   s2    

0.zAnnotationMixin.__init__)__name__
__module____qualname__DEFAULT_ANNOT_FLAGSstrintr   r   r   r   r   r<   r   r	   r
   rH   r   r   r   r1   r      sH   
r   c                       s    e Zd ZdZ fddZ  ZS )PDFAnnotationz?A PDF annotation that get serialized as an obj<</>>endobj blockc                    s   t  j|| d S r.   )superrH   )rF   argskwargs	__class__r   r1   rH   Q   s    zPDFAnnotation.__init__)rI   rJ   rK   __doc__rH   __classcell__r   r   rS   r1   rO   N   s   rO   c                   @   s&   e Zd ZdZdZdddZdd ZdS )	AnnotationDictz@A PDF annotation that get serialized as an inline <<dictionary>>)r6   r   r7   r8   r9   r:   r=   r   r>   r   r?   r@   r#   rC   r%   r&   rD   rE   Nc                    s(   t  fddt D ||d}t|S )Nc                    s   i | ]}|t  |qS r   getattrr/   keyrF   r   r1   
<dictcomp>o   s      z,AnnotationDict.serialize.<locals>.<dictcomp>)_security_handler_obj_id)r   dirpdf_dictrF   r^   r_   Zobj_dictr   r\   r1   	serializem   s    zAnnotationDict.serializec                    sB   dd t  D } fdd|D }dd | D }d| dS )Nc                 S   s   g | ]}| d s|qS )__)
startswithrZ   r   r   r1   
<listcomp>v   s     
 z+AnnotationDict.__repr__.<locals>.<listcomp>c                    s   i | ]}|t  |qS r   rX   rZ   r\   r   r1   r]   w   s      z+AnnotationDict.__repr__.<locals>.<dictcomp>c                 S   s   i | ]\}}t |s||qS r   )callable)r/   r[   rG   r   r   r1   r]   x   s       zAnnotationDict(**))r`   items)rF   keysdr   r\   r1   __repr__u   s    zAnnotationDict.__repr__)NN)rI   rJ   rK   rU   	__slots__rc   rl   r   r   r   r1   rW   U   s   
rW   c                	       sP   e Zd Zdeeeeeeed fddZdd Zd	d
 Z	dd Z
dd Z  ZS )PDFEmbeddedFile NF)basenamer   desccreation_datemodification_datecompresschecksumc                    s   t  j||d td| _dt|i}|r>t|dd |d< |rVt|dd |d< |rtjdd	d
}	|		| j
 |	 }
d|
 d|d< t|| _|| _|| _d| _d S )N)r   rt   ZEmbeddedFilez/SizeT)Zwith_tzz/CreationDatez/ModDatemd5F)Zusedforsecurity<>z	/CheckSum)rP   rH   r   r6   lenr   rc   hashlibnewupdateZ	_contents	hexdigestra   params	_basename_desc_globally_enclosed)rF   rp   r   rq   rr   rs   rt   ru   r~   Z	file_hashZhash_hexrS   r   r1   rH   }   s     


zPDFEmbeddedFile.__init__c                 C   s   | j S r.   r   r\   r   r   r1   globally_enclosed   s    z!PDFEmbeddedFile.globally_enclosedc                 C   s
   || _ d S r.   r   )rF   rG   r   r   r1   set_globally_enclosed   s    z%PDFEmbeddedFile.set_globally_enclosedc                 C   s   | j S r.   )r   r\   r   r   r1   rp      s    zPDFEmbeddedFile.basenamec                 C   s   t | | j| jS r.   )FileSpecr   r   r\   r   r   r1   r'      s    zPDFEmbeddedFile.file_spec)ro   NNFF)rI   rJ   rK   rM   bytesr   boolrH   r   r   rp   r'   rV   r   r   rS   r1   rn   |   s$        rn   c                   @   s0   e Zd ZU eed< eed< eed< dddZdS )r   embedded_filerp   rq   Nc                 C   sJ   dt | j tdt| jjid}| jr>t | j |d< t|ddS )Nz	/Filespec/F)z/Typer   z/EFz/Descr,   )Z
field_join)r   rp   rc   ra   pdf_refr   idrq   rb   r   r   r1   rc      s    zFileSpec.serialize)NN)rI   rJ   rK   rn   __annotations__rM   rc   r   r   r   r1   r      s   
r   )!rz   r   typingr   r   r   actionsr   enumsr   r	   r
   Zsyntaxr   r   r   r   r   r   r   r   ra   r   rB   r   r   ZPRINTrL   r   rO   rW   rn   r   r   r   r   r1   <module>   s   $	5')