Ë
    ^ãjîJ  ã                  óÆ  — d Z ddlmZ dhZddlZddlZddlmZmZ ddl	m
Z
mZmZ ddlmZ dd	lmZ dd
lmZ dZerddlmZ dZ G d„ de«      Z G d„ de«      Z G d„ de«      Z G d„ de«      Z G d„ de«      Z G d„ de«      Zej:                  e   ZeD ]1  Z e jB                  €J ‚ e"ede jB                  › �e jF                  «       Œ3 eD ]1  Z$e$jB                  €J ‚ e"ede$jB                  › �e$jF                  «       Œ3 eD ]1  Z%e%jB                  €J ‚ e"ede%jB                  › �e%jF                  «       Œ3 eD ]1  Z&e&jB                  €J ‚ e"ede&jB                  › �e&jF                  «       Œ3 ejN                  Z(ejR                  Z*ejR                  ejV                  z  Z,ejZ                  Z.ejZ                  ejV                  z  Z/ej`                  Z1ejd                  Z3ejh                  ejj                  z  ejl                  z  ejn                  z  Z8ejr                  Z:ejv                  Z<ejz                  Z>ej~                  Z@ejj                  ZAejl                  ZBej†                  ZDejŠ                  ejŒ                  z  ZGejŠ                  ZHej’                  ej”                  z  ZKej’                  ej˜                  z  ZMej’                  ejœ                  z  ZOej’                  ej                   z  ZQej’                  ej¤                  z  ZSej’                  ej¨                  z  ZUej¬                  ZWej°                  ZYej´                  Z[ej¸                  Z]ej¼                  Z_ejÀ                  ZaejÄ                  ZcejÈ                  ZeejÌ                  ZgejÐ                  ZiejÔ                  ZkejØ                  ZmejÜ                  Zoejà                  Zq G d„ dej                  «      Zr G d „ d!ejæ                  «      Ztd&d"„Zud'd#„Zv e
jî                  erjð                  erev«        e
jò                  d$et«        e
jô                  erjð                  eu«        e
jö                  erjð                  d%«       y)(a†  
A Pillow plugin 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/
é    )ÚannotationsÚstructN)ÚIntEnumÚIntFlagé   )ÚImageÚ	ImageFileÚImagePalette)Úi32le)Úo8)Úo32leF)ÚIOiDDS c                  ó,   — e Zd ZdZdZdZdZdZdZdZ	dZ
y	)
ÚDDSDr   é   é   é   é   é   i   i  € N)Ú__name__Ú
__module__Ú__qualname__ÚCAPSÚHEIGHTÚWIDTHÚPITCHÚPIXELFORMATÚMIPMAPCOUNTÚ
LINEARSIZEÚDEPTH© ó    úT/var/www/html/metafoliadorv2/venv/lib/python3.12/site-packages/PIL/DdsImagePlugin.pyr   r   #   s*   „ Ø€DØ€FØ€EØ€EØ€KØ€KØ€JØ�Er"   r   c                  ó   — e Zd ZdZdZdZy)ÚDDSCAPSr   r   i  @ N)r   r   r   ÚCOMPLEXÚTEXTUREÚMIPMAPr!   r"   r#   r%   r%   /   s   „ Ø€GØ€GØ�Fr"   r%   c                  ó,   — e Zd ZdZdZdZdZdZdZdZ	dZ
y	)
ÚDDSCAPS2i   é   i   r   i    i @  i €  i    N)r   r   r   ÚCUBEMAPÚCUBEMAP_POSITIVEXÚCUBEMAP_NEGATIVEXÚCUBEMAP_POSITIVEYÚCUBEMAP_NEGATIVEYÚCUBEMAP_POSITIVEZÚCUBEMAP_NEGATIVEZÚVOLUMEr!   r"   r#   r*   r*   5   s0   „ Ø€GØÐØÐØÐØÐØÐØÐØ�Fr"   r*   c                  ó$   — e Zd ZdZdZdZdZdZdZy)ÚDDPFr   r   r   é    é@   r   N)	r   r   r   ÚALPHAPIXELSÚALPHAÚFOURCCÚPALETTEINDEXED8ÚRGBÚ	LUMINANCEr!   r"   r#   r5   r5   A   s    „ Ø€KØ€EØ€FØ€OØ
€CØ�Ir"   r5   c                  óð  — e 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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.Z0d/Z1d0Z2d1Z3d2Z4d3Z5d4Z6d5Z7d6Z8d7Z9d8Z:d9Z;d:Z<d;Z=d<Z>d=Z?d>Z@d?ZAd@ZBdAZCdBZDdCZEdDZFdEZGdFZHdGZIdHZJdIZKdJZLdKZMdLZNdMZOdNZPdOZQdPZRdQZSdRZTdSZUdTZVdUZWdVZXdWZYdXZZdYZ[dZZ\d[Z]d\Z^d]Z_d^Z`d_Zad`ZbdaZcdbZddcZeddZfdeZgdfZhdgZidhZjdiZkdjZldkZmdlZndmZodnZpdoZqdpZrdqZsdrZtdsZudtZvduZwdvZxdwZydxZzdyZ{yz){ÚDXGI_FORMATr   r   r   é   r   é   é   é   r   é	   é
   é   é   é   é   é   é   é   é   é   é   é   é   é   é   é   é   é   é   é   é   é   r6   é!   é"   é#   é$   é%   é&   é'   é(   é)   é*   é+   é,   é-   é.   é/   é0   é1   é2   é3   é4   é5   é6   é7   é8   é9   é:   é;   é<   é=   é>   é?   r7   éA   éB   éC   éD   éE   éF   éG   éH   éI   éJ   éK   éL   éM   éN   éO   éP   éQ   éR   éS   éT   éU   éV   éW   éX   éY   éZ   é[   é\   é]   é^   é_   é`   éa   éb   éc   éd   ée   éf   ég   éh   éi   éj   ék   él   ém   én   éo   ép   éq   ér   és   é‚   éƒ   é„   é½   é¾   N)|r   r   r   ÚUNKNOWNÚR32G32B32A32_TYPELESSÚR32G32B32A32_FLOATÚR32G32B32A32_UINTÚR32G32B32A32_SINTÚR32G32B32_TYPELESSÚR32G32B32_FLOATÚR32G32B32_UINTÚR32G32B32_SINTÚR16G16B16A16_TYPELESSÚR16G16B16A16_FLOATÚR16G16B16A16_UNORMÚR16G16B16A16_UINTÚR16G16B16A16_SNORMÚR16G16B16A16_SINTÚR32G32_TYPELESSÚR32G32_FLOATÚR32G32_UINTÚR32G32_SINTÚR32G8X24_TYPELESSÚD32_FLOAT_S8X24_UINTÚR32_FLOAT_X8X24_TYPELESSÚX32_TYPELESS_G8X24_UINTÚR10G10B10A2_TYPELESSÚR10G10B10A2_UNORMÚR10G10B10A2_UINTÚR11G11B10_FLOATÚR8G8B8A8_TYPELESSÚR8G8B8A8_UNORMÚR8G8B8A8_UNORM_SRGBÚR8G8B8A8_UINTÚR8G8B8A8_SNORMÚR8G8B8A8_SINTÚR16G16_TYPELESSÚR16G16_FLOATÚR16G16_UNORMÚR16G16_UINTÚR16G16_SNORMÚR16G16_SINTÚR32_TYPELESSÚ	D32_FLOATÚ	R32_FLOATÚR32_UINTÚR32_SINTÚR24G8_TYPELESSÚD24_UNORM_S8_UINTÚR24_UNORM_X8_TYPELESSÚX24_TYPELESS_G8_UINTÚR8G8_TYPELESSÚ
