o
    >eM-                     @   s  U d dl Z d dlmZ d dlmZmZmZmZmZm	Z	 ddl
mZmZ ddlmZmZmZmZmZ ddlmZmZ ddlmZ dd	lmZ d
dlmZmZ e jdd dkr]d dlmZ nd dlmZ ee e f Z!ee"d< dee! def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'G dd de$Z(G dd de$Z)G dd  d e$Z*G d!d" d"e$Z+G d#d$ d$e$Z,G d%d& d&e$Z-dS )'    N)ABC)TYPE_CHECKINGAnyListOptionalTupleUnion   )ArrayObjectDictionaryObject)BooleanObjectFloatObject
NameObjectNumberObjectTextStringObject)DEFAULT_FITFit)RectangleObject)
hex_to_rgb   )NO_FLAGSAnnotationDictionary)   
   )	TypeAliasVertexverticesreturnc                 C   s~   | d d | d d }}| d d | d d }}| D ]\}}t ||}t ||}t||}t||}qt||||f}|S )Nr   r   )minmaxr   )r   x_miny_minx_maxy_maxxyrect r'   f/var/www/html/humari/django-venv/lib/python3.10/site-packages/pypdf/annotations/_markup_annotations.py_get_bounding_rectangle   s   


r)   c                   @   s(   e Zd ZdZdddee fddZdS )MarkupAnnotationz
    Base class for all markup annotations.

    Args:
        title_bar: Text to be displayed in the title bar of the annotation;
            by convention this is the name of the author
    N)	title_barr+   c                C   s    |d urt || td< d S d S )NT)r   r   )selfr+   r'   r'   r(   __init__2   s   zMarkupAnnotation.__init__)__name__
__module____qualname____doc__r   strr.   r'   r'   r'   r(   r*   )   s    r*   c                       sR   e Zd ZdZdeddeeeeeeef f de	de
dedef
 fd	d
Z  ZS )Textz
    A text annotation.

    Args:
        rect: array of four integers ``[xLL, yLL, xUR, yUR]``
            specifying the clickable rectangular area
        text: The text that is added to the document
        open:
        flags:
    F)openflagsr&   textr5   r6   kwargsc                   sl   t  jdi | t   td| td< t|| td< t|| td< t|| td< t|| td< d S )Nz/Text/Subtype/Rect	/Contentsz/Openz/Flagsr'   )superr.   r   r   r   r   r   )r-   r&   r7   r5   r6   r8   	__class__r'   r(   r.   C   s   	zText.__init__)r/   r0   r1   r2   r   r   r   r   floatr3   boolintr   r.   __classcell__r'   r'   r=   r(   r4   7   s    r4   c                       sx   e Zd ZdZddddddddded	eeeeeeef f d
ede	de	dedede
e de
e def fddZ  ZS )FreeTextzA FreeText annotation	HelveticaF14pt000000ffffff)fontbolditalic	font_size
font_colorborder_colorbackground_colorr7   r&   rH   rI   rJ   rK   rL   rM   rN   r8   c       	            s@  t  jdi |
 td| td< t|| td< d}|du r$| d}|du r-| d}| | d| }| d	| }d
}|rTt|D ]	}| | d}qE| d}| tdtdtdt|tdt|tdt|tdt|i |d u rttdtdi| td< |	d urt	dd t|	D | td< d S d S )Nz	/FreeTextr9   r:   zfont: Tzbold zitalic  z;text-align:left;color:# rgr;   z/DSz/DAz/Wr   z/BSc                 S      g | ]}t |qS r'   r   .0nr'   r'   r(   
<listcomp>       z%FreeText.__init__.<locals>.<listcomp>/Cr'   )
r<   r.   r   r   r   updater   r   r   r
   )r-   r7   r&   rH   rI   rJ   rK   rL   rM   rN   r8   font_strdefault_appearance_stringstr=   r'   r(   r.   X   sB   



zFreeText.__init__)r/   r0   r1   r2   r3   r   r   r   r?   r@   r   r   r.   rB   r'   r'   r=   r(   rC   U   s<    	
rC   c                       sJ   e Zd Z	d	dededeeeeeeef f dede	f
 fddZ
  ZS )
