
    '	4jP                     $   d Z ddlZddlmZ ddlmZmZmZmZmZ ddl	m
Z
 ddlmZmZmZmZ ddlmZmZmZmZmZmZmZmZmZmZ erdd	lmZ ej@                  fZ! G d
 d      Z" G d de"e      Z# G d de"      Z$ G d de      Z% G d de      Z&y)zK
Usage documentation at: <https://py-pdf.github.io/fpdf2/Annotations.html>
    N)datetime)TYPE_CHECKINGAnyOptionalSequenceUnion   )Action)AnnotationFlagAnnotationNameAssociatedFileRelationshipFileAttachmentAnnotationName)
DestinationNamePDFContentStreamPDFDate	PDFObject	PDFStringbuild_obj_dictcreate_dictionary_stringcreate_list_stringiobj_ref)StandardSecurityHandlerc            +          e Zd Zeddddddddddddddfdedededededeeez  d	f   d
ee   dee	e
z     dee   deeeeef      dee   dee   deee      dedeeedf   deeed	f      deedef      dee   dee   dee   ddf*dZy)AnnotationMixinNr   subtypexywidthheightflags.contentsdestactioncolormodification_timetitlequad_pointsborder_widthnameink_list	file_specFileSpec
field_typevaluedefault_appearancereturnc           	         t        d      | _        t        |      | _        d|dd||z
  dd||z   dd|dd	| _        d| d| _        |rt        |      nd | _        || _        t        t        d |D                    | _	        |rt        |d	      nd | _        |	| _        || _        |
rd|
d
    d|
d    d|
d    dnd | _        |rt        |d	      nd | _        |rt!        |d	      nd | _        |rt%        |D cg c]  }|d c}      nd | _        d | _        || _        |r!dt%        |D cg c]  }|d c}      z   dz   nd | _        || _        || _        y c c}w c c}w )NAnnot[z.2f ]z[0 0 c              3   F   K   | ]  }t        j                  |        y wN)r   coerce).0flags     =/DATA/.local/lib/python3.12/site-packages/fpdf/annotations.py	<genexpr>z+AnnotationMixin.__init__.<locals>.<genexpr>B   s     I54>0065s   !T)encryptr   r	      )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.   r/   r0   
quad_pointcoords                          r<   __init__zAnnotationMixin.__init__%   s   . M	G}#waF
3/qU3q3qI	l^1-'14
#tUI5IIJ=E	(D94	:?1U1XJaaz58*A6T385$/d=N*D9TX  KHKjC()KHI 	
 	  8Bc{^BCCcI 	
 % I Cs   >E1E#
)__name__
__module____qualname__DEFAULT_ANNOT_FLAGSstrfloatrF   r   r   r   r   r
   r   r   r   r   r   rS        r<   r   r   $   s    3F"&26#'6:04#15JN046:$(#,0+1&1& 1& 	1&
 1& 1& ^c)3./1& 3-1& {Y./1&  1& eUE1231& $H-1& }1& huo.1& 1&  N$@$FG!1&" 5,-#1&$ E*c/23%1&& SM'1&( })1&* %SM+1&, 
-1&r[   r   c                   0     e Zd ZdZdededdf fdZ xZS )PDFAnnotationz?A PDF annotation that get serialized as an obj<</>>endobj blockargskwargsr1   Nc                 $    t        |   |i | y r8   )superrS   )rP   r^   r_   	__class__s      r<   rS   zPDFAnnotation.__init__\   s    $)&)r[   )rT   rU   rV   __doc__r   rS   __classcell__rb   s   @r<   r]   r]   Y   s%    E*c *S *T * *r[   r]   c                   F    e Zd ZdZdZ	 	 d
ded   dee   defdZdefd	Z	y)AnnotationDictz@A PDF annotation that get serialized as an inline <<dictionary>>)r@   r   rA   rB   rC   rD   rG   r"   rH   r#   rI   rJ   r(   rM   r*   r+   rN   rO   N_security_handlerr   _obj_idr1   c           
          t        t        |       D ci c]  }|t        | |       c}||      }t        |      S c c}w )N)rh   ri   )r   dirgetattrpdf_dict)rP   rh   ri   keyobj_dicts        r<   	serializezAnnotationDict.serializex   sH    
 "03D	:	S'$$$	:/

 !!	 ;s   <c                    t        |       D cg c]  }|j                  d      r| }}|D ci c]  }|t        | |       }}|j                         D ci c]  \  }}t	        |      r|| }}}d| dS c c}w c c}w c c}}w )N__zAnnotationDict(**))rk   