R8G8_UNORMÚ	R8G8_UINTÚ
R8G8_SNORMÚ	R8G8_SINTÚR16_TYPELESSÚ	R16_FLOATÚ	D16_UNORMÚ	R16_UNORMÚR16_UINTÚ	R16_SNORMÚR16_SINTÚR8_TYPELESSÚR8_UNORMÚR8_UINTÚR8_SNORMÚR8_SINTÚA8_UNORMÚR1_UNORMÚR9G9B9E5_SHAREDEXPÚR8G8_B8G8_UNORMÚG8R8_G8B8_UNORMÚBC1_TYPELESSÚ	BC1_UNORMÚBC1_UNORM_SRGBÚBC2_TYPELESSÚ	BC2_UNORMÚBC2_UNORM_SRGBÚBC3_TYPELESSÚ	BC3_UNORMÚBC3_UNORM_SRGBÚBC4_TYPELESSÚ	BC4_UNORMÚ	BC4_SNORMÚBC5_TYPELESSÚ	BC5_UNORMÚ	BC5_SNORMÚB5G6R5_UNORMÚB5G5R5A1_UNORMÚB8G8R8A8_UNORMÚB8G8R8X8_UNORMÚR10G10B10_XR_BIAS_A2_UNORMÚB8G8R8A8_TYPELESSÚB8G8R8A8_UNORM_SRGBÚB8G8R8X8_TYPELESSÚB8G8R8X8_UNORM_SRGBÚBC6H_TYPELESSÚ	BC6H_UF16Ú	BC6H_SF16ÚBC7_TYPELESSÚ	BC7_UNORMÚBC7_UNORM_SRGBÚAYUVÚY410ÚY416ÚNV12ÚP010ÚP016Ú
OPAQUE_420ÚYUY2ÚY210ÚY216ÚNV11ÚAI44ÚIA44ÚP8ÚA8P8ÚB4G4R4A4_UNORMÚP208ÚV208ÚV408ÚSAMPLER_FEEDBACK_MIN_MIP_OPAQUEÚ'SAMPLER_FEEDBACK_MIP_REGION_USED_OPAQUEr!   r"   r#   r?   r?   K   s~  „ Ø€GØÐØÐØÐØÐØÐØ€OØ€NØ€NØÐØÐØÐØÐØÐØÐØ€OØ€LØ€KØ€KØÐØÐØ!ÐØ ÐØÐØÐØÐØ€OØÐØ€NØÐØ€MØ€NØ€MØ€OØ€LØ€LØ€KØ€LØ€KØ€LØ€IØ€IØ€HØ€HØ€NØÐØÐØÐØ€MØ€JØ€IØ€JØ€IØ€LØ€IØ€IØ€IØ€HØ€IØ€HØ€KØ€HØ€GØ€HØ€GØ€HØ€HØÐØ€OØ€OØ€LØ€IØ€NØ€LØ€IØ€NØ€LØ€IØ€NØ€LØ€IØ€IØ€LØ€IØ€IØ€LØ€NØ€NØ€NØ!#ÐØÐØÐØÐØÐØ€MØ€IØ€IØ€LØ€IØ€NØ€DØ€DØ€DØ€DØ€DØ€DØ€JØ€DØ€DØ€DØ€DØ€DØ€DØ	€BØ€DØ€NØ€DØ€DØ€DØ&)Ð#Ø.1Ñ+r"   r?   c                  óø  — e 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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.Z0d/Z1d0Z2d1Z3d2Z4d3Z5d4Z6d5Z7d6Z8d7Z9 e:d8«      Z; e:d9«      Z< e:d:«      Z= e:d;«      Z> e:d<«      Z? e:d=«      Z@ e:d>«      ZA e:d?«      ZB e:d@«      ZC e:dA«      ZD e:dB«      ZE e:dC«      ZF e:dD«      ZG e:dE«      ZH e:dF«      ZI e:dG«      ZJ e:dH«      ZKyI)JÚD3DFMTr   rO   rP   rQ   rR   rS   rT   rU   rV   rW   rX   rY   rZ   r6   r[   r\   r]   r^   rb   rc   rl   rm   rn   rv   rw   rx   ry   r7   r|   r   r€   r‚   r„   r†   rˆ   r‰   r‹   rŒ   r�   rŽ   rŠ   r�   rž   rŸ   r§   r¨   r©   rª   r«   r¬   ét   éu   év   éw   éÇ   s   UYVYs   RGBGs   YUY2s   GRGBs   DXT1s   DXT2s   DXT3s   DXT4s   DXT5s   DX10s   BC4Ss   BC4Us   BC5Ss   BC5Us   ATI1s   ATI2s   MET1N)Lr   r   r   r²   ÚR8G8B8ÚA8R8G8B8ÚX8R8G8B8ÚR5G6B5ÚX1R5G5B5ÚA1R5G5B5ÚA4R4G4B4ÚR3G3B2ÚA8ÚA8R3G3B2ÚX4R4G4B4ÚA2B10G10R10ÚA8B8G8R8ÚX8B8G8R8ÚG16R16ÚA2R10G10B10ÚA16B16G16R16r$  r#  ÚL8ÚA8L8ÚA4L4ÚV8U8ÚL6V5U5ÚX8L8V8U8ÚQ8W8V8U8ÚV16U16ÚA2W10V10U10ÚD16_LOCKABLEÚD32ÚD15S1ÚD24S8ÚD24X8ÚD24X4S4ÚD16ÚD32F_LOCKABLEÚD24FS8ÚD32_LOCKABLEÚS8_LOCKABLEÚL16Ú
VERTEXDATAÚINDEX16ÚINDEX32ÚQ16W16V16U16ÚR16FÚG16R16FÚA16B16G16R16FÚR32FÚG32R32FÚA32B32G32R32FÚCxV8U8ÚA1ÚA2B10G10R10_XR_BIASÚBINARYBUFFERÚi32ÚUYVYÚ	R8G8_B8G8r  Ú	G8R8_G8B8ÚDXT1ÚDXT2ÚDXT3ÚDXT4ÚDXT5ÚDX10ÚBC4SÚBC4UÚBC5SÚBC5UÚATI1ÚATI2ÚMULTI2_ARGB8r!   r"   r#   r,  r,  Ç   s¯  „ Ø€GØ€FØ€HØ€HØ€FØ€HØ€HØ€HØ€FØ	€BØ€HØ€HØ€KØ€HØ€HØ€FØ€KØ€LØ€DØ	€BØ	€BØ€DØ€DØ€DØ€FØ€HØ€HØ€FØ€KØ€LØ
€CØ€EØ€EØ€EØ€GØ
€CØ€MØ€FØ€LØ€KØ
€CØ€JØ€GØ€GØ€LØ€DØ€GØ€MØ€DØ€GØ€MØ€FØ	€BØÐØ€Láˆw‹<€DÙ�G“€IÙˆw‹<€DÙ�G“€IÙˆw‹<€DÙˆw‹<€DÙˆw‹<€DÙˆw‹<€DÙˆw‹<€DÙˆw‹<€DÙˆw‹<€DÙˆw‹<€DÙˆw‹<€DÙˆw‹<€DÙˆw‹<€DÙˆw‹<€DÙ�w“<�Lr"   r,  ÚDDSD_ÚDDSCAPS_Ú	DDSCAPS2_ÚDDPF_c                  ó$   — e Zd ZdZdZdd„Zdd„Zy)ÚDdsImageFileÚDDSzDirectDraw Surfacec                óª  — | j                   €J ‚t        | j                   j                  d«      «      sd}t        |«      ‚t	        j
                  d| j                   j                  d«      «      \  }|dk7  rdt        |«      › �}t        |«      ‚| j                   j                  |dz
  «      }t        |«      dk7  rdt        |«      › d�}t        |«      ‚t	        j
                  d	|d d
 «      \  }}}||f| _	        ddg| j                  ¢­}t	        j
                  d	|d
