U
    <g                     @   sD   d dl mZ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TupleUnion   )FloatObjectNumberObject)ArrayObjectc                   @   s  e Zd ZdZed eeeeef f ddddZeee	e
f dddZeed d	d
dZedddZee	dddZejeddddZee	dddZejeddddZee	dddZejeddddZee	dddZejeddddZeeeef dddZejeeef ddddZeeeef ddd Zejeeef ddd!d Zeeeef dd"d#Zejeeef ddd$d#Zeeeef dd%d&Zejeeef ddd'd&Zeedd(d)Zeed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>`
    N)arrreturnc                    s.   t |dkstt  fdd|D  d S )N   c                    s   g | ]}  |qS  _ensure_is_number.0xselfr   </tmp/pip-unpacked-wheel-wu2fni14/pypdf/generic/_rectangle.py
<listcomp>   s     z,RectangleObject.__init__.<locals>.<listcomp>)lenAssertionErrorr   __init__)r   r
   r   r   r   r      s    zRectangleObject.__init__)valuer   c                 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syr   c                 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.scale)r   c                 C   s   dt | dS )NzRectangleObject())listr   r   r   r   __repr__+   s    zRectangleObject.__repr__c                 C   s   | d S Nr   r   r   r   r   r   r!   .   s    zRectangleObject.left)fr   c                 C   s   t || d< d S r)   r   r   r*   r   r   r   r!   2   s    c                 C   s   | d S Nr   r   r   r   r   r   r"   6   s    zRectangleObject.bottomc                 C   s   t || d< d S r-   r+   r,   r   r   r   r"   :   s    c                 C   s   | d S N   r   r   r   r   r   r#   >   s    zRectangleObject.rightc                 C   s   t || d< d S r.   r+   r,   r   r   r   r#   B   s    c                 C   s   | d S N   r   r   r   r   r   r$   F   s    zRectangleObject.topc                 C   s   t || d< d S r0   r+   r,   r   r   r   r$   J   s    c                 C   s   | 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   s    zRectangleObject.lower_leftc                    s"    fdd|D \ d<  d< d S )Nc                 3   s   | ]}  |V  qd S r   r   r   r   r   r   	<genexpr>X   s     z-RectangleObject.lower_left.<locals>.<genexpr>r   r   r   r   r   r   r   r2   V   s    c                 C   s   | j | jfS )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   s    zRectangleObject.lower_rightc                    s"    fdd|D \ d<  d< d S )Nc                 3   s   | ]}  |V  qd S r   r   r   r   r   r   r3   d   s     z.RectangleObject.lower_right.<locals>.<genexpr>r/   r   r   r   r   r   r   r4   b   s    c                 C   s   | j | jfS )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   s    zRectangleObject.upper_leftc                    s"    fdd|D \ d<  d< d S )Nc                 3   s   | ]}  |V  qd S r   r   r   r   r   r   r3   p   s     z-RectangleObject.upper_left.<locals>.<genexpr>r   r1   r   r   r   r   r   r5   n   s    c                 C   s   | j | jfS )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   s    zRectangleObject.upper_rightc                    s"    fdd|D \ d<  d< d S )Nc                 3   s   | ]}  |V  qd S r   r   r   r   r   r   r3   |   s     z.RectangleObject.upper_right.<locals>.<genexpr>r/   r1   r   r   r   r   r   r6   z   s    c                 C   s   | j | j S r   )r#   r!   r   r   r   r   width~   s    zRectangleObject.widthc                 C   s   | j | j S r   )r$   r"   r   r   r   r   height   s    zRectangleObject.height)__name__
__module____qualname____doc__r   r   r    r   r   r   r   r   r%   strr(   propertyr!   setterr"   r#   r$   r2   r4   r5   r6   r7   r8   r   r   r   r   r	      sV   
r	   N)
typingr   r   r   _baser   r   Z_data_structuresr   r	   r   r   r   r   <module>   s   