B ¥.¦^Zã@spdZddlZddlmZddlmZmZdZdZdZ dZ d Z d Z d Z d Zd Zd Zd ZdZdZdZdZd ZdZdZdZdZdZdZdZdZdZd Z eZ!eZ"eeBZ#e Z$e eBZ%eZ&eZ'ee Be Be BZ(e Z)eZ*e Z+eZ,e Z-e Z.eZ/eeBZ0eZ1eeBZ2eeBZ3eeBZ4eeBZ5eeBZ6eeBZ7dZ8dZ9dZ:dZ;dZd d!„Z?e @e>jAe>e?¡e Be>jAd"¡dS)#aŠ A Pillow loader for .dds files (S3TC-compressed aka DXTC) Jerome Leclanche 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/ éN)ÚBytesIOé)ÚImageÚ ImageFileiDDS éééiiii€i@iiii i@i€i é é@iDXT1iDXT3iDXT5éaébécc@s$eZdZdZdZdd„Zdd„ZdS)Ú DdsImageFileZDDSzDirectDraw SurfacecCs\t d|j d¡¡\}}|dkr,td|ƒ‚|j |d¡}t|ƒdkrXtdt|ƒƒ‚t|ƒ}t d| d ¡¡\}}}||f|_d |_t d| d ¡¡\}} } t d | d ¡¡t d | d¡¡\} } | d¡} t d| d¡¡\}t d| d¡¡}| d@rhdd„t |ƒDƒ}d}|dkr.||d7}||d|d|d7}dd|j d|ddffg|_ nð|d}d}| dkrŠd|_ d}n¸| d kr d!|_ d"}n¢| d#kr¶d$|_ d%}nŒ| d&kr6|d'7}t|j d'¡ƒ}t d| d¡¡\}}|t tfkrd(|_ d)}n,|tkr(d(|_ d*|jd+<d)}n td,|ƒ‚n td-| ƒ‚d.d|j ||fg|_ dS)/Nzsz&DdsImageFile._open..Úr l~iÿiÿéÿÚraw)rrrrsDXT1ZDXT1sDXT3ZDXT3rsDXT5ZDXT5ésDX10éZBC7ég]tÑEÝ?ÚgammazUnimplemented DXGI format %dzUnimplemented pixel format %rZbcn)ÚstructÚunpackÚfpÚreadÚOSErrorÚlenrÚ_sizeÚmodeÚ enumerateÚsizeZtileZ pixel_formatÚDXGI_FORMAT_BC7_TYPELESSÚDXGI_FORMAT_BC7_UNORMÚDXGI_FORMAT_BC7_UNORM_SRGBÚinfoÚNotImplementedError)ÚselfÚmagicZ header_sizeÚ header_bytesÚheaderÚflagsÚheightÚwidthZpitchÚdepthZmipmapsZpfsizeZpfflagsZfourccZbitcountÚmasksÚrawmodeZ data_startÚnZdxt10Z dxgi_formatZ dimensionrrrÚ_openjsb               zDdsImageFile._opencCsdS)Nr)r4ÚposrrrÚ load_seek©szDdsImageFile.load_seekN)Ú__name__Ú __module__Ú __qualname__ÚformatÚformat_descriptionr?rArrrrrfs?rcCs|dd…dkS)NrsDDS r)ÚprefixrrrÚ _validate­srHz.dds)CÚ__doc__r%ÚiorrrrZ DDS_MAGICZ DDSD_CAPSZ DDSD_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_ALPHAZ DDPF_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_NEGATIVEZZ DXT1_FOURCCZ DXT3_FOURCCZ DXT5_FOURCCr/r0r1rrHZ register_openrEZregister_extensionrrrrÚ s| G