d «      \  }}	}
t	        j
                  d|dd «       t	        j
                  d|dd «      \  }}}}d}d }|t        j                  z  rj|t        j                  z  r
d| _        d}n	d| _        d}t	        j
                  d|› d�|dd|dz  z    «      }t        j                   d|d||f«      g| _        y |t        j$                  z  rB|dk(  r	d| _        �ny|dk(  r|t        j                  z  r	d| _        �nXd|› d|› �}t        |«      ‚|t        j&                  z  rNd| _        t)        j(                  d| j                   j                  d«      «      | _        d| j*                  _        �nä|t        j.                  z  �rÀ|dz   }|t0        j2                  k(  rd| _        d | _        d}�n¦|t0        j6                  k(  rd| _        d!| _        d"}�n�|t0        j8                  k(  rd| _        d#| _        d}�n\|t0        j:                  t0        j<                  fv rd| _        d$| _        d}�n(|t0        j>                  k(  rd| _        d%| _        d&}�n|t0        j@                  t0        jB                  fv rd| _        d'| _        d&}�nÏ|t0        jD                  k(  �r’|d(z  }t	        j
                  d| j                   j                  d«      «      \  }| j                   j                  d«       |tF        jH                  tF        jJ                  fv rd| _        d)| _        d}�n6|tF        jL                  tF        jN                  fv rd| _        d*| _        d"}�n|tF        jP                  tF        jR                  fv rd| _        d+| _        d}�nÎ|tF        jT                  tF        jV                  fv rd| _        d$| _        d}�nš|tF        jX                  tF        jZ                  fv rd| _        d'| _        d&}�nf|tF        j\                  k(  rd| _        d%| _        d&}�nA|tF        j^                  k(  rd| _        d,| _        d-}�n|tF        j`                  k(  rd| _        d.| _        d-}nø|tF        jb                  tF        jd                  tF        jf                  fv r3d| _        d/| _        d0}|tF        jf                  k(  r¤d1| jh                  d2<   n”|tF        jj                  tF        jl                  tF        jn                  fv r*d| _        |tF        jn                  k(  rId1| jh                  d2<   n9d3|› �}tq        |«      ‚d4t        |«      › �}tq        |«      ‚d5|› �}tq        |«      ‚|r+t        j                   d6||| j4                  f«      g| _        y t        j                   d7|d|xs | jr                  «      g| _        y )8Nr   znot a DDS filez<Ié|   zUnsupported header size éx   zIncomplete header: z bytesz<3IrG   r   rS   z<11Ir}   ú<4Ir�   ÚRGBAr<   r@   ú<ÚIÚdds_rgbr   ÚLrK   ÚLAzUnsupported bitcount z for ÚPr+   r   rj  rl  r   rn  ÚBC4rr  rA   ÚBC5rO   ÚBC1ÚBC2ÚBC3ÚBC6HrB   ÚBC6HSÚBC7rC   g]tÑEÝ?ÚgammazUnimplemented DXGI format zUnimplemented pixel format zUnknown pixel format flags ÚbcnÚraw):ÚfpÚ_acceptÚreadÚSyntaxErrorr   ÚunpackÚreprÚOSErrorÚlenÚ_sizeÚsizer5   r<   r8   Ú_moder	   Ú_TileÚtiler=   r;   r
   ÚpaletteÚdirtyr:   r,  rj  Úpixel_formatrl  rn  rq  rt  rr  rs  ru  ro  r?   rù   rø   rû   rü   rþ   rÿ   r  r  r  r  r  r  r  r  r  r  ÚinforÍ   rÎ   rÏ   ÚNotImplementedErrorÚmode)ÚselfÚmsgÚheader_sizeÚheaderÚflagsÚheightÚwidthÚextentsÚpitchÚdepthÚmipmapsÚpfsizeÚpfflagsÚfourccÚbitcountÚnÚrawmodeÚ
