a
    còfr&  ã                   @   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é   )Údeprecate_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"   úb/home/httpd/docs/test/DocsMgr/lib/python3.9/site-packages/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 urt |ƒ| tdƒ< d S )NÚ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                       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!   Útextr0   r1   Úkwargsc                   sf   t ƒ jf i |¤Ž 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!   r2   r0   r1   r3   ©Ú	__class__r"   r#   r)   D   s    	zText.__init__)r*   r+   r,   r-   r   r   r   r   Úfloatr.   ÚboolÚintr   r)   Ú__classcell__r"   r"   r8   r#   r/   8   s   úùr/   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14ptÚ000000Úffffff)ÚfontÚboldÚitalicÚ	font_sizeÚ
font_colorÚborder_colorÚbackground_color)
r2   r!   rA   rB   rC   rD   rE   rF   rG   r3   c       	            s@  t ƒ jf i |
¤Ž tdƒ| tdƒ< t|ƒ| tdƒ< d}|du rH|› d�}|du rZ|› 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 u �rttdƒtdƒiƒ| tdƒ< |	d u�r<t	dd„ t|	ƒD ƒƒ| tdƒ< d S )Nz	/FreeTextr4   r5   zfont: Tzbold zitalic ú z;text-align:left;color:#Ú Zrgr6   z/DSz/DAz/Wr   z/BSc                 S   s   g | ]}t |ƒ‘qS r"   ©r   ©Ú.0Únr"   r"   r#   Ú
<listcomp>Œ   ó    z%FreeText.__init__.<locals>.<listcomp>ú/C)
r7   r)   r   r   r   Úupdater   r   r   r   )r(   r2   r!   rA   rB   rC   rD   rE   rF   rG   r3   Zfont_strZdefault_appearance_stringÚstr8   r"   r#   r)   X   s@    


úÿ

þÿ
ÿzFreeText.__init__)r*   r+   r,   r-   r.   r   r   r   r:   r;   r   r   r)   r=   r"   r"   r8   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 )ÚLinerI   )Úp1Úp2r!   r2   r3   c                    s®   t ƒ jf 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 )Nr4   z/Liner5   z/Lr   r   z/LEz/Noneú/ICg      à?r6   )r7   r)   rQ   r   r   r   r   r   )r(   rT   rU   r!   r2   r3   r8   r"   r#   r)   ‘   s2    



üÿþÿýÿèÿzLine.__init__)rI   )r*   r+   r,   r   r   r   r   r:   r.   r   r)   r=   r"   r"   r8   r#   rS   �   s    ûúrS   c                       s(   e Zd Zee edœ‡ fdd„Z‡  ZS )ÚPolyLine©r   r3   c              
      sŠ   t ƒ jf 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 coordinatesr4   z	/PolyLineú	/Verticesr5   ©r7   r)   ÚlenÚ
ValueErrorÚappendr   rQ   r   r   r   r$   ©r(   r   r3   Z
coord_listr   r    r8   r"   r#   r)   ¹   s    ýÿzPolyLine.__init__)r*   r+   r,   r   r   r   r)   r=   r"   r"   r8   r#   rW   ¸   s   ýrW   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©Úinterior_color©r!   rb   r3   c             	      sˆ   d|v r"t dddƒ |d }|d= tƒ jf i |¤Ž |  tdƒtdƒtdƒtdƒtdƒt|ƒi¡ |r„td	d
„ t|ƒD ƒƒ| tdƒ< d S )NÚinteriour_colorrb   ú6.0.0ú/Typeú/Annotr4   z/Squarer5   c                 S   s   g | ]}t |ƒ‘qS r"   rJ   rK   r"   r"   r#   rN   å   rO   z&Rectangle.__init__.<locals>.<listcomp>rV   ©r	   r7   r)   rQ   r   r   r   r   ©r(   r!   rb   r3   r8   r"   r#   r)   Ï   s    ýÿÿzRectangle.__init__©r*   r+   r,   r   r   r   r:   r   r.   r   r)   r=   r"   r"   r8   r#   r`   Î   s   üûr`   c                       sF   e Zd Zdddœeeeeeeef f eee	e
dœ‡ fdd„Z‡  ZS )Ú	HighlightÚff0000F)Úhighlight_colorÚprinting)r!   Úquad_pointsrm   rn   r3   c                   sf   t ƒ jf i |¤Ž |  tdƒtdƒtdƒt|ƒtdƒ|tdƒtdd„ t|ƒD ƒƒi¡ |rbtj| _	d S )Nr4   z
/Highlightr5   z/QuadPointsrP   c                 S   s   g | ]}t |ƒ‘qS r"   rJ   rK   r"   r"   r#   rN   ú   rO   z&Highlight.__init__.<locals>.<listcomp>)
r7   r)   rQ   r   r   r   r   r
   ZPRINTr1   )r(   r!   ro   rm   rn   r3   r8   r"   r#   r)   ê   s    	ÿüÿ
zHighlight.__init__)r*   r+   r,   r   r   r   r:   r   r.   r;   r   r)   r=   r"   r"   r8   r#   rk   é   s   úùrk   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 )ÚEllipseNra   rc   c             	      sˆ   d|v r"t dddƒ |d }|d= tƒ jf i |¤Ž |  tdƒtdƒtdƒtdƒtdƒt|ƒi¡ |r„td	d
„ t|ƒD ƒƒ| tdƒ< d S )Nrd   rb   re   rf   rg   r4   z/Circler5   c                 S   s   g | ]}t |ƒ‘qS r"   rJ   rK   r"   r"   r#   rN     rO   z$Ellipse.__init__.<locals>.<listcomp>rV   rh   ri   r8   r"   r#   r)     s    ýÿÿzEllipse.__init__rj   r"   r"   r8   r#   rp     s   üûrp   c                       s0   e Zd Zeeeef  edœ‡ fdd„Z‡  ZS )ÚPolygonrX   c                    s¢   t ƒ jf 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   rY   rf   rg   r4   z/PolygonrZ   z/ITz/PolygonCloudr5   r[   r_   r8   r"   r#   r)     s    ûÿzPolygon.__init__)	r*   r+   r,   r   r   r:   r   r)   r=   r"   r"   r8   r#   rq     s   ýrq   )-Ú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_extensionsr:   r   Ú__annotations__r$   r%   r/   r>   rS   rW   r`   rk   rp   rq   r"   r"   r"   r#   Ú<module>   s.   
;(