B ¥.¦^Äã@szddlZddlmZmZmZmZGdd„dƒZdd„Zdd „Zd d „Z dd d„Z ddd„Z ddd„Z ddd„Z dd„ZdS)éNé)ÚGimpGradientFileÚGimpPaletteFileÚ ImageColorÚ PaletteFilec@sFeZdZdZddd„Zdd„Zd d „Zd d „ZeZd d„Z dd„Z dS)Ú ImagePaletteas 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 and of length ``size`` times the number of colors in ``mode``. The list must be aligned by channel (All R values must be contiguous in the list before G and B values.) Defaults to 0 through 255 per channel. :param size: An optional palette size. If given, it cannot be equal to or greater than 256. Defaults to 0. ÚRGBNrcCsv||_d|_|p$ttdƒƒt|jƒ|_i|_d|_|dkrTt|jƒdt|jƒksj|dkrr|t|jƒkrrtdƒ‚dS)Nérzwrong palette size) ÚmodeÚrawmodeÚ bytearrayÚrangeÚlenÚpaletteÚcolorsÚdirtyÚ ValueError)Úselfr rÚsize©rú4/tmp/pip-install-mwhup7aw/Pillow/PIL/ImagePalette.pyÚ__init__'s zImagePalette.__init__cCsHtƒ}|j|_|j|_|jdk r0|jdd…|_|j ¡|_|j|_|S)N)rr r rrÚcopyr)rÚnewrrrr2s  zImagePalette.copycCs$|jr|j|jfS|jd| ¡fS)z£ Get palette contents in format suitable for the low-level ``im.putpalette`` primitive. .. warning:: This method is experimental. z;L)r rr Útobytes)rrrrÚgetdata>s zImagePalette.getdatacCsH|jrtdƒ‚t|jtƒr |jSt d|j¡}t|dƒr@| ¡S| ¡S)zUConvert palette to bytes. .. warning:: This method is experimental. z!palette contains raw palette dataÚBr) r rÚ isinstancerÚbytesÚarrayÚhasattrrÚtostring)rZarrrrrrIs  zImagePalette.tobytescCs¾|jrtdƒ‚t|tƒr®y |j|Stk rªt|jtƒrJt|jƒ|_t |jƒ}|dkrdtdƒ‚||j|<|d|j|<|d|j|d<|d|j|d<d|_ |SXn td|ƒ‚d S) zgGiven an rgb tuple, allocate palette entry. .. warning:: This method is experimental. z!palette contains raw palette datar z$cannot allocate more than 256 colorsrréizunknown color specifier: %rN) r rrÚtuplerÚKeyErrorrrr rr)rÚcolorÚindexrrrÚgetcolorZs$      zImagePalette.getcolorc CsÖ|jrtdƒ‚t|tƒr"t|dƒ}| d¡| d|j¡xŒtdƒD]€}| d|¡xbt|t|jƒ|dt|jƒƒD]<}y| d|j |¡Wq|t k r¶| d ¡Yq|Xq|W| d ¡qFW|  ¡d S) zVSave palette to text file. .. warning:: This method is experimental. z!palette contains raw palette dataÚwz # Palette z # Mode: %s r z%drz %dz 0Ú N) r rrÚstrÚopenÚwriter r rrÚ IndexErrorÚclose)rÚfpÚiÚjrrrÚsavets   (zImagePalette.save)rNr) Ú__name__Ú __module__Ú __qualname__Ú__doc__rrrrr!r'r2rrrrrs    rcCstƒ}||_||_d|_|S)Nr)rr rr)r ÚdatarrrrÚrawŽs r8cCs:g}|dkr2x(tdƒD]}| ||d¡qWnt‚|S)Nrr éÿ)r ÚappendÚNotImplementedError)ZblackÚwhiteÚlutr0rrrÚmake_linear_lutšs r>cCs8g}x.tdƒD]"}| t|d|ddƒ¡qW|S)Nr gào@gà?)r r:Úint)Úexpr=r0rrrÚmake_gamma_lut¤s"rArcCs&ttdƒƒ}| ¡t||t|ƒƒS)Nr )Úlistr Úreverserr)r rrrrÚnegative«s rDcCsDddlm}g}x(tdt|ƒƒD]}| |ddƒ¡q"Wt||ƒS)Nr)Úrandintr r9)ÚrandomrEr rr:r)r rErr0rrrrF±s  rFú#fff0c0cCs@t |¡\}}}td|ƒ}td|ƒ}td|ƒ}td|||ƒS)Nrr)rZgetrgbr>r)r<ÚrÚgÚbrrrÚsepiaºs    rKcCst|ttdƒƒt|ƒƒS)Nr )rrBr r)r rrrÚwedgeÂsrLc Csvt|dƒ�b}xZtjtjtjgD]>}y | d¡||ƒ ¡}|r@PWqttfk rZYqXqWtdƒ‚WdQRX|S)NÚrbrzcannot load palette) r+rrrÚseekZ getpaletteÚ SyntaxErrorrÚOSError)Úfilenamer/ZpaletteHandlerr=rrrÚloadÆs     rR)r)r)rG)r)rÚrrrrrr8r>rArDrFrKrLrRrrrrÚsv