
    nj|"                          " S  S5      r S rg)c                   V   \ rS rSr/ SQrS/S jrS rS rS rS0S jr	S0S jr
S	 rS
 rS1S jr\S 5       r\S 5       r\S 5       r\S 5       r\S/S j5       r\S/S j5       r\S 5       r\S 5       r\S2S j5       r\S 5       r\S 5       rS r\S 5       r\S 5       r\S 5       r\S 5       r\S 5       r \S 5       r!\S 5       r"\S  5       r#\S! 5       r$\S" 5       r%\S# 5       r&\S$ 5       r'\S% 5       r(\S& 5       r)\S' 5       r*\S( 5       r+\S) 5       r,\S* 5       r-S+ r.S, r/S- r0S.r1g)3GeoRectangle    xywhc                     US::  a  U(       a  X-   nU* nOSnUS::  a  U(       a  X$-   nU* nOSnXl         X l        X0l        X@l        g N    r   )selfr   r   r   r	   allow_negative_sizes         [/var/www/html/pdf-tiff/venv/lib/python3.13/site-packages/osgeo_utils/auxiliary/rectangle.py__init__GeoRectangle.__init__#   sP    6"EB6"EB    c                 `    [        U[        5      (       d  gU R                  UR                  :H  $ )NF)
isinstancer   xywhr   others     r   __eq__GeoRectangle.__eq__5   s%    %..yyEJJ&&r   c                 N   ^^ U R                   " UU4S jU R                   5       6 $ )Nc              3   B   >#    U  H  n[        U/TQ70 TD6v   M     g 7fN)round).0iargskwargss     r   	<genexpr>)GeoRectangle.__round__.<locals>.<genexpr><   s      M9aa 9$ 9& 99s   )	from_lrdulrdu)r   r    r!   s    ``r   	__round__GeoRectangle.__round__;   s    ~~M499MNNr   c                 L    U R                   S:*  =(       d    U R                  S:*  $ r   r   r	   r   s    r   is_emptyGeoRectangle.is_empty>   s    vv{)dffk)r   c           	      "   [         R                  [        U R                  UR                  5      [	        U R
                  UR
                  5      [        U R                  UR                  5      [	        U R                  UR                  5      5      $ r   )r   from_min_maxmaxmin_xminmax_xmin_ymax_yr   s     r   	intersectGeoRectangle.intersectA   ]    ((

EKK(

EKK(

EKK(

EKK(	
 	
r   c           	      "   [         R                  [        U R                  UR                  5      [	        U R
                  UR
                  5      [        U R                  UR                  5      [	        U R                  UR                  5      5      $ r   )r   r.   r1   r0   r/   r2   r3   r4   r   s     r   unionGeoRectangle.unionI   r7   r   c                     [        U R                  U5      U l        [        U R                  U5      U l        [        U R                  U5      U l        [        U R                  U5      U l        g r   )r   r   r   r   r	   )r   digitss     r   r   GeoRectangle.roundQ   sJ    tvvv&tvvv&tvvv&tvvv&r   c                 f   U R                   U R                   US   -
  US   -  -
  nU R                  US   U R                  US   -
  US   -  -
  -   nU R                  US   U R                  US   -
  US   -  -
  -   nU R                  U R                  US   -
  US   -  -
  nU R	                  X#XT5      $ )Nr            )r0   r2   r3   r4   	from_lrud)r   geo_transformleftrightbottomtops         r   alignGeoRectangle.alignW   s    zzTZZ-*::mA>NNN

!mA.>!>-PQBR RS
 !mA.>!>-PQBR RS
 jjDJJq)99]1=MMM~~d377r   c                     U R                   UR                   -  nU R                  UR                  -  n[        U R                  UR                  U-  -   U R                  UR                  U-  -   UU5      $ r   )r   r	   r   r   r   )r   part
part_width
part_hights       r   get_partitionGeoRectangle.get_partitionc   sa    VVdff_
VVdff_
FFTVVj((FFTVVj((	
 	
r   c                     U " SSSS5      $ r    )clss    r   emptyGeoRectangle.emptyn   s    1aAr   c                 "    U " XX!-
  X4-
  5      nU$ r   rQ   )rR   lrudrets         r   rB   GeoRectangle.from_lrudr   s    !qu%
r   c                 "    U " XX!-
  XC-
  5      nU$ r   rQ   )rR   rV   rW   rY   rX   rZ   s         r   r$   GeoRectangle.from_lrduw        !qu%
r   c                 "    U " XX1-
  X$-
  5      nU$ )zDfrom projwin (minx maxy maxx miny) == (ulx uly lrx lry) == (l u r d)rQ   )rR   rV   rX   rW   rY   rZ   s         r   	from_lurdGeoRectangle.from_lurd}   r^   r   c                     U " XX$U5      nU$ r   rQ   )rR   r   r   r   r	   r   rZ   s          r   	from_xwyhGeoRectangle.from_xwyh        !12
r   c                     U " XX4U5      nU$ r   rQ   )rR   r   r   r   r	   r   rZ   s          r   	from_xywhGeoRectangle.from_xywh   re   r   c                 $    U " XX5-  XF-  S5      nU$ )NTrQ   )rR   r   r   r   r	   pxpyrZ   s           r   from_xywhpsGeoRectangle.from_xywhps   s     !-
r   c                 "    U " XX!-
  XC-
  5      nU$ r   rQ   )rR   r0   r2   r3   r4   rZ   s         r   r.   GeoRectangle.from_min_max   s     %u}=
r   Nc                 F    Uc  UnX-
  nX$-
  nUS-  nUS-  nU " XVXx5      n	U	$ )N   rQ   )
rR   cent_xcent_yrad_xrad_yr   r   r   r	   rZ   s
             r   from_center_and_radius#GeoRectangle.from_center_and_radius   s<    =ENNAIAI!o
r   c           	          U R                  [        S U 5       5      [        S U 5       5      [        S U 5       5      [        S U 5       5      5      $ )Nc              3   *   #    U  H	  oS    v   M     g7fr   NrQ   r   ps     r   r"   +GeoRectangle.from_points.<locals>.<genexpr>        %f!f   c              3   *   #    U  H	  oS    v   M     g7frz   rQ   r{   s     r   r"   r}      r~   r   c              3   *   #    U  H	  oS    v   M     g7fr?   NrQ   r{   s     r   r"   r}      r~   r   c              3   *   #    U  H	  oS    v   M     g7fr   rQ   r{   s     r   r"   r}      r~   r   )r.   r1   r/   )rR   pointss     r   from_pointsGeoRectangle.from_points   sM    %f%%%f%%%f%%%f%%	
 	
r   c                     US   (       d
  US   (       a  U R                  [        U/UQ76 5      $ US   US   4nUS   US   4nU R                  " / UQUQUQ76 nU$ )Nrq      r   rA   r?   r@   )r   get_points_extentrl   )rR   gtsizeorigin
pixel_sizeextents         r   from_geotransform_and_size'GeoRectangle.from_geotransform_and_size   so    a5BqE??#4R#?$#?@@ eRU^FQ%AJ__AfAtAjAF Mr   c                     U R                  U R                  US   -  U R                  US   -  U R                  US   -  U R                  US   -  S5      $ )Nr   r?   T)rc   r   r   r   r	   )r   r   s     r   	to_pixelsGeoRectangle.to_pixels   sV    ~~FFZ]"FFZ]"FFZ]"FFZ]"
 	
r   c                    ^^ US   US   4mUS   US   4m[        UU4S jS 5       5      nU R                  US   US   US   US   5      $ )Nr   rA   r?   r@   c              3   :   >#    U  H  nTU   TU   -  v   M     g 7fr   rQ   )r   r   r   r   s     r   r"   AGeoRectangle.from_geotransform_and_size_to_pix.<locals>.<genexpr>   s     DV&)jm3Vs   )r   r?   )listrc   )rR   r   r   
pix_originr   r   s       @@r   !from_geotransform_and_size_to_pix.GeoRectangle.from_geotransform_and_size_to_pix   sZ    Q%AeRU^
DVDD
}}Z]DGZ]DGLLr   c                 4    U R                   U R                  -  $ r   r)   r*   s    r   areaGeoRectangle.area       vvr   c                 2    U R                   U R                  4$ r   r)   r*   s    r   r   GeoRectangle.size   s    vvtvv~r   c                     U R                   $ r   r   r*   s    r   rD   GeoRectangle.left       vvr   c                 4    U R                   U R                  -   $ r   r   r   r*   s    r   rE   GeoRectangle.right   r   r   c                     U R                   $ r   r   r*   s    r   downGeoRectangle.down   r   r   c                 4    U R                   U R                  -   $ r   r   r	   r*   s    r   upGeoRectangle.up   r   r   c                     U R                   $ r   r   r*   s    r   r0   GeoRectangle.min_x   r   r   c                 4    U R                   U R                  -   $ r   r   r*   s    r   r2   GeoRectangle.max_x   r   r   c                     U R                   $ r   r   r*   s    r   r3   GeoRectangle.min_y   r   r   c                 4    U R                   U R                  -   $ r   r   r*   s    r   r4   GeoRectangle.max_y   r   r   c                 ^    U R                   U R                  U R                  U R                  4$ r   )rD   r   rE   r   r*   s    r   lurdGeoRectangle.lurd   s!    yy$''4::tyy88r   c                 ^    U R                   U R                  U R                  U R                  4$ r   )rD   rE   r   r   r*   s    r   lrudGeoRectangle.lrud   s!    yy$**dggtyy88r   c                 ^    U R                   U R                  U R                  U R                  4$ r   )rD   r   rE   r   r*   s    r   ldruGeoRectangle.ldru   s!    yy$))TZZ88r   c                 ^    U R                   U R                  U R                  U R                  4$ r   )rD   rE   r   r   r*   s    r   r%   GeoRectangle.lrdu  s!    yy$**dii88r   c                 ^    U R                   U R                  U R                  U R                  4$ r   r   r*   s    r   r   GeoRectangle.xywh  !    vvtvvtvvtvv--r   c                 ^    U R                   U R                  U R                  U R                  4$ r   )r   r   r   r	   r*   s    r   xwyhGeoRectangle.xwyh	  r   r   c                 ^    U R                   U R                  U R                  U R                  4$ r   )r0   r2   r3   r4   r*   s    r   min_maxGeoRectangle.min_max  s!    zz4::tzz4::==r   c                     SU R                    SU R                   SU R                   SU R                   SU R                   SU R
                   S3$ )NzRectangle(x[,z], y[z] wh[z]))r0   r2   r3   r4   r   r	   r*   s    r   __str__GeoRectangle.__str__  sR    djj\4::,eDJJ<qTYZ^Z`Z`Yaabcgcicibjjlmmr   c           	      p    SU R                    SU R                   SU R                   SU R                   S3	$ )NzRectangle(x:z, y:z, w:z, h:)r   r*   s    r   __repr__GeoRectangle.__repr__  s3    dffXT$&&dffXT$&&KKr   c                 ,    [        U R                  5      $ r   )hashr   r*   s    r   __hash__GeoRectangle.__hash__  s    DIIr   )r	   r   r   r   )F)r   r   )rK   r   r   )2__name__
__module____qualname____firstlineno__	__slots__r   r   r&   r+   r5   r9   r   rH   rN   classmethodrS   rB   r$   r`   rc   rg   rl   r.   rv   r   r   r   r   propertyr   r   rD   rE   r   r   r0   r2   r3   r4   r   r   r   r%   r   r   r   r   r   r   __static_attributes__rQ   r   r   r   r       s   $I$'O*

'
8	
        
           
 
 
 

 M M                     9 9 9 9 9 9 9 9 . . . . > >nLr   r   c                 R   ^  U 4S jnU" SS5      U" SU5      U" X5      U" US5      /$ )z5Return list of corner coordinates from a geotransformc                 f   > TS   U TS   -  -   UTS   -  -   nTS   U TS   -  -   UTS   -  -   nX#4$ )Nr   r?   rq   rA   r   r@   rQ   )rj   rk   r   r   r   s       r   transform_point*get_points_extent.<locals>.transform_point  sP    qER"Q%Z BAJ/qER"Q%Z BAJ/tr   r   rQ   )r   colsrowsr   s   `   r   r   r     s:     	14 #a 	 r   N)r   r   rQ   r   r   <module>r      s   @x xvr   