U
    ߦwht'                     @   s  U 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 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 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,dS )%    N)ABC)AnyListOptionalTupleUnion   )deprecation_with_replacement)AnnotationFlag)ArrayObjectDictionaryObject)BooleanObjectFloatObject
NameObjectNumberObjectTextStringObject)RectangleObject)
hex_to_rgb   )NO_FLAGSAnnotationDictionary)   
   )	TypeAliasVertex)verticesreturnc                 C   sz   | 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 r!   I/tmp/pip-unpacked-wheel-r8zeli8p/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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_bar)r%   r   c                C   s   |d k	rt || td< d S )Nz/T)r   r   )selfr%   r!   r!   r"   __init__3   s    zMarkupAnnotation.__init__)__name__
__module____qualname____doc__r   strr'   r!   r!   r!   r"   r$   )   s   	r$   c                       sL   e Zd ZdZdedeeeeeeef f e	e
eed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flagsN)recttextr.   r/   kwargsr   c                   sb   t  jf | 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&   r0   r1   r.   r/   r2   	__class__r!   r"   r'   E   s    	zText.__init__)r(   r)   r*   r+   r   r   r   r   floatr,   boolintr   r'   __classcell__r!   r!   r7   r"   r-   8   s   r-   c                       sh   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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_colorN)r1   r0   r>   r?   r@   rA   rB   rC   rD   r2   r   c       	            sL  t  jf |
 td| td< t|| td< d}|rB| d}n
| d}|r\| d}n
| 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	rHt	dd t|	D | td< d S )Nz	/FreeTextr3   r4   zfont: zitalic znormal zbold  z;text-align:left;color:# Zrgr5   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)
r6   r'   r   r   r   updater   r   r   r   )r&   r1   r0   r>   r?   r@   rA   rB   rC   rD   r2   Zfont_strZdefault_appearance_stringstr7   r!   r"   r'   Y   sP    


     

 
zFreeText.__init__)r(   r)   r*   r+   r,   r   r   r   r9   r:   r   r   r'   r<   r!   r!   r7   r"   r=   V   s*   r=   c                
       sB   e Zd Zdeeeeeeeeef f ee	dd fddZ
  ZS )LinerF   N)p1p2r0   r1   r2   r   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 )Nr3   z/Liner4   z/Lr   r   z/LEz/None/ICg      ?r5   )r6   r'   rM   r   r   r   r   r   )r&   rP   rQ   r0   r1   r2   r7   r!   r"   r'      s>       



   zLine.__init__)rF   )r(   r)   r*   r   r   r   r   r9   r,   r   r'   r<   r!   r!   r7   r"   rO      s    rO   c                       s*   e Zd Zee edd fddZ  ZS )PolyLineNr   r2   r   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 coordinatesr3   z	/PolyLine	/Verticesr4   r6   r'   len
ValueErrorappendr   rM   r   r   r   r#   r&   r   r2   Z
coord_listr   r    r7   r!   r"   r'      s        
zPolyLine.__init__)r(   r)   r*   r   r   r   r'   r<   r!   r!   r7   r"   rS      s   rS   c                       sF   e Zd Zddeeeeeeef f ee e	dd fddZ
  ZS )	RectangleNinterior_colorr0   r^   r2   r   c             	      s   d|kr"t ddd |d }|d= t jf | | tdtdtdtdtdt|i |rtd	d
 t|D | td< d S )Ninteriour_colorr^   5.0.0/Type/Annotr3   z/Squarer4   c                 S   s   g | ]}t |qS r!   rG   rH   r!   r!   r"   rK      s     z&Rectangle.__init__.<locals>.<listcomp>rR   r	   r6   r'   rM   r   r   r   r   r&   r0   r^   r2   r7   r!   r"   r'      s$       zRectangle.__init__r(   r)   r*   r   r   r   r9   r   r,   r   r'   r<   r!   r!   r7   r"   r\      s   r\   c                       sH   e Zd Zdddeeeeeeef f eee	e
dd fddZ  ZS )	HighlightZff0000F)highlight_colorprintingN)r0   quad_pointsrh   ri   r2   r   c                   sb   t  jf | | tdtdtdt|td|tdtdd t|D i |r^tj| _	d S )Nr3   z
/Highlightr4   z/QuadPointsrL   c                 S   s   g | ]}t |qS r!   rG   rH   r!   r!   r"   rK      s     z&Highlight.__init__.<locals>.<listcomp>)
r6   r'   rM   r   r   r   r   r
   ZPRINTr/   )r&   r0   rj   rh   ri   r2   r7   r!   r"   r'      s     	    
zHighlight.__init__)r(   r)   r*   r   r   r   r9   r   r,   r:   r   r'   r<   r!   r!   r7   r"   rg      s   rg   c                       sF   e Zd Zddeeeeeeef f ee e	dd fddZ
  ZS )EllipseNr]   r_   c             	      s   d|kr"t ddd |d }|d= t jf | | tdtdtdtdtdt|i |rtd	d
 t|D | td< d S )Nr`   r^   ra   rb   rc   r3   z/Circler4   c                 S   s   g | ]}t |qS r!   rG   rH   r!   r!   r"   rK      s     z$Ellipse.__init__.<locals>.<listcomp>rR   rd   re   r7   r!   r"   r'   	  s$       zEllipse.__init__rf   r!   r!   r7   r"   rk     s   rk   c                       s2   e Zd Zeeeef  edd fddZ  ZS )PolygonNrT   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   rU   rb   rc   r3   z/PolygonrV   z/ITz/PolygonCloudr4   rW   r[   r7   r!   r"   r'   %  s(         
zPolygon.__init__)	r(   r)   r*   r   r   r9   r   r'   r<   r!   r!   r7   r"   rl   $  s   rl   )-sysabcr   typingr   r   r   r   r   _utilsr	   	constantsr
   Zgenericr   r   Zgeneric._baser   r   r   r   r   Zgeneric._rectangler   Zgeneric._utilsr   _baser   r   version_infor   Ztyping_extensionsr9   r   __annotations__r#   r$   r-   r=   rO   rS   r\   rg   rk   rl   r!   r!   r!   r"   <module>   s0    @(