mask_countÚmasksÚoffsetÚdxgi_formats                        r#   Ú_openzDdsImageFile._openS  s  € Ø�w‰wÐ"Ð"Ð"Ü�t—w‘w—|‘| A“Ô'Ø"ˆCÜ˜cÓ"Ð"ÜŸ™ t¨T¯W©W¯\©\¸!«_Ó=‰ˆØ˜#ÒØ,¬T°+Ó->Ð,?Ð@ˆCÜ˜#“,ÐØ—‘—‘˜k¨A™oÓ.ˆÜˆv‹;˜#ÒØ'¬¨F« }°FÐ;ˆCÜ˜#“,Ðä%Ÿ}™}¨U°F¸3¸B°KÓ@Ñˆˆv�uØ˜V�_ˆŒ
Ø�aÐ$˜$Ÿ)™)Ñ$ˆä &§¡¨e°V¸B¸r°]Ó CÑˆˆu�gÜ�‰�f˜f R¨˜mÔ,ô -3¯M©M¸%ÀÈÈ2ÀÓ,OÑ)ˆ�˜ ØˆØˆØ”T—X‘XÒàœ×)Ñ)Ò)Ø#�”
Ø‘
à"�”
Ø�
ä—M‘M A j \°Ð"3°V¸BÀÀjÐSTÁnÑATÐ5UÓVˆEÜ"Ÿ™¨°G¸QÀÈ5Ð@QÓRÐSˆDŒIØØ”t—~‘~Ò%Ø˜1Š}Ø �–
Ø˜R’ G¬d×.>Ñ.>Ò$>Ø!�–
à-¨h¨Z°u¸W¸IÐF�Ü˜c“lÐ"Ø”t×+Ñ+Ò+ØˆDŒJÜ'×4Ñ4°V¸T¿W¹W¿\¹\È$Ó=OÓPˆDŒLØ!"ˆD�L‰LÖØ”t—{‘{Ó"Ø  1‘_ˆFØœŸ™Ò$Ø#�”
Ø$*�Ô!Ø’Øœ6Ÿ;™;Ò&Ø#�”
Ø$*�Ô!Ø’Øœ6Ÿ;™;Ò&Ø#�”
Ø$*�Ô!Ø’ØœFŸK™K¬¯©Ð5Ñ5Ø �”
Ø$)�Ô!Ø’Øœ6Ÿ;™;Ò&Ø"�”
Ø$*�Ô!Ø’ØœFŸK™K¬¯©Ð5Ñ5Ø"�”
Ø$)�Ô!Ø’Øœ6Ÿ;™;Ó&Ø˜"‘�ä!'§¡¨t°T·W±W·\±\À!³_Ó!E‘�Ø—‘—‘˜RÔ ØÜ×)Ñ)Ü×,Ñ,ð#ñ ð "(�D”JØ(-�DÔ%Ø’AØ ¤[×%=Ñ%=¼{×?TÑ?TÐ$UÑUØ!'�D”JØ(-�DÔ%Ø’AØ ¤[×%=Ñ%=¼{×?TÑ?TÐ$UÑUØ!'�D”JØ(-�DÔ%Ø’AØ ¤[×%=Ñ%=¼{×?TÑ?TÐ$UÑUØ!$�D”JØ(-�DÔ%Ø’AØ ¤[×%=Ñ%=¼{×?TÑ?TÐ$UÑUØ!&�D”JØ(-�DÔ%Ø’AØ ¤K×$9Ñ$9Ò9Ø!&�D”JØ(.�DÔ%Ø’AØ ¤K×$9Ñ$9Ò9Ø!&�D”JØ(.�DÔ%Ø’AØ ¤K×$9Ñ$9Ò9Ø!&�D”JØ(/�DÔ%Ø‘AØ Ü×,Ñ,Ü×)Ñ)Ü×.Ñ.ð%ñ ð
 "(�D”JØ(-�DÔ%Ø�AØ"¤k×&@Ñ&@Ò@Ø-4˜Ÿ	™	 'Ò*Ø Ü×1Ñ1Ü×.Ñ.Ü×3Ñ3ð%ñ ð
 "(�D”JØ"¤k×&EÑ&EÒEØ-4˜Ÿ	™	 'Ò*à6°{°mÐD�CÜ-¨cÓ2Ð2à3´D¸³L°>ÐB�Ü)¨#Ó.Ð.à/°¨yÐ9ˆCÜ% cÓ*Ð*áä—‘  w°¸¸D×<MÑ<MÐ8NÓOðˆD�Iô #Ÿ™¨°¸¸GÒ<PÀtÇyÁyÓQÐRˆD�Ir"   c                 ó   — y )Nr!   )r§  Úposs     r#   Ú	load_seekzDdsImageFile.load_seeké  s   € Ør"   N)ÚreturnÚNone)r¾  ÚintrÀ  rÁ  )r   r   r   ÚformatÚformat_descriptionr¼  r¿  r!   r"   r#   r|  r|  O  s   „ Ø€FØ-ÐóTSôlr"   r|  c                  ó   — e Zd ZdZdd„Zy)ÚDdsRgbDecoderTc           	     ó  — | j                   \  }}t        «       }|dz  }|s| j                  |«       yg }g }|D ]V  }d}	|dk7  r(||	dz   z	  |	dz   z  |k(  r|	dz  }	||	dz   z	  |	dz   z  |k(  rŒ|j                  |	«       |j                  ||	z	  «       ŒX | j                  €J ‚| j
                  j                  | j
                  j                  z  t        |«      z  }
t        |«      |
k  r”| j                  j                  |«      }t        |«      |k  rnjt        j                  |d«      }t        |«      D ]7  \  }}||z  }|t        ||   rt        |||   z	  ||   z  dz  «      nd«      z  }Œ9 t        |«      |
k  rŒ”| j                  |«       y)Nr   )éÿÿÿÿr   r   r   Úlittleéÿ   )ÚargsÚ	bytearrayÚ
set_as_rawÚappendÚfdÚstateÚxsizeÚysizer›  r–  rÂ  Ú
from_bytesÚ	enumerater   )r§  Úbufferrµ  r¹  ÚdataÚ	bytecountÚmask_offsetsÚmask_totalsÚmaskrº  Údest_lengthÚ
bytes_readÚvalueÚiÚmasked_values                  r#   ÚdecodezDdsRgbDecoder.decodeð  s©  € ØŸ)™)‰ˆ�%ä‹{ˆØ ‘Mˆ	ÙØ�O‰O˜DÔ!Øð ˆàˆØò 	/ˆDØˆFØ�qŠyØ˜v¨™zÑ*¨v¸©zÑ:¸dÒBØ˜a‘K�Fð ˜v¨™zÑ*¨v¸©zÑ:¸dÓBà×Ñ Ô'Ø×Ñ˜t v™~Õ.ð	/ð �w‰wÐ"Ð"Ð"Ø—j‘j×&Ñ&¨¯©×)9Ñ)9Ñ9¼CÀ»JÑFˆÜ�$‹i˜+Ò%ØŸ™Ÿ™ iÓ0ˆJÜ�:‹ Ò*ØÜ—N‘N :¨xÓ8ˆEÜ$ UÓ+ò ‘��4Ø$ t™|�àœà" 1’~ô ˜,¨,°q©/Ñ9¸[È¹^ÑKÈsÑRÔSàóñ ‘ðô �$‹i˜+Ó%ð 	�‰˜ÔØr"   N)rÕ  zImage.DecoderInputrÀ  ztuple[int, int])r   r   r   Ú	_pulls_fdrà  r!   r"   r#   rÆ  rÆ  í  s   „ Ø€Iô&r"   rÆ  c                óè  — | j                   dvrd| j                   › d�}t        |«      ‚t        j                  t        j                  z  t        j
                  z  t        j                  z  }t        | j                  «       «      dz  }| j                  j                  d«      }|�rd}|t        j                  z  }| j                  dz   dz  }g d	¢}	t        j                  }
