U
    cz"                     @   sX   d dl mZmZmZmZ 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ListTupleUnion   )deprecation_no_replacementdeprecation_with_replacement   )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ee	e
f 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	dddZe	dd d!Ze	dd"d#Ze	dd$d%Ze	dd&d'Ze	dd(d)Ze	dd*d+Ze	dd,d-Zeeeef dd.d/Zejee ddd0d/Zeeeef dd1d2Z e jee ddd3d2Z eeeef dd4d5Z!e!jee ddd6d5Z!eeeef dd7d8Z"e"jee ddd9d8Z"eeef dd:d;Z#eeef dd<d=Z$eeef dd>d?Z%eeef dd@dAZ&eeef dddBdCZ'eeef dddDdEZ(eeef dddFdGZ)eeef dddHdIZ*eeddJdKZ+eddLdMZ,eeddNdOZ-eddPdQZ.eeeef ddRdSZ/e/jeeef dddTdSZ/eeeef ddUdVZ0e0jeeef dddWdVZ0eeeef ddXdYZ1e1jeeef dddZdYZ1eeeef dd[d\Z2e2jeeef ddd]d\Z2d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-u_n6aelj/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.scalec                 C   s   t dd | |S )NensureIsNumber3.0.0)r   r   r!   r   r   r   r*   ,   s    
zRectangleObject.ensureIsNumber)r   c                 C   s   dt t|  dS )NzRectangleObject())reprlistr   r   r   r   __repr__2   s    zRectangleObject.__repr__c                 C   s   | d S Nr   r   r   r   r   r   r%   5   s    zRectangleObject.left)fr   c                 C   s   t || d< d S r0   r
   r   r1   r   r   r   r%   9   s    c                 C   s   | d S Nr	   r   r   r   r   r   r&   =   s    zRectangleObject.bottomc                 C   s   t || d< d S r4   r2   r3   r   r   r   r&   A   s    c                 C   s   | d S Nr   r   r   r   r   r   r'   E   s    zRectangleObject.rightc                 C   s   t || d< d S r5   r2   r3   r   r   r   r'   I   s    c                 C   s   | d S N   r   r   r   r   r   r(   M   s    zRectangleObject.topc                 C   s   t || d< d S r6   r2   r3   r   r   r   r(   Q   s    c                 C   s   t ddd | jS )NgetLowerLeft_xr%   r+   r   r%   r   r   r   r   r8   U   s    zRectangleObject.getLowerLeft_xc                 C   s   t ddd | jS )NgetLowerLeft_yr&   r+   r   r&   r   r   r   r   r:   Y   s    zRectangleObject.getLowerLeft_yc                 C   s   t ddd | jS )NgetUpperRight_xr'   r+   r   r'   r   r   r   r   r<   ]   s    zRectangleObject.getUpperRight_xc                 C   s   t ddd | jS )NgetUpperRight_yr(   r+   r   r(   r   r   r   r   r>   a   s    zRectangleObject.getUpperRight_yc                 C   s   t ddd | jS )NgetUpperLeft_xr%   r+   r9   r   r   r   r   r@   e   s    zRectangleObject.getUpperLeft_xc                 C   s   t ddd | jS )NgetUpperLeft_yr(   r+   r?   r   r   r   r   rA   i   s    zRectangleObject.getUpperLeft_yc                 C   s   t ddd | jS )NgetLowerRight_xr'   r+   r=   r   r   r   r   rB   m   s    zRectangleObject.getLowerRight_xc                 C   s   t ddd | jS )NgetLowerRight_yr&   r+   r;   r   r   r   r   rC   q   s    zRectangleObject.getLowerRight_yc                 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_leftu   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>   s     z-RectangleObject.lower_left.<locals>.<genexpr>r   r	   r   r!   r   r   r   rD   }   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_right   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   rE      s     z.RectangleObject.lower_right.<locals>.<genexpr>r   r	   r   r!   r   r   r   rF      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_left   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   rE      s     z-RectangleObject.upper_left.<locals>.<genexpr>r   r7   r   r!   r   r   r   rG      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_right   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   rE      s     z.RectangleObject.upper_right.<locals>.<genexpr>r   r7   r   r!   r   r   r   rH      s    c                 C   s   t ddd | jS )NgetLowerLeftrD   r+   r   rD   r   r   r   r   rI      s    zRectangleObject.getLowerLeftc                 C   s   t ddd | jS )NgetLowerRightrF   r+   r   rF   r   r   r   r   rK      s    zRectangleObject.getLowerRightc                 C   s   t ddd | jS )NgetUpperLeftrG   r+   r   rG   r   r   r   r   rM      s    zRectangleObject.getUpperLeftc                 C   s   t ddd | jS )NgetUpperRightrH   r+   r   rH   r   r   r   r   rO      s    zRectangleObject.getUpperRightc                 C   s   t ddd || _d S )NsetLowerLeftrD   r+   rJ   r!   r   r   r   rQ      s    zRectangleObject.setLowerLeftc                    s.   t ddd  fdd|D \ d<  d< d S )NsetLowerRightrF   r+   c                 3   s   | ]}  |V  qd S r   r   r   r   r   r   rE      s     z0RectangleObject.setLowerRight.<locals>.<genexpr>r   r	   r   r!   r   r   r   rR      s    zRectangleObject.setLowerRightc                    s.   t ddd  fdd|D \ d<  d< d S )NsetUpperLeftrG   r+   c                 3   s   | ]}  |V  qd S r   r   r   r   r   r   rE      s     z/RectangleObject.setUpperLeft.<locals>.<genexpr>r   r7   rS   r!   r   r   r   rT      s    zRectangleObject.setUpperLeftc                    s.   t ddd  fdd|D \ d<  d< d S )NsetUpperRightrH   r+   c                 3   s   | ]}  |V  qd S r   r   r   r   r   r   rE      s     z0RectangleObject.setUpperRight.<locals>.<genexpr>r   r7   rS   r!   r   r   r   rU      s    zRectangleObject.setUpperRightc                 C   s   | j | j S r   )r'   r%   r   r   r   r   width   s    zRectangleObject.widthc                 C   s   t ddd | jS )NgetWidthrV   r+   )r   rV   r   r   r   r   rW      s    zRectangleObject.getWidthc                 C   s   | j | j S r   )r(   r&   r   r   r   r   height   s    zRectangleObject.heightc                 C   s   t ddd | jS )N	getHeightrX   r+   )r   rX   r   r   r   r   rY      s    zRectangleObject.getHeightc                 C   s   t ddd | jS N	lowerLeftrD   r+   rJ   r   r   r   r   r[      s    zRectangleObject.lowerLeftc                 C   s   t ddd || _d S rZ   rJ   r!   r   r   r   r[      s    c                 C   s   t ddd | jS N
lowerRightrF   r+   rL   r   r   r   r   r]      s    zRectangleObject.lowerRightc                 C   s   t ddd || _d S r\   rL   r!   r   r   r   r]      s    c                 C   s   t ddd | jS N	upperLeftrG   r+   rN   r   r   r   r   r_      s    zRectangleObject.upperLeftc                 C   s   t ddd || _d S r^   rN   r!   r   r   r   r_      s    c                 C   s   t ddd | jS N
upperRightrH   r+   rP   r   r   r   r   ra      s    zRectangleObject.upperRightc                 C   s   t ddd || _d S r`   rP   r!   r   r   r   ra      s    )3__name__
__module____qualname____doc__r   r   r$   r   r   r
   r   r   r)   r*   strr/   propertyr%   setterr&   r'   r(   r8   r:   r<   r>   r@   rA   rB   rC   rD   r   rF   rG   rH   rI   rK   rM   rO   rQ   rR   rT   rU   rV   rW   rX   rY   r[   r]   r_   ra   r   r   r   r   r      s   




r   N)typingr   r   r   r   _utilsr   r   _baser
   r   Z_data_structuresr   r   r   r   r   r   <module>   s   