U
    ­A›dD  ã                   @   s„   d Z ddlmZmZ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„ dƒZG d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.)
é    )ÚlogÚpiÚsinÚsqrté   )Úo8g»½×Ùß|Û=c                 C   sR   || kr"| t k rdS d| |  S n,||  }d|  } | t k r>dS dd| |   S d S )Ng        ç      à?ç      ð?)ÚEPSILON©ÚmiddleÚpos© r   úM/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/PIL/GimpGradientFile.pyÚlinear   s    r   c                 C   s   |t dƒt t| tƒƒ  S )Nr   )r   Úmaxr
   r   r   r   r   Úcurved.   s    r   c                 C   s$   t t d tt| |ƒ  ƒd d S )Ng       @r	   )r   r   r   r   r   r   r   Úsine2   s    r   c                 C   s   t dt| |ƒd d  ƒS ©Nr	   é   ©r   r   r   r   r   r   Úsphere_increasing6   s    r   c                 C   s   dt dt| |ƒd  ƒ S r   r   r   r   r   r   Úsphere_decreasing:   s    r   c                   @   s   e Zd ZdZddd„ZdS )ÚGradientFileNé   c                 C   sl  g }d}| j | \}}}}}}	t|ƒD �]4}
|
|d  }||k r`|d7 }| j | \}}}}}}	q8|| }|tk r||	ddƒ}n|	|| | || | ƒ}ttd|d |d  | |d   d ƒƒ}ttd|d |d  | |d   d ƒƒ}ttd|d |d  | |d   d ƒƒ}ttd|d |d  | |d   d ƒƒ}| || | | ¡ q&d |¡dfS )	Nr   r   r   éÿ   r   é   ó    ZRGBA)ÚgradientÚranger
   r   ÚintÚappendÚjoin)ÚselfÚentriesÚpaletteZixÚx0Úx1ÚxmÚrgb0Úrgb1ÚsegmentÚiÚxÚwÚscaleÚrÚgÚbÚar   r   r   Ú
getpaletteE   s$    ,,,,zGradientFile.getpalette)r   )Ú__name__Ú
__module__Ú__qualname__r   r4   r   r   r   r   r   B   s   r   c                   @   s   e Zd ZdZdd„ ZdS )ÚGimpGradientFilez(File handler for GIMP's gradient format.c              	   C   sü   |  ¡ d d… dkr d}t|ƒ‚|  ¡ }| d¡r>|  ¡  ¡ }t|ƒ}g }t|ƒD ]ž}|  ¡  ¡ }dd„ |d d… D ƒ}|d |d	  }	}
|d
 }|dd… }|dd… }tt|d ƒ }t|d ƒ}|dkrÚd}t|ƒ‚| 	|	|
||||f¡ qR|| _
d S )Né   s   GIMP Gradientznot a GIMP gradient files   Name: c                 S   s   g | ]}t |ƒ‘qS r   )Úfloat)Ú.0r-   r   r   r   Ú
<listcomp>y   s     z-GimpGradientFile.__init__.<locals>.<listcomp>é   r   r   r   r   é   é   zcannot handle HSV colour space)ÚreadlineÚSyntaxErrorÚ
startswithÚstripr    r   ÚsplitÚSEGMENTSÚOSErrorr!   r   )r#   ÚfpÚmsgÚlineÚcountr   r,   Úsr.   r&   r'   r(   r)   r*   r+   Zcspacer   r   r   Ú__init__h   s,    
zGimpGradientFile.__init__N)r5   r6   r7   Ú__doc__rL   r   r   r   r   r8   e   s   r8   N)rM   Úmathr   r   r   r   Ú_binaryr   r
   r   r   r   r   r   rE   r   r8   r   r   r   r   Ú<module>   s   #