ó
    jñ:iÚI  ã                  óÜ  • S r SSKJr  SSK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\R8                  \   r\ H3  r\R@                  c   e\!" \S\R@                   3\RD                  5        M5     \ H3  r#\#R@                  c   e\!" \S\#R@                   3\#RD                  5        M5     \ H3  r$\$R@                  c   e\!" \S\$R@                   3\$RD                  5        M5     \ H3  r%\%R@                  c   e\!" \S\%R@                   3\%RD                  5        M5     \RL                  r'\RP                  r)\RP                  \RT                  -  r+\RX                  r-\RX                  \RT                  -  r.\R^                  r0\Rb                  r2\Rf                  \Rh                  -  \Rj                  -  \Rl                  -  r7\Rp                  r9\Rt                  r;\Rx                  r=\R|                  r?\Rh                  r@\Rj                  rA\R„                  rC\Rˆ                  \RŠ                  -  rF\Rˆ                  rG\R�                  \R’                  -  rJ\R�                  \R–                  -  rL\R�                  \Rš                  -  rN\R�                  \Rž                  -  rP\R�                  \R¢                  -  rR\R�                  \R¦                  -  rT\Rª                  rV\R®                  rX\R²                  rZ\R¶                  r\\Rº                  r^\R¾                  r`\RÂ                  rb\RÆ                  rd\RÊ                  rf\RÎ                  rh\RÒ                  rj\RÖ                  rl\RÚ                  rn\RÞ                  rp " S S\R                  5      rq " S S\Rä                  5      rsS$S  jrtS%S! jru\Rì                  " \qRî                  \q\u5        \Rð                  " S"\s5        \Rò                  " \qRî                  \t5        \Rô                  " \qRî                  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   ó    ÚU/srv/projetos/modelo_ml_acdoc/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é1   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-   1   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@rBSArCSBrDSCrESDrFSErGSFrHSGrISHrJSrKSIrLSJrMSKrNSLrOSMrPSNrQSOrRSPrSSQrTSRrUSSrVSTrWSUrXSVrYSWrZSXr[SYr\SZr]S[r^S\r_S]r`S^raS_rbS`rcSardSbreScrfSdrgSerhSfriSgrjShrkSirlSjrmSkrnSlroSmrpSnrqSorrSprsSqrtSrruSsrvStrwSurxSvrySwrzSxr{Syr|Szr}g{)|ÚDXGI_FORMATéG   r   r   r   é   r   é   é   é   r   é	   é
   é   é   é   é   é   é   é   é   é   é   é   é   é   é   é   é   é   é   é   é   r   r;   é!   é"   é#   é$   é%   é&   é'   é(   é)   é*   r(   é,   é-   é.   é/   é0   r.   é2   é3   é4   é5   é6   é7   é8   é9   é:   é;   é<   r:   é>   é?   r<   éA   éB   éC   éD   éE   éF   é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   G   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   ry   r:   rz   r{   r<   r~   r�   rE   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)
