
 X                 @   s  d  Z  d d l Z d d l m Z d d l m Z m Z d Z d Z d Z	 d Z
 d	 Z d
 Z d Z d Z d Z d	 Z d
 Z d Z d Z d Z d Z d
 Z d Z d Z d Z d Z d Z d Z d Z d Z d Z d Z  e Z! e Z" e e BZ# e  Z$ e  e BZ% e Z& e Z' e e	 Be
 Be BZ( e Z) e Z* e Z+ e Z, e	 Z- e
 Z. e Z/ e e BZ0 e Z1 e e BZ2 e e BZ3 e e BZ4 e e BZ5 e e BZ6 e e BZ7 d Z8 d Z9 d Z: d Z; d Z< d Z= Gd d   d e j  Z> d  d!   Z? e j@ e> jA e> e?  e jB e> jA d"  d S)#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             i   i   i   i   i  @ i   i   i   i    i @  i   i        @   iDXT1iDXT3iDXT5a   b   c   c               @   s4   e  Z d  Z d Z d Z d d   Z d d   Z d S)DdsImageFileZDDSzDirectDraw Surfacec             C   s  t  j d |  j j d   \ } } | d k rC t d |   n  |  j j | d  } t |  d k r t d t |    n  t |  } t  j d | j d	   \ } } } | | f |  _ d
 |  _ t  j d | j d	   \ } }	 }
 t  j d | j d   } t  j d | j d   \ } } | j d  } t  j d | j d   \ } } } } } | d } d } | d k rd |  _	 d } n | d k rd |  _	 d } n | d k rd |  _	 d } n | d k r| d 7} t |  j j d   } t  j d | j d   \ } } | t
 t f k rBd |  _	 d } q| t k rmd |  _	 d" |  j d <d } qt d |   n t d  |   d! d# |  j | | f g |  _ d  S)$Nz<IIr   |   zUnsupported header size %rr   x   zIncomplete header: %s bytesz<3I   ZRGBAz<11I,   z<2Iz<5I   r   s   DXT1ZDXT1r   s   DXT3ZDXT3r   s   DXT5ZDXT5   s   DX10ZBC7   g@gammazUnimplemented DXGI format %dzUnimplemented pixel format %rZbcng]tE?)r   r   )structunpackfpreadIOErrorlenr   sizemodeZpixel_formatDXGI_FORMAT_BC7_TYPELESSDXGI_FORMAT_BC7_UNORMDXGI_FORMAT_BC7_UNORM_SRGBZim_infoNotImplementedErrorZtile)selfmagicZheader_sizeheader_bytesheaderflagsheightwidthZpitchdepthZmipmapsreservedZpfsizeZpfflagsZfourccZbitcountZrmaskZgmaskZbmaskZamaskZ
data_startnZdxt10Zdxgi_formatZ	dimension r-   O/home/ubuntu/projects/ifolica/lib/python3.4/site-packages/PIL/DdsImagePlugin.py_openk   sV    $$	$!	!
						
!				
zDdsImageFile._openc             C   s   d  S)Nr-   )r#   posr-   r-   r.   	load_seek   s    zDdsImageFile.load_seekN)__name__
__module____qualname__formatZformat_descriptionr/   r1   r-   r-   r-   r.   r   g   s   8r   c             C   s   |  d  d  d k S)Nr   s   DDS r-   )prefixr-   r-   r.   	_validate   s    r7   z.dds)C__doc__r   ior   ZPILr   r   Z	DDS_MAGICZ	DDSD_CAPSZDDSD_HEIGHTZ
DDSD_WIDTHZ
DDSD_PITCHZDDSD_PIXELFORMATZDDSD_MIPMAPCOUNTZDDSD_LINEARSIZEZ
DDSD_DEPTHZDDSCAPS_COMPLEXZDDSCAPS_TEXTUREZDDSCAPS_MIPMAPZDDSCAPS2_CUBEMAPZDDSCAPS2_CUBEMAP_POSITIVEXZDDSCAPS2_CUBEMAP_NEGATIVEXZDDSCAPS2_CUBEMAP_POSITIVEYZDDSCAPS2_CUBEMAP_NEGATIVEYZDDSCAPS2_CUBEMAP_POSITIVEZZDDSCAPS2_CUBEMAP_NEGATIVEZZDDSCAPS2_VOLUMEZDDPF_ALPHAPIXELSZ
DDPF_ALPHAZDDPF_FOURCCZDDPF_PALETTEINDEXED8ZDDPF_RGBZDDPF_LUMINANCEZ
DDS_FOURCCZDDS_RGBZDDS_RGBAZDDS_LUMINANCEZDDS_LUMINANCEAZ	DDS_ALPHAZDDS_PAL8ZDDS_HEADER_FLAGS_TEXTUREZDDS_HEADER_FLAGS_MIPMAPZDDS_HEADER_FLAGS_VOLUMEZDDS_HEADER_FLAGS_PITCHZDDS_HEADER_FLAGS_LINEARSIZEZ
DDS_HEIGHTZ	DDS_WIDTHZDDS_SURFACE_FLAGS_TEXTUREZDDS_SURFACE_FLAGS_MIPMAPZDDS_SURFACE_FLAGS_CUBEMAPZDDS_CUBEMAP_POSITIVEXZDDS_CUBEMAP_NEGATIVEXZDDS_CUBEMAP_POSITIVEYZDDS_CUBEMAP_NEGATIVEYZDDS_CUBEMAP_POSITIVEZZDDS_CUBEMAP_NEGATIVEZZDXT1_FOURCCZDXT3_FOURCCZDXT5_FOURCCr   r    r!   r   r7   Zregister_openr5   Zregister_extensionr-   r-   r-   r.   <module>   s~   








@