K i1#ddlmZddlZddlmZddlmZddlmZm Z m Z m Z dZ e rddlm Z Gd d Zdd Zdd Zdd ZdddZdddZdddZdddZddZy)) annotationsN)Sequence)IO)GimpGradientFileGimpPaletteFile ImageColor PaletteFileF)ImageceZdZdZ d ddZeddZejddZeddZejddZddZ dd Z dd Z e Z d dd Z d dd Zdd Zy) ImagePalettea Color palette for palette mapped images :param mode: The mode to use for the palette. See: :ref:`concept-modes`. Defaults to "RGB" :param palette: An optional palette. If given, it must be a bytearray, an array or a list of ints between 0-255. The list must consist of all channels for one color followed by the next color (e.g. RGBRGBRGB). Defaults to an empty palette. NcT||_d|_|xs t|_d|_yN)moderawmode bytearraypalettedirty)selfrrs V/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/PIL/ImagePalette.py__init__zImagePalette.__init__+s'  #' -)+ !% c|jSr)_paletters rrzImagePalette.palette5s }}rc d|_||_yr)_colorsr)rrs rrzImagePalette.palette9s:>  rc,|j}t|j}i|_tdt|j|D]>}t |j|||z}||jvr-||z|j|<@|jS)Nr)rlenrrangertuple)rmode_lenicolors rcolorszImagePalette.colors>s << 499~HDL1c$,,/: 4dll1q8|<=DLL(&'8m U#  4 ||rc||_yr)r)rr%s rr%zImagePalette.colorsJs  rct}|j|_|j|_|j|jdd|_|j|_|Sr)r rrrr)rnews rcopyzImagePalette.copyNsHn99ll << #,,q/CKJJ  rc|jr|j|jfS|j|jfS)z Get palette contents in format suitable for the low-level ``im.putpalette`` primitive. .. warning:: This method is experimental. )rrrtobytesrs rgetdatazImagePalette.getdataYs3 <<<<- -yy$,,.((rc|jr d}t|t|jtr |jSt j d|j}|j S)zUConvert palette to bytes. .. warning:: This method is experimental. !palette contains raw palette dataB)r ValueError isinstancerbytesarrayr+)rmsgarrs rr+zImagePalette.tobytesdsR <<5CS/ ! dllE *<< kk#t||,{{}rct|jtst|j|_t |jdz}d}|rD|j j d|j j df}||vr |dz }||vr |dk\rV|rAttt|jD]\}}|dk(s ||vs|}n|dk\rd}t|||S) N background transparencyrrz$cannot allocate more than 256 colors) r1rrrrinfogetreversedlist enumerate histogramr0)rimageeindexspecial_colorsr#countr4s r_new_color_indexzImagePalette._new_color_indexts$,, 2%dll3DMDLL!Q&CE  |, ~.N>) >) C< (i8I.J)K LHAuza~&= !|< o1, rc|jr d}t|t|trj|jdk(r)t |dk(r=|ddk7r d}t||dd}n"|jdk(rt |dk(r|d z } |j |Sd t|}t|#t$r}|j||}t|jtsJ||j |<|dzt |jkr:|jd|dzt|z|j|dzdzdz|_ n|xjt|z c_ d |_ |cYd}~Sd}~wwxYw) zgGiven an rgb tuple, allocate palette entry. .. warning:: This method is experimental. r.RGBr7z/cannot add non-opaque RGBA color to RGB paletteNRGBA)rKrzunknown color specifier: )rr0r1r!rrr%KeyErrorrGrrrr2rrepr)rr$rBr4rCrDs rgetcolorzImagePalette.getcolorsk <<5CS/ ! eU #yyE!u:?Qx3O(o-!"1IEf$u:?VOE {{5))".d5k];CS/ !# --eQ7!$--;;;%* E"19s4<<00 k 2,'-- A 89M MMU5\1M   sB-- E96B8E4.E94E9cX|jr d}t|t|tr t |d}|j d|j d|j dtdD]}|j |t|t|j z|dzt|j zD]$} |j d|j|&|j d|jy #t$r|j d YgwxYw) zVSave palette to text file. .. warning:: This method is experimental. r.wz # Palette z# Mode:  r;r z 0N) rr0r1stropenwriterr rr IndexErrorclose)rfpr4r#js rsavezImagePalette.saves <<5CS/ ! b# b#B  8DII;b)*s A HHs 1s499~-ATYY/GH ##HHqa 123 # HHTN   "#HHTN#s!D  D)(D))rIN)rrTrz(Sequence[int] | bytes | bytearray | NonereturnNone)r\!Sequence[int] | bytes | bytearray)rr^r\r])r\dict[tuple[int, ...], int])r%r_r\r])r\r )r\z-tuple[str, Sequence[int] | bytes | bytearray])r\r2)NN)rBImage.Image | NonerCzException | Noner\intr)r$ztuple[int, ...]rBr`r\ra)rYz str | IO[str]r\r])__name__ __module__ __qualname____doc__rpropertyrsetterr%r)r,r+tostringrGrOr[r8rrr r s <@&&:&  & ^^     ]]  ) HGK'3C :%))")"")" )"Vrr cDt}||_||_d|_|S)Nr)r rrr)rdatars rrawrks#nGGOGOGM Nrc|dk(r(tdDcgc]}t||zdzc}Sd}t|cc}w)Nrr;rKz"unavailable when black is non-zero)r raNotImplementedError)blackwhiter#r4s rmake_linear_lutrpsA z/4Sz:!EAI$%:: .C c "";s;chtdDcgc]}t|dz |zdzdzc}Scc}w)Nr;go@g?)r ra)expr#s rmake_gamma_lutrss2=B3Z HC!e)#u,s2 3 HH Hs/c ttdt|z}|jt ||Dcgc]}|t|zc}Scc}wNr;)r?r rreverser rrr#s rnegativerxsF5s4y)*G OO w?!qCI~? @@?sA cddlm}tdt|zDcgc] }|dd }}t ||Scc}w)Nr)randintr;rK)randomrzr rr )rrz_rs rr{r{s>(-cCIo(>?1wq#?G? g &&@s>c tj|Dcgc]}td|}}tdt dDcgc]}||dz|dzc}Scc}wcc}w)NrrIir7)r getrgbrpr r )robandbandsr#s rsepiars]2<2C2CE2J K$_Q % KE K eGnMa!e Q!V 4M NN LMs AA! c ttdt|z}t||Dcgc]}|t|zc}Scc}wru)r?r rr rws rwedgers<5s4y)*G w?!qCI~? @@?sA cTt|d5}tjtjtjg}|D].} |j d||j }|rn0d}t| ddd|S#t tf$rYZwxYw#1swYSxYw)Nrbrzcannot load palette) rUrrr seek getpalette SyntaxErrorr0OSError)filenamerYpaletteHandlerspaletteHandlerlutr4s rloadrs h   + +  - -  # # . N  $R(335 (C#,  #0 J  ,  %0 Js/5B)B,BBBBBB')rrTrjr^r\r )rnrarofloatr\ list[int])rrrr\r)rI)rrTr\r )z#fff0c0)rorTr\r )rrTr\ztuple[bytes, str]) __future__rr3collections.abcrtypingrrrr r TYPE_CHECKINGr r rkrprsrxr{rrrr8rrrs]$# $HH nnj#IA 'O A r