|d
k(  rt        j                   }d}�n¿|dk(  rt        j"                  }d}�n¦|dk(  rt        j$                  }d}�n�t        j&                  }|dk(  rd}t(        j*                  }�nd|dk(  rd}t(        j,                  }�nK|dk(  r/d}t(        j.                  }| j                   dk7  �r$d}t        |«      ‚d|› �}t        |«      ‚d}|t        j0                  z  }| j                  |z  dz   dz  }| j                   d   dk(  }| j                   d   dk(  r(t        j2                  }
| j                   }|rg d¢}	n\g d¢}	nWt        j4                  }
| j                   d d d…   }g d¢}	|r/| j7                  «       \  }}}}t9        j:                  d ||||f«      } |r|
t        j<                  z  }
|	j?                  |rd!nd«       t        j@                  }|jC                  tE        tF        «      tI        jJ                  d"d#|| jL                  | j                  |dd«      z   tI        jJ                  d$gd%¢­Ž z   tI        jJ                  d&d'|
||«      z   tI        jJ                  d&g|	¢­Ž z   tI        jJ                  d(tN        jP                  dddd«      z   «       |t        j&                  k(  r)|jC                  tI        jJ                  d(dddd)«      «       tS        jT                  | |tS        jV                  |ddg| jX                  ¢­d|«      g«       y )*N)r<   r‚  r†  r‡  zcannot write mode z as DDSr   r£  r’  r@   r   )r   r   r   r   rj  )r   rl  )r   rn  )r@   rŒ  r�  rŠ  )rA   r<   z#only RGB mode can be written as BC5zcannot write pixel format r“  rC   rÈ  ÚAr   r†  )rÊ  rÊ  rÊ  )ì      ~ rä  rä  )i  ÿ i ÿ  rÊ  r‚  rä  z<7Ir  Ú11I)r   r   r   r   r   r   r   r   r   r   r   r�  r6   z<5Ir   )-r¦  rš  r   r   r   r   r   r›  ÚgetbandsÚencoderinfoÚgetr   r­  r5   r:   r,  rj  rl  rn  ro  r?   rû   rþ   r  r   r=   r<   Úsplitr   Úmerger8   rÎ  r²   ÚwriteÚo32Ú	DDS_MAGICr   Úpackr¬  r%   r'   r	   Ú_saverŸ  r�  )Úimr”  Úfilenamer¨  r«  rµ  r£  Ú
codec_namer¯  Ú	rgba_maskÚpixel_flagsr´  rË  r»  ÚalphaÚrÚgÚbÚas                      r#   rï  rï    sn  € Ø	‡w�wÐ0Ñ0Ø" 2§7¡7 )¨7Ð3ˆÜ�c‹lÐä�I‰IœŸ™Ñ#¤d§j¡jÑ0´4×3CÑ3CÑC€EÜ�2—;‘;“=Ó! AÑ%€HØ—>‘>×%Ñ% nÓ5€LâØˆ
Ø”—‘Ñ ˆØ—‘˜A‘ Ñ"ˆÚ ˆ	Ü—k‘kˆØ˜6Ò!Ü—[‘[ˆFØŠDØ˜VÒ#Ü—[‘[ˆFØŠDØ˜VÒ#Ü—[‘[ˆFØŠDä—[‘[ˆFØ˜uÒ$Ø�Ü)×6Ñ6’Ø Ò&Ø�Ü)×6Ñ6’Ø Ò&Ø�Ü)×6Ñ6�Ø—7‘7˜eÓ#Ø?�CÜ! #›,Ð&à2°<°.ÐA�Ü˜c“lÐ"àˆ
Ø”—‘ÑˆØ—‘˜HÑ$ qÑ(¨QÑ.ˆà—‘˜‘˜sÑ"ˆØ�7‰7�1‰:˜ÒÜŸ.™.ˆKØ—7‘7ˆDÙÚ@‘	â@‘	äŸ(™(ˆKØ—7‘7™4˜R˜4‘=ˆDÚ<ˆIáØŸX™X›Z‘
��1�a˜Ü—[‘[ ¨!¨Q°°1¨Ó6�ÙØœ4×+Ñ+Ñ+ˆKØ×Ñ¡u™°!Ô4ä—‘ˆØ‡H�HÜŒI‹Ü
�+‰+ØØØØ�I‰IØ�H‰HØØØó	
ñ
	
ô �+‰+�eÐ
*˜yÒ
*ñ	+ô �+‰+�e˜R ¨f°hÓ
?ñ	@ô �+‰+�eÐ
(˜iÒ
(ñ	)ô �+‰+�eœWŸ_™_¨a°°A°qÓ
9ñ	:ôð$ ”—‘ÒØ
�‰ä�K‰K˜˜{¨A¨q°!°QÓ7ô	
ô ‡O�O�B˜œYŸ_™_¨Z¸!¸QÐ9IÀÇÁÑ9IÈ1ÈdÓSÐTÕUr"   c                ó$   — | j                  d«      S )Ns   DDS )Ú
startswith)Úprefixs    r#   r•  r•  v  s   € Ø×Ñ˜WÓ%Ð%r"   r…  z.dds)rð  zImage.Imager”  z	IO[bytes]rñ  zstr | bytesrÀ  rÁ  )rü  ÚbytesrÀ  Úbool)|Ú__doc__Ú
__future__r   Ú__lazy_modules__r   ÚsysÚenumr   r   Ú r   r	   r
   Ú_binaryr   rf  r   r   rì  ÚTYPE_CHECKINGÚtypingr   rí  r   r%   r*   r5   r?   r,  Úmodulesr   ÚmoduleÚitemÚnameÚsetattrrÝ  Úitem1Úitem2Úitem3r:   Ú
DDS_FOURCCr<   ÚDDS_RGBr8   ÚDDS_RGBAr=   ÚDDS_LUMINANCEÚDDS_LUMINANCEAr9   Ú	DDS_ALPHAr;   ÚDDS_PAL8r   r   r   r   ÚDDS_HEADER_FLAGS_TEXTUREr   ÚDDS_HEADER_FLAGS_MIPMAPr    ÚDDS_HEADER_FLAGS_VOLUMEr   ÚDDS_HEADER_FLAGS_PITCHr   ÚDDS_HEADER_FLAGS_LINEARSIZEÚ
DDS_HEIGHTÚ	DDS_WIDTHr'   ÚDDS_SURFACE_FLAGS_TEXTUREr&   r(   ÚDDS_SURFACE_FLAGS_MIPMAPÚDDS_SURFACE_FLAGS_CUBEMAPr,   r-   ÚDDS_CUBEMAP_POSITIVEXr.   ÚDDS_CUBEMAP_NEGATIVEXr/   ÚDDS_CUBEMAP_POSITIVEYr0   ÚDDS_CUBEMAP_NEGATIVEYr1   ÚDDS_CUBEMAP_POSITIVEZr2   ÚDDS_CUBEMAP_NEGATIVEZrj  ÚDXT1_FOURCCrl  ÚDXT3_FOURCCrn  ÚDXT5_FOURCCrÍ   ÚDXGI_FORMAT_R8G8B8A8_TYPELESSrÎ   ÚDXGI_FORMAT_R8G8B8A8_UNORMrÏ   ÚDXGI_FORMAT_R8G8B8A8_UNORM_SRGBr  ÚDXGI_FORMAT_BC5_TYPELESSr  ÚDXGI_FORMAT_BC5_UNORMr  ÚDXGI_FORMAT_BC5_SNORMr  ÚDXGI_FORMAT_BC6H_UF16r  ÚDXGI_FORMAT_BC6H_SF16r  ÚDXGI_FORMAT_BC7_TYPELESSr  ÚDXGI_FORMAT_BC7_UNORMr  ÚDXGI_FORMAT_BC7_UNORM_SRGBr|  Ú	PyDecoderrÆ  rï  r•  Úregister_openrÃ  Úregister_decoderÚregister_saveÚregister_extensionr!   r"   r#   ú<module>r:     s,  ðñ
õ #à�:Ð ã Û 
ß !ç ,Ñ ,Ý !Ý Ý !à€ÙÝð €	ôˆ7ô ôˆgô ôˆwô ôˆ7ô ôy2�'ô y2ôxI ˆWô I ðZ 
�‰�XÑ	€Øò 5€DØ�9‰9Ð Ð Ð ÙˆF�e˜DŸI™I˜;Ð'¨¯©Õ4ð5ð ò :€EØ�:‰:Ð!Ð!Ð!ÙˆF�h˜uŸz™z˜lÐ+¨U¯[©[Õ9ð:ð ò ;€EØ�:‰:Ð!Ð!Ð!ÙˆF�i §
¡
˜|Ð,¨e¯k©kÕ:ð;ð ò 7€EØ�:‰:Ð!Ð!Ð!ÙˆF�e˜EŸJ™J˜<Ð(¨%¯+©+Õ6ð7ð �[‰[€
Ø
�(‰(€Ø�8‰8�d×&Ñ&Ñ&€Ø—‘€Ø—‘ $×"2Ñ"2Ñ2€Ø�J‰J€	Ø×Ñ€àŸ9™9 t§{¡{Ñ2°T·Z±ZÑ?À$×BRÑBRÑRÐ Ø×*Ñ*Ð ØŸ*™*Ð ØŸ™Ð Ø"Ÿo™oÐ à�[‰[€
Ø�J‰J€	à#ŸO™OÐ Ø"Ÿ?™?¨W¯^©^Ñ;Ð Ø#ŸO™OÐ à ×(Ñ(¨8×+EÑ+EÑEÐ Ø ×(Ñ(¨8×+EÑ+EÑEÐ Ø ×(Ñ(¨8×+EÑ+EÑEÐ Ø ×(Ñ(¨8×+EÑ+EÑEÐ Ø ×(Ñ(¨8×+EÑ+EÑEÐ Ø ×(Ñ(¨8×+EÑ+EÑEÐ à�k‰k€Ø�k‰k€Ø�k‰k€à +× =Ñ =Ð Ø(×7Ñ7Ð Ø"-×"AÑ"AÐ Ø&×3Ñ3Ð Ø#×-Ñ-Ð Ø#×-Ñ-Ð Ø#×-Ñ-Ð Ø#×-Ñ-Ð Ø&×3Ñ3Ð Ø#×-Ñ-Ð Ø(×7Ñ7Ð ô[�9×&Ñ&ô [ô|)�I×'Ñ'ô )óXZVóz&ð €× Ñ �L×'Ñ'¨°wÔ ?Ø €× Ñ �y -Ô 0Ø €× Ñ �L×'Ñ'¨Ô /Ø €× Ñ ˜×,Ñ,¨fÕ 5r"   