§
    yØjîJ  ã                  óX  — 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 ]%Z e j!        €J ‚ e"ede j!        › �e j#        ¦  «         Œ&eD ]%Z$e$j!        €J ‚ e"ede$j!        › �e$j#        ¦  «         Œ&eD ]%Z%e%j!        €J ‚ e"ede%j!        › �e%j#        ¦  «         Œ&eD ]%Z&e&j!        €J ‚ e"ede&j!        › �e&j#        ¦  «         Œ&ej'        Z(ej)        Z*ej)        ej+        z  Z,ej-        Z.ej-        ej+        z  Z/ej0        Z1ej2        Z3ej4        ej5        z  ej6        z  ej7        z  Z8ej9        Z:ej;        Z<ej=        Z>ej?        Z@ej5        ZAej6        ZBejC        ZDejE        ejF        z  ZGejE        ZHejI        ejJ        z  ZKejI        ejL        z  ZMejI        ejN        z  ZOejI        ejP        z  ZQejI        ejR        z  ZSejI        ejT        z  ZUejV        ZWejX        ZYejZ        Z[ej\        Z]ej^        Z_ej`        Zaejb        Zcejd        Zeejf        Zgejh        Ziejj        Zkejl        Zmejn        Zoejp        Zq G d„ dej        ¦  «        Zr G d „ d!ejs        ¦  «        Ztd1d*„Zud2d.„Zv e
jw        erjx        erev¦  «          e
jy        d/et¦  «          e
jz        erjx        eu¦  «          e
j{        erjx        d0¦  «         dS )3a†  
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
d	S )
ÚDDSDr   é   é   é   é   é   i   i  € N)Ú__name__Ú
__module__Ú__qualname__ÚCAPSÚHEIGHTÚWIDTHÚPITCHÚPIXELFORMATÚMIPMAPCOUNTÚ
LINEARSIZEÚDEPTH© ó    ú‡/Users/tedpeters/Documents/Projects/Claude Projects/Misc Tools/notename-sheets/.venv/lib/python3.11/site-packages/PIL/DdsImagePlugin.pyr   r   #   s6   € € € € € Ø€DØ€FØ€EØ€EØ€KØ€KØ€JØ€E€E€Er"   r   c                  ó   — e Zd ZdZdZdZdS )ÚDDSCAPSr   r   i  @ N)r   r   r   ÚCOMPLEXÚTEXTUREÚMIPMAPr!   r"   r#   r%   r%   /   s   € € € € € Ø€GØ€GØ€F€F€Fr"   r%   c                  ó.   — e Zd ZdZdZdZdZdZdZdZ	dZ
d	S )
Ú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   s<   € € € € € Ø€GØÐØÐØÐØÐØÐØÐØ€F€F€Fr"   r*   c                  ó&   — e Zd ZdZdZdZdZdZdZdS )Ú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Ø€I€I€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{dzS ){Ú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¦  «        ZKdIS )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àˆ3ˆw‰<Œ<€DØ��G‘”€IØˆ3ˆw‰<Œ<€DØ��G‘”€IØˆ3ˆw‰<Œ<€DØˆ3ˆw‰<Œ<€DØˆ3ˆw‰<Œ<€DØˆ3ˆw‰<Œ<€DØˆ3ˆw‰<Œ<€DØˆ3ˆw‰<Œ<€DØˆ3ˆw‰<Œ<€DØˆ3ˆw‰<Œ<€DØˆ3ˆw‰<Œ<€DØˆ3ˆw‰<Œ<€DØˆ3ˆw‰<Œ<€DØˆ3ˆw‰<Œ<€DØ�3�w‘<”<€L€L€Lr"   r,  ÚDDSD_ÚDDSCAPS_Ú	DDSCAPS2_ÚDDPF_c                  ó&   — e Zd ZdZdZd
d„Zdd„Zd	S )ÚDdsImageFileÚDDSzDirectDraw SurfaceÚreturnÚNonec                óÒ  — | j         €J ‚t          | j                              d¦  «        ¦  «        sd}t          |¦  «        ‚t	          j        d| j                              d¦  «        ¦  «        \  }|dk    r!dt          |¦  «        › �}t          |¦  «        ‚| j                              |dz
  ¦  «        }t          |¦  «        dk    r"dt          |¦  «        › d�}t          |¦  «        ‚t	          j        d	|d d
