Your IP : 216.73.216.213


Current Path : /opt/alt/python35/lib64/python3.5/site-packages/PIL/__pycache__/
Upload File :
Current File : //opt/alt/python35/lib64/python3.5/site-packages/PIL/__pycache__/DdsImagePlugin.cpython-35.pyc



�ʴW�@sFdZddlZddlmZddlmZmZdZdZdZ	dZ
d	Zd
ZdZ
dZd
Zd	Zd
ZdZdZdZdZd
ZdZdZdZdZdZdZdZdZdZdZ eZ!eZ"eeBZ#e Z$e eBZ%eZ&eZ'ee	Be
BeBZ(e
Z)eZ*eZ+eZ,e	Z-e
Z.eZ/eeBZ0eZ1eeBZ2eeBZ3eeBZ4eeBZ5eeBZ6eeBZ7dZ8dZ9dZ:dd�Z;dd�Z<dd �Z=d!d"�Z>d#d$�Z?d%d&�Z@d'd(�ZAGd)d*�d*ej�ZBd+d,�ZCejDeBjEeBeC�ejFeBjEd-�dS).a_
A Pillow loader for .dds files (S3TC-compressed aka DXTC)
Jerome Leclanche <jerome@leclan.ch>

Documentation:
  http://oss.sgi.com/projects/ogl-sample/registry/EXT/texture_compression_s3tc.txt

The contents of this file are hereby released in the public domain (CC0)
Full text of the CC0 license:
  https://creativecommons.org/publicdomain/zero/1.0/
