+
    iI                    J	   R t ^ RIH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]P6                  ],          t] F4  t]P>                  f   Q h] ! ]R]P>                   2]PB                  4       K6  	  ] F4  t"]"P>                  f   Q h] ! ]R]"P>                   2]"PB                  4       K6  	  ] F4  t#]#P>                  f   Q h] ! ]R]#P>                   2]#PB                  4       K6  	  ] F4  t$]$P>                  f   Q h] ! ]R]$P>                   2]$PB                  4       K6  	  ]PJ                  t&]PN                  t(]PN                  ]PR                  ,          t*]PV                  t,]PV                  ]PR                  ,          t-]P\                  t/]P`                  t1]Pd                  ]Pf                  ,          ]Ph                  ,          ]Pj                  ,          t6]Pn                  t8]Pr                  t:]Pv                  t<]Pz                  t>]Pf                  t?]Ph                  t@]P                  tB]P                  ]P                  ,          tE]P                  tF]P                  ]P                  ,          tI]P                  ]P                  ,          tK]P                  ]P                  ,          tM]P                  ]P                  ,          tO]P                  ]P                  ,          tQ]P                  ]P                  ,          tS]P                  tU]P                  tW]P                  tY]P                  t[]P                  t]]P                  t_]P                  ta]P                  tc]P                  te]P                  tg]P                  ti]P                  tk]P                  tm]P                  to ! R R]P                  4      tp ! R R]P                  4      trR R ltsR  R! ltt]P                  ! ]pP                  ]p]t4       ]P                  ! R"]r4       ]P                  ! ]pP                  ]s4       ]P                  ! ]pP                  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       r/Users/tonyclaw/.openclaw/workspace/skills/math-calculator/venv/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^0t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&   0   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^Ft^ 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   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   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	# )
DdsImageFileiJ  DDSzDirectDraw Surfacec                   V ^8  d   QhRR/# )   returnNoner   )formats   "r   __annotate__DdsImageFile.__annotate__N  s     TS TSt TSr   c                	   V P                   f   Q h\        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
                  ! RVR,          4      w  rEpWe3V n	        R*V P                  ,           p\        P
                  ! RVR,          4      w  rp
\        P
                  ! R	VR
,          4       \        P
                  ! RVR,          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^T^TV^,          ,            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 P,                  n        EM'V\        P0                  ,          '       Ed   V^,           pV\2        P4                  8X  d   RV n        RV n        ^pEMV\2        P8                  8X  d   RV n        RV n        ^pEMV\2        P:                  8X  d   RV n        RV n        ^pEMV\2        P<                  \2        P>                  39   d   RV n        RV n        ^pEMTV\2        P@                  8X  d   RV n        RV n        ^pEM-V\2        PB                  \2        PD                  39   d   RV n        RV n        ^pEMV\2        PF                  8X  Ed   V^,          p\        P
                  ! RV P                   P                  ^4      4      w  pV P                   P                  ^4       V\H        PJ                  \H        PL                  39   d   RV n        RV n        ^pEMSV\H        PN                  \H        PP                  39   d   RV n        RV n        ^pEMV\H        PR                  \H        PT                  39   d   RV n        R V n        ^pEMV\H        PV                  \H        PX                  39   d   RV n        RV n        ^pEMV\H        PZ                  \H        P\                  39   d   RV n        RV n        ^pEMwV\H        P^                  8X  d   RV n        RV n        ^pEMPV\H        P`                  8X  d   RV n        R!V n        ^pEM)V\H        Pb                  8X  d   RV n        R"V n        ^pEMV\H        Pd                  \H        Pf                  \H        Ph                  39   d6   RV n        R#V n        ^pV\H        Ph                  8X  d   R+V Pj                  R$&   MV\H        Pl                  \H        Pn                  \H        Pp                  39   d-   RV n        V\H        Pp                  8X  d   R+V Pj                  R$&   M9R%V 2p\s        V4      hR&\        V4       2p\s        V4      hR'V 2p\s        V4      hV'       d-   \        P                   ! R(VXWP6                  34      .V n        R # \        P                   ! R)T^ T;'       g    V P.                  4      .V n        R # ),Nznot a DDS filez<IzUnsupported header size zIncomplete header: z bytesz<3I:N   N:r	     Nz<11I:r
  D   N<4I:r  T   N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?):fp_acceptreadSyntaxErrorstructunpackreprOSErrorlen_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flagsheightwidthextentspitchdepthmipmapspfsizepfflagsfourccbitcountnrawmode
mask_countmasksoffsetdxgi_formats   &                    r   _openDdsImageFile._openN  s   ww"""tww||A''"Cc""tTWW\\!_=#,T+->,?@C#,kAo.v;#'F}F;C#,%}}UF3K@u_
499$ &eVE] CgffUm, -3MM%,O)TXX))))#

"

MMAj\"3VBjSTnAT5UVE"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<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   )r5  rM  s   &&r   	load_seekDdsImageFile.load_seek  s    r   )r-  r+  r0  r2  r/  N)	r   r   r   r   r  format_descriptionrJ  rP  r   r   r   r   r   r   J  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           	     	4   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       FY  w  rW,          pT\        W\,          '       d-   \        WV,          ,	          W\,          ,          ^,          4      M^ 4      ,          pK[  	  K  V P                  V4       R# )Nlittle)r!  )fdargsappend	bytearraystatexsizeysizer*  rN  
from_bytesr$  	enumerater
   
set_as_raw)r5  rV  rC  rG  mask_offsetsmask_totalsmaskrH  data	bytecountdest_lengthvalueimasked_values   &&            r   decodeDdsRgbDecoder.decode  sC   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 DDSr2  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   )-r1  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  r6  r9  rC  r2  
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  j  s     & &E &d &r   c                $    V P                  R 4      # )s   DDS )
startswith)r  s   &r   r#  r#  j  s    W%%r   r  z.dds)z__doc__
__future__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'' "JZVz&   L''w ?   y- 0   L'' /   ,,f 5r   