U
    gX-                     @   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rd dlmZ nd dlmZ ee e f Z!ee"d< ee! e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'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 ]0\}}t ||}t ||}t||}t||}q8t||||f}|S )Nr   r   )minmaxr   )r   Zx_minZy_minZx_maxZy_maxxyrect r#   I/tmp/pip-unpacked-wheel-z3c9upm3/pypdf/annotations/_markup_annotations.py_get_bounding_rectangle   s    


r%   c                   @   s(   e Zd ZdZddee d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_barc                C   s   |d k	rt || td< 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                       sJ   e Zd ZdZdedeeeeeeef f e	e
eed 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flags)r"   textr1   r2   kwargsc                   sh   t  jf | 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/Flags)superr*   r   r   r   r   r   )r)   r"   r3   r1   r2   r4   	__class__r#   r$   r*   C   s    	zText.__init__)r+   r,   r-   r.   r   r   r   r   floatr/   boolintr   r*   __classcell__r#   r#   r9   r$   r0   7   s   r0   c                       sf   e Zd ZdZddddddddeeeeeeeef f ee	e	eee
e e
e ed
 fd	d
Z  ZS )FreeTextzA FreeText annotationZ	HelveticaFZ14ptZ000000Zffffff)fontbolditalic	font_size
font_colorborder_colorbackground_color)
r3   r"   r@   rA   rB   rC   rD   rE   rF   r4   c       	            s<  t  jf |
 td| td< t|| td< d}|dkrD| d}|dkrV| d}| | d| }| d	| }d
}|rt|D ]}| | d}q| d}| tdtdtdt|tdt|tdt|tdt|i |d krttdtdi| td< |	d k	r8t	dd t|	D | td< d S )Nz	/FreeTextr5   r6   zfont: Tzbold zitalic  z;text-align:left;color:# Zrgr7   z/DSz/DAz/Wr   z/BSc                 S   s   g | ]}t |qS r#   r   .0nr#   r#   r$   
<listcomp>   s     z%FreeText.__init__.<locals>.<listcomp>/C)
r8   r*   r   r   r   updater   r   r   r
   )r)   r3   r"   r@   rA   rB   rC   rD   rE   rF   r4   Zfont_strZdefault_appearance_stringstr9   r#   r$   r*   X   sL    


     

 
zFreeText.__init__)r+   r,   r-   r.   r/   r   r   r   r;   r<   r   r   r*   r>   r#   r#   r9   r$   r?   U   s(   r?   c                
       s@   e Zd Zdeeeeeeeeef f ee	d fddZ
  ZS )LinerH   )p1p2r"   r3   r4   c                    s   t  jf | | 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 )Nr5   z/Liner6   z/Lr   r   z/LEz/None/ICg      ?r7   )r8   r*   rO   r   r   r
   r   r   )r)   rR   rS   r"   r3   r4   r9   r#   r$   r*      s>       



   zLine.__init__)rH   )r+   r,   r-   r   r   r   r   r;   r/   r   r*   r>   r#   r#   r9   r$   rQ      s    rQ   c                       s(   e Zd Zee ed fddZ  ZS )PolyLiner   r4   c              
      s   t  jf | 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 coordinatesr5   z	/PolyLine	/Verticesr6   r8   r*   len
ValueErrorappendr   rO   r   r
   r   r%   r)   r   r4   Z
