
    kh&/                     F   d dl Z d dlmZmZmZmZmZmZmZm	Z	 d dl
Zd dlZd dlmZmZmZ 	 d dlZej&                  j(                  dedefd       Zej&                  j(                  dedee   fd       Zej&                  j(                  dedee   fd       Zej&                  j(                  dedefd	       Zej&                  j(                  dej                  dej                  fd
       Zej&                  j(                  dej                  dej                  fd       Zej&                  j(                  dej                  dedej                  fd       Zej&                  j(                  dej                  dedej                  fd       Zej&                  j(                  dej                  dedej                  fd       Z ej&                  j(                  dej                  dedej                  fd       Z!ej&                  j(                  	 d;dej                  dededej                  fd       Z"ej&                  j(                  	 	 d<dej                  de	eee   eedf   f   dee	eee   eedf   f      ded   dej                  f
d       Z#ej&                  j(                  dej                  dededed edej                  fd!       Z$ej&                  j(                  ejJ                  fdej                  d"e	ee   ef   d#edej                  fd$       Z&ej&                  j(                  	 d=dee	eee   eedf   f      dej                  d%e'dee'ee	eee   eedf   f      f   fd&       Z(ej&                  j(                  ejR                  dfdej                  d'ee   d#edee	eeee   ee   f      dej                  f
d(       Z*ej&                  j(                  ejR                  d)ddfdej                  d*ed#ed+ed,eeeef      dee	eeee   ee   f      dej                  fd-       Z+ej&                  j(                  ejX                  dfdej                  d.ee   d#edee	eeee   ee   f      dej                  f
d/       Z-ej&                  j(                  dej                  d0edej                  fd1       Z.ej&                  j(                  dej                  dej                  fd2       Z/ej&                  j(                  dej                  d3edej                  fd4       Z0ej&                  j(                  dej                  d5edej                  fd6       Z1ej&                  j(                  dej                  d7edej                  fd8       Z2ej&                  j(                  dej                  dej                  fd9       Z3ej&                  j(                  dej                  dej                  fd:       Z4y# e$ r dZY w xY w)>    N)AnyDictListLiteralOptionalSequenceTupleUnion)ImageImageEnhanceImageOpsimgreturnc                     t         *t        | t        j                  t         j                  f      S t        | t        j                        S N)accimage
isinstancer   r   s    b/var/www/teggl/fontify/venv/lib/python3.12/site-packages/torchvision/transforms/_functional_pil.py_is_pil_imager      s3    #X^^<==#u{{++    c                     t        |       rFt        | d      rt        | j                               }n| j                  }| j
                  \  }}|||gS t        dt        |              NgetbandsUnexpected type )r   hasattrlenr   channelssize	TypeErrortype)r   r   widthheights       r   get_dimensionsr$      s^    S3
#3<<>*H||Hv&%((
&tCyk2
33r   c                 p    t        |       rt        | j                        S t        dt	        |              )Nr   )r   listr   r    r!   r   s    r   get_image_sizer'   "   s/    SCHH~
&tCyk2
33r   c                     t        |       r1t        | d      rt        | j                               S | j                  S t        dt        |              r   )r   r   r   r   r   r    r!   r   s    r   get_image_num_channelsr)   )   sF    S3
#s||~&&<<
&tCyk2
33r   c                     t        |       st        dt        |              | j                  t        j
                        S Nimg should be PIL Image. Got )r   r    r!   	transposer   FLIP_LEFT_RIGHTr   s    r   hflipr/   3   6    7S	{CDD==..//r   c                     t        |       st        dt        |              | j                  t        j
                        S r+   )r   r    r!   r-   r   FLIP_TOP_BOTTOMr   s    r   vflipr3   ;   r0   r   brightness_factorc                     t        |       st        dt        |              t        j                  |       }|j                  |      } | S r+   )r   r    r!   r   
Brightnessenhance)r   r4   enhancers      r   adjust_brightnessr9   C   sG    7S	{CDD&&s+H


,
-CJr   contrast_factorc                     t        |       st        dt        |              t        j                  |       }|j                  |      } | S r+   )r   r    r!   r   Contrastr7   )r   r:   r8   s      r   adjust_contrastr=   M   sF    7S	{CDD$$S)H


?
+CJr   saturation_factorc                     t        |       st        dt        |              t        j                  |       }|j                  |      } | S r+   )r   r    r!   r   Colorr7   )r   r>   r8   s      r   adjust_saturationrA   W   sG    7S	{CDD!!#&H


,
-CJr   
hue_factorc                 "   d|cxk  rdk  sn t        d| d      t        |       st        dt        |              | j                  }|dv r| S | j                  d      j                         \  }}}t        j                  |t        j                        }|t        j                  |d	z        j                  t        j                        z  }t        j                  |d
      }t        j                  d|||f      j                  |      } | S )Ng      g      ?zhue_factor (z) is not in [-0.5, 0.5].r,   >   1FILHSVdtype   rG   )
