B ] @sddlZddlZddlmZddlmZddlmZmZddgdd gd d gd d ggZ dZ e j ddddx e D]\Z Z ye dkrddlmZmZmZddlmZmZne d krddlmZmZmZddlmZmZne d krddlmZmZmZddlmZmZee e en@e d kr\ddlmZmZmZddlmZmZee e eWneefk rzwrYnXdZ PqrWdZ dZ d'ddZ!ddZ"ddZ#ddZ$dd Z%e rGd!d"d"eZ&d#d$Z'd%d&Z(dS)(N)BytesIO)Image)isPathpy35ZPyQt5Zside2ZPySide24ZPyQt4ZsideZPySidezmSupport for EOL {} is deprecated and will be removed in a future version. Please upgrade to PyQt5 or PySide2.cCs|dtjkS)Nr)sysmodules) qt_versionr -/tmp/pip-build-ktz6qwqq/Pillow/PIL/ImageQt.py"rT)keyreverse)QImageqRgbaQPixmap)QBuffer QIODeviceFcCst||||d@S)zA(Internal) Turns an RGB color into a Qt compatible color integer.l)r)rgbar r r rgb>srcCst}|tj|r(||dn ||dt}y||Wn&t k rr|t |YnX| | dt |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 fromqimageEs   r(cCst|S)N)r()r&r r r fromqpixmap_sr)c Csdddd|}||}t|d\}}||r0dnd}| d}|sH|Sg} x>tt||D]*} | || || d|d|q^Wd| S)zE converts each scanline of data from 8 bit to 32 bit aligned r)1LPrr)divmodrangelenappendjoin) byteswidthmodeZbits_per_pixelZ bits_per_lineZfull_bytes_per_lineZremaining_bits_per_lineZbytes_per_lineZ extra_paddingZnew_datair r r align8to32ms r9c Csd}d}t|dr4tr&t|d}nt|d}t|rFt|}|jdkrZt j }n|jdkrt j }g}x"t dD]}| t|||qxWn|jdkrt j }g}|}xt dt|dD]}| t|||dqWn|jd kr|d d }t j}nn|jd krfy|d d }Wn:tk r\|\}}}} td |||| f}YnXt j}ntd|j|pt||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|_t||j|djd|djd|d|drT||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|d}t|}t|S)Nr=r?)r7convertrQrZ fromImage)r&Zqimager r r toqpixmaps  rS)r))r warningsiorrZ_utilrrZ 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 sL     -