
    hB                        S r SSKJr  SSKJrJrJrJr  SSKJ	r	J
r
  SSKJr  Sr SS jrSS	 jrSS
 jrSS jrSS jr\\\\\/r  " S S5      r " S S\5      rg)z
Stuff to translate curve segments to palette values (derived from
the corresponding code in GIMP, written by Federico Mena Quintero.
See the GIMP distribution for more information.)
    )annotations)logpisinsqrt)IOCallable   )o8g|=c                p    X::  a  U [         :  a  gSU-  U -  $ X-
  nSU -
  n U [         :  a  gSSU-  U -  -   $ )Ng              ?      ?)EPSILONmiddleposs     F/var/www/html/env/lib/python3.13/site-packages/PIL/GimpGradientFile.pylinearr       sP    
}G9v%%lvGsV+++    c                R    U[        S5      [        [        U [        5      5      -  -  $ )Nr   )r   maxr   r   s     r   curvedr   /   s"    3s8c#fg"67788r   c                Z    [        [        * S-  [        [        X5      -  -   5      S-   S-  $ )Ng       @r   )r   r   r   r   s     r   siner   3   s,    "sb6&#6667#=DDr   c                <    [        S[        X5      S-
  S-  -
  5      $ Nr      r   r   r   s     r   sphere_increasingr   7   s!    vf*S0Q6677r   c                <    S[        S[        X5      S-  -
  5      -
  $ r   r   r   s     r   sphere_decreasingr!   ;   s!    cF6/144555r   c                  2    \ rS rSr% SrS\S'   SSS jjrSrg)	GradientFileC   Nzblist[tuple[float, float, float, list[float], list[float], Callable[[float, float], float]]] | Nonegradientc           	        U R                   c   e/ nSnU R                   U   u  pEpgp[        U5       GH#  n
XS-
  -  nX[:  a  US-  nU R                   U   u  pEpgpX[:  a  M  XT-
  nU[        :  a
  U	" SS5      nOU	" Xd-
  U-  X-
  U-  5      n[        [	        SUS   US   -
  U-  US   -   -  S-   5      5      n[        [	        SUS   US   -
  U-  US   -   -  S-   5      5      n[        [	        SUS   US   -
  U-  US   -   -  S-   5      5      n[        [	        SUS   US   -
  U-  US   -   -  S-   5      5      nUR                  X-   U-   U-   5        GM&     SR                  U5      S4$ )	Nr   r
   r      r      r   RGBA)r%   ranger   r   intappendjoin)selfentriespaletteixx0x1xmrgb0rgb1segmentixwscalergbas                     r   
getpaletteGradientFile.getpaletteR   s   }}(((*.--*;'$wAq[!A&a26--2C/$ & A7{S)A!|< 3stAwa0E9DGCDsJKLA3stAwa0E9DGCDsJKLA3stAwa0E9DGCDsJKLA3stAwa0E9DGCDsJKLA NN1519q=)+  . xx &((r    )   )r/   r+   returnztuple[bytes, str])__name__
__module____qualname____firstlineno__r%   __annotations__r@   __static_attributes__rB   r   r   r#   r#   C   s      	 
	) )r   r#   c                  "    \ rS rSrSrSS jrSrg)GimpGradientFiles   z(File handler for GIMP's gradient format.c           	        UR                  5       R                  S5      (       d  Sn[        U5      eUR                  5       nUR                  S5      (       a  UR                  5       R                  5       n[	        U5      n/ U l        [        U5       H  nUR                  5       R                  5       nUS S  Vs/ s H  n[        U5      PM     nnUS   US   pUS   nUSS	 nUS	S n[        [	        US   5         n[	        US
   5      nUS:w  a  Sn[        U5      eU R
                  R                  XXX45        M     g s  snf )Ns   GIMP Gradientznot a GIMP gradient files   Name:    r   r   r
   r(         zcannot handle HSV colour space)readline
startswithSyntaxErrorstripr+   r%   r*   splitfloatSEGMENTSOSErrorr,   )r.   fpmsglinecountr8   sr9   r:   r2   r3   r4   r5   r6   r7   cspaces                   r   __init__GimpGradientFile.__init__v   s)   {{}''(899,Cc""{{} ??9%%;;=&&(DD	uA##%A#$Sb6*6aq6A*qT1Q41BQq6DQr7Ds1R5z*G2ZF{6cl"MM  ""D!BC! *s   ;E)r%   N)rZ   z	IO[bytes]rD   None)rE   rF   rG   rH   __doc__r`   rJ   rB   r   r   rL   rL   s   s    2Dr   rL   N)r   rW   r   rW   rD   rW   )rc   
__future__r   mathr   r   r   r   typingr   r	   _binaryr   r   r   r   r   r   r!   rX   r#   rL   rB   r   r   <module>rh      sm    
 # # #  
 ,9E86 FD"35FG -) -)`"D| "Dr   