o
    uh                     @   s@   d dl mZmZ ddlmZmZ ddlmZ G dd deZdS )    )AnyUnion   )FloatObjectNumberObject)ArrayObjectc                   @   s(  e Zd ZdZded eeeeef f ddfddZdedee	e
f fdd	Zd
ededd fddZdefddZede	fddZejdeddfddZede	fddZejdeddfddZede	fddZejdeddfddZede	fddZejdeddfddZedeeef fddZejdeeef ddfddZedeeef fd d!Zejdeeef ddfd"d!Zedeeef fd#d$Zejdeeef ddfd%d$Zedeeef fd&d'Zejdeeef ddfd(d'Zedefd)d*Zedefd+d,ZdS )-RectangleObjectap  
    This class is used to represent *page boxes* in pypdf.

    These boxes include:

    * :attr:`artbox <pypdf._page.PageObject.artbox>`
    * :attr:`bleedbox <pypdf._page.PageObject.bleedbox>`
    * :attr:`cropbox <pypdf._page.PageObject.cropbox>`
    * :attr:`mediabox <pypdf._page.PageObject.mediabox>`
    * :attr:`trimbox <pypdf._page.PageObject.trimbox>`
    arrreturnNc                    s.   t |dksJ t  fdd|D  d S )N   c                    s   g | ]}  |qS  _ensure_is_number.0xselfr   N/var/www/html/bot/env/lib/python3.10/site-packages/pypdf/generic/_rectangle.py
<listcomp>   s    z,RectangleObject.__init__.<locals>.<listcomp>)lenr   __init__)r   r	   r   r   r   r      s   zRectangleObject.__init__valuec                 C   s   t |ttfst|}|S N)
isinstancer   r   r   r   r   r   r   r      s   z!RectangleObject._ensure_is_numbersxsyc                 C   s8   t t| j| t| j| t| j| t| j| fS r   )r   floatleftbottomrighttop)r   r   r   r   r   r   scale!   s   zRectangleObject.scalec                 C   s   dt | dS )NzRectangleObject())listr   r   r   r   __repr__+   s   zRectangleObject.__repr__c                 C      | d S Nr   r   r   r   r   r   r   .      zRectangleObject.leftfc                 C      t || d< d S r(   r   r   r*   r   r   r   r   2      c                 C   r'   Nr   r   r   r   r   r   r    6   r)   zRectangleObject.bottomc                 C   r+   r/   r,   r-   r   r   r   r    :   r.   c                 C   r'   N   r   r   r   r   r   r!   >   r)   zRectangleObject.rightc                 C   r+   r0   r,   r-   r   r   r   r!   B   r.   c                 C   r'   N   r   r   r   r   r   r"   F   r)   zRectangleObject.topc                 C   r+   r2   r,   r-   r   r   r   r"   J   r.   c                 C      | j | jfS )zj
        Property to read and modify the lower left coordinate of this box
        in (x,y) form.
        )r   r    r   r   r   r   
lower_leftN      zRectangleObject.lower_leftc                    "    fdd|D \ d<  d< d S )Nc                 3       | ]}  |V  qd S r   r   r   r   r   r   	<genexpr>X       z-RectangleObject.lower_left.<locals>.<genexpr>r   r   r   r   r   r   r   r5   V      "c                 C   r4   )zk
        Property to read and modify the lower right coordinate of this box
        in (x,y) form.
        )r!   r    r   r   r   r   lower_rightZ   r6   zRectangleObject.lower_rightc                    r7   )Nc                 3   r8   r   r   r   r   r   r   r9   d   r:   z.RectangleObject.lower_right.<locals>.<genexpr>r1   r   r   r   r   r   r   r<   b   r;   c                 C   r4   )zj
        Property to read and modify the upper left coordinate of this box
        in (x,y) form.
        )r   r"   r   r   r   r   
upper_leftf   r6   zRectangleObject.upper_leftc                    r7   )Nc                 3   r8   r   r   r   r   r   r   r9   p   r:   z-RectangleObject.upper_left.<locals>.<genexpr>r   r3   r   r   r   r   r   r=   n   r;   c                 C   r4   )zk
        Property to read and modify the upper right coordinate of this box
        in (x,y) form.
        )r!   r"   r   r   r   r   upper_rightr   r6   zRectangleObject.upper_rightc                    r7   )Nc                 3   r8   r   r   r   r   r   r   r9   |   r:   z.RectangleObject.upper_right.<locals>.<genexpr>r1   r3   r   r   r   r   r   r>   z   r;   c                 C      | j | j S r   )r!   r   r   r   r   r   width~      zRectangleObject.widthc                 C   r?   r   )r"   r    r   r   r   r   height   rA   zRectangleObject.height)__name__
__module____qualname____doc__r   tupler   r   r   r   r   r   r#   strr&   propertyr   setterr    r!   r"   r5   r<   r=   r>   r@   rB   r   r   r   r   r      s\    

r   N)	typingr   r   _baser   r   _data_structuresr   r   r   r   r   r   <module>   s    