� D�g:���dZddlmZddlmZmZmZmZddlm Z m Z ddl m Z dZ dd �Zdd �Zdd�Zdd�Zdd�ZeeeeegZ Gd�d��ZGd�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�|�||kr|tkrdSd|z|z S||z }d|z }|tkrdSdd|z|z zS)Ng��?��?)�EPSILON�r rs �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�|td��tt|t����z zS)Nr)r�maxrrs r�curvedr/s*�� �3�s�8�8�c�#�f�g�"6�"6�7�7�7� 8�8rc�p�tt dz tt||��zz��dzdz S)Ng@r)rrrrs r�siner3s4�� �"��s��b�6�&�#�#6�#6�6�6� 7� 7�#� =�� D�Drc�N�tdt||��dz dzz ��S�Nr��rrrs r�sphere_increasingr!7s)�� ��v�f�c�*�*�S�0�Q�6�6� 7� 7�7rc�N�dtdt||��dzz ��z Srr rs r�sphere_decreasingr#;s)�� ��c�F�6�3�/�/�1�4�4�5�5� 5�5rc�(�eZdZUdZded<d d d �ZdS) � 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} | |dz z } || kr|dz }|j|\}}}}}} || k�||z } | tkr | dd��} n| ||z | z | |z | z ��} tt d|d|dz | z|dzzdz����}tt d|d|dz | z|dzzdz����}tt d|d|dz | z|dzzdz����}tt d|d|dz | z|dzzdz����}|�||z|z|z����yd�|��dfS) Nrr r��r�r�RGBA)r&�rangerr r)�append�join)�selfr(�palette�ix�x0�x1�xm�rgb0�rgb1�segment�i�x�w�scale�r�g�b�as r� getpalettezGradientFile.getpaletteRs����}�(�(�(��� ��*.�-��*;�'��B��D�$���w��� *� *�A��W�q�[�!�A��q�&�&��a���26�-��2C�/��B��D�$���q�&�&��R��A��7�{�{����S�)�)������b��A� ��B��!�|�<�<���3�s�t�A�w��a��0�E�9�D��G�C�D�s�J�K�K�L�L�A��3�s�t�A�w��a��0�E�9�D��G�C�D�s�J�K�K�L�L�A��3�s�t�A�w��a��0�E�9�D��G�C�D�s�J�K�K�L�L�A��3�s�t�A�w��a��0�E�9�D��G�C�D�s�J�K�K�L�L�A� �N�N�1�q�5�1�9�q�=� )� )� )� )��x�x�� � �&�(�(r)r')r(r)rr*)�__name__� __module__� __qualname__r&�__annotations__rC�rrr%r%CsM������� � �  �  �  �  �)�)�)�)�)�)�)rr%c��eZdZdZdd�ZdS) �GimpGradientFilez(File handler for GIMP's gradient format.�fp� IO[bytes]r�Nonec ���|���dd�dkrd}t|���|���}|�d��r&|������}t |��}g|_t |��D]�}|������}d�|dd�D��}|d|d} }|d } |d d �} |d d�} tt |d��} t |d ��}|dkrd }t|���|j� || | | | | f����dS)N� s GIMP Gradientznot a GIMP gradient filesName: c�,�g|]}t|����SrH)r )�.0r<s r� <listcomp>z-GimpGradientFile.__init__.<locals>.<listcomp>�s��*�*�*�a��q���*�*�*r� rrr r-�� zcannot handle HSV colour space) �readline� SyntaxError� startswith�stripr)r&r/�split�SEGMENTS�OSErrorr0)r2rK�msg�line�countr;�sr=r5r6r7r8r9r:�cspaces r�__init__zGimpGradientFile.__init__vsn�� �;�;�=�=��"�� �!1� 1� 1�,�C��c�"�"� "��{�{�}�}�� �?�?�9� %� %� )��;�;�=�=�&�&�(�(�D��D� � ���� ��u��� D� D�A�� � � � �#�#�%�%�A�*�*�1�S�b�S�6�*�*�*�A��q�T�1�Q�4��B��1��B��Q�q�S�6�D��Q�r�T�7�D��s�1�R�5�z�z�*�G���2��Z�Z�F���{�{�6���c�l�l�"� �M� � �"�b�"�d�D�'�!B� C� C� C� C�! D� DrN)rKrLrrM)rDrErF�__doc__rbrHrrrJrJss4������2�2�D�D�D�D�D�DrrJN)r r rr rr )rc� __future__r�mathrrrr�typingrr �_binaryr rrrrr!r#r[r%rJrHrr�<module>rhs_�� �� #�"�"�"�"�"�#�#�#�#�#�#�#�#�#�#�#�#��������������� ��� ,� ,� ,� ,�9�9�9�9�E�E�E�E�8�8�8�8�6�6�6�6� �F�D�"3�5F� G���-)�-)�-)�-)�-)�-)�-)�-)�`"D�"D�"D�"D�"D�|�"D�"D�"D�"D�"Dr
Memory