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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 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 )VocBoundingBoxz/
    Alias for the VOC style bounding box.
    F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__ [/home/jeff/fluffinator/venv/lib/python3.10/site-packages/pybboxes/boxes/voc_bounding_box.pyr      s    	zVocBoundingBox.__init__c                 G   s   t dd |D S )Nc                 S   s   g | ]}t |qS r   )round).0valr   r   r   
<listcomp>   s    z7VocBoundingBox._correct_value_types.<locals>.<listcomp>)tuple)r   valuesr   r   r   _correct_value_types   s   z#VocBoundingBox._correct_value_typesc                 C   s   | j \}}||ks||krtd||f||fkrtdd|  kr'|k rEn nd|  kr3|k rEn n|d ur=||ksE|d urQ||krQ| jrLtdd| _d S |  sZd| _d S d S )NzGIncorrect BoundingBox format. Must be in type [x-tl, y-tl, x-br, y-br].z8Given top-left and bottom-right points must be distinct.r   zeGiven bounding box values is out of bounds. To silently skip out of bounds cases pass 'strict=False'.TF)r   
ValueErrorr   _is_oobis_image_size_null)r   r   r   r	   r
   image_widthimage_heightr   r   r   _validate_values   s"   


zVocBoundingBox._validate_valuesreturn_valuesreturnr   c                 C   s6   | j \}}}}|r||||fS t||||| j| jdS r   )r   r   r   r   )r   r"   r   r   r	   r
   r   r   r   to_voc/   s   zVocBoundingBox.to_vocNTc                 C   s   | ||||||dS r   r   )clsr   r   r	   r
   r   r   r   r   r   from_voc5   s   
zVocBoundingBox.from_voc)F)NT)__name__
__module____qualname____doc__intr   boolr   r   r!   r   r$   classmethodr&   __classcell__r   r   r   r   r      sJ    
(
r   N)typingr   r   pybboxes.boxes.baser   pybboxes.boxes.bboxr   r   r   r   r   r   <module>   s    