a :jg:ã@sÒdZddlmZddlmZmZmZmZddlm Z m Z ddl m Z dZ dddd œd d „Zdddd œd d „Zdddd œdd„Zdddd œdd„Zdddd œdd„ZeeeeegZGdd„dƒZGdd„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»½×Ùß|Û=Úfloat)ÚmiddleÚposÚreturncCsR||kr"|tkrdSd||Sn,||}d|}|tkr>dSdd||SdS)Ngçà?çð?)ÚEPSILON©r r ©rú>/usr/local/lib/python3.9/site-packages/PIL/GimpGradientFile.pyÚlinear srcCs|tdƒtt|tƒƒS)Nr)rÚmaxrrrrrÚcurved/srcCs$tt dtt||ƒƒddS)Ng@r)rrrrrrrÚsine3srcCstdt||ƒddƒS©Nré©rrrrrrÚsphere_increasing7srcCsdtdt||ƒdƒSrrrrrrÚsphere_decreasing;src@s,eZdZUdZded<d dddœdd „ZdS) Ú GradientFileNzblist[tuple[float, float, float, list[float], list[float], Callable[[float, float], float]]] | NoneÚgradientéÚintztuple[bytes, str])ÚentriesrcCsz|jdusJ‚g}d}|j|\}}}}}} t|ƒD]4} | |d} || krn|d7}|j|\}}}}}} qF||} | tkrŠ| ddƒ} n| ||| | || ƒ} ttd|d|d| |ddƒƒ}ttd|d|d| |ddƒƒ}ttd|d|d| |ddƒƒ}ttd|d|d| |ddƒƒ}| ||||¡q4d |¡dfS) Nrr réÿréóZRGBA)rÚrangerr r!ÚappendÚjoin)Úselfr"ÚpaletteZixÚx0Úx1ÚxmÚrgb0Úrgb1ÚsegmentÚiÚxÚwÚscaleÚrÚgÚbÚarrrÚ getpaletteRs&  ,,,,zGradientFile.getpalette)r )Ú__name__Ú __module__Ú __qualname__rÚ__annotations__r9rrrrrCs ô rc@s eZdZdZdddœdd„ZdS)ÚGimpGradientFilez(File handler for GIMP's gradient format.z IO[bytes]ÚNone)Úfprc Csú| ¡dd…dkr d}t|ƒ‚| ¡}| d¡r>| ¡ ¡}t|ƒ}g|_t|ƒD] }| ¡ ¡}dd„|dd…Dƒ}|d|d }} |d } |d d …} |d d…} tt|dƒ} t|d ƒ}|dkrÜd}t |ƒ‚|j  || | | | | f¡qTdS)Né s GIMP Gradientznot a GIMP gradient filesName: cSsg|] }t|ƒ‘qSr)r )Ú.0r2rrrÚ ‡r%z-GimpGradientFile.__init__..é rrr r$éé zcannot handle HSV colour space) ÚreadlineÚ SyntaxErrorÚ startswithÚstripr!rr&ÚsplitÚSEGMENTSÚOSErrorr')r)r@ÚmsgÚlineÚcountr1Úsr3r+r,r-r.r/r0ZcspacerrrÚ__init__vs*       zGimpGradientFile.__init__N)r:r;r<Ú__doc__rRrrrrr>ssr>N)rSÚ __future__rÚmathrrrrÚtypingrrÚ_binaryr rrrrrrrLrr>rrrrÚs  0