LinerP   p1p2r&   r7   r8   c                    s   t  jdi | | tdtdtdt|tdtt|d t|d t|d t|d gtdttd td gtdttd	td	td	gtd
t|i d S )Nr9   z/Liner:   z/Lr   r   z/LE/ICg      ?r;   r'   )r<   r.   rZ   r   r   r
   r   r   )r-   r_   r`   r&   r7   r8   r=   r'   r(   r.      s2   



zLine.__init__)rP   )r/   r0   r1   r   r   r   r   r?   r3   r   r.   rB   r'   r'   r=   r(   r^      s    r^   c                       s*   e Zd Zdee def fddZ  ZS )PolyLiner   r8   c              
      s   t  jdi | t|dkrtdg }|D ]\}}|t| |t| q| tdtdtdt|tdt	t
|i d S )Nr   6A polygon needs at least 1 vertex with two coordinatesr9   z	/PolyLine	/Verticesr:   r'   r<   r.   len
ValueErrorappendr   rZ   r   r
   r   r)   r-   r   r8   
coord_listr$   r%   r=   r'   r(   r.      s   zPolyLine.__init__)r/   r0   r1   r   r   r   r.   rB   r'   r'   r=   r(   rb      s    rb   c                	       H   e Zd Zdddeeeeeeef f dee de	f fddZ
  ZS )	RectangleNinteriour_colorr&   rn   r8   c             	      j   t  jd	i | | tdtdtdtdtdt|i |r3tdd t|D | td< d S d S )
N/Type/Annotr9   z/Squarer:   c                 S   rR   r'   rS   rT   r'   r'   r(   rW      rX   z&Rectangle.__init__.<locals>.<listcomp>ra   r'   r<   r.   rZ   r   r   r
   r   r-   r&   rn   r8   r=   r'   r(   r.         zRectangle.__init__r/   r0   r1   r   r   r   r?   r   r3   r   r.   rB   r'   r'   r=   r(   rl          rl   c                	       sH   e Zd Zdddeeeeeeef f dedede	f fddZ
  ZS )		Highlightff0000)highlight_colorr&   quad_pointsry   r8   c                   sZ   t  jdi | | tdtdtdt|td|tdtdd t|D i d S )	Nr9   z
/Highlightr:   z/QuadPointsrY   c                 S   rR   r'   rS   rT   r'   r'   r(   rW      rX   z&Highlight.__init__.<locals>.<listcomp>r'   rr   )r-   r&   rz   ry   r8   r=   r'   r(   r.      s   zHighlight.__init__)r/   r0   r1   r   r   r   r?   r
   r3   r   r.   rB   r'   r'   r=   r(   rw      s    rw   c                	       rk   )EllipseNrm   r&   rn   r8   c             	      ro   )
Nrp   rq   r9   z/Circler:   c                 S   rR   r'   rS   rT   r'   r'   r(   rW     rX   z$Ellipse.__init__.<locals>.<listcomp>ra   r'   rr   rs   r=   r'   r(   r.      rt   zEllipse.__init__ru   r'   r'   r=   r(   r{      rv   r{   c                       s2   e Zd Zdeeeef  def fddZ  ZS )Polygonr   r8   c                    s   t  jdi | t|dkrtdg }|D ]\}}|t| |t| q| tdtdtdtdtdt|tdtd	td
t	t
|i d S )Nr   rc   rp   rq   r9   z/Polygonrd   z/ITPolygonCloudr:   r'   re   ri   r=   r'   r(   r.     s   zPolygon.__init__)	r/   r0   r1   r   r   r?   r   r.   rB   r'   r'   r=   r(   r|     s    r|   c                       sb   e Zd Zdddeddeeeeeeef f dee	 dee
 dee dedef fd	d
Z  ZS )LinkN)borderurltarget_page_indexfitr&   r   r   r   r   r8   c                   s^  t  jdi | trddlm} |d u}|d u}	|s!|	s!td|r/|	r/td| d| |d urUdd |d d D }
t|d	krTtd
d |d D }|
| nt	dgd }
| 
tdtdtdtdtdt|tdt|
i |rttdtdtdtdtdt|i| td< |	rtt	|t|j|jd}|| td< d S d S )Nr	   )BorderArrayTypezHEither 'url' or 'target_page_index' have to be provided. Both were None.z=Either 'url' or 'target_page_index' have to be provided. url=z, target_page_index=c                 S   rR   r'   r   rT   r'   r'   r(   rW   H  rX   z!Link.__init__.<locals>.<listcomp>r      c                 S   rR   r'   r   rT   r'   r'   r(   rW   J  rX   r   rp   rq   r9   z/Linkr:   z/Borderz/Sz/URIz/Actionz/A)r   r   fit_argsz/Destr'   )r<   r.   r   typesr   rg   rf   r
   rh   r   rZ   r   r   r   r   fit_typer   )r-   r&   r   r   r   r   r8   r   is_externalis_internal
border_arrdash_patterndest_deferredr=   r'   r(   r.   ,  s^   

zLink.__init__)r/   r0   r1   r   r   r   r   r?   r   r
   r3   rA   r   r   r.   rB   r'   r'   r=   r(   r~   +  s$    r~   ).sysabcr   typingr   r   r   r   r   r   genericr
   r   generic._baser   r   r   r   r   generic._fitr   r   generic._rectangler   generic._utilsr   _baser   r   version_infor   typing_extensionsr?   r   __annotations__r)   r*   r4   rC   r^   rb   rl   rw   r{   r|   r~   r'   r'   r'   r(   <module>   s0   
  ;(