coord_listr    r!   r9   r#   r$   r*      s        
zPolyLine.__init__)r+   r,   r-   r   r   r   r*   r>   r#   r#   r9   r$   rU      s   rU   c                       sD   e Zd Zddeeeeeeef f ee e	d fddZ
  ZS )	RectangleNinteriour_colorr"   r`   r4   c             	      sb   t  jf | | tdtdtdtdtdt|i |r^tdd t|D | td< d S )	N/Type/Annotr5   z/Squarer6   c                 S   s   g | ]}t |qS r#   rI   rJ   r#   r#   r$   rM      s     z&Rectangle.__init__.<locals>.<listcomp>rT   r8   r*   rO   r   r   r
   r   r)   r"   r`   r4   r9   r#   r$   r*      s       zRectangle.__init__r+   r,   r-   r   r   r   r;   r   r/   r   r*   r>   r#   r#   r9   r$   r^      s   r^   c                       sB   e Zd Zddeeeeeeef f eee	d fddZ
  ZS )	HighlightZff0000)highlight_color)r"   quad_pointsrh   r4   c                   sV   t  jf | | tdtdtdt|td|tdtdd t|D i d S )Nr5   z
/Highlightr6   z/QuadPointsrN   c                 S   s   g | ]}t |qS r#   rI   rJ   r#   r#   r$   rM      s     z&Highlight.__init__.<locals>.<listcomp>rd   )r)   r"   ri   rh   r4   r9   r#   r$   r*      s        zHighlight.__init__)r+   r,   r-   r   r   r   r;   r
   r/   r   r*   r>   r#   r#   r9   r$   rg      s   rg   c                       sD   e Zd Zddeeeeeeef f ee e	d fddZ
  ZS )EllipseNr_   ra   c             	      sb   t  jf | | tdtdtdtdtdt|i |r^tdd t|D | td< d S )	Nrb   rc   r5   z/Circler6   c                 S   s   g | ]}t |qS r#   rI   rJ   r#   r#   r$   rM     s     z$Ellipse.__init__.<locals>.<listcomp>rT   rd   re   r9   r#   r$   r*      s       zEllipse.__init__rf   r#   r#   r9   r$   rj      s   rj   c                       s0   e Zd Zeeeef  ed fddZ  ZS )PolygonrV   c                    s   t  jf | 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   rW   rb   rc   r5   z/PolygonrX   z/ITz/PolygonCloudr6   rY   r]   r9   r#   r$   r*     s(         
zPolygon.__init__)	r+   r,   r-   r   r   r;   r   r*   r>   r#   r#   r9   r$   rk     s   rk   c                       sX   e Zd Zdddedeeeeeeef f ee	 ee
 ee eed fddZ  ZS )LinkN)borderurltarget_page_indexfit)r"   rm   rn   ro   rp   r4   c                   sZ  t  jf | trddlm} |d k	}|d k	}	|s>|	s>td|rZ|	rZtd| d| |d k	rdd |d d D }
t|d	krtd
d |d D }|
| nt	dgd }
| 
tdtdtdtdtdt|tdt|
i |r(ttdtdtdtdtdt|i| td< |	rVtt	|t|j|jd}|| td< 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   s   g | ]}t |qS r#   r   rJ   r#   r#   r$   rM   H  s     z!Link.__init__.<locals>.<listcomp>r      c                 S   s   g | ]}t |qS r#   rr   rJ   r#   r#   r$   rM   J  s     r   rb   rc   r5   z/Linkr6   z/Borderz/Sz/URIz/Actionz/A)ro   rp   fit_argsz/Dest)r8   r*   r   typesrq   r[   rZ   r
   r\   r   rO   r   r   r   r   Zfit_typert   )r)   r"   rm   rn   ro   rp   r4   rq   Zis_externalZis_internalZ
border_arrZdash_patternZdest_deferredr9   r#   r$   r*   ,  s`    
       zLink.__init__)r+   r,   r-   r   r   r   r   r;   r   r
   r/   r=   r   r   r*   r>   r#   r#   r9   r$   rl   +  s   rl   ).sysabcr   typingr   r   r   r   r   r   Zgenericr
   r   Zgeneric._baser   r   r   r   r   Zgeneric._fitr   r   Zgeneric._rectangler   Zgeneric._utilsr   _baser   r   version_infor   Ztyping_extensionsr;   r   __annotations__r%   r&   r0   r?   rQ   rU   r^   rg   rj   rk   rl   r#   r#   r#   r$   <module>   s0     ;(