ValueErrorr   r    r!   modeconvertsplitnparrayuint8int32astyper   	fromarraymerge)r   rB   
input_modehsvnp_hs          r   
adjust_huer\   a   s    J%#%<
|3KLMM7S	{CDDJ))
kk% &&(GAq!88ARXX&DBHHZ#%&--bhh77Dc"A
++eaAY
'
/
/

;CJr   gammagainc           
      b   t        |       st        dt        |              |dk  rt        d      | j                  }| j                  d      } t        d      D cg c]   }t        d|z  t        |dz  |      z        " c}dz  }| j                  |      } | j                  |      } | S c c}w )	Nr,   r   z*Gamma should be a non-negative real numberRGB   go@g     o@   )
r   r    r!   rL   rM   rN   rangeintpowpoint)r   r]   r^   rW   ele	gamma_maps         r   adjust_gammari   y   s     7S	{CDDqyEFFJ
++e
CSXY\S]^Cn,s3;/FFG^abbI
))I
C
++j
!CJ	 _s   %B,padding.fillpadding_modeconstantedgereflect	symmetricc                 4   t        |       st        dt        |              t        |t        j
                  t        t        f      st        d      |0t        |t        j
                  t        t        f      st        d      t        |t              st        d      t        |t              rt        |      }t        |t              r%t        |      dvrt        dt        |       d      t        |t              rt        |      dk(  r|d	   }|d
vrt        d      |dk(  rpt        || d      }| j                  dk(  r;| j                         }t        j                  | fd|i|}|j!                  |       |S t        j                  | fd|i|S t        |t"              r|x}x}x}	}
t        |t              rt        |      dk(  r|d	   x}}|d   x}	}
t        |t              r"t        |      dk(  r|d	   }|d   }	|d   }|d   }
	
g}t%        j&                  |d	       }|j)                         r6|\  }}}}| j+                  ||| j,                  |z
  | j.                  |z
  f      } t%        j0                  |d	      \  }}	}}
| j                  dk(  rk| j                         }t%        j2                  |       } t%        j4                  | |	|
f||ff|      } t7        j8                  |       } | j!                  |       | S t%        j2                  |       } t        | j:                        dk(  rt%        j4                  | |	|
f||fdf|      } t        | j:                        dk(  rt%        j4                  | |	|
f||ff|      } t7        j8                  |       S )Nr,   zGot inappropriate padding argzGot inappropriate fill argz"Got inappropriate padding_mode arg)         z<Padding must be an int or a 1, 2, or 4 element tuple, not a z element tuplers   r   rm   zBPadding mode should be either constant, edge, reflect or symmetricrn   rk   )namePborderrt   ru   rb   )rM   )r   r   )r   r    r!   r   numbersNumbertupler&   strr   rL   _parse_fillrM   
getpaletter   expand
putpaletterd   rP   minimumanycropr"   r#   maximumasarraypadr   rU   shape)r   rj   rk   rl   optspaletteimagepad_left	pad_rightpad_top
pad_bottompcropping	crop_leftcrop_top
crop_rightcrop_bottoms                    r   r   r      sS    7S	{CDDgt<=788
4'..%1N O455lC(<=='4 .'5!c'l)&CWX[\cXdWeestuu'5!c'la&7!*GG]^^z!46288s?nn&GOOC@@4@EW%Ls;7;d;;gs#:AAHAyA7Zgu%#g,!*;#*1:-Hy#*1:-Gjgu%#g,!*;qzHajG
I Jw	:6JJq!$$<<>;C8Ix[((IxZ1GVaIabcC35::a3C0'9j88s?nn&G**S/C&&4x6KLS_`C//#&CNN7#Jjjosyy>Q&&4x6KVTVbcCsyy>Q&&4x6KLl[Cs##r   topleftr#   r"   c                 |    t        |       st        dt        |              | j                  ||||z   ||z   f      S r+   )r   r    r!   r   )r   r   r   r#   r"   s        r   r   r      sC     7S	{CDD88T3ucFl;<<r   r   interpolationc                     t        |       st        dt        |              t        |t              rt        |      dk(  st        d|       | j                  t        |d d d         |      S )Nr,   rt   zGot inappropriate size arg: )r   r    r!   r   r&   r   resizer{   )r   r   r   s      r   r   r      sh     7S	{CDDtT"s4yA~6tf=>>::eD2J'77r   rv   c                    t        |      }| d} t        | t        t        f      r|dkD  rt	        | g|z        } t        | t
        t        f      rSt        |       dk(  r| |z  } n4t        |       |k7  r&d}t        |j                  t        |       |            t	        |       } |j                  dk7  r7t        | t
        t        f      rt	        d | D              } || iS t        |       } || iS )Nr   rs   z^The number of elements in 'fill' does not match the number of channels of the image ({} != {})rE   c              3   2   K   | ]  }t        |        y wr   )rd   ).0xs     r   	<genexpr>z_parse_fill.<locals>.<genexpr>  s     .AQ.s   )
