+
    UBiI                    R	   R t ^ RIHt ^ RIt^ RIt^ RIt^ RIHtHt ^ RI	H
t
 ^RIHtHtHt ^RIHt ^RIHt ^RIHt R	t ! R
 R]4      t ! R R]4      t ! R R]4      t ! R R]4      t ! R R]4      t ! R R]4      t]P8                  ],          t] F4  t]P@                  f   Q h]!! ]R]P@                   2]PD                  4       K6  	  ] F4  t#]#P@                  f   Q h]!! ]R]#P@                   2]#PD                  4       K6  	  ] F4  t$]$P@                  f   Q h]!! ]R]$P@                   2]$PD                  4       K6  	  ] F4  t%]%P@                  f   Q h]!! ]R]%P@                   2]%PD                  4       K6  	  ]PL                  t']PP                  t)]PP                  ]PT                  ,          t+]PX                  t-]PX                  ]PT                  ,          t.]P^                  t0]Pb                  t2]Pf                  ]Ph                  ,          ]Pj                  ,          ]Pl                  ,          t7]Pp                  t9]Pt                  t;]Px                  t=]P|                  t?]Ph                  t@]Pj                  tA]P                  tC]P                  ]P                  ,          tF]P                  tG]P                  ]P                  ,          tJ]P                  ]P                  ,          tL]P                  ]P                  ,          tN]P                  ]P                  ,          tP]P                  ]P                  ,          tR]P                  ]P                  ,          tT]P                  tV]P                  tX]P                  tZ]P                  t\]P                  t^]P                  t`]P                  tb]P                  td]P                  tf]P                  th]P                  tj]P                  tl]P                  tn]P                  tp ! R R]P                  4      tq ! R R]P                  4      tsR R lttR  R! ltu]P                  ! ]qP                  ]q]u4       ]P                  ! R"]s4       ]P                  ! ]qP                  ]t4       ]P                  ! ]qP                  R#4       R# )$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                  6    ] tR t^t^t^t^t^tRtRt	Rt
RtRtR# )DDSD      i   i    N)__name__
__module____qualname____firstlineno__CAPSHEIGHTWIDTHPITCHPIXELFORMATMIPMAPCOUNT
LINEARSIZEDEPTH__static_attributes__r       7/usr/lib/python3.14/site-packages/PIL/DdsImagePlugin.pyr   r      s*    DFEEKKJEr   r   c                  "    ] tR t^+t^tRtRtRtR# )DDSCAPSr   i  @ r   N)r   r   r   r   COMPLEXTEXTUREMIPMAPr   r   r   r   r!   r!   +   s    GGFr   r!   c                  6    ] tR t^1tRtRtRtRtRtRt	Rt
RtR	tR
# )DDSCAPS2i      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                  .    ] tR t^=t^t^t^t^ t^@tRt	Rt
R# )DDPFr   r   N)r   r   r   r   ALPHAPIXELSALPHAFOURCCPALETTEINDEXED8RGB	LUMINANCEr   r   r   r   r1   r1   =   s     KEFO
CIr   r1   c                     ] tR t^Gt^ t^t^t^t^t^t	^t
^t^t^	t^
t^t^t^t^t^t^t^t^t^t^t^t^t^t^t^t^t^t^t ^t!^t"^t#^ t$^!t%^"t&^#t'^$t(^%t)^&t*^'t+^(t,^)t-^*t.^+t/^,t0^-t1^.t2^/t3^0t4^1t5^2t6^3t7^4t8^5t9^6t:^7t;^8t<^9t=^:t>^;t?^<t@^=tA^>tB^?tC^@tD^AtE^BtF^CtG^DtH^EtI^FtJ^GtK^HtL^ItM^JtN^KtO^LtP^MtQ^NtR^OtS^PtT^QtU^RtV^StW^TtX^UtY^VtZ^Wt[^Xt\^Yt]^Zt^^[t_^\t`^]ta^^tb^_tc^`td^ate^btf^ctg^dth^eti^ftj^gtk^htl^itm^jtn^kto^ltp^mtq^ntr^ots^ptt^qtu^rtv^stw^tx^ty^tz^t{^t|Rt}R# )DXGI_FORMATr   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   r9   r9   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   r9   c                     ] tR t^t^ t^t^t^t^t^t	^t
^t^t^t^t^t^t^ t^!t^"t^#t^$t^(t^)t^2t^3t^4t^<t^=t^>t^?t^@t^Ct ^Ft!^Gt"^It#^Kt$^Mt%^Ot&^Pt'^Rt(^St)^Tt*^Ut+^Qt,^dt-^et.^ft/^nt0^ot1^pt2^qt3^rt4^st5^tt6^ut7^vt8^wt9^t:];! R4      t<];! R4      t=];! R4      t>];! R4      t?];! R4      t@];! R4      tA];! R4      tB];! R4      tC];! R	4      tD];! R
4      tE];! R4      tF];! R4      tG];! R4      tH];! R4      tI];! R4      tJ];! R4      tK];! R4      tLRtMR# )D3DFMTs   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                  6    ] tR tRtRtRtR R ltR R ltRtR	# )
DdsImageFileiK  DDSzDirectDraw Surfacec                   V ^8  d   QhRR/# )   returnNoner   )formats   "r   __annotate__DdsImageFile.__annotate__O  s     TS TSt TSr   c                	n   \        V P                  P                  ^4      4      '       g   Rp\        V4      h\        P
                  ! RV P                  P                  ^4      4      w  pV^|8w  d   R\        V4       2p\        V4      hV P                  P                  V^,
          4      p\        V4      ^x8w  d   R\        V4       R2p\        V4      h\        P                  ! V4      p\        P
                  ! RVP                  ^4      4      w  rVpWv3V n        R'V P                  ,           p\        P
                  ! RVP                  ^4      4      w  rp\        P
                  ! RVP                  ^,4      4       \        P
                  ! RVP                  ^4      4      w  rr^ pR	pV\        P                  ,          '       d   V\        P                  ,          '       d   R
