U
    <ßôg„'  ã                   @   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r¾d 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   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-wu2fni14/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__4   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)r!   Útextr/   r0   Ú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'   r!   r1   r/   r0   r2   ©Ú	__class__r"   r#   r(   F   s    	zText.__init__)r)   r*   r+   r,   r   r   r   r   Úfloatr-   ÚboolÚintr   r(   Ú__classcell__r"   r"   r7   r#   r.   9   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   r!   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
}|r´t|ƒ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   r!   r>   r?   r@   rA   rB   rC   rD   r2   Zfont_strZdefault_appearance_stringÚstr7   r"   r#   r(   Z   sP    


     úÿ

 þÿ
ÿzFreeText.__init__)r)   r*   r+   r,   r-   r   r   r   r9   r:   r   r   r(   r<   r"   r"   r7   r#   r=   W   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Úp2r!   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   r!   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©r!   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¡ |r€t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'   r!   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)r!   Ú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PRINTr0   )r'   r!   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¡ |r€t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    @(