o
    e                     @  sz   d dl mZ d dlmZ d dlmZ d dlmZ G dd deZeG dd dZ	eG d	d
 d
Z
eG dd dZdS )    )annotations)	dataclass)Enum)Tuplec                   @  sD   e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZedd ZdS )Positionz<
    Enum representing the position of an anchor point.
    CENTERCENTER_LEFTCENTER_RIGHT
TOP_CENTERTOP_LEFT	TOP_RIGHTBOTTOM_LEFTBOTTOM_CENTERBOTTOM_RIGHTCENTER_OF_MASSc                 C  s   t tdd | S )Nc                 S  s   | j S N)value)c r   H/var/www/myenv/lib/python3.10/site-packages/supervision/geometry/core.py<lambda>   s    zPosition.list.<locals>.<lambda>)listmap)clsr   r   r   r      s   zPosition.listN)__name__
__module____qualname____doc__r   r   r	   r
   r   r   r   r   r   r   classmethodr   r   r   r   r   r      s    r   c                   @  s2   e Zd ZU ded< ded< dddZdd	d
ZdS )PointfloatxyreturnTuple[int, int]c                 C  s   t | jt | jfS r   )intr!   r"   selfr   r   r   as_xy_int_tuple"   s   zPoint.as_xy_int_tupleTuple[float, float]c                 C  s   | j | jfS r   r!   r"   r&   r   r   r   as_xy_float_tuple%   s   zPoint.as_xy_float_tupleN)r#   r$   )r#   r)   )r   r   r   __annotations__r(   r+   r   r   r   r   r      s
   
 
r   c                   @  s(   e Zd ZU ded< ded< d
ddZd	S )Vectorr   startendpointr#   boolc                 C  sb   t | j| j}t | j|}|jj|jj |jj|jj  |jj|jj |jj|jj   }|dk S )Nr   )r-   r.   r/   r!   r"   )r'   r0   v1v2cross_productr   r   r   is_in.   s   zVector.is_inN)r0   r   r#   r1   )r   r   r   r,   r5   r   r   r   r   r-   )   s   
 r-   c                   @  sT   e Zd ZU ded< ded< ded< ded< eddd	Zedd
dZdddZdS )Rectr    r!   r"   widthheightr#   r   c                 C  s   t | j| jdS Nr*   )r   r!   r"   r&   r   r   r   top_left>   s   zRect.top_leftc                 C  s   t | j| j | j| j dS r9   )r   r!   r7   r"   r8   r&   r   r   r   bottom_rightB   s   zRect.bottom_rightc                 C  s0   t | j| | j| | jd|  | jd|  dS )N   )r!   r"   r7   r8   )r6   r!   r"   r7   r8   )r'   paddingr   r   r   padF   s   zRect.padN)r#   r   )r#   r6   )r   r   r   r,   propertyr:   r;   r>   r   r   r   r   r6   7   s   
 r6   N)
__future__r   dataclassesr   enumr   typingr   r   r   r-   r6   r   r   r   r   <module>   s    