o
    jĎi                     @   s<   d dl mZmZ d dlmZ d dlmZ G dd deZdS )    )TupleUnion)BaseBoundingBox)BoundingBoxc                       s   e Zd Z	ddededededeeef def fdd	Zd
d Zddede	eeeeef df fddZ
e		ddededededeeef dedd fddZ  ZS )AlbumentationsBoundingBoxFx_tly_tlx_bry_br
image_sizestrictc                    s    t t| j||||||d d S )Nr   r   )superr   __init__)selfr   r   r	   r
   r   r   	__class__ f/home/jeff/fluffinator/venv/lib/python3.10/site-packages/pybboxes/boxes/albumentations_bounding_box.pyr      s    	z"AlbumentationsBoundingBox.__init__c                 C   sd   d|  kr|  k rdkr!n nd|  kr |  k r dks-n | j r(tdd| _d S d| _d S )Nr      zeGiven bounding box values is out of bounds. To silently skip out of bounds cases pass 'strict=False'.TF)r   
ValueError_is_oob)r   r   r   r	   r
   r   r   r   _validate_values   s   B

z*AlbumentationsBoundingBox._validate_valuesreturn_valuesreturnr   c                 C   s   |   rtd| j\}}}}| j\}}t|| }t|| }t|| }t|| }|r4||||fS t||||| j| jdS )Nz('image_size' is required for conversion.r   )is_image_size_nullr   valuesr   roundr   r   )r   r   r   r   r	   r
   image_widthimage_heightr   r   r   to_voc   s   
z AlbumentationsBoundingBox.to_vocNc           	      C   sL   |d u rt d|\}}|| }|| }|| }|| }| ||||||dS )NzHAlbumentationsBoundingBox requires `image_size` to scale the box values.r   )r   )	clsr   r   r	   r
   r   r   r   r   r   r   r   from_voc+   s   
z"AlbumentationsBoundingBox.from_voc)F)NF)__name__
__module____qualname__floatr   intboolr   r   r   r    classmethodr"   __classcell__r   r   r   r   r      sF    
(
r   N)typingr   r   pybboxes.boxes.baser   pybboxes.boxes.bboxr   r   r   r   r   r   <module>   s    