U
    &^                     @   s   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 )    )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Zmiddlepos r   8/tmp/pip-install-a1j0c_p1/Pillow/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   sine0   s    r   c                 C   s   t dt| |d d  S Nr	      r   r   r   r   r   r   sphere_increasing4   s    r   c                 C   s   dt dt| |d   S r   r   r   r   r   r   sphere_decreasing8   s    r   c                   @   s   e Zd ZdZdddZdS )GradientFileN   c                 C   sp  g }d}| j | \}}}}}}	t|D ]8}
|
t|d  }||k rd|d7 }| j | \}}}}}}	q<|| }|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rangefloatr
   r   intappendjoin)selfentriesZpaletteixx0x1xmrgb0rgb1segmentixwZscalergbar   r   r   
getpaletteC   s$    ,,,,zGradientFile.getpalette)r   )__name__
__module____qualname__r   r3   r   r   r   r   r   ?   s   r   c                   @   s   e Zd Zdd ZdS )GimpGradientFilec              	   C   s   |  d d dkrtd|  }|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rtd|	||	|
|||f qN|| _
d S )N   s   GIMP Gradientznot a GIMP gradient files   Name: c                 S   s   g | ]}t |qS r   )r   ).0r-   r   r   r   
<listcomp>|   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linecountr   r,   sr.   r&   r'   r(   r)   r*   r+   Zcspacer   r   r   __init__j   s(    
zGimpGradientFile.__init__N)r4   r5   r6   rI   r   r   r   r   r7   i   s   r7   N)mathr   r   r   r   _binaryr   r
   r   r   r   r   r   rC   r   r7   r   r   r   r   <module>   s   *