Files
intellecton/venv/lib/python3.12/site-packages/PIL/__pycache__/BlpImagePlugin.cpython-312.pyc
T

149 lines
24 KiB
Plaintext
Raw Normal View History

Ë
ß¼j¸@ãóØdZddlmZddlZddlZddlZddlmZddlm Z ddl
m Z ddl m
Z
mZGd „d
e«ZGd d e«ZGd
de«Zd%dZ d& d'dZd(dZd(dZGdde«Zd)dZGddej«ZGddej4ej6«ZGdde«ZGdde«ZGddej>«Z d*d „Z!e
jDejFee«e
jHejFd!«e
jJd"e«e
jJd#e«e
jLejFe!«e
jNd$e «y)+aÑ
Blizzard Mipmap Format (.blp)
Jerome Leclanche <jerome@leclan.ch>
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/
BLP1 files, used mostly in Warcraft III, are not fully supported.
All types of BLP2 files used in World of Warcraft are supported.
The BLP file structure consists of a header, up to 16 mipmaps of the
texture
Texture sizes must be powers of two, though the two dimensions do
not have to be equal; 512x256 is valid, but 512x200 is not.
The first mipmap (mipmap #0) is the full size image; each subsequent
mipmap halves both dimensions. The final mipmap should be 1x1.
BLP files come in many different flavours:
* JPEG-compressed (type == 0) - only supported for BLP1.
* RAW images (type == 1, encoding == 1). Each mipmap is stored as an
array of 8-bit values, one per pixel, left to right, top to bottom.
Each value is an index to the palette.
* DXT-compressed (type == 1, encoding == 2):
- DXT1 compression is used if alpha_encoding == 0.
- An additional alpha bit is used if alpha_depth == 1.
- DXT3 compression is used if alpha_encoding == 1.
- DXT5 compression is used if alpha_encoding == 7.
é)Ú annotationsN)ÚIntEnum)ÚBytesIO)ÚIOé)ÚImageÚ ImageFilecóeZdZdZy)ÚFormatrN)Ú__name__Ú
__module__Ú __qualname__ÚJPEG©óúU/home/antigravity/intellecton/venv/lib/python3.12/site-packages/PIL/BlpImagePlugin.pyr r ,sØ Drr cóeZdZdZdZdZy)ÚEncodingrééN)r r
rÚ UNCOMPRESSEDÚDXTÚUNCOMPRESSED_RAW_BGRArrrrr0sØ€LØ
€CØÑrrcóeZdZdZdZdZy)Ú
AlphaEncodingrréN)r r
rÚDXT1ÚDXT3ÚDXT5rrrrr6sØ €DØ €DØ Drrcó<|dz dzdz|dz dzdz|dzdzfS) éréé?rr)Úis rÚ
unpack_565r&<s2Ø
"‰W˜Ñ  Ñ " a¨1¡f°¡_¸Ñ$:¸¹XÈ!¹OÐ Krc óêt|«dz}t«t«t«t«f}t|«D]/}|dz}tjd||«\}}}t |«\} }
} t |«\} }
}td«D}td«D}|dz}|dz }d}|dk(r| |
| }}}n„|dk(r| |
|}}}nx|dk(r@||kDr"d| z| zdz}d|
z|
zdz}d| z|zdz}nL| | zdz}|
|
zdz}| |zdz}n3|dk(r.||kDr"d| z| zdz}d|
z|
zdz}d|z| zdz}nd \}}}}|r||j
|g«Œº||j
g«ŒÒŒâŒ2|S)
úE
input: one "row" of data (i.e. will produce 4*width pixels)
éz<HHIérréÿrr)rrrr©ÚlenÚ bytearrayÚrangeÚstructÚ unpack_fromr&Úextend)ÚdataÚalphaÚblocksÚretÚ block_indexÚidxÚcolor0Úcolor1ÚbitsÚr0Úg0Úb0Úr1Úg1Úb1Újr%ÚcontrolÚbs rÚ decode_dxt1rH@ô‹Y˜!‰^€FÜ ‹;œ › ¤Y£[´)³+Ð
>€Cä˜V“}ó*-ˆ à˜A‰oˆÜ%×1°&¸$ÀÓˆ˜ä Ó'‰
ˆˆBÜ Ó'‰
ˆˆBôq“ò -ˆAܘ1“Xò
-ð ™(ؘq‘yàØ˜a  " b˜!q   " b˜!q  Ø ™V b™[¨QÑØ ™V b™[¨QÑØ ™V b™[¨QÑ.™à "™W¨™N˜Ø "™W¨™N˜Ø "™W¨™N™Ø ’\ؠؠ™V b™[¨QÑØ ™V b™[¨QÑØ ™V b™[¨QÑ.™à%/™
˜˜1˜a áؘ‘F—M‘M 1 a¨¨A ,Õ˜F—MM 1  ,ñ?
*-ðX €Jrc ó&t|«dz}t«t«t«t«f}t|«D]M}|dz}|||dz}tjd|«}tjd|d«\}}tjd|d«\} t |«\}
} } t |«\}
}}td«D}d}td«D}d|z|zd z}||}|rd}|dz}nd
}|d z}|d z}| d d|z|zzz d
z}|dk(r|
| | }}}nY|dk(r|
||}}}nM|d k(r"d |
z|
zd
z}d | z|zd
z}d | z|zd
z}n&|d
k(r!d |
z|
zd
z}d |z| zd
z}d |z| zd
z}||j
|g«Œ¸ŒÊŒP|S)r(éz<8Bú<HHr)ú<Ié r*Frérrrr,)r3r5r6r7r8Úblockr;r9r:Úcoder<r=r>r?r@rArBÚhighr%Úalphacode_indexrDÚ
color_coderErFrGs rÚ decode_dxt3rUysô
Y˜"‰_€FÜ  ¤Y£[´)³+Ð
>€Cä˜V“}ó( ؘBшØS˜3 ™8Ðä×! %¨ÓÜ×+¨E°5¸!Ó<‰ˆä×$ T¨5°"Ó5‰ˆä Ó'‰
ˆˆBÜ Ó'‰
ˆˆBäq“ò ,ˆA؈Dܘ1“Xò
,Ø#$ q¡5¨1¡9°Ñ"2ؘÑ)ÙØ ˜!‘G‘Aà˜HRà" a¨1¨q©5°1©9¡oÑ5¸Ñ=
à   " b˜!q 1  " b˜!q 1˜R™ "™¨Ñ*˜R™ "™¨Ñ*˜R™ "™¨Ñ* 1˜R™ "™¨Ñ*˜R™ "™¨Ñ*˜R™ "™¨Ñ*A
˜q ! ˜+ñ5
(,ðT €Jrc ózt|«dz}t«t«t«t«f}t|«D}|dz}|||dz}tjd|«\}}tjd|d«}|d|ddzz|ddzz|dd zz} |d
|d dzz}
tjd |d«\} } tjd
|d«\}
t | «\}}}t | «\}}}td«D])}td«D]}dd|z|zz}|dkr |
|z dz}n|dk(r|
dz | d zdzz}n | |dz
z dz}|d
k(r|}nF|d k(r|}n>||kDrd|z
|z|d z
|zzdz}n$|dk(rd
}n|dk(rd}nd|z
|z|d z
|zzdz}|
dd|z|zzz dz}|d
k(r|||}}}nY|d k(r|||}}}nM|dk(r"d|z|zdz}d|z|zdz}d|z|zdz}n&|dk(r!d|z|zdz}d|z|zdz}d|z|zdz}||j
|g«ŒŒ,Œú|S)zG
input: one "row" of data (i.e. will produce 4 * width pixels)
rJz<BBz<6Brrr)r*r#érrrKrLrMrrNér+r,)r3r5r6r7r8rPÚa0Úa1r;Ú
alphacode1Ú
alphacode2r9r:rQr<r=r>r?r@rArBr%rSÚ alphacoderDrTrErFrGs rÚ decode_dxt5r^®ô
Y˜"‰_€FÜ  ¤Y£[´)³+Ð
>€Cä˜V“}ó9 ؘBшØS˜3 ™8Ðä×# E¨5Ó1‰ˆˆBä×! %¨°Óؘ!‘W  Q¡¨1¡ Ѱa±¸B±Ñ?À4ÈÁ7ÈbÁ=Ñ
ؘ!‘W  Q¡¨1¡ Ñ
ä×+¨E°5¸!Ó<‰ˆä×$ T¨5°"Ó5‰ˆä Ó'‰
ˆˆBÜ Ó'‰
ˆˆBäq“ó( ,ˆ˜1“Xó'
,à"# q¨1¡u¨q¡y¡/à" (Ø!+¨Ñ!>À$Ñ FÒ*Ø!+¨rÑ!1°zÀQ±È$Ñ6NÑ OIà!+°À"Ñ0DÑ!EÈÑ M ‘AØ !˜"’Wؘi™-¨2ѸÀ"Ñ0DÑÑJ !’^Ø‘AØ !’^Ø‘Aà˜i™-¨2ѸQ±À"Ñ0DÑÑJ" a¨1¨q©5°1©9¡oÑ5¸Ñ=
à   " b˜!q 1  " b˜!q 1˜R™ "™¨Ñ*˜R™ "™¨Ñ*˜R™ "™¨Ñ* 1˜R™ "™¨Ñ*˜R™ "™¨Ñ*˜R™ "™¨Ñ*A
˜q ! ˜+òO'
( ,ð#9,ðv €Jrcó eZdZy)ÚBLPFormatErrorN)r r
rrrrr`r`ôsØrr`có$|jd«S)N)óBLP1óBLP2)Ú
startswith)Úprefixs rÚ_acceptrføsØ × Ñ Ð 0rcó eZdZdZdZdZddZy)Ú BlpImageFilez
Blizzard Mipmap Format
ÚBLPzBlizzard Mipmap FormatcóB|jJ|jjd«|_t|j«s#dt |j«}t |«t
jd|jjd««d}|jdk(r6t
jd|jjd««ddk7}nÃt
jd|jjd««d}t
jd|jjd««ddk7}t
jd|jjd««d}|jjdtj«t
jd |jjd
««|_ |jdk(rdt
jd|jjd««d}|jjdtj«|||f}d }n||f}d }|jj«}|rd
nd|_
tj|d|j z||«g|_y)Nr*zBad BLP magic ú<irrbrLú<brú<IIr)ééÚRGBAÚRGB©rr)ÚfpÚreadÚmagicrfÚreprr`r0ÚunpackÚseekÚosÚSEEK_CURÚ_sizeÚdecodeÚ_moder Ú_TileÚsizeÚtile) ÚselfÚmsgÚ compressionr4ÚencodingÚalpha_encodingÚargsÚoffsetÚdecoders rÚ_openzBlpImageFile._openØw‰wЗWW—\\ !“_ˆŒ
Üt—z"¤4¨¯
©
Ó#3Ð"4Ð5ˆ  Ó —mm D¨$¯'©'¯,©,°q«/Ó:¸ Ø :‰:˜Ò Ü—M‘M $¨¯©¯ © °Q«ÓÑ;¸qÑ@‰Eä—}} T¨4¯7©7¯<©<¸«?Ó;¸>ˆHÜ—M‘M $¨¯©¯ © °Q«ÓÑ;¸qÑ@ˆEÜ#Ÿ]™]¨4°·±·±¸a³ÓAÀ!ÑDˆNØ G‰GL‰L˜œBŸK™KÔ —]] 5¨$¯'©'¯,©,°q«/Ó:ˆŒ
ð :‰:˜Ò Ü—}} T¨4¯7©7¯<©<¸«?Ó;¸>ˆ G‰GL‰L˜œBŸK™KÔ  ¨5Ð1ˆD؉Fà ¨5°.ÐAˆD؈Fà—*‘*×á$‘V¨%ˆŒ
Ü—__ W¨f°t·y±yÑ.@À&È$ÓPˆ rÚreturnÚNone)r r
rÚ__doc__ÚformatÚformat_descriptionr‰rrrrhrhüsñð€FØô QrrhcójeZdZdZd dZej d