startswithrl   itemscallable)rP   rn   keysdr/   s        r<   __repr__zAnnotationDict.__repr__   s    "4yEyt0DyE045S'$$$5*+'')K)JC8E?S%Z)K"1#Q'' F5Ks   A:A:A?B,BNN)
rT   rU   rV   rc   	__slots__r   intrX   rp   ry   rZ   r[   r<   rg   rg   `   sM    FI. BF!%
"#$=>
" #
" 
	
"(# (r[   rg   c                        e Zd Z	 	 	 	 	 	 	 ddedededee   dee   dee   dee   d	ed
ef fdZ	defdZ
deddfdZdefdZddZ xZS )PDFEmbeddedFileNbasenamer"   desccreation_datemodification_date	mime_typeaf_relationshipcompresschecksumc
                    t         |   ||       t        d      | _        dt	        |      i}
|rt        |d      j                         |
d<   |rt        |d      j                         |
d<   |	rKt        j                  dd	
      }|j                  | j                         |j                         }d| d|
d<   |rt        |      | _        t        |
      | _        || _        || _        d| _        || _        d | _        y )N)r"   r   EmbeddedFilez/SizeT)with_tzz/CreationDatez/ModDatemd5F)usedforsecurity<>z	/CheckSum)ra   rS   r   r@   lenr   rp   hashlibnewupdate	_contents	hexdigestr   rm   params	_basename_desc_globally_enclosed_af_relationship
_file_spec)rP   r   r"   r   r   r   r   r   r   r   r   	file_hashhash_hexrb   s                r<   rS   zPDFEmbeddedFile.__init__   s     	(X>(	%,c(m$<&-mT&J&T&T&VF?#!():D!I!S!S!UF:E5AIT^^, **,H$%hZq/F;	?DLv&&
(,FU.2r[   r1   c                     | j                   S r8   r   rP   s    r<   globally_enclosedz!PDFEmbeddedFile.globally_enclosed   s    &&&r[   r/   c                     || _         y r8   r   )rP   r/   s     r<   set_globally_enclosedz%PDFEmbeddedFile.set_globally_enclosed   s
    "'r[   c                     | j                   S r8   )r   r   s    r<   r   zPDFEmbeddedFile.basename   s    ~~r[   c                     | j                   s1t        | | j                  | j                  | j                        | _         | j                   S r8   )r   r-   r   r   r   r   s    r<   r,   zPDFEmbeddedFile.file_spec   s8    &dnndjj$2G2GDO r[   ) NNNNFF)r1   r-   )rT   rU   rV   rX   bytesr   r   r   boolrS   r   r   r   r,   rd   re   s   @r<   r~   r~      s    
 ,004#'@D33 3 	3
  )3 $H-3 C=3 ""<=3 3 3B'4 '(4 (D (# r[   r~   c            
       X     e Zd Z	 	 ddededee   dee   f fdZedefd       Z	 xZ
S )	r-   embedded_filer   r   r   c                     t         |           t        d      | _        t	        |      | _        t	        |      | _        |rt	        |      | _        |rt        |j                        | _	        || _
        y )NFilespec)ra   rS   r   r@   r   rG   u_fr   r/   a_f_relationship_embedded_file)rP   r   r   r   r   rb   s        r<   rS   zFileSpec.__init__   s`     	$	8$X&!$DI$()>)>$?D!+r[   r1   c                 V    t        dt        | j                  j                        i      S )Nz/F)rm   pdf_refr   idr   s    r<   e_fzFileSpec.e_f   s#    wt':':'='=>?@@r[   rz   )rT   rU   rV   r~   rX   r   r   rS   propertyr   rd   re   s   @r<   r-   r-      s^     #@D,&, , sm	,
 ""<=," AS A Ar[   r-   )'rc   r   r   typingr   r   r   r   r   actionsr
   enumsr   r   r   r   syntaxr   r   r   r   r   r   r   r   rm   r   rL   r   r   
encryptionr   PRINTrW   r   r]   rg   r~   r-   rZ   r[   r<   <module>r      s      @ @     3 &++- 2& 2&j*OY *((_ ((V0& 0fAy Ar[   