r)   r   rd   floatr{   r&   r   rL   formatrM   )rk   r   rv   num_channelsmsgs        r   r}   r}      s     *#.L|$e%,*:dVl*+$u&t9>,&DY,&rCSZZD	<@AAT{
xx3dT5M*...D $< t9D$<r   matrixc                     t        |       st        dt        |              | j                  }t	        ||       } | j
                  |t        j                  ||fi |S r+   )r   r    r!   r   r}   	transformr   AFFINE)r   r   r   rk   output_sizer   s         r   affiner     sX     7S	{CDD((KtS!D3==ellFMRTRRr   Fangler   centerc                     t        |       st        dt        |              t        ||       } | j                  ||||fi |S r+   )r   r    r!   r}   rotate)r   r   r   r   r   rk   r   s          r   r   r   ,  sK     7S	{CDDtS!D3::e]FFCdCCr   perspective_coeffsc                     t        |       st        dt        |              t        ||       } | j                  | j
                  t        j                  ||fi |S r+   )r   r    r!   r}   r   r   r   PERSPECTIVE)r   r   r   rk   r   s        r   perspectiver   =  sW     7S	{CDDtS!D3==5#4#46H-`[_``r   num_output_channelsc                 b   t        |       st        dt        |              |dk(  r| j                  d      } | S |dk(  rf| j                  d      } t	        j
                  | t        j                        }t	        j                  |||g      }t        j                  |d      } | S t        d      )Nr,   rs   rG   rb   rI   r`   z+num_output_channels should be either 1 or 3)r   r    r!   rN   rP   rQ   rR   dstackr   rU   rL   )r   r   np_imgs      r   to_grayscaler   M  s    7S	{CDDakk# J 
	!kk##RXX.FFF34oofe, J FGGr   c                 p    t        |       st        dt        |              t        j                  |       S r+   )r   r    r!   r   invertr   s    r   r   r   _  s0    7S	{CDD??3r   bitsc                 r    t        |       st        dt        |              t        j                  | |      S r+   )r   r    r!   r   	posterize)r   r   s     r   r   r   f  s4    7S	{CDDc4((r   	thresholdc                 r    t        |       st        dt        |              t        j                  | |      S r+   )r   r    r!   r   solarize)r   r   s     r   r   r   m  s4    7S	{CDDS),,r   sharpness_factorc                     t        |       st        dt        |              t        j                  |       }|j                  |      } | S r+   )r   r    r!   r   	Sharpnessr7   )r   r   r8   s      r   adjust_sharpnessr   t  sG    7S	{CDD%%c*H


+
,CJr   c                 p    t        |       st        dt        |              t        j                  |       S r+   )r   r    r!   r   autocontrastr   s    r   r   r   ~  s2    7S	{CDD  %%r   c                 p    t        |       st        dt        |              t        j                  |       S r+   )r   r    r!   r   equalizer   s    r   r   r     s2    7S	{CDDS!!r   )g      ?)r   rn   )	fillcolor)5ry   typingr   r   r   r   r   r   r	   r
   numpyrP   torchPILr   r   r   r   ImportErrorjitunusedboolr   rd   r$   r'   r)   r/   r3   r   r9   r=   rA   r\   ri   r   r   BILINEARr   r|   r}   NEARESTr   r   BICUBICr   r   r   r   r   r   r   r    r   r   <module>r      s    M M M   - -
 ,s ,t , , 4 4S	 4 4 4 4S	 4 4 4 4 4 4 0u{{ 0u{{ 0 0 0u{{ 0u{{ 0 0 5;; 5 U[[    u    5;; 5 U[[   EKK U u{{  .  	  [[	 *  DEHR	L$	L$3S	5c?23L$ 5UU5#:->>?
@L$ DE	L$
 [[L$ L$^ =	=	= = 	=
 = [[= =  8	8
S	3
8 8 [[	8 8  
5UU5#:->>?
@	  
#xeT%[%s
2CCDE
EF	 <  HL	S	SKS S 5eXc]HUOCD
E	S
 [[S S  (,HLD	DD D 	D
 U38_%D 5eXc]HUOCD
ED [[D D   HL	a	aUa a 5eXc]HUOCD
E	a
 [[a a ekk    "         )5;; )c )ekk ) ) -%++ -# -%++ - - %++  5;;   &ekk &ekk & & "%++ "%++ " "y  Hs   X X X 