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%d„Z d& d'd„Zd(d„Zd(d„ZGd„de«Zd)d„ZGd„dej«ZGd„dej4ej6«ZGd„de«ZGd„de«ZGd„dej>«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)Né éréé?rr)Úis rÚ
unpack_565r&<s2ۯ
�"‰W˜Ñ  Ñ " a¨1¡f°¡_¸Ñ$:¸QÀ¹XÈ!¹OÐ KÐ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ÚaÚrÚgÚbs rÚ decode_dxt1rH@sÜ€ô�‹Y˜!‰^€FÜ ‹;œ › ¤Y£[´)³+Ð
>€Cä˜V“}ó*-ˆ à˜A‰oˆÜ%×1Ñ1°&¸$ÀÓDш�˜ä Ó'‰
ˆˆB�Ü Ó'‰
ˆˆB�ô�q“ò -ˆAܘ1“Xò
-�ð ™(�ؘq‘y�à�ؘa’<Ø  " b˜!�q‘AØ ’\Ø  " b˜!�q‘AØ ’\Ø ’Ø ™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—M‘M 1 a¨ )Õ,ñ?
-ò -ð*-ð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*FrTéé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�ؘÑ)�ÙØ �Dؘ!‘G‘Aà�Dؘ‘H�AØ�R‘�à" a¨1¨q©5°1©9¡oÑ5¸Ñ=�
à ’?Ø  " b˜!�q‘AØ 1’_Ø  " b˜!�q‘AØ 1’_ؘR™ "™¨Ñ*�AؘR™ "™¨Ñ*�AؘR™ "™¨Ñ*‘AØ 1’_ؘR™ "™¨Ñ*�AؘR™ "™¨Ñ*�AؘR™ "™¨Ñ*�Aà�A‘—
‘
˜q ! Q¨˜lÕ+ñ5
,ò ,ð(,ðT €Jrc óz—t|«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^®së€ô
�‹Y˜"‰_€FÜ ‹;œ › ¤Y£[´)³+Ð
>€Cä˜V“}ó9,ˆ ؘBшØ�S˜3 ™8Ð$ˆä×#Ñ# E¨5Ó1‰ˆˆBä×!Ñ! %¨°Ó2ˆØ˜!‘W  Q¡¨1¡ Ñ-°°a±¸B±Ñ?À4ÈÁ7ÈbÁ=ÑQˆ
ؘ!‘W  Q¡¨1¡ Ñ-ˆ
ä×+Ñ+¨E°5¸!Ó<‰ˆ�ä×$Ñ$ T¨5°"Ó5‰ˆä Ó'‰
ˆˆB�Ü Ó'‰
ˆˆB�ä�q“ó( ,ˆAܘ1“Xó'
,�à"# q¨1¡u¨q¡y¡/�à" bÒ(Ø!+¨Ñ!>À$Ñ F‘IØ$¨Ò*Ø!+¨rÑ!1°zÀQ±È$Ñ6NÑ O‘Ià!+°À"Ñ0DÑ!EÈÑ M�Ià ’>Ø‘AØ !’^Ø‘Aؘ"’Wؘi™-¨2Ñ-°¸Q±À"Ñ0DÑDÈÑJ‘AØ !’^Ø‘AØ !’^Ø‘Aà˜i™-¨2Ñ-°¸Q±À"Ñ0DÑDÈÑJ�Aà" a¨1¨q©5°1©9¡oÑ5¸Ñ=�
à ’?Ø  " b˜!�q‘AØ 1’_Ø  " b˜!�q‘AØ 1’_ؘR™ "™¨Ñ*�AؘR™ "™¨Ñ*�AؘR™ "™¨Ñ*‘AØ 1’_ؘR™ "™¨Ñ*�AؘR™ "™¨Ñ*�AؘR™ "™¨Ñ*�Aà�A‘—
‘
˜q ! Q¨˜lÖ+òO'
,ò( ,ð#9,ðv €Jrcó —eZdZy)ÚBLPFormatErrorN)r r
rrrrr`r`ôs„Ørr`có$—|jd«S)N)óBLP1óBLP2)Ú
startswith)Úprefixs rÚ_acceptrføs€Ø × Ñ Ð/Ó 0Ð0rcó —eZdZdZdZdZdd„Zy)Ú BlpImageFilez
Blizzard Mipmap Format
ÚBLPzBlizzard Mipmap FormatcóB—|j€J‚|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._opens逨�w‰wÐ"Ð"Ð"Ø—W‘W—\‘\ !“_ˆŒ
Ü�t—z‘zÔ"Ø"¤4¨¯
©
Ó#3Ð"4Ð5ˆCÜ  Ó%Ð %ä—m‘m D¨$¯'©'¯,©,°q«/Ó:¸1Ñ=ˆ Ø �:‰:˜Ò Ü—M‘M $¨¯©¯ © °Q«Ó8¸Ñ;¸qÑ@‰Eä—}‘} T¨4¯7©7¯<©<¸«?Ó;¸AÑ>ˆHÜ—M‘M $¨¯©¯ © °Q«Ó8¸Ñ;¸qÑ@ˆEÜ#Ÿ]™]¨4°·±·±¸a³ÓAÀ!ÑDˆNØ �G‰G�L‰L˜œBŸK™KÔ (ä—]‘] 5¨$¯'©'¯,©,°q«/Ó:ˆŒ
ð �:‰:˜Ò Ü—}‘} T¨4¯7©7¯<©<¸«?Ó;¸AÑ>ˆHØ �G‰G�L‰L˜œBŸK™KÔ (à ¨5Ð1ˆD؉Fà ¨5°.ÐAˆD؈Fà—*‘*×#Ñ#Ó%ˆá$‘V¨%ˆŒ
Ü—_‘_ W¨f°t·y±yÑ.@À&È$ÓOÐPˆ� rN©ÚreturnÚNone)r r
rÚ__doc__ÚformatÚformat_descriptionr‰rrrrhrhüs„ñð€FØ1Ðô Qrrhcój—eZdZdZd d„Zej d