…         ¦  «        \  }}}||f| _	        ddg| j
        ¢R }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| _        d S |t          j        z  rD|dk    r	d| _        �n |dk    r|t          j        z  r	d| _        �nâd|› d|› �}t          |¦  «        ‚|t          j        z  rGd| _        t)          j        d| j                              d¦  «        ¦  «        | _        d| j        _        �nu|t          j        z  �rQ|dz   }|t0          j        k    rd| _        d | _        d}�n>|t0          j        k    rd| _        d!| _        d"}�n|t0          j        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          j!        fv rd| _        d'| _        d&}�n€|t0          j"        k    �r:|d(z  }t	          j        d| j                              d¦  «        ¦  «        \  }| j                              d¦  «         |tF          j$        tF          j%        fv rd| _        d)| _        d}�nõ|tF          j&        tF          j'        fv rd| _        d*| _        d"}�nÉ|tF          j(        tF          j)        fv rd| _        d+| _        d}�n�|tF          j*        tF          j+        fv rd| _        d$| _        d}�nq|tF          j,        tF          j-        fv rd| _        d'| _        d&}�nE|tF          j.        k    rd| _        d%| _        d&}�n#|tF          j/        k    rd| _        d,| _        d-}�n|tF          j0        k    rd| _        d.| _        d-}nà|tF          j1        tF          j2        tF          j3        fv r+d| _        d/| _        d0}|tF          j3        k    r
