o
    uÃhu%  ã                   @   sv  U d dl Z d dlmZ d dlmZmZ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rUd 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*dS )%é    N)ÚABC)ÚAnyÚOptionalÚUnioné   )Ú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 ]\}}t ||ƒ}t ||ƒ}t||ƒ}t||ƒ}qt||||fƒS )Nr   r   )ÚminÚmaxr   )r   Úx_minÚy_minÚx_maxÚy_maxÚxÚy© r"   ú[/var/www/html/bot/env/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 dd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&   r   c                C   s    |d urt |ƒ| tdƒ< d S d S )Nz/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                       sV   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d	d
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ÚflagsÚrectÚtextr/   r0   Úkwargsr   Nc                   sf   t ƒ jd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/Flagsr"   )Úsuperr(   r   r   r   r
   r   )r'   r1   r2   r/   r0   r3   ©Ú	__class__r"   r#   r(   D   s   	zText.__init__)r)   r*   r+   r,   r   r   r   ÚtupleÚfloatr-   ÚboolÚintr   r(   Ú__classcell__r"   r"   r8   r#   r.   7   s"    úýüûúùør.   c                       s|   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dd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_colorr2   r1   rD   rE   rF   rG   rH   rI   rJ   r3   r   Nc       	            sP  t ƒ jdi |
¤Ž tdƒ| tdƒ< t|ƒ| tdƒ< d}|r#|› d}n|› d}|r0|› d}n|› d}|› |› d|› }|› d	|› }d
}|r\t|ƒD ]	}|› |› d}qM|› 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 d S )Nz	/FreeTextr4   r5   zfont: zitalic znormal zbold ú z;text-align:left;color:#Ú Úrgr6   z/DSz/DAz/Wr   z/BSc                 S   ó   g | ]}t |ƒ‘qS r"   ©r   ©Ú.0Únr"   r"   r#   Ú
<listcomp>‘   ó    z%FreeText.__init__.<locals>.<listcomp>ú/Cr"   )
r7   r(   r   r   r   Úupdater   r	   r   r   )r'   r2   r1   rD   rE   rF   rG   rH   rI   rJ   r3   Úfont_strÚdefault_appearance_stringÚstr8   r"   r#   r(   X   sF   


úÿ
þÿÿÿ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                       sN   e Zd Z	ddededeeeeeeef f dede	ddf‡ fd	d
„Z
‡  ZS )ÚLinerL   Úp1Úp2r1   r2   r3   r   Nc                    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 )Nr4   z/Liner5   z/Lr   r   z/LEz/Noneú/ICg      à?r6   r"   )r7   r(   rV   r   r   r   r   r   )r'   r[   r\   r1   r2   r3   r8   r"   r#   r(   –   s2   



üÿþÿýÿèÿzLine.__init__)rL   )r)   r*   r+   r   r   r   r:   r;   r-   r   r(   r>   r"   r"   r8   r#   rZ   •   s    ûþýüûúùrZ   c                       s.   e Zd Zdee deddf‡ fdd„Z‡  ZS )ÚPolyLiner   r3   r   Nc              
      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 coordinatesr4   z	/PolyLineú	/Verticesr5   r"   ©r7   r(   ÚlenÚ
ValueErrorÚappendr   rV   r   r   r   r$   ©r'   r   r3   Ú
coord_listr    r!   r8   r"   r#   r(   ¾   s   ýÿzPolyLine.__init__)r)   r*   r+   Úlistr   r   r(   r>   r"   r"   r8   r#   r^   ½   s    þýür^   c                	       óL   e Zd Zddœdeeeeeeef f dee de	ddf‡ fdd„Z
‡  ZS )	Ú	RectangleN©Úinterior_colorr1   rk   r3   r   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ú/Annotr4   z/Squarer5   c                 S   rN   r"   rO   rP   r"   r"   r#   rS   æ   rT   z&Rectangle.__init__.<locals>.<listcomp>r]   r"   ©r7   r(   rV   r   r   r   r   ©r'   r1   rk   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#   ri   Ó   ó    üþüûúri   c                       sR   e Zd Zdddœdeeeeeeef f dedede	de
d	d
f‡ fdd„Z‡  ZS )Ú	HighlightÚff0000F)Úhighlight_colorÚprintingr1   Úquad_pointsru   rv   r3   r   Nc                   sj   t ƒ jdi |¤Ž |  tdƒtdƒtdƒt|ƒtdƒ|tdƒtdd„ t|ƒD ƒƒi¡ |r3tj| _	d S d S )	Nr4   z
/Highlightr5   z/QuadPointsrU   c                 S   rN   r"   rO   rP   r"   r"   r#   rS   û   rT   z&Highlight.__init__.<locals>.<listcomp>r"   )
r7   r(   rV   r   r   r   r   r   ÚPRINTr0   )r'   r1   rw   ru   rv   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#   rs   ê   s     úýüûúùørs   c                	       rh   )	ÚEllipseNrj   r1   rk   r3   r   c             	      rl   )
Nrm   rn   r4   z/Circler5   c                 S   rN   r"   rO   rP   r"   r"   r#   rS     rT   z$Ellipse.__init__.<locals>.<listcomp>r]   r"   ro   rp   r8   r"   r#   r(     s   ýÿÿÿzEllipse.__init__rq   r"   r"   r8   r#   ry     rr   ry   c                       s6   e Zd Zdeeeef  deddf‡ fdd„Z‡  ZS )ÚPolygonr   r3   r   Nc                    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   r_   rm   rn   r4   z/Polygonr`   z/ITz/PolygonCloudr5   r"   ra   re   r8   r"   r#   r(     s   ûÿzPolygon.__init__)	r)   r*   r+   rg   r:   r;   r   r(   r>   r"   r"   r8   r#   rz     s    þýürz   )+ÚsysÚabcr   Útypingr   r   r   Ú	constantsr   Úgenericr   r	   Úgeneric._baser
   r   r   r   r   Úgeneric._rectangler   Úgeneric._utilsr   Ú_baser   r   Úversion_infor   Útyping_extensionsr:   r;   r   Ú__annotations__rg   r$   r%   r.   r?   rZ   r^   ri   rs   ry   rz   r"   r"   r"   r#   Ú<module>   s.   
 @(