o
    ÒèFhf  ã                   @  s”   d Z ddlm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.)
é    )Úannotations)ÚlogÚpiÚsinÚsqrté   )Úo8g»½×Ùß|Û=c                 C  sL   || kr| t k r
dS d| |  S ||  }d|  } | t k rdS dd| |   S )Ng        ç      à?ç      ð?)ÚEPSILON©ÚmiddleÚpos© r   úM/var/www/html/loop/nvenv/lib/python3.10/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.   ó   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   r   r   c                 C  s   dt dt| |ƒd  ƒ S r   r   r   r   r   r   Úsphere_decreasing:   r   r   c                   @  s   e Zd ZdZddd„ZdS )ÚGradientFileNé   c                 C  sp  g }d}| j | \}}}}}}	t|ƒD ]�}
|
|d  }||k r2|d7 }| j | \}}}}}}	||k s|| }|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   é   ó    ÚRGBA)ÚgradientÚranger   r   ÚintÚappendÚjoin)ÚselfÚentriesÚpaletteÚ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!   r8   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 ]O}|  ¡  ¡ }dd„ |d d… D ƒ}|d |d	 }	}
|d
 }|dd… }|dd… }tt|d ƒ }t|d ƒ}|dkrmd}t|ƒ‚| 	|	|
||||f¡ q)|| _
d S )Né   s   GIMP Gradientznot a GIMP gradient files   Name: c                 S  s   g | ]}t |ƒ‘qS r   )Úfloat)Ú.0r1   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!   r0   Úsr2   r*   r+   r,   r-   r.   r/   Úcspacer   r   r   Ú__init__h   s,   

zGimpGradientFile.__init__N)r9   r:   r;   Ú__doc__rQ   r   r   r   r   r<   e   s    r<   N)rR   Ú
__future__r   Úmathr   r   r   r   Ú_binaryr   r   r   r   r   r   r   rI   r   r<   r   r   r   r   Ú<module>   s   #