3 }\ @sddlmZddlmZmZddlmZddlZddlZddgdd gd d gd d ggZ dZ e j ddddx e D]\Z Z ye dkrddlmZmZmZddlmZmZne d krddlmZmZmZddlmZmZne d krddlmZmZmZddlmZmZeje je en@e d kr\ddlmZmZmZddlmZmZeje je eWneefk rzwrYnXdZ PqrWdZ dZ d'ddZ!ddZ"ddZ#ddZ$dd Z%e rGd!d"d"eZ&d#d$Z'd%d&Z(dS)()Image)isPathpy3)BytesION5ZPyQt5Zside2ZPySide24ZPyQt4ZsideZPySidezmSupport for EOL {} is deprecated and will be removed in a future version. Please upgrade to PyQt5 or PySide2.cCs|dtjkS)Nr)sysmodules) qt_versionr c/private/var/folders/pf/wv4htv3x0qs2c2mp0dnn0kchsvlck3/T/pip-install-i584jbuk/Pillow/PIL/ImageQt.py&srT)keyreverse)QImageqRgbaQPixmap)QBuffer QIODeviceFcCst||||d@S)zA(Internal) Turns an RGB color into a Qt compatible color integer.l)r)rgbar r r rgbCsrc Cst}|jtj|jr(|j|dn |j|dt}y|j|jWn&t k rr|jt |jYnX|j |j dt j|S)zs :param im: A PIL Image object, or a file name (given either as Python string or a PyQt string object) Zpngppmr)ropenrZ ReadWriteZhasAlphaChannelsaverwritedata TypeErrorstrcloseseekr)imbufferrr r r fromqimageJs   r'cCst|S)N)r')r%r r r fromqpixmapdsr(c Csdddd|}||}t|d\}}||r0dnd}| d}|sH|Sg} x>tt||D]*} | j|| || d|d|q^Wdj| S)zE converts each scanline of data from 8 bit to 32 bit aligned r)1LPr)divmodrangelenappendjoin) byteswidthmodeZbits_per_pixelZ bits_per_lineZfull_bytes_per_lineZremaining_bits_per_lineZbytes_per_lineZ extra_paddingZnew_datair r r align8to32rs r9c Csd}d}t|dr4tr&t|jd}nt|jd}t|rFtj|}|jdkrZt j }n|jdkrt j }g}x"t dD]}|j t|||qxWn|jdkrt j }g}|j}xt dt|dD]}|j t|||dqWn|jd kr|jd d }t j}nn|jd krfy|jd d }Wn:tk r\|j\}}}} tjd |||| f}YnXt j}ntd|j|pt|j|jd|j} | |||dS)NtoUtf8zutf-8r*r+r,rRGBrawZBGRXRGBAZBGRAzunsupported image mode %r)r r%format colortable)hasattrrr"r:unicoderrrr7rZ Format_MonoZFormat_Indexed8r1r3rZ getpaletter2tobytesZ Format_RGB32 SystemErrorsplitmergeZ Format_ARGB32 ValueErrorr9size) r%r rAr@r8ZpaletterrrrZ__datar r r _toqclass_helpersD          rJc@seZdZddZdS)ImageQtcCsXt|}|d|_tj||j|djd|djd|d|drT|j|ddS)z An PIL image wrapper for Qt. This is a subclass of PyQt's QImage class. :param im: A PIL Image object, or a file name (given either as Python string or a PyQt string object). r r%rrr@rAN)rJZ_ImageQt__datar__init__rIZ setColorTable)selfr%Zim_datar r r rLs zImageQt.__init__N)__name__ __module__ __qualname__rLr r r r rKsrKcCst|S)N)rK)r%r r r toqimagesrQcCs&|jdkr|jd}t|}tj|S)Nr=r?)r7convertrQrZ fromImage)r%Zqimager r r toqpixmaps  rS)r))rZ_utilrriorr warningsZ qt_versionsZ WARNING_TEXTsortr Z qt_moduleZ PyQt5.QtGuirrrZ PyQt5.QtCorerrZ PySide2.QtGuiZPySide2.QtCoreZ PyQt4.QtGuiZ PyQt4.QtCorewarnr@DeprecationWarningZ PySide.QtGuiZ PySide.QtCore ImportError RuntimeErrorZqt_is_installedrr'r(r9rJrKrQrSr r r r sT       /