ó
    EñióI  ã                  óÔ  • S r SSKJr  SSKrSSKrSSKJrJr  SSKJ	r	  SSK
JrJrJr  SSKJr  SS	KJr  SS
KJr  Sr " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r\R6                  \   r\ H3  r\R>                  c   e\ " \S\R>                   3\RB                  5        M5     \ H3  r"\"R>                  c   e\ " \S\"R>                   3\"RB                  5        M5     \ H3  r#\#R>                  c   e\ " \S\#R>                   3\#RB                  5        M5     \ H3  r$\$R>                  c   e\ " \S\$R>                   3\$RB                  5        M5     \RJ                  r&\RN                  r(\RN                  \RR                  -  r*\RV                  r,\RV                  \RR                  -  r-\R\                  r/\R`                  r1\Rd                  \Rf                  -  \Rh                  -  \Rj                  -  r6\Rn                  r8\Rr                  r:\Rv                  r<\Rz                  r>\Rf                  r?\Rh                  r@\R‚                  rB\R†                  \Rˆ                  -  rE\R†                  rF\RŽ                  \R�                  -  rI\RŽ                  \R”                  -  rK\RŽ                  \R˜                  -  rM\RŽ                  \Rœ                  -  rO\RŽ                  \R                   -  rQ\RŽ                  \R¤                  -  rS\R¨                  rU\R¬                  rW\R°                  rY\R´                  r[\R¸                  r]\R¼                  r_\RÀ                  ra\RÄ                  rc\RÈ                  re\RÌ                  rg\RÐ                  ri\RÔ                  rk\RØ                  rm\RÜ                  ro " S S\R                  5      rp " S S\Râ                  5      rrS$S  jrsS%S! jrt\Rê                  " \pRì                  \p\t5        \Rî                  " S"\r5        \Rð                  " \pRì                  \s5        \Rò                  " \pRì                  S#5        g)&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/
é    )ÚannotationsN)ÚIntEnumÚIntFlag)ÚIOé   )ÚImageÚ	ImageFileÚImagePalette)Úi32le)Úo8)Úo32leiDDS c                  ó4   • \ rS rSrSrSrSrSrSrSr	Sr
S	rS
rg)ÚDDSDé   r   é   é   é   é   é   i   i  € © N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__ÚCAPSÚHEIGHTÚWIDTHÚPITCHÚPIXELFORMATÚMIPMAPCOUNTÚ
LINEARSIZEÚDEPTHÚ__static_attributes__r   ó    ÚO/home/mande/repo/quber/.venv/lib/python3.13/site-packages/PIL/DdsImagePlugin.pyr   r      s*   † Ø€DØ€FØ€EØ€EØ€KØ€KØ€JØƒEr$   r   c                  ó    • \ rS rSrSrSrSrSrg)ÚDDSCAPSé*   r   r   i  @ r   N)r   r   r   r   ÚCOMPLEXÚTEXTUREÚMIPMAPr#   r   r$   r%   r'   r'   *   s   † Ø€GØ€GØƒFr$   r'   c                  ó4   • \ rS rSrSrSrSrSrSrSr	Sr
S	rS
rg)ÚDDSCAPS2é0   i   é   i   r   i    i @  i €  i    r   N)r   r   r   r   ÚCUBEMAPÚCUBEMAP_POSITIVEXÚCUBEMAP_NEGATIVEXÚCUBEMAP_POSITIVEYÚCUBEMAP_NEGATIVEYÚCUBEMAP_POSITIVEZÚCUBEMAP_NEGATIVEZÚVOLUMEr#   r   r$   r%   r-   r-   0   s0   † Ø€GØÐØÐØÐØÐØÐØÐØƒFr$   r-   c                  ó,   • \ rS rSrSrSrSrSrSrSr	Sr
g	)
ÚDDPFé<   r   r   r   é    é@   r   r   N)r   r   r   r   ÚALPHAPIXELSÚALPHAÚFOURCCÚPALETTEINDEXED8ÚRGBÚ	LUMINANCEr#   r   r$   r%   r9   r9   <   s    † Ø€KØ€EØ€FØ€OØ
€CØƒIr$   r9   c                  óø  • \ rS rSrSrSrSrSrSrSr	Sr
S	rS
rSrSrSrSrSrSrSrSrSrSrSrSrSrSrSrSrSrSrSrSr Sr!S r"S!r#S"r$S#r%S$r&S%r'S&r(S'r)S(r*S)r+S*r,S+r-S,r.S-r/S.r0S/r1S0r2S1r3S2r4S3r5S4r6S5r7S6r8S7r9S8r:S9r;S:r<S;r=S<r>S=r?S>r@S?rAS@rBSArCSBrDSCrESDrFSErGSFrHSGrISrJSHrKSIrLSJrMSKrNSLrOSMrPSNrQSOrRSPrSSQrTSRrUSSrVSTrWSUrXSVrYSWrZSXr[SYr\SZr]S[r^S\r_S]r`S^raS_rbS`rcSardSbreScrfSdrgSerhSfriSgrjShrkSirlSjrmSkrnSlroSmrpSnrqSorrSprsSqrtSrruSsrvStrwSurxSvrySwrzSxr{Syr|Szr}g{)|ÚDXGI_FORMATéF   r   r   r   é   r   é   é   é   r   é	   é
   é   é   é   é   é   é   é   é   é   é   é   é   é   é   é   é   é   é   é   r   é   r;   é!   é"   é#   é$   é%   é&   é'   é(   é)   r(   é+   é,   é-   é.   é/   r.   é1   é2   é3   é4   é5   é6   é7   é8   é9   é:   é;   r:   é=   é>   é?   r<   éA   éB   éC   éD   éE   é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   é‚   éƒ   é„   é½   é¾   r   N)~r   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%   rD   rD   F   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$   rD   c                  ó   • \ rS rSrSrSrSrSrSrSr	Sr