ÚDdsImageFileiK  ÚDDSzDirectDraw Surfacec                óÎ  • [        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                  " U5      n[        R
                  " S	UR                  S
5      5      u  pVnXv4U l        SU R                  -   n[        R
                  " S	UR                  S
5      5      u  pšn[        R
                  " SUR                  S5      5        [        R
                  " SUR                  S5      5      u  pÍpïSnS nU[        R                  -  (       az  U[        R                  -  (       a
  SU l        SnO	SU l        Sn[        R
                  " SU S3UR                  US-  5      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 R0                  l        GOU[        R4                  -  (       GaÝ  US-   nU[6        R8                  :X  a  SU l        SU l        SnGOÂU[6        R<                  :X  a  SU l        S U l        S!nGOœU[6        R>                  :X  a  SU l        S"U l        SnGOvU[6        R@                  [6        RB                  4;   a  SU l        S#U l        SnGO@U[6        RD                  :X  a  SU l        S$U l        S%nGOU[6        RF                  [6        RH                  4;   a  SU l        S&U l        S%nGOäU[6        RJ                  :X  Ga¦  US'-  n[        R
                  " SU R                  R                  S5      5      u  nU R                  R                  S5        U[L        RN                  [L        RP                  4;   a  SU l        S(U l        SnGOGU[L        RR                  [L        RT                  4;   a  SU l        S)U l        S!nGOU[L        RV                  [L        RX                  4;   a  SU l        S*U l        SnGOÛU[L        RZ                  [L        R\                  4;   a  SU l        S#U l        SnGO¥U[L        R^                  [L        R`                  4;   a  SU l        S&U l        S%nGOoU[L        Rb                  :X  a  SU l        S$U l        S%nGOIU[L        Rd                  :X  a  SU l        S+U l        S,nGO#U[L        Rf                  :X  a  SU l        S-U l        S,nOþU[L        Rh                  [L        Rj                  [L        Rl                  4;   a4  SU l        S.U l        S/nU[L        Rl                  :X  a  S0U Rn                  S1'   O—U[L        Rp                  [L        Rr                  [L        Rt                  4;   a+  SU l        U[L        Rt                  :X  a  S0U Rn                  S1'   O9S2U 3n[w        U5      eS3[        U5       3n[w        U5      eS4U 3n[w        U5      eU(       a,  ["        R$                  " S5UWUU R:                  45      /U l        g ["        R$                  " S6USU=(       d    U R2                  5      /U l        g )7Nr   znot a DDS filez<Ié|   zUnsupported header size éx   zIncomplete header: z bytesz<3IrM   ©r   r   z<11Irj   ú<4IrQ   r   ÚRGBArA   rF   Ú<ÚIÚdds_rgbr   ÚLÚ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)<Ú_acceptÚfpÚreadÚSyntaxErrorÚstructÚunpackÚreprÚOSErrorÚlenÚioÚBytesIOÚ_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_bytesÚheaderÚflagsÚheightÚwidthÚextentsÚpitchÚdepthÚmipmapsÚpfsizeÚpfflagsÚfourccÚbitcountÚnÚrawmodeÚ
mask_countÚmasksÚoffsetÚdxgi_formats                         r%   Ú_openÚDdsImageFile._openO  s  € Ü�t—w‘w—|‘| A“×'Ñ'Ø"ˆCÜ˜cÓ"Ð"ÜŸš t¨T¯W©W¯\©\¸!«_Ó=‰ˆØ˜#ÓØ,¬T°+Ó->Ð,?Ð@ˆCÜ˜#“,ÐØ—w‘w—|‘| K°!¡OÓ4ˆÜˆ|Ó Ó#Ø'¬¨LÓ(9Ð':¸&ÐAˆCÜ˜#“,ÐÜ—’˜LÓ)ˆä%Ÿ}š}¨U°F·K±KÀ³OÓDÑˆ�uØ�_ˆŒ
Ø˜4Ÿ9™9Ñ$ˆä &§¢¨e°V·[±[À³_Ó EÑˆ�gÜ�Š�f˜fŸk™k¨"›oÔ.ô -3¯MªM¸%ÀÇÁÈRÃÓ,QÑ)ˆ˜ØˆØˆØ”T—X‘X×àœ×)Ñ)×)Ø#�”
Ø‘
à"�”
Ø�
ä—M’M A j \°Ð"3°V·[±[ÀÈaÁÓ5PÓQˆ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°¸¸D×<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~  K  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       H-  u  pÆX¶-  nU[        [        XÔU   -	  X\   -  S-  5      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ì  s]  € Ø�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—  i  s   € Ø×Ñ˜WÓ%Ð%r$   rˆ  z.dds)rø  zImage.Imager˜  z	IO[bytes]rù  zstr | bytesrÈ  rÉ  )r  ÚbytesrÈ  Úbool){Ú__doc__Ú
__future__r   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×'Ñ'ô  ôFZVôz&ð × Ò �L×'Ñ'¨°wÔ ?Ø × Ò �y -Ô 0Ø × Ò �L×'Ñ'¨Ô /Ø × Ò ˜×,Ñ,¨fÕ 5r$   