ó
È4ec           @   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= d e j f d „  ƒ  YZ> d  „  Z? e j@ e> jA e> e? ƒ e jB e> jA d! ƒ d S("   sŠ  
A Pillow loader for .dds files (S3TC-compressed aka DXTC)
Jerome Leclanche <jerome@leclan.ch>

Documentation:
  https://web.archive.org/web/20170802060935/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/
iÿÿÿÿN(   t   BytesIOi   (   t   Imaget	   ImageFileiDDS i   i   i   i   i   i   i  € i  @ i   i   i   i    i @  i €  i    i    i@   iDXT1iDXT3iDXT5ia   ib   ic   t   DdsImageFilec           B   s&   e  Z d  Z d Z d „  Z d „  Z RS(   t   DDSs   DirectDraw Surfacec         C   sP  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 ƒ ƒ \ } t  j d | j d ƒ ƒ } | d @rþd „  t	 | ƒ Dƒ } d } | d k rµ| | d 7} n  | | d | d | d 7} d d* |  j
 d | d d f f g |  _ nN| d } d } | d k r,d |  _ d } n| d k rJd |  _ d } nã | d k rhd |  _ d  } nÅ | d! k r| d" 7} t |  j j d" ƒ ƒ } t  j d | j d ƒ ƒ \ } } | t t f k rÛd# |  _ d$ } q-| t k r
d# |  _ d d% |  j d& <d$ } q-t d' | ƒ ‚ n t d( | ƒ ‚ d) d+ |  j
 | | f g |  _ d  S(,   Ns   <IIi   i|   s   Unsupported header size %ri   ix   s   Incomplete header: %s bytess   <3Ii   t   RGBAs   <11Ii,   s   <2Is   <Is   <4Ii   i@   c         S   s/   i  |  ]% \ } } d  d d d g | | “ q S(   t   Rt   Gt   Bt   A(    (   t   .0t   it   mask(    (    s<   /usr/local/lib/python2.7/dist-packages/PIL/DdsImagePlugin.pys
   <dictcomp>   s   	 t    i    I   ÿ    i  ÿ i ÿ  iÿ   t   rawi    i   t   DXT1t   DXT3i   t   DXT5i   t   DX10i   t   BC7i   gš™™™™™@t   gammas   Unimplemented DXGI format %ds   Unimplemented pixel format %rt   bcn(   i    i    (   i    i    (   t   structt   unpackt   fpt   readt   IOErrort   lenR    t   _sizet   modet	   enumeratet   sizet   tilet   pixel_formatt   DXGI_FORMAT_BC7_TYPELESSt   DXGI_FORMAT_BC7_UNORMt   DXGI_FORMAT_BC7_UNORM_SRGBt   im_infot   NotImplementedError(   t   selft   magict   header_sizet   header_bytest   headert   flagst   heightt   widtht   pitcht   deptht   mipmapst   pfsizet   pfflagst   fourcct   bitcountt   maskst   rawmodet
   data_startt   nt   dxt10t   dxgi_formatt	   dimension(    (    s<   /usr/local/lib/python2.7/dist-packages/PIL/DdsImagePlugin.pyt   _openj   sb    $$	$!
+
						
!				c         C   s   d  S(   N(    (   R'   t   pos(    (    s<   /usr/local/lib/python2.7/dist-packages/PIL/DdsImagePlugin.pyt	   load_seek©   s    (   t   __name__t
   __module__t   formatt   format_descriptionR=   R?   (    (    (    s<   /usr/local/lib/python2.7/dist-packages/PIL/DdsImagePlugin.pyR   f   s   	?c         C   s   |  d  d k S(   Ni   s   DDS (    (   t   prefix(    (    s<   /usr/local/lib/python2.7/dist-packages/PIL/DdsImagePlugin.pyt	   _validate­   s    s   .dds(C   t   __doc__R   t   ioR    R   R   R   t	   DDS_MAGICt	   DDSD_CAPSt   DDSD_HEIGHTt
   DDSD_WIDTHt
   DDSD_PITCHt   DDSD_PIXELFORMATt   DDSD_MIPMAPCOUNTt   DDSD_LINEARSIZEt
   DDSD_DEPTHt   DDSCAPS_COMPLEXt   DDSCAPS_TEXTUREt   DDSCAPS_MIPMAPt   DDSCAPS2_CUBEMAPt   DDSCAPS2_CUBEMAP_POSITIVEXt   DDSCAPS2_CUBEMAP_NEGATIVEXt   DDSCAPS2_CUBEMAP_POSITIVEYt   DDSCAPS2_CUBEMAP_NEGATIVEYt   DDSCAPS2_CUBEMAP_POSITIVEZt   DDSCAPS2_CUBEMAP_NEGATIVEZt   DDSCAPS2_VOLUMEt   DDPF_ALPHAPIXELSt
   DDPF_ALPHAt   DDPF_FOURCCt   DDPF_PALETTEINDEXED8t   DDPF_RGBt   DDPF_LUMINANCEt
   DDS_FOURCCt   DDS_RGBt   DDS_RGBAt   DDS_LUMINANCEt   DDS_LUMINANCEAt	   DDS_ALPHAt   DDS_PAL8t   DDS_HEADER_FLAGS_TEXTUREt   DDS_HEADER_FLAGS_MIPMAPt   DDS_HEADER_FLAGS_VOLUMEt   DDS_HEADER_FLAGS_PITCHt   DDS_HEADER_FLAGS_LINEARSIZEt
   DDS_HEIGHTt	   DDS_WIDTHt   DDS_SURFACE_FLAGS_TEXTUREt   DDS_SURFACE_FLAGS_MIPMAPt   DDS_SURFACE_FLAGS_CUBEMAPt   DDS_CUBEMAP_POSITIVEXt   DDS_CUBEMAP_NEGATIVEXt   DDS_CUBEMAP_POSITIVEYt   DDS_CUBEMAP_NEGATIVEYt   DDS_CUBEMAP_POSITIVEZt   DDS_CUBEMAP_NEGATIVEZt   DXT1_FOURCCt   DXT3_FOURCCt   DXT5_FOURCCR"   R#   R$   R   RE   t   register_openRB   t   register_extension(    (    (    s<   /usr/local/lib/python2.7/dist-packages/PIL/DdsImagePlugin.pyt   <module>   s|   








G	