S	rS
rSrSrSrSrSrSrSrSrSrSrSrSrSrSrSrSrSrSrSrSr Sr!S r"S!r#S"r$S#r%S$r&S%r'S&r(S'r)S(r*S)r+S*r,S+r-S,r.S-r/S.r0S/r1S0r2S1r3S2r4S3r5S4r6S5r7S6r8S7r9S8r:\;" S95      r<\;" S:5      r=\;" S;5      r>\;" S<5      r?\;" S=5      r@\;" S>5      rA\;" S?5      rB\;" S@5      rC\;" SA5      rD\;" SB5      rE\;" SC5      rF\;" SD5      rG\;" SE5      rH\;" SF5      rI\;" SG5      rJ\;" SH5      rK\;" SI5      rLSJrMgK)LÚD3DFMTéÂ   r   rU   rV   rW   rX   rY   rZ   r[   r\   r]   r^   r   r_   r;   r`   ra   rb   rc   rg   rh   ro   rp   rq   r:   ry   rz   r{   r<   r~   rE   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   MET1r   N)Nr   r   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-  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                  ó0   • \ rS rSrSrSrSS jrS	S jrSrg)
ÚDdsImageFileiJ  ÚDDSzDirectDraw Surfacec                óL  • U R                   c   e[        U R                   R                  S5      5      (       d  Sn[        U5      e[        R
                  " SU R                   R                  S5      5      u  nUS:w  a  S[        U5       3n[        U5      eU R                   R                  US-
  5      n[        U5      S:w  a  S[        U5       S3n[        U5      e[        R
                  " S	US S
 5      u  pEnXe4U l	        SU R                  -   n[        R
                  " S	US
S 5      u  p‰n
[        R
                  " SUSS 5        [        R
                  " SUSS 5      u  p¼pÞSnS nU[        R                  -  (       aq  U[        R                  -  (       a
  SU l        SnO	SU l        Sn[        R
                  " SU S3USSUS-  -    5      n[        R                   " SUSUU45      /U l        g U[        R$                  -  (       aI  US:X  a	  SU l        GO§US:X  a!  U[        R                  -  (       a	  SU l        GO€SU SU 3n[        U5      eU[        R&                  -  (       aO  SU l        [(        R*                  " SU R                   R                  S5      5      U l        SU R,                  l        GOU[        R0                  -  (       GaÝ  US-   nU[2        R4                  :X  a  SU l        S U l        S!nGOÂU[2        R8                  :X  a  SU l        S"U l        S#nGOœU[2        R:                  :X  a  SU l        S$U l        SnGOvU[2        R<                  [2        R>                  4;   a  SU l        S%U l        SnGO@U[2        R@                  :X  a  SU l        S&U l        S'nGOU[2        RB                  [2        RD                  4;   a  SU l        S(U l        S'nGOäU[2        RF                  :X  Ga¦  US)-  n[        R
                  " SU R                   R                  S5      5      u  nU R                   R                  S5        U[H        RJ                  [H        RL                  4;   a  SU l        S*U l        S!nGOGU[H        RN                  [H        RP                  4;   a  SU l        S+U l        S#nGOU[H        RR                  [H        RT                  4;   a  SU l        S,U l        SnGOÛU[H        RV                  [H        RX                  4;   a  SU l        S%U l        SnGO¥U[H        RZ                  [H        R\                  4;   a  SU l        S(U l        S'nGOoU[H        R^                  :X  a  SU l        S&U l        S'nGOIU[H        R`                  :X  a  SU l        S-U l        S.nGO#U[H        Rb                  :X  a  SU l        S/U l        S.nOþU[H        Rd                  [H        Rf                  [H        Rh                  4;   a4  SU l        S0U l        S1nU[H        Rh                  :X  a  S2U Rj                  S3'   O—U[H        Rl                  [H        Rn                  [H        Rp                  4;   a+  SU l        U[H        Rp                  :X  a  S2U Rj                  S3'   O9S4U 3n[s        U5      eS5[        U5       3n[s        U5      eS6U 3n[s        U5      eU(       a+  [        R                   " S7UWXðR6                  45      /U l        g [        R                   " S8USU=(       d    U R.                  5      /U l        g )9Nr   znot a DDS filez<Ié|   zUnsupported header size éx   zIncomplete header: z bytesz<3IrM   ©r   r   rY   z<11Ir   ú<4IrŽ   r   ÚRGBArA   rF   Ú<ÚIÚdds_rgbr   ÚLrQ   ÚLAzUnsupported bitcount z for ÚPr/   rl  r   rn  r   rp  ÚBC4rt  rG   ÚBC5rU   ÚBC1ÚBC2ÚBC3ÚBC6HrH   ÚBC6HSÚBC7rI   g]tÑEÝ?ÚgammazUnimplemented DXGI format zUnimplemented pixel format zUnknown pixel format flags ÚbcnÚraw):ÚfpÚ_acceptÚreadÚSyntaxErrorÚstructÚunpackÚreprÚOSErrorÚlenÚ_sizeÚsizer9   rA   r=   Ú_moder	   Ú_TileÚtilerB   r@   r
   r–  ÚpaletteÚmoder?   r-  rl  Úpixel_formatrn  rp  rs  rv  rt  ru  rw  rq  rD   rú   rù   rü   rý   rÿ   r   r  r  r  r  r  r  r  r  r  r  ÚinforÎ   rÏ   rÐ   ÚNotImplementedError)Ú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%   Ú_openÚDdsImageFile._openN  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Ó@Ñˆ�uØ�_ˆŒ
Ø˜4Ÿ9™9Ñ$ˆä &§¢¨e°V¸B¸r°]Ó CÑˆ�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Ü'×+Ò+¨F°D·G±G·L±LÀÓ4FÓGˆ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°¸×<MÑ<MÐ8NÓOðˆD�Iô #Ÿš¨°¸¸G×<PÀtÇyÁyÓQÐRˆD�Ir$   c                ó   • g )Nr   )rª  Úposs     r%   Ú	load_seekÚDdsImageFile.load_seekä  s   € Ør$   )r¢  r   r¥  r§  r¤  N)ÚreturnÚNone)rÂ  ÚintrÅ  rÆ  )	r   r   r   r   ÚformatÚformat_descriptionr¿  rÃ  r#   r   r$   r%   r~  r~  J  s   † Ø€FØ-ÐôTS÷lr$   r~  c                  ó"   • \ rS rSrSrSS jrSrg)ÚDdsRgbDecoderiè  Tc           	     óà  • U R                   c   eU R                  u  p#/ n/ nU HX  nSnUS:w  a)  XgS-   -	  US-   -  U:X  a  US-  nXgS-   -	  US-   -  U:X  a  M  UR                  U5        UR                  Xg-	  5        MZ     [        5       nUS-  n	U R                  R
                  U R                  R                  -  [        U5      -  n
[        U5      U
:  a‡  [        R                  U R                   R                  U	5      S5      n[        U5       H8  u  pÆX¶-  nU[        X\   (       a  [        XÔU   -	  X\   -  S-  5      OS5      -  nM:     [        U5      U
:  a  M‡  U R                  U5        g)Nr   r   r   Úlittleéÿ   )éÿÿÿÿr   )ÚfdÚargsÚappendÚ	bytearrayÚstateÚxsizeÚysizerŸ  rÇ  Ú
from_bytesr™  Ú	enumerater   Ú
set_as_raw)rª  Úbufferr¸  r¼  Úmask_offsetsÚmask_totalsÚmaskr½  ÚdataÚ	bytecountÚdest_lengthÚvalueÚiÚmasked_values                 r%   ÚdecodeÚDdsRgbDecoder.decodeë  sg  € Ø�w‰wÑ"Ð"Ð"ØŸ)™)‰ˆð ˆàˆÛˆDØˆFØ�q‹yØ¨™zÑ*¨v¸©zÑ:¸dÓBØ˜a‘K�Fð ¨™zÑ*¨v¸©zÑ:¸dÕBà×Ñ Ô'Ø×Ñ˜t™~Ö.ñ ô ‹{ˆØ ‘Mˆ	Ø—j‘j×&Ñ&¨¯©×)9Ñ)9Ñ9¼CÀ»JÑFˆÜ�$‹i˜+Ó%Ü—N‘N 4§7¡7§<¡<°	Ó#:¸HÓEˆEÜ$ UÖ+‘�Ø$™|�àœà"—~ô ˜,°q©/Ñ9¸[¹^ÑKÈsÑRÔSàóñ ’ñ ,ô �$‹i˜+Õ%ð 	�‰˜ÔØr$   r   N)rÚ  z$bytes | Image.SupportsArrayInterfacerÅ  ztuple[int, int])r   r   r   r   Ú	_pulls_fdrä  r#   r   r$   r%   rË  rË  è  s   † Ø€I÷r$   rË  c                ó<  • U R                   S;  a  SU R                    S3n[        U5      e[        R                  [        R                  -  [        R
                  -  [        R                  -  n[        U R                  5       5      S-  nU R                  R                  S5      nU(       Ga  SnU[        R                  -  nU R                  S-   S-  n/ S	Qn	[        R                  n
US
:X  a  [        R                   nSnGOÜUS:X  a  [        R"                  nSnGOÂUS:X  a  [        R$                  nSnGO¨[        R&                  nUS:X  a  Sn[(        R*                  nGO~US:X  a  Sn[(        R,                  nGOdUS:X  a1  Sn[(        R.                  nU R                   S:w  a  Sn[        U5      eGO-SU 3n[        U5      eSnU[        R0                  -  nU R                  U-  S-   S-  nU R                   S   S:H  nU R                   S   S:X  a-  [        R2                  n
U R                   nU(       a  / SQn	Ob/ SQn	O][        R4                  n
U R                   S S S2   n/ SQn	U(       a0  U R7                  5       u  nnnn[8        R:                  " S UUUU45      n U(       a  U
[        R<                  -  n
U	R?                  U(       a  S!OS5        [        R@                  nURC                  [E        [F        5      [H        RJ                  " S"S#UU RL                  U R                  USS5      -   [H        RJ                  " S$/S%Q76 -   [H        RJ                  " S&S'X«U5      -   [H        RJ                  " S&/U	Q76 -   [H        RJ                  " S([N        RP                  SSSS5      -   5        U[        R&                  :X  a*  URC                  [H        RJ                  " S(WSSSS)5      5        [R        RT                  " X[R        RV                  " US*U RX                  -   SU5      /5        g )+N)rA   r…  r‰  rŠ  zcannot write mode z as DDSr   r§  r•  rF   r   )r   r   r   r   rl  )r   rn  )r   rp  )rF   r�  r�  r�  )rG   rA   z#only RGB mode can be written as BC5zcannot write pixel format r–  rI   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„  r;   z<5Ir   rƒ  )-r¦  rž  r   r   r   r   r   rŸ  ÚgetbandsÚencoderinfoÚgetr!   r°  r9   r?   r-  rl  rn  rp  rq  rD   rü   rÿ   r  r   rB   rA   Úsplitr   Úmerger=   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ô    sl  € Ø	‡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Ü! #›,Ð&ñ $ð 3°<°.Ð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 °hÓ
?ñ	@ô �+Š+�eÐ
(˜iÒ
(ñ	)ô �+Š+�eœWŸ_™_¨a°°A°qÓ
9ñ	:ôð$ ”—‘ÓØ
�‰ä�KŠK˜˜{¨A¨q°!°QÓ7ô	
ô ‡O‚O�BœYŸ_š_¨Z¸À"Ç'Á'Ñ9IÈ1ÈdÓSÐTÕUr$   c                ó$   • U R                  S5      $ )Ns   DDS )Ú
startswith)Úprefixs    r%   r˜  r˜  j  s   € Ø×Ñ˜WÓ%Ð%r$   rˆ  z.dds)rõ  zImage.Imager—  z	IO[bytes]rö  zstr | bytesrÅ  rÆ  )r  ÚbytesrÅ  Úbool)zÚ__doc__Ú
__future__r   r›  ÚsysÚenumr   r   Útypingr   Ú r   r	   r
   Ú_binaryr   rh  r   r   rñ  rò  r   r'   r-   r9   rD   r-  Úmodulesr   ÚmoduleÚitemÚnameÚsetattrrá  Úitem1Úitem2Úitem3r?   Ú
DDS_FOURCCrA   ÚDDS_RGBr=   ÚDDS_RGBArB   ÚDDS_LUMINANCEÚDDS_LUMINANCEAr>   Ú	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_CUBEMAPr0   r1   ÚDDS_CUBEMAP_POSITIVEXr2   ÚDDS_CUBEMAP_NEGATIVEXr3   ÚDDS_CUBEMAP_POSITIVEYr4   ÚDDS_CUBEMAP_NEGATIVEYr5   ÚDDS_CUBEMAP_POSITIVEZr6   ÚDDS_CUBEMAP_NEGATIVEZrl  ÚDXT1_FOURCCrn  ÚDXT3_FOURCCrp  Ú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Ñ	€Û€DØ�9‰9Ñ Ð Ð ÙˆF�e˜DŸI™I˜;Ð'¨¯©Ö4ñ ó €EØ�:‰:Ñ!Ð!Ð!ÙˆF�h˜uŸz™z˜lÐ+¨U¯[©[Ö9ñ ó €EØ�:‰:Ñ!Ð!Ð!ÙˆF�i §
¡
˜|Ð,¨e¯k©kÖ:ñ ó €EØ�:‰:Ñ!Ð!Ð!ÙˆF�e˜EŸJ™J˜<Ð(¨%¯+©+Ö6ñ ð �[‰[€
Ø
�(‰(€Ø�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×'Ñ'ô "ôJZVôz&ð × Ò �L×'Ñ'¨°wÔ ?Ø × Ò �y -Ô 0Ø × Ò �L×'Ñ'¨Ô /Ø × Ò ˜×,Ñ,¨fÕ 5r$   