d1| j4        d2<   n�|tF          j5        tF          j6        tF          j7        fv r"d| _        |tF          j7        k    r
d1| j4        d2<   nId3|› �}tq          |¦  «        ‚d4t          |¦  «        › �}tq          |¦  «        ‚d5|› �}tq          |¦  «        ‚|r&t          j        d6|||| j        f¦  «        g| _        d S t          j        d7|d|p| j9        ¦  «        g| _        d S )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Ð"Ð"Ð"Ý�t”w—|’| A‘”Ñ'Ô'ð 	#Ø"ˆCÝ˜cÑ"Ô"Ð"Ýœ t¨T¬W¯\ª\¸!©_¬_Ñ=Ô=‰ˆØ˜#ÒÐØ@­T°+Ñ->Ô->Ð@Ð@ˆCÝ˜#‘,”,ÐØ”—’˜k¨A™oÑ.Ô.ˆÝˆv‰;Œ;˜#ÒÐØ;­¨F©¬Ð;Ð;Ð;ˆCÝ˜#‘,”,Ðå%œ}¨U°F¸3¸B¸3´KÑ@Ô@Ñˆˆv�uØ˜V�_ˆŒ
Ø�aÐ$˜$œ)Ð$Ð$ˆå &¤¨e°V¸B¸r¸E´]Ñ CÔ CÑˆˆu�gÝŒ�f˜f R¨ UœmÑ,Ô,Ð,õ -3¬M¸%ÀÈÈ2ÈÄÑ,OÔ,OÑ)ˆ�˜ ØˆØˆØ•T”XÑð t	+à�Ô)Ñ)ð Ø#�”
Ø�
�
à"�”
Ø�
å”MÐ"3 jÐ"3Ð"3Ð"3°V¸BÀÀjÐSTÁnÑATÐ<TÔ5UÑVÔVˆEÝ"œ¨°G¸QÀÈ5Ð@QÑRÔRÐSˆDŒIØˆFØ•t”~Ñ%ð h	+Ø˜1Š}ˆ}Ø �”
‘
Ø˜R’� G­dÔ.>Ñ$>�Ø!�”
‘
àF¨hÐFÐF¸WÐFÐF�Ý˜c‘l”lÐ"Ø•tÔ+Ñ+ð `	+ØˆDŒJÝ'Ô4°V¸T¼W¿\º\È$Ñ=OÔ=OÑPÔPˆDŒLØ!"ˆDŒLÔÑØ•t”{Ñ"ñ \	+Ø  1‘_ˆFØ�œÒ$Ð$Ø#�”
Ø$*�Ô!Ø�‘Ø�6œ;Ò&Ð&Ø#�”
Ø$*�Ô!Ø�‘Ø�6œ;Ò&Ð&Ø#�”
Ø$*�Ô!Ø�‘Ø�FœK­¬Ð5Ð5Ð5Ø �”
Ø$)�Ô!Ø�‘Ø�6œ;Ò&Ð&Ø"�”
Ø$*�Ô!Ø�‘Ø�FœK­¬Ð5Ð5Ð5Ø"�”
Ø$)�Ô!Ø�‘Ø�6œ;Ò&Ñ&Ø˜"‘�å!'¤¨t°T´W·\²\À!±_´_Ñ!EÔ!E‘�Ø”—’˜RÑ Ô Ð ØÝÔ)ÝÔ,ð#ð ð ð "(�D”JØ(-�DÔ%Ø�A‘AØ ¥[Ô%=½{Ô?TÐ$UÐUÐUØ!'�D”JØ(-�DÔ%Ø�A‘AØ ¥[Ô%=½{Ô?TÐ$UÐUÐUØ!'�D”JØ(-�DÔ%Ø�A‘AØ ¥[Ô%=½{Ô?TÐ$UÐUÐUØ!$�D”JØ(-�DÔ%Ø�A‘AØ ¥[Ô%=½{Ô?TÐ$UÐUÐUØ!&�D”JØ(-�DÔ%Ø�A‘AØ ¥KÔ$9Ò9Ð9Ø!&�D”JØ(.�DÔ%Ø�A‘AØ ¥KÔ$9Ò9Ð9Ø!&�D”JØ(.�DÔ%Ø�A‘AØ ¥KÔ$9Ò9Ð9Ø!&�D”JØ(/�DÔ%Ø�A�AØ ÝÔ,ÝÔ)ÝÔ.ð%ð ð ð
 "(�D”JØ(-�DÔ%Ø�AØ"¥kÔ&@Ò@Ð@Ø-4˜œ	 'Ñ*øØ ÝÔ1ÝÔ.ÝÔ3ð%ð ð ð
 "(�D”JØ"¥kÔ&EÒEÐEØ-4˜œ	 'Ñ*øàD°{ÐDÐD�CÝ-¨cÑ2Ô2Ð2àBµD¸±L´LÐBÐB�Ý)¨#Ñ.Ô.Ð.à9°Ð9Ð9ˆCÝ% cÑ*Ô*Ð*àð 	Så”  w°¸¸DÔ<MÐ8NÑOÔOðˆDŒIˆIˆIõ #œ¨°¸¸GÐ<PÀtÄyÑQÔQÐRˆDŒIˆIˆIr"   ÚposÚintc                ó   — d S )Nr!   )r©  r¿  s     r#   Ú	load_seekzDdsImageFile.load_seeké  s   € Øˆr"   N)r~  r  )r¿  rÀ  r~  r  )r   r   r   ÚformatÚformat_descriptionr¾  rÂ  r!   r"   r#   r|  r|  O  sP   € € € € € Ø€FØ-ÐðTSð TSð TSð TSðlð ð ð ð ð r"   r|  c                  ó   — e Zd ZdZdd„ZdS )	ÚDdsRgbDecoderTÚbufferúImage.DecoderInputr~  útuple[int, int]c           	     ó\  — | j         \  }}t          ¦   «         }|dz  }|s|                      |¦  «         dS g }g }|D ]`}d}	|dk    r)||	dz   z	  |	dz   z  |k    r|	dz  }	||	dz   z	  |	dz   z  |k    °|                     |	¦  «         |                     ||	z	  ¦  «         Œa| j        €J ‚| j        j        | j        j        z  t          |¦  «        z  }
t          |¦  «        |
k     r´| j         	                    |¦  «        }t          |¦  «        |k     rn†t                               |d¦  «        }t          |¦  «        D ]H\  }}||z  }|t          ||         r$t          |||         z	  ||         z  dz  ¦  «        nd¦  «        z  }ŒIt          |¦  «        |
k     °´|                      |¦  «         dS )Nr   )éÿÿÿÿr   r   r   Úlittleéÿ   )ÚargsÚ	bytearrayÚ
set_as_rawÚappendÚfdÚstateÚxsizeÚysizer�  r˜  rÀ  Ú
from_bytesÚ	enumerater   )r©  rÇ  r·  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Ñ!Ô!Ð!Ø�5ð ˆàˆØð 	/ð 	/ˆDØˆFØ�qŠyˆyØ˜v¨™zÑ*¨v¸©zÑ:¸dÒBÐBØ˜a‘K�Fð ˜v¨™zÑ*¨v¸©zÑ:¸dÒBÐBà×Ò Ñ'Ô'Ð'Ø×Ò˜t v™~Ñ.Ô.Ð.Ð.àŒwÐ"Ð"Ð"Ø”jÔ&¨¬Ô)9Ñ9½CÀ¹J¼JÑFˆÝ�$‰iŒi˜+Ò%Ð%ØœŸš iÑ0Ô0ˆJÝ�:‰Œ Ò*Ð*ØÝ—N’N :¨xÑ8Ô8ˆEÝ$ UÑ+Ô+ð ð ‘��4Ø$ t™|�à�à" 1”~ð•C˜,¨,°q¬/Ñ9¸[È¼^ÑKÈsÑRÑSÔSÐSàñô ñ ��õ �$‰iŒi˜+Ò%Ð%ð 	�Š˜ÑÔÐØˆur"   N)rÇ  rÈ  r~  rÉ  )r   r   r   Ú	_pulls_fdrâ  r!   r"   r#   rÆ  rÆ  í  s-   € € € € € Ø€Ið&ð &ð &ð &ð &ð &r"   rÆ  ÚimúImage.Imager–  ú	IO[bytes]Úfilenameústr | bytesr~  r  c                ó*  — | j         dvrd| j         › d�}t          |¦  «        ‚t          j        t          j        z  t          j        z  t          j        z  }t          |                      ¦   «         ¦  «        dz  }| 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}�njt          j        }|dk    rd}t(          j        }�nH|dk    rd}t(          j        }�n2|dk    r,d}t(          j        }| j         dk    rd}t          |¦  «        ‚�n d|› �}t          |¦  «        ‚d}|t          j        z  }| j        |z  dz   dz  }| j         d         dk    }| j         d         dk    rt          j        }
| j         }|rg d¢}	nYg d¢}	nTt          j        }
| j         d d d…         }g d¢}	|r2|                      ¦   «         \  }}}}t9          j        d ||||f¦  «        } |r|
t          j        z  }
|	                     |rd!nd¦  «         t          j         }| !                    tE          tF          ¦  «        tI          j%        d"d#|| j&        | j        |dd¦  «        z   tI          j%        d$gd%¢R Ž z   tI          j%        d&d'|
||¦  «        z   tI          j%        d&g|	¢R Ž z   tI          j%        d(tN          j(        dddd¦  «        z   ¦  «         |t          j        k    r,| !                    tI          j%        d(|dddd)¦  «        ¦  «         tS          j*        | |tS          j+        |ddg| j,        ¢R d|¦  «        g¦  «         d S )*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Ÿ  )rä  r–  rç  rª  r­  r·  r¥  Ú
codec_namer±  Ú	rgba_maskÚpixel_flagsr¶  rÎ  r½  ÚalphaÚrÚgÚbÚas                      r#   rö  rö    sÙ  € Ø	„wÐ0Ð0Ð0Ø3 2¤7Ð3Ð3Ð3ˆÝ�c‰lŒlÐåŒI�œÑ#¥d¤jÑ0µ4Ô3CÑC€EÝ�2—;’;‘=”=Ñ!Ô! AÑ%€HØ”>×%Ò% nÑ5Ô5€Làð 9 Øˆ
Ø•”Ñ ˆØ”˜A‘ Ñ"ˆØ �L�Lˆ	Ý”kˆØ˜6Ò!Ð!Ý”[ˆFØˆD‰DØ˜VÒ#Ð#Ý”[ˆFØˆD‰DØ˜VÒ#Ð#Ý”[ˆFØˆD‰Då”[ˆFØ˜uÒ$Ð$Ø�Ý)Ô6�‘Ø Ò&Ð&Ø�Ý)Ô6�‘Ø Ò&Ð&Ø�Ý)Ô6�Ø”7˜eÒ#Ð#Ø?�CÝ! #™,œ,Ð&ñ $ð B°<ÐAÐA�Ý˜c‘l”lÐ"àˆ
Ø•”ÑˆØ”˜HÑ$ qÑ(¨QÑ.ˆà”˜”˜sÒ"ˆØŒ7�1Œ:˜ÒÐÝœ.ˆKØ”7ˆDØð AØ@Ð@Ð@�	�	à@Ð@Ð@�	�	åœ(ˆKØ”7˜4˜4˜R˜4”=ˆDØ<Ð<Ð<ˆIàð 7ØŸXšX™ZœZ‘
��1�a˜Ý”[ ¨!¨Q°°1¨Ñ6Ô6�Øð 	,Ø�4Ô+Ñ+ˆKØ×Ò uÐ3˜˜°!Ñ4Ô4Ð4å”ˆØ‡H‚HÝ�I‰ŒÝ
Œ+ØØØØŒIØŒHØØØñ	
ô 	
ñ
	
õ Œ+�eÐ
*˜yÐ
*Ð
*Ð
*ñ	+õ Œ+�e˜R ¨f°hÑ
?Ô
?ñ	@õ Œ+�eÐ
(˜iÐ
(Ð
(Ð
(ñ	)õ Œ+�e�Wœ_¨a°°A°qÑ
9Ô
9ñ	:ñô ð ð$ •”ÒÐØ
�ŠåŒK˜˜{¨A¨q°!°QÑ7Ô7ñ	
ô 	
ð 	
õ „O�B˜�Yœ_¨Z¸!¸QÐ9IÀÄÐ9IÐ9IÈ1ÈdÑSÔSÐTÑUÔUÐUÐUÐUr"   ÚprefixÚbytesÚboolc                ó,   — |                       d¦  «        S )Ns   DDS )Ú
startswith)rÿ  s    r#   r—  r—  v  s   € Ø×Ò˜WÑ%Ô%Ð%r"   r‡  z.dds)rä  rå  r–  ræ  rç  rè  r~  r  )rÿ  r   r~  r  )|Ú__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?     sw  ðð
ð 
ð #Ð "Ð "Ð "Ð "Ð "à�:Ð à €€€Ø 
€
€
€
Ø !Ð !Ð !Ð !Ð !Ð !Ð !Ð !à ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø !Ð !Ð !Ð !Ð !Ð !Ø Ð Ð Ð Ð Ð Ø !Ð !Ð !Ð !Ð !Ð !à€Øð ØÐÐÐÐÐð €	ðð ð ð ð ˆ7ñ ô ð ðð ð ð ð ˆgñ ô ð ðð ð ð ð ˆwñ ô ð ðð ð ð ð ˆ7ñ ô ð ðy2ð y2ð y2ð y2ð y2�'ñ y2ô y2ð y2ðxI ð I ð I ð I ð I ˆWñ I ô I ð I ðZ 
Œ�XÔ	€Øð 5ð 5€DØŒ9Ð Ð Ð Ø€GˆFÐ'˜DœIÐ'Ð'¨¬Ñ4Ô4Ð4Ð4Øð :ð :€EØŒ:Ð!Ð!Ð!Ø€GˆFÐ+˜uœzÐ+Ð+¨U¬[Ñ9Ô9Ð9Ð9Øð ;ð ;€EØŒ:Ð!Ð!Ð!Ø€GˆFÐ, ¤
Ð,Ð,¨e¬kÑ:Ô:Ð:Ð:Øð 7ð 7€EØŒ:Ð!Ð!Ð!Ø€GˆFÐ(˜EœJÐ(Ð(¨%¬+Ñ6Ô6Ð6Ð6àŒ[€
Ø
Œ(€ØŒ8�dÔ&Ñ&€Ø”€Ø” $Ô"2Ñ2€ØŒJ€	ØÔ€àœ9 t¤{Ñ2°T´ZÑ?À$ÔBRÑRÐ ØÔ*Ð Øœ*Ð ØœÐ Ø"œoÐ àŒ[€
ØŒJ€	à#œOÐ Ø"œ?¨W¬^Ñ;Ð Ø#œOÐ à Ô(¨8Ô+EÑEÐ Ø Ô(¨8Ô+EÑEÐ Ø Ô(¨8Ô+EÑEÐ Ø Ô(¨8Ô+EÑEÐ Ø Ô(¨8Ô+EÑEÐ Ø Ô(¨8Ô+EÑEÐ àŒk€ØŒk€ØŒk€à +Ô =Ð Ø(Ô7Ð Ø"-Ô"AÐ Ø&Ô3Ð Ø#Ô-Ð Ø#Ô-Ð Ø#Ô-Ð Ø#Ô-Ð Ø&Ô3Ð Ø#Ô-Ð Ø(Ô7Ð ð[ð [ð [ð [ð [�9Ô&ñ [ô [ð [ð|)ð )ð )ð )ð )�IÔ'ñ )ô )ð )ðXZVð ZVð ZVð ZVðz&ð &ð &ð &ð €Ô �LÔ'¨°wÑ ?Ô ?Ð ?Ø €Ô �y -Ñ 0Ô 0Ð 0Ø €Ô �LÔ'¨Ñ /Ô /Ð /Ø €Ô ˜Ô,¨fÑ 5Ô 5Ð 5Ð 5Ð 5r"   