�
D�g: � � � d Z ddlmZ ddlmZmZmZmZ ddlm Z m
Z
ddlmZ dZ
dd�Zdd
�Zdd�Zdd�Zdd�ZeeeeegZ G d� d� � Z G d� de� � ZdS )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 rdS d|z | z S || z
}d| z
} | t k rdS dd|z | z z S )Ng � �?� �?)�EPSILON�r r s �d/home/asafur/pinokio/api/open-webui.git/app/env/lib/python3.11/site-packages/PIL/GimpGradientFile.py�linearr s` � �
�f�}�}��G����3���9�v�%�%��F�l���v����G����3���s��V�+�+�+� c �l � |t d� � t t | t � � � � z z S )Nr )r �maxr r s r �curvedr / s* � ��3�s�8�8�c�#�f�g�"6�"6�7�7�7�8�8r c �p � t t dz t t | |� � z z � � dz dz S )Ng @r )r r r r s r �siner 3 s4 � ��"��s��b�6�&�#�#6�#6�6�6�7�7�#�=��D�Dr c �N � t dt | |� � dz
dz z
� � S �Nr � �r r r s r �sphere_increasingr! 7 s) � ���v�f�c�*�*�S�0�Q�6�6�7�7�7r c �N � dt dt | |� � dz z
� � z
S r r r s r �sphere_decreasingr# ; s) � ���c�F�6�3�/�/�1�4�4�5�5�5�5r c �( � e Zd ZU dZded<