
    Ng
              	       $   d dl mZmZmZmZmZmZmZ d dlZd dl	m
Z
 deeeeef         dej        fdZdej        deeeeef         fdZ	 dd
ej        dej        dedej        fdZdej        dej        defdZdej        dej        defdZdS )    )ListUnionDictr   AnyOptionalTupleN)Imagecoordsreturnc                 P    | \  }}}}t          j        ||g||g||g||gg          S )N)nparray)r
   x_1y_1x_2y_2s        W/var/www/html/ai-engine/env/lib/python3.11/site-packages/layoutparser/elements/utils.pycvt_coordinates_to_pointsr      sE    Cc38#J#J#J#J		
      pointsc                     | d d df                                          }| d d df                                          }| d d df                                         }| d d df                                         }||||fS )Nr      )minmax)r   r   r   r   r   s        r   cvt_points_to_coordinatesr   "   s    
A,



C
A,



C
A,



C
A,



Cc3r   FMis_invc                    |rt           j                            |           } t          j        |t          j        |j        d         df          g          j        }t          j        | |          }||d         z  j        d d d df         }|S )Nr   r      )r   linalginvhstackonesshapeTmatmul)r   r   r   src_middst_middsts         r   perspective_transformationr+   *   s      IMM!i&,q/1)=!>!>?@@BGi7##GWR[ 
#AAArrE
*CJr   verticepolygon_pointsc           	          || z
  }t          j        ||ddd d f         d          }t          d t          ||dd                    D                       S )Nr   r   )axisc                 ^    g | ]*\  }}t           j                            ||g          d k    +S )r   )r   r!   det).0e1e2s      r   
<listcomp>z&vertice_in_polygon.<locals>.<listcomp>A   s3    QQQR	r2h''1,QQQr   )r   appendallzip)r,   r-   r   edgess       r   vertice_in_polygonr:   9   sc     g%FIffQqS!!!Vn1555EQQ3ueABBi;P;PQQQRRRr   xsysc                     dt          j        t          j        | t          j        |d                    t          j        |t          j        | d                    z
            z  S )zCalculate the area of polygons using
    `Shoelace Formula <https://en.wikipedia.org/wiki/Shoelace_formula>`_.

    Args:
        xs (`np.ndarray`): The x coordinates of the points
        ys (`np.ndarray`): The y coordinates of the points
    g      ?r   )r   absdotroll)r;   r<   s     r   polygon_arearA   E   sJ     r272q>>22RVBA5O5OOPPPPr   )F)typingr   r   r   r   r   r   numpyr   PILr	   floatndarrayr   r   boolr+   r:   rA    r   r   <module>rI      sy   A @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @          
eE5%,F&G 
BJ 
 
 
 
 bj  U5%PU;U5V         7< 	z:/3Z   S
 SBJ S4 S S S SQRZ QRZ QE Q Q Q Q Q Qr   