V n        ^pM	RV n        ^p\        P
                  ! RV R2VP                  V^,          4      4      p\"        P$                  ! RV^ VV34      .V n        R	# V\        P(                  ,          '       dQ   V^8X  d
   RV n        EMV^8X  d'   V\        P                  ,          '       d
   RV n        EMRV RV 2p\        V4      hV\        P*                  ,          '       dP   RV n        \,        P.                  ! R
V P                  P                  R4      4      V n        R
V P0                  n        EM'V\        P4                  ,          '       Ed   V^,           pV\6        P8                  8X  d   R
V n        RV n        ^pEMV\6        P<                  8X  d   R
V n        RV n        ^pEMV\6        P>                  8X  d   R
V n        RV n        ^pEMV\6        P@                  \6        PB                  39   d   RV n        RV n        ^pEMTV\6        PD                  8X  d   RV n        RV n        ^pEM-V\6        PF                  \6        PH                  39   d   RV n        RV n        ^pEMV\6        PJ                  8X  Ed   V^,          p\        P
                  ! RV P                  P                  ^4      4      w  pV P                  P                  ^4       V\L        PN                  \L        PP                  39   d   R
V n        RV n        ^pEMSV\L        PR                  \L        PT                  39   d   R
V n        RV n        ^pEMV\L        PV                  \L        PX                  39   d   R
V n        RV n        ^pEMV\L        PZ                  \L        P\                  39   d   RV n        RV n        ^pEMV\L        P^                  \L        P`                  39   d   RV n        RV n        ^pEMwV\L        Pb                  8X  d   RV n        RV n        ^pEMPV\L        Pd                  8X  d   RV n        RV n        ^pEM)V\L        Pf                  8X  d   RV n        RV n        ^pEMV\L        Ph                  \L        Pj                  \L        Pl                  39   d6   R
V n        R V n        ^pV\L        Pl                  8X  d   R(V Pn                  R!&   MV\L        Pp                  \L        Pr                  \L        Pt                  39   d-   R
V n        V\L        Pt                  8X  d   R(V Pn                  R!&   M9R"V 2p\w        V4      hR#\        V4       2p\w        V4      hR$V 2p\w        V4      hV'       d.   \"        P$                  ! R%VXVV P:                  34      .V n        R	# \"        P$                  ! R&T^ T;'       g    V P2                  4      .V n        R	# ))   znot a DDS filez<IzUnsupported header size zIncomplete header: z bytesz<3Iz<11I<4INRGBAr6   <Idds_rgbLLAzUnsupported bitcount z for Pr'   r   r   r   BC4r   BC5BC1BC2BC3BC6HBC6HSBC7gammazUnimplemented DXGI format zUnimplemented pixel format zUnknown pixel format flags bcnraw    r  g]tE?)<_acceptfpreadSyntaxErrorstructunpackreprOSErrorlenioBytesIO_sizesizer1   r6   r2   _moder   _Tiletiler7   r5   r   r  palettemoder4   r   r   pixel_formatr   r   r   r   r   r   r   r   r9   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   inforU   rV   rW   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#   tww||A''"Cc""tTWW\\!_=#,T+->,?@C#,ww||K!O4|#'L(9':&AC#,L)%}}UFKKODu_
499$ &eV[[_ Egffkk"o. -3MM%R,Q)TXX))))#

"

MMAj\"3V[[a5PQE"GQ5@QRSDIt~~%%1} 
RGd.>.>$>$>!
-hZuWIFcl"t++++DJ'++FDGGLL4FGDL &DLLt{{"" 1_F$#
$*!6;;&#
$*!6;;&#
$*!FKK55 
$)!6;;&"
$*!FKK55"
$)!6;;&"!'tTWW\\!_!ER )),,#  "(DJ(-D%A [%=%={?T?T$UU!'DJ(-D%A [%=%={?T?T$UU!'DJ(-D%A [%=%={?T?T$UU!$DJ(-D%A [%=%={?T?T$UU!&DJ(-D%A K$9$99!&DJ(.D%A K$9$99!&DJ(.D%A K$9$99!&DJ(/D%A ,,))..% 
 "(DJ(-D%A"k&@&@@-4		'* 11..33% 
 "(DJ"k&E&EE-4		'*6{mDC-c223DL>B)#../y9C%c**wD<M<M8NODI #G<P<PtyyQRDIr   c                    V ^8  d   QhRRRR/# )r  posintr  r  r   )r  s   "r   r  r    s      S T r   c                	    R # )Nr   )r4  rM  s   &&r   	load_seekDdsImageFile.load_seek  s    r   )r,  r*  r/  r1  r.  N)	r   r   r   r   r  format_descriptionrJ  rP  r   r   r   r   r   r   K  s    F-TSl r   r   c                  &    ] tR tRtRtR R ltRtR# )DdsRgbDecoderi  Tc                    V ^8  d   QhRRRR/# )r  bufferz$bytes | Image.SupportsArrayInterfacer  ztuple[int, int]r   )r  s   "r   r  DdsRgbDecoder.__annotate__  s      A o r   c           	     	   V P                   f   Q hV P                  w  r#. p. pV Fa  p^ pV^ 8w  d.   Wg^,           ,	          V^,           ,          V8X  d   V^,          pK-  VP                  V4       VP                  Wg,	          4       Kc  	  \        4       pV^,          p	V P                  P
                  V P                  P                  ,          \        V4      ,          p
\        V4      V
8  d   \        P                  V P                   P                  V	4      R4      p\        V4       FI  w  rW,          pV\        \        WV,          ,	          W\,          ,          ^,          4      4      ,          pKK  	  K  V P                  V4       R# )Nlittle)r  )fdargsappend	bytearraystatexsizeysizer'  rN  
from_bytesr!  	enumerater
   
set_as_raw)r4  rV  rC  rG  mask_offsetsmask_totalsmaskrH  data	bytecountdest_lengthvalueimasked_values   &&            r   decodeDdsRgbDecoder.decode  s7   ww""")) DFqyz*vz:dBaKF't~.  {M	jj&&)9)99CJF$i+%NN477<<	#:HEE$U+$|,q/9[^KsRS  , 	r   r   N)r   r   r   r   	_pulls_fdrn  r   r   r   r   rT  rT    s    I r   rT  c               (    V ^8  d   QhRRRRRRRR/# )	r  imzImage.Imager   z	IO[bytes]filenamezstr | bytesr  r  r   )r  s   "r   r  r    s4     ZV ZVk ZVy ZVK ZVD ZVr   c                	   V P                   R9  d   RV P                    R2p\        V4      h\        P                  \        P                  ,          \        P
                  ,          \        P                  ,          p\        V P                  4       4      ^,          pV P                  P                  R4      pV'       Ed(   RpV\        P                  ,          pV P                  ^,           ^,          p. ROp	\        P                  p
VR8X  d   \        P                   pRpEMVR8X  d   \        P"                  pRpEMVR	8X  d   \        P$                  pRpEM\        P&                  pVR
8X  d   Rp\(        P*                  pEMVR8X  d   Rp\(        P,                  pEMVR8X  d3   Rp\(        P.                  pV P                   R 8w  d   Rp\        V4      hEMRRV 2p\        V4      hRpV\        P0                  ,          pV P                  V,          ^,           ^,          pV P                   R,          R8H  pV P                   ^ ,          R8X  d/   \        P2                  p
V P                   pV'       d   . ROp	Mg. ROp	Mb\        P4                  p
V P                   RRR1,          p. R Op	V'       d1   V P7                  4       w  pppp\8        P:                  ! RVVVV34      p V'       d   V
\        P<                  ,          p
T	P?                  V'       d   RM^ 4       \        P@                  pVPC                  \E        \F        4      \H        PJ                  ! R^|VV PL                  V P                  V^ ^ 4      ,           \H        PJ                  ! R.R!O5!  ,           \H        PJ                  ! R^ WV4      ,           \H        PJ                  ! R.V	O5!  ,           \H        PJ                  ! R\N        PP                  ^ ^ ^ ^ 4      ,           4       V\        P&                  8X  d+   VPC                  \H        PJ                  ! RX^^ ^ ^4      4       \R        PT                  ! W\R        PV                  ! VR"V PX                  ,           ^ V4      .4       R# )#r6   r  r  zcannot write mode z as DDSr1  r  r   r   r   r  r  r  z#only RGB mode can be written as BC5zcannot write pixel format r  A      ~ Nz<7I11Ir
  z<5I)r6   r  r  r  )r  r  r  r  )   )r  )   )   rZ  )   r{  r{  )rv  rv  rv  )i   i   r{  )r  r  r  r  r  r  r  r  r  r  r  r  )-r0  r&  r   r   r   r   r   r'  getbandsencoderinfogetr   r;  r1   r4   r   r   r   r   r   r9   r   r   r   r   r7   r6   splitr   merger2   r]  r:   writeo32	DDS_MAGICr#  packr:  r!   r#   r   _saver-  r+  )rr  r   rs  r5  r9  rC  r1  
codec_namer=  	rgba_maskpixel_flagsrB  r\  rI  alphargbas   &&&                r   r  r    sn   	ww00"277)73clII#djj043C3CCE2;;=!A%H>>%%n5L|
 A" 	kk6![[FDV#[[FDV#[[FD[[Fu$)66&)66&)6677e#?C!#,& $ 3<.Acl"
H$q(Q.s"771:..K77D@	@	((K774R4=D<IXXZ
1a[[!Q164+++Ku!4HHI
++IIHH	

	
 ++e
*y
*	+ ++eRh
?	@ ++e
(i
(	) ++eW__aAq
9	:$ 
KK{Aq!Q7	
 OOBY__Z"''9I1dSTUr   c                    V ^8  d   QhRRRR/# )r  prefixbytesr  boolr   )r  s   "r   r  r  i  s     & &E &d &r   c                $    V P                  R 4      # )s   DDS )
startswith)r  s   &r   r  r  i  s    W%%r   r  z.dds){__doc__
__future__r   r(  r#  sysenumr   r   typingr    r   r   r   _binaryr	   r   r
   r   r  r  r   r!   r&   r1   r9   r   modulesr   moduleitemnamesetattrrk  item1item2item3r4   
DDS_FOURCCr6   DDS_RGBr2   DDS_RGBAr7   DDS_LUMINANCEDDS_LUMINANCEAr3   	DDS_ALPHAr5   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_POSITIVEYr,   DDS_CUBEMAP_NEGATIVEYr-   DDS_CUBEMAP_POSITIVEZr.   DDS_CUBEMAP_NEGATIVEZr   DXT1_FOURCCr   DXT3_FOURCCr   DXT5_FOURCCrU   DXGI_FORMAT_R8G8B8A8_TYPELESSrV   DXGI_FORMAT_R8G8B8A8_UNORMrW   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   	PyDecoderrT  r  r  register_openr  register_decoderregister_saveregister_extensionr   r   r   <module>r     s  
 # 	  
 !  , , !  ! 	7 g w 7 y2' y2xI W I Z 
X	D99   FeDII;'4  E::!!!Fhuzzl+U[[9  E::!!!Fi

|,ekk:  E::!!!FeEJJ<(%++6  [[

((88d&&&$"2"22JJ	99t{{2TZZ?$BRBRR ** **  "oo [[
JJ	#OO "??W^^; #OO  ((8+E+EE  ((8+E+EE  ((8+E+EE  ((8+E+EE  ((8+E+EE  ((8+E+EE kkkkkk + = = (77 "-"A"A &33 #-- #-- #-- #-- &33 #-- (77 [9&& [| I''  FZVz&   L''w ?   y- 0   L'' /   ,,f 5r   