zmc
2023-08-08 e792e9a60d958b93aef96050644f369feb25d61b
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
U
T±d¥%ã@s²dZddlZddlmZddlmZmZddlmZ    dZ
dZ dZ d    Z d
Zd Zd Zd ZdZd
Zd ZdZdZdZdZd ZdZdZdZdZdZdZd    Z dZ!dZ"d Z#e Z$e"Z%e"eBZ&e#Z'e#eBZ(eZ)e!Z*e e Be BeBZ+eZ,eZ-eZ.eZ/e Z0e Z1eZ2eeBZ3eZ4eeBZ5eeBZ6eeBZ7eeBZ8eeBZ9eeBZ:dZ;dZ<dZ=dZ>dZ?dZ@dZAd ZBd!ZCd"ZDd#ZEd$ZFd%ZGd&ZHGd'd(„d(ejƒZId)d*„ZJd+d,„ZKe LeIjMeIeK¡e NeIjMeJ¡e OeIjMd-¡dS).aŠ
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/
éN)ÚBytesIOé)ÚImageÚ    ImageFile)Úo32leiDDS éééiiii€i@iiii i@i€i é é@iDXT1iDXT3iDXT5ééééRéSéTé_é`éaébécc@s$eZdZdZdZdd„Zdd„ZdS)Ú DdsImageFileZDDSzDirectDraw SurfacecCst|j d¡ƒsd}t|ƒ‚t d|j d¡¡\}|dkrPdt|ƒ›}t|ƒ‚|j |d¡}t|ƒdkr„dt|ƒ›d}t|ƒ‚t    |ƒ}t d    | d
¡¡\}}}||f|_
d |_ t d    | d
¡¡\}}    }
t d | d ¡¡t d| d¡¡\} } | d¡} t d| d¡¡\}t d| d¡¡}| t @rh| t @r@d|_ nd|_ dd|jd|j ddffg|_n˜| t@rìdd„t|ƒDƒ}d}| t @r ||d7}nd|_ ||d|d|d7}dd|jd|ddd …ddffg|_n|d}d}| d!krd"|_d}nÔ| d#kr(d$|_d%}n¼| d&kr@d'|_d(}n¤| d)kr^d*|_d}d|_ n†| d+kr|d,|_d-}d|_ nh| d.kršd/|_d-}d|_ nJ| d0krÎ|d17}t d|j d¡¡\}|j d¡|ttfkrîd,|_d-}d|_ nÞ|tkr
d/|_d-}d|_ nÂ|tkr&d2|_d3}d|_ n¦|tkrBd4|_d3}d|_ nŠ|ttfkr\d5|_d6}np|tkr|d5|_d7|jd8<d6}nP|tttfkrºdd|jdd9fg|_|tkr¶d7|jd8<dSd:|›}t|ƒ‚nd;t| ƒ›}t|ƒ‚d<d|j|||jffg|_dS)=Nrznot a DDS filez<Ié|zUnsupported header size éxzIncomplete header: z bytesz<3Ié ÚRGBAz<11Ié,z<2Ir    z<4IéÚLAÚLÚraw©rrrrcSs"i|]\}}|ddddg|“qS)ÚRÚGÚBÚA©)Ú.0ÚiÚmaskr&r&úId:\z\workplace\vscode\pyvenv\venv\Lib\site-packages\PIL/DdsImagePlugin.pyÚ
<dictcomp>—sz&DdsImageFile._open.<locals>.<dictcomp>Úì~ÚRGBéÿéÿéÿéÿÿÿÿsDXT1ZDXT1sDXT3ZDXT3rsDXT5ZDXT5ésATI1ZBC4sATI2ZBC5ésBC5SZBC5SsDX10éZBC6HéZBC6HSZBC7ég]tÑEÝ?Úgamma)rrrzUnimplemented DXGI format zUnimplemented pixel format Zbcn) Ú_acceptÚfpÚreadÚ SyntaxErrorÚstructÚunpackÚreprÚOSErrorÚlenrÚ_sizeÚmodeÚDDPF_LUMINANCEÚDDPF_ALPHAPIXELSÚsizeZtileÚDDPF_RGBÚ    enumerateZ pixel_formatÚDXGI_FORMAT_BC5_TYPELESSÚDXGI_FORMAT_BC5_UNORMÚDXGI_FORMAT_BC5_SNORMÚDXGI_FORMAT_BC6H_UF16ÚDXGI_FORMAT_BC6H_SF16ÚDXGI_FORMAT_BC7_TYPELESSÚDXGI_FORMAT_BC7_UNORMÚDXGI_FORMAT_BC7_UNORM_SRGBÚinfoÚDXGI_FORMAT_R8G8B8A8_TYPELESSÚDXGI_FORMAT_R8G8B8A8_UNORMÚDXGI_FORMAT_R8G8B8A8_UNORM_SRGBÚNotImplementedError)ÚselfÚmsgÚ header_sizeÚ header_bytesÚheaderÚflagsÚheightÚwidthZpitchÚdepthZmipmapsZpfsizeZpfflagsZfourccÚbitcountÚmasksÚrawmodeZ
data_startÚnZ dxgi_formatr&r&r*Ú_openssÆ 
 
 
 
"
 
*
 
 
 
 
 
 
 
 
 
 
 
 
 
 
ý
 
 
 
ÿzDdsImageFile._opencCsdS©Nr&)rVÚposr&r&r*Ú    load_seekèszDdsImageFile.load_seekN)Ú__name__Ú
__module__Ú __qualname__ÚformatÚformat_descriptionrcrfr&r&r&r*rosurc
Csº|jdkr d|j›d}t|ƒ‚|j}dddg}|jdkr@t}nt}|ddd…}|jd    krn|tO}| d
¡t|ƒd }t|ƒd kr’| d ¡qz| tt    ƒtdƒtt
t Bt Bt BtBƒt|jƒt|jƒt|j|dd ƒtd ƒtd ƒtd ƒdtdƒt|ƒtd ƒt|ƒd dd„|Dƒ¡ttƒtd ƒtd ƒtd ƒtd ƒ¡|jdkr’| ¡\}}    }
} t d| ||    |
f¡}t ||dd|jd |d dffg¡dS)N)r.rrrzcannot write mode z as DDSr/r0r1)rrr2)rrr-r    rrrr7é r
ócss|]}t|ƒVqdSrd)Úo32)r'r)r&r&r*Ú    <genexpr>sz_save.<locals>.<genexpr>rr r!r)rCr@rDrGrEÚappendrAÚwriternÚ    DDS_MAGICÚ    DDSD_CAPSÚ DDSD_HEIGHTÚ
DDSD_WIDTHÚ
DDSD_PITCHÚDDSD_PIXELFORMATr\r]ÚjoinÚDDSCAPS_TEXTUREÚsplitrÚmergerÚ_saverF) Zimr:ÚfilenamerWrar`Z pixel_flagsr_ÚrÚgÚbÚar&r&r*r|ìsx
 
 
 
 
   ÿÿþûúùø    ÷
 
ö õ ô óòñðïîíìÿ r|cCs|dd…dkS)NrsDDS r&)Úprefixr&r&r*r9sr9z.dds)PÚ__doc__r=Úiorr,rrÚ_binaryrrnrrrsrtrurvrwZDDSD_MIPMAPCOUNTZDDSD_LINEARSIZEZ
DDSD_DEPTHZDDSCAPS_COMPLEXryZDDSCAPS_MIPMAPZDDSCAPS2_CUBEMAPZDDSCAPS2_CUBEMAP_POSITIVEXZDDSCAPS2_CUBEMAP_NEGATIVEXZDDSCAPS2_CUBEMAP_POSITIVEYZDDSCAPS2_CUBEMAP_NEGATIVEYZDDSCAPS2_CUBEMAP_POSITIVEZZDDSCAPS2_CUBEMAP_NEGATIVEZZDDSCAPS2_VOLUMErEZ
DDPF_ALPHAZ DDPF_FOURCCZDDPF_PALETTEINDEXED8rGrDZ
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_FOURCCrRrSrTrIrJrKrLrMrNrOrPrr|r9Z register_openrjZ register_saveZregister_extensionr&r&r&r*Ú<module>s’   }1