
     f:                        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dS )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|=middlefloatposreturnc                |    || k    r| t           k     rdS d|z  | z  S || z
  }d| z
  } | t           k     rdS dd|z  | z  z   S )Ng              ?      ?)EPSILONr   r   s     W/var/www/api.educacionweb.es/myenv/lib/python3.11/site-packages/PIL/GimpGradientFile.pylinearr       s`    
f}}G39v%%FlvG3sV+++    c                l    |t          d          t          t          | t                              z  z  S )Nr   )r   maxr   r   s     r   curvedr   /   s*    3s88c#fg"6"677788r   c                p    t          t           dz  t          t          | |          z  z             dz   dz  S )Ng       @r   )r   r   r   r   s     r   siner   3   s4    "sb6&##6#66677#=DDr   c                N    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77r   c                N    dt          dt          | |          dz  z
            z
  S r   r    r   s     r   sphere_decreasingr#   ;   s)    cF63//1445555r   c                  (    e Zd ZU dZded<   d
dd	ZdS )GradientFileNzblist[tuple[float, float, float, list[float], list[float], Callable[[float, float], float]]] | Nonegradient   entriesintr   tuple[bytes, str]c           	        | j         J g }d}| j         |         \  }}}}}}	t          |          D ]w}
|
|dz
  z  }||k     r|dz  }| j         |         \  }}}}}}	||k     ||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                       }|                    ||z   |z   |z              yd                    |          dfS )	Nr   r
   r      r      r   RGBA)r&   ranger   r   r)   appendjoin)selfr(   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KLLA3stAwa0E9DGCDsJKKLLA3stAwa0E9DGCDsJKKLLA3stAwa0E9DGCDsJKKLLA NN1q519q=))))xx  &((r   )r'   )r(   r)   r   r*   )__name__
__module____qualname__r&   __annotations__rC    r   r   r%   r%   C   sM          	     ) ) ) ) ) ) )r   r%   c                      e Zd ZdZddZdS )	GimpGradientFilez(File handler for GIMP's gradient format.fp	IO[bytes]r   Nonec           	        |                                 d d         dk    rd}t          |          |                                 }|                    d          r&|                                                                 }t	          |          }g | _        t          |          D ]}|                                                                 }d |d d         D             }|d         |d         }	}|d	         }
|d
d         }|dd         }t          t	          |d                            }t	          |d                   }|dk    rd}t          |          | j        
                    ||	|
|||f           d S )N   s   GIMP Gradientznot a GIMP gradient files   Name: c                ,    g | ]}t          |          S rH   )r   ).0r<   s     r   
<listcomp>z-GimpGradientFile.__init__.<locals>.<listcomp>   s    ***aq***r      r   r   r
   r-         zcannot handle HSV colour space)readlineSyntaxError
startswithstripr)   r&   r/   splitSEGMENTSOSErrorr0   )r2   rK   msglinecountr;   sr=   r5   r6   r7   r8   r9   r:   cspaces                  r   __init__zGimpGradientFile.__init__v   sn   ;;=="!111,Cc"""{{}} ??9%% 	);;==&&((DD		u 	D 	DA##%%A**1SbS6***AqT1Q4B1BQqS6DQrT7Ds1R5zz*G2ZZF{{6cll"M  "b"dD'!BCCCC!	D 	Dr   N)rK   rL   r   rM   )rD   rE   rF   __doc__rb   rH   r   r   rJ   rJ   s   s4        22D D D D D Dr   rJ   N)r   r   r   r   r   r   )rc   
__future__r   mathr   r   r   r   typingr   r	   _binaryr   r   r   r   r   r!   r#   r[   r%   rJ   rH   r   r   <module>rh      s_    
 # " " " " " # # # # # # # # # # # #              
 , , , ,9 9 9 9E E E E8 8 8 86 6 6 6 FD"35FG -) -) -) -) -) -) -) -)`"D "D "D "D "D| "D "D "D "D "Dr   