�N)�BytesIO)�Image�	ImageFileiDDS ����iiii�i@iiii i@i�i � �@iDXT1iDXT3iDXT5cCs?|d?d@d>}|d?d@d>}|d@d>}|||fS)N�����?r�)�bits�a�b�crr�E/opt/alt/python35/lib64/python3.5/site-packages/PIL/DdsImagePlugin.py�
_decode565`srcCsd||dS)Nrr
r)rrrrr�_c2agsrcCs||dS)Nrr)rrrrr�_c2bksrcCsd||dS)Nrr
r)rrrrr�_c3osrc
CsFtd||�}x%td|d�D]}xtd|d�D]�}tjd|jd��\}}}t|�\}	}
}t|�\}}
}x�td�D]�}x�td�D]x}|d@}|d?}|dkr�|	|
|}}}n�|dkr||
|}}}n�|dkr�||kr^t|	|�t|
|
�t||�}}}q�t|	|�t|
|
�t||�}}}nY|dkr�||kr�t|	|�t|
|
�t||�}}}nd
\}}}d|||||}tj	d|||d	�|||d�<q�Wq�Wq@Wq'Wt
|�S)Nrrz<HHIrr
rr�4B�)rrr)�	bytearray�range�struct�unpack�readrrrr�pack�bytes)�data�width�height�ret�y�xZcolor0Zcolor1r�r0�g0�b0�r1�g1�b1�j�iZcontrol�r�gr�idxrrr�_dxt1ss2$

2229r4cCs�|dkr||?d@}n7|dkrB|d?|d>d@B}n||d?d@}|dkri|}n�|dkr~|}nu||kr�d|||d|d}nH|dkr�d}n3|dkr�d	}nd|||d|d
}|S)N���r��rrrrr)�a0�a1�ac0�ac1�aiZac�alpharrr�_dxtc_alpha�s"		!		r@c
Cs&td||�}xtd|d�D]�}x�td|d�D]�}tjd|jd��\}}}}	}
}}t|
�\}
}}t|�\}}}xqtd�D]c}xZtd�D]L}dd||}t||||	|�}|dd||?d@}|dkr-|
||}}}n�|dkrP|||}}}ny|dkr�t|
|�t||�t||�}}}n;|dkr�t|
|�t||�t||�}}}d|||||}tj	d||||�|||d�<q�Wq�Wq@Wq'Wt
|�S)	Nrrz<2BHI2HIr9r
rrr)rrrrr rr@rrr!r")r#r$r%r&r'r(r:r;r<r=Zc0�c1�coder)r*r+r,r-r.r/r0r>r?�ccr1r2rr3rrr�_dxt5�s.	'2/9rDc@s4eZdZdZdZdd�Zdd�ZdS)�DdsImageFileZDDSzDirectDraw SurfacecCsAtjd|jjd��\}}|dkr@td|��|jj|d�}t|�dkr~tdt|���t|�}tjd|jd	��\}}}||f|_d
|_tjd|jd	��\}}	}
tjd|jd��}tjd
|jd��\}}
|jd�}tjd|jd��\}}}}}dd|jd|jddffg|_	|dkr�d|_
t}n.|dkr�d|_
t}nt
d|��zGy||j|j|j�}Wn!tjk
rtd��YnXWd|jj�Xt|�|_dS)Nz<IIr�|zUnsupported header size %rr�xzIncomplete header: %s bytesz<3Ir5ZRGBAz<11I�,z<2Iz<5I��rawrrsDXT1ZDXT1sDXT5ZDXT5zUnimplemented pixel format %rzTruncated DDS file)rr)rr�fpr �IOError�lenr�size�modeZtileZpixel_formatr4rD�NotImplementedErrorr$r%�error�close)�self�magicZheader_size�header_bytes�header�flagsr%r$Zpitch�depthZmipmaps�reservedZpfsizeZpfflagsZfourccZbitcountZrmaskZgmaskZbmaskZamask�codecZdecoded_datarrr�_open�s>$$	$!	!+				
zDdsImageFile._opencCsdS)Nr)rS�posrrr�	load_seekszDdsImageFile.load_seekN)�__name__�
__module__�__qualname__�formatZformat_descriptionr[r]rrrrrE�s-rEcCs|dd�dkS)NrsDDS r)�prefixrrr�	_validatesrcz.dds)G�__doc__r�iorZPILrrZ	DDS_MAGICZ	DDSD_CAPSZDDSD_HEIGHTZ
DDSD_WIDTHZ
DDSD_PITCHZDDSD_PIXELFORMATZDDSD_MIPMAPCOUNTZDDSD_LINEARSIZEZ
DDSD_DEPTHZDDSCAPS_COMPLEXZDDSCAPS_TEXTUREZDDSCAPS_MIPMAPZDDSCAPS2_CUBEMAPZDDSCAPS2_CUBEMAP_POSITIVEXZDDSCAPS2_CUBEMAP_NEGATIVEXZDDSCAPS2_CUBEMAP_POSITIVEYZDDSCAPS2_CUBEMAP_NEGATIVEYZDDSCAPS2_CUBEMAP_POSITIVEZZDDSCAPS2_CUBEMAP_NEGATIVEZZDDSCAPS2_VOLUMEZDDPF_ALPHAPIXELSZ
DDPF_ALPHAZDDPF_FOURCCZDDPF_PALETTEINDEXED8ZDDPF_RGBZDDPF_LUMINANCEZ
DDS_FOURCCZDDS_RGBZDDS_RGBAZ
DDS_LUMINANCEZDDS_LUMINANCEAZ	DDS_ALPHAZDDS_PAL8ZDDS_HEADER_FLAGS_TEXTUREZDDS_HEADER_FLAGS_MIPMAPZDDS_HEADER_FLAGS_VOLUMEZDDS_HEADER_FLAGS_PITCHZDDS_HEADER_FLAGS_LINEARSIZEZ
DDS_HEIGHTZ	DDS_WIDTHZDDS_SURFACE_FLAGS_TEXTUREZDDS_SURFACE_FLAGS_MIPMAPZDDS_SURFACE_FLAGS_CUBEMAPZDDS_CUBEMAP_POSITIVEXZDDS_CUBEMAP_NEGATIVEXZDDS_CUBEMAP_POSITIVEYZDDS_CUBEMAP_NEGATIVEYZDDS_CUBEMAP_POSITIVEZZDDS_CUBEMAP_NEGATIVEZZDXT1_FOURCCZDXT3_FOURCCZDXT5_FOURCCrrrrr4r@rDrErcZ
register_openraZregister_extensionrrrr�<module>s�








&!5