
    :hB                        d Z ddlmZ ddlmZmZmZmZ ddlm	Z	m
Z
 ddlmZ dZ	 ddZdd	Zdd
ZddZddZeeeeegZ	  G d d      Z G d de      Zy)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                n    || k  r| t         k  ryd|z  | z  S || z
  }d| z
  } | t         k  rydd|z  | z  z   S )Ng              ?      ?)EPSILONmiddleposs     R/var/www/urcfiles/bundle/venv/lib/python3.12/site-packages/PIL/GimpGradientFile.pylinearr       sT    
f}G9v%%FlvGsV+++    c                R    |t        d      t        t        | t                    z  z  S )Nr   )r   maxr   r   s     r   curvedr   /   s"    3s8c#fg"67788r   c                \    t        t         dz  t        t        | |      z  z         dz   dz  S )Ng       @r   )r   r   r   r   s     r   siner   3   s.    "sb6&##6667#=DDr   c                >    t        dt        | |      dz
  dz  z
        S Nr      r   r   r   s     r   sphere_increasingr   7   s#    vfc*S0Q6677r   c                >    dt        dt        | |      dz  z
        z
  S r   r   r   s     r   sphere_decreasingr!   ;   s#    cF63/144555r   c                  &    e Zd ZU dZded<   dddZy)GradientFileNzblist[tuple[float, float, float, list[float], list[float], Callable[[float, float], float]]] | Nonegradientc           	        | j                   J g }d}| j                   |   \  }}}}}}	t        |      D ](  }
|
|dz
  z  }||k  r!|dz  }| j                   |   \  }}}}}}	||k  r!||z
  }|t        k  r
 |	dd      }n |	||z
  |z  ||z
  |z        }t        t	        d|d   |d   z
  |z  |d   z   z  dz               }t        t	        d|d   |d   z
  |z  |d   z   z  dz               }t        t	        d|d   |d   z
  |z  |d   z   z  dz               }t        t	        d|d   |d   z
  |z  |d   z   z  dz               }|j                  ||z   |z   |z          + dj                  |      dfS )	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   
getpalettezGradientFile.getpaletteR   s   }}(((*.--*;'BD$wAWq[!Aq&a26--2C/BD$ q& RA7{S)bAB!|< 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 NN1q519q=)+  . xx &((r   )   )r.   r*   returnztuple[bytes, str])__name__
__module____qualname__r$   __annotations__r?    r   r   r#   r#   C   s     	 
	)r   r#   c                      e Zd ZdZddZy)GimpGradientFilez(File handler for GIMP's gradient format.c           	     x   |j                         j                  d      sd}t        |      |j                         }|j                  d      r|j                         j                         }t	        |      }g | _        t        |      D ]  }|j                         j                         }|d d D cg c]  }t        |       }}|d   |d   }
}	|d   }|dd	 }|d	d }t        t	        |d            }t	        |d
         }|dk7  rd}t        |      | j
                  j                  |	|
||||f        y c c}w )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countr7   sr8   r9   r1   r2   r3   r4   r5   r6   cspaces                   r   __init__zGimpGradientFile.__init__v   s+   {{}''(89,Cc""{{} ??9%;;=&&(DD	uA##%A#$Sb6*6aq6A*qT1Q4B1BQq6DQr7Ds1R5z*G2ZF{6cl"MM  "b"dD'!BC! *s   1D7N)rU   z	IO[bytes]rA   None)rB   rC   rD   __doc__r[   rF   r   r   rH   rH   s   s    2Dr   rH   N)r   rR   r   rR   rA   rR   )r]   
__future__r   mathr   r   r   r   typingr   r	   _binaryr   r   r   r   r   r   r!   rS   r#   rH   rF   r   r   <module>rb      sm    
 # # #  
 ,9E86 FD"35FG -) -)`"D| "Dr   