
    ^jh0                         d Z ddlZddlZddlT ddlmZ ddlmZmZ  ej        dej	                  Z
 ej        dej	                  Z G d	 d
e          Zd Zd Zd Zd ZdS )zSoftware decoder for S3TC compressed texture (i.e., DDS).

http://oss.sgi.com/projects/ogl-sample/registry/EXT/texture_compression_s3tc.txt
    N)*)gl_info)AbstractImageTexturez........)flagsz................c                   L     e Zd ZdZ fdZd Zd Z ee          ZddZ	 xZ
S )PackedImageDataNc                 v    t                                          ||           || _        || _        || _        d S )N)super__init__formatpacked_formatdata)selfwidthheightfmtr   r   	__class__s         S/home/agentuser/manim-venv/lib/python3.11/site-packages/pyglet/image/codecs/s3tc.pyr   zPackedImageData.__init__   s7    '''*			    c                    | j         t          k    rsd}t          j        | j        | j        z  dz  z              }| j        D ].}|dz  dz  ||dz   <   |dz  dz	  ||dz   <   |dz  dz	  ||<   |dz  }/|| _        t          | _         d S d S )	Nr                       )r   GL_UNSIGNED_SHORT_5_6_5ctypesc_ubyter   r   r   GL_UNSIGNED_BYTE)r   ioutcs       r   unpackzPackedImageData.unpack   s    !888A>TZ$+%=%ABEECY  $h1_AE
%iA-AE
f**AQDI!1D 98r   c                    | j         r| j         S t          j        | j        | j        t
          d           }t          |j        |j                   t          |j        t          t                     t          j        dd          r	 |                                  t          |j        |j        | j        | j        | j        d| j        | j        | j        	  	         || _         |S )Nr   r   Tr   )_current_texturer   creater   r   GL_TEXTURE_2DglBindTexturetargetidglTexParameteriGL_TEXTURE_MIN_FILTER	GL_LINEARr   have_versionr&   glTexImage2Dlevelr   r   r   )r   textures     r   _get_texturezPackedImageData._get_texture'   s      	)((.T[-NNgngj111(=yIII#Aq)) 	 	KKMMMW^W][$*dk1[$"4di	A 	A 	A !(r   Fc                 *    |                                  S )zThe parameters 'rectangle' and 'force_rectangle' are ignored.
           See the documentation of the method 'AbstractImage.get_texture' for
           a more detailed documentation of the method. )r5   )r   	rectangleforce_rectangles      r   get_texturezPackedImageData.get_texture;   s       """r   )FF)__name__
__module____qualname__r(   r   r&   r5   propertyr4   r9   __classcell__)r   s   @r   r	   r	      s            2 2 2  $ h|$$G# # # # # # # #r   r	   c           	      V   t          j        ||z  z              }d}t                              |           D ]\  }}}}}	}
}}t	          |          t	          |          dz  z  }t	          |          t	          |          dz  z  }t	          |	          t	          |
          dz  z  t	          |          dz  z  t	          |          dz  z  }|dz  }|dz  dz	  }|dz  d	z	  }	|dz  }|dz  dz	  }|dz  d	z	  }
|}t          d
          D ]}t          d
          D ]}|dz  }|dk    r|||<   n|dk    r|||<   n|dk    r||k    rd||<   n|dk    r(||k    r"d|z  |z   dz  }d|z  |z   dz  }d|	z  |
z   dz  }nT|dk    r(||k    r"|d|z  z   dz  }|d|z  z   dz  }|	d|
z  z   dz  }n&|dk    r||k    sJ ||z   dz  }||z   dz  }|	|
z   dz  }||dz  z  |d	z  z  ||<   |dz  }|dz  }||d
z
  z  }|d
z   |z  dk    }||dz  |z  d
z   z  }t          ||t          t          |          S )Nr   r         r   r      r         r   r   r   )	r    c_uint16split_8bytefindallordranger	   GL_RGBr   )r   r   r   r$   image_offsetc0_loc0_hic1_loc1_hib0b1b2b3color0color1bitsr0g0r1g1r#   yxcodergbadvance_rows                               r   decode_dxt1_rgbrb   B   s   ?efn-
0
0C L6A6I6I$6O6O .4 .42ueUBBUc%jjAo-Uc%jjAo-2wwRA%B25B2Ed]un"vo"$d]un"vo"$ q 	 	A1XX  cz199#CFFQYY#CFFQYY6V#3#3CFFqyyVf__Vb[Q.Vb[Q.Vb[Q.v!b&[Q.!b&[Q.!b&[Q.#qyyVv-=-=-=="WN"WN"WNaZ!r'1CF
QNAA $a'50A5	K/!335&&2I3OOOr   c           	         t          j        ||z  dz  z              }|dz  }d}t                              |           D ]\  }}}}	}
}}}t	          |          t	          |          dz  z  }t	          |          t	          |	          dz  z  }t	          |
          t	          |          dz  z  t	          |          dz  z  t	          |          dz  z  }|dz  }|dz  d	z	  }|d
z  dz	  }
|dz  }|dz  d	z	  }|d
z  dz	  }|}t          d          D ]}t          d          D ]}|dz  }d}|dk    r|||
}}}n|dk    r|||}}}n|dk    r||k    r	dx}x}x}}n|dk    r(||k    r"d|z  |z   dz  }d|z  |z   dz  }d|
z  |z   dz  }nT|dk    r(||k    r"|d|z  z   dz  }|d|z  z   dz  }|
d|z  z   dz  }n&|dk    r||k    sJ ||z   dz  }||z   dz  }|
|z   dz  }|dz  ||<   |dz  ||dz   <   |dz  ||dz   <   |dz  ||dz   <   |dz  }|dz  }||dz
  z  }
|dz   |z  dk    }||dz  |z  dz   z  }t          ||t          t          |          S )NrD   r   r   r   r@   rA   r   r   rB   r   rC   r      r   )	r    r!   rF   rG   rH   rI   r	   GL_RGBAr"   )r   r   r   r$   pitchrK   rL   rM   rN   rO   rP   rQ   rR   rS   rT   rU   rV   rW   rX   rY   rZ   r#   r[   r\   r]   ar^   r_   r`   ra   s                                 r   decode_dxt1_rgbarh   {   s%   >UV^a/0
3
3CQJE L6A6I6I$6O6O 35 352ueUBBUc%jjAo-Uc%jjAo-2wwRA%B25B2Ed]un"vo"$d]un"vo"$ q !	 !	A1XX  cz199 "b!qAAQYY "b!qAAQYY6V#3#3$%%A%%AqyyVf__Vb[Q.Vb[Q.Vb[Q.v!b&[Q.!b&[Q.!b&[Q.#qyyVv-=-=-=="WN"WN"WNaA!VAE
!VAE
!VAE

QOAA $b(E1Q6	K/"445&'3CSIIIr   c                    t          j        ||z  dz  z              }|dz  }d}t                              |           D ]\  }}}}	}
}}}}}}}}}}}t	          |          t	          |          dz  z  }t	          |          t	          |          dz  z  }t	          |          t	          |          dz  z  t	          |          dz  z  t	          |          dz  z  }t	          |          t	          |          dz  z  t	          |          dz  z  t	          |	          dz  z  t	          |
          dz  z  t	          |          dz  z  t	          |          d	z  z  t	          |          d
z  z  }|dz  }|dz  dz	  }|dz  dz	  }|dz  }|dz  dz	  }|dz  dz	  }|}t          d          D ]}t          d          D ]} |dz  }!|dz  }"|!dk    r|||}%}$}#n|!dk    r|||}%}$}#n|!dk    r||k    rdx}#x}$}%n|!dk    r(||k    r"d|z  |z   dz  }#d|z  |z   dz  }$d|z  |z   dz  }%nT|!dk    r(||k    r"|d|z  z   dz  }#|d|z  z   dz  }$|d|z  z   dz  }%n&|!dk    r||k    sJ ||z   dz  }#||z   dz  }$||z   dz  }%|%dz  ||<   |$dz  ||dz   <   |#dz  ||dz   <   |"dz  ||dz   <   |dz  }|dz  }|dz  }||dz
  z  }|dz   |z  dk    }&||dz  |&z  dz   z  }t          ||t          t          |          S )NrD   r   r   r   r@   rA       (   0   8   r   r   rB   r   rC   r      r   	r    r!   split_16byterG   rH   rI   r	   re   r"   )'r   r   r   r$   rf   rK   a0a1a2a3a4a5a6a7rL   rM   rN   rO   rP   rQ   rR   rS   rT   rU   rV   alpharW   rX   rY   rZ   r#   r[   r\   r]   rg   r^   r_   r`   ra   s'                                          r   decode_dxt3rz      s   >UV^a/0
3
3CQJE L )006685 85 	RRRR	ue	RRUc%jjAo-Uc%jjAo-2wwRA%B25B2EB#b''Q,&RB6RBFB2 #B2.03B2>@CB2N d]un"vo"$d]un"vo"$ q "	 "	A1XX    czCK199 "b!qAAQYY "b!qAAQYY6V#3#3 !MAMAAqyyVf__Vb[Q.Vb[Q.Vb[Q.v!b&[Q.!b&[Q.!b&[Q.#qyyVv-=-=-=="WN"WN"WNaA!VAE
!VAE
!VAE

!QOAA $b(E1Q6	K/"445&'3CSIIIr   c                    t          j        ||z  dz  z              }|dz  }d}t                              |           D ]\  }}}}	}
}}}}}}}}}}}t	          |          t	          |          dz  z  }t	          |          t	          |          dz  z  }t	          |          }t	          |          }t	          |          t	          |          dz  z  t	          |          dz  z  t	          |          dz  z  }t	          |          t	          |	          dz  z  t	          |
          dz  z  t	          |          dz  z  t	          |          dz  z  t	          |          dz  z  }|d	z  }|d
z  dz	  }|dz  dz	  }|d	z  }|d
z  dz	  }|dz  dz	  }|}t          d          D ]}t          d          D ]} |dz  }!|dz  }"|!dk    r|||}%}$}#n|!dk    r|||}%}$}#n|!dk    r||k    rdx}#x}$}%n|!dk    r(||k    r"d|z  |z   dz  }#d|z  |z   dz  }$d|z  |z   dz  }%nT|!dk    r(||k    r"|d|z  z   dz  }#|d|z  z   dz  }$|d|z  z   dz  }%n&|!dk    r||k    sJ ||z   dz  }#||z   dz  }$||z   dz  }%|"dk    r|}&n|"dk    r|}&n||k    r|"dk    rd|z  d|z  z   dz  }&n|"dk    rd|z  d|z  z   dz  }&n|"dk    rd|z  d|z  z   dz  }&n|"dk    rd|z  d|z  z   dz  }&n|"dk    rd|z  d|z  z   dz  }&n~|"dk    sJ d|z  d|z  z   dz  }&ng|"dk    rd|z  d|z  z   dz  }&nR|"dk    rd|z  d|z  z   dz  }&n=|"dk    rd|z  d|z  z   dz  }&n(|"dk    rd|z  d|z  z   dz  }&n|"dk    rd}&n
|"dk    sJ d}&|%dz  ||<   |$dz  ||dz   <   |#dz  ||dz   <   |&||dz   <   |dz  }|dz  }|dz  }||dz
  z  }|dz   |z  dk    }'||dz  |'z  dz   z  }t          ||t          t          |          S )NrD   r   r   r   r@   rA   rj   rk   r   r   rB   r   rC   r      r      rd   ro   )(r   r   r   r$   rf   rK   alpha0alpha1ab0ab1ab2ab3ab4ab5rL   rM   rN   rO   rP   rQ   rR   rS   rT   rU   rV   abitsrW   rX   rY   rZ   r#   r[   r\   r]   acoder^   r_   r`   rg   ra   s(                                           r   decode_dxt5r      sZ   >UV^a/0
3
3CQJE L )0066[5 [5 	c3S#	ue	RRUc%jjAo-Uc%jjAo-VV2wwRA%B25B2EC3s88q=(3s88r>9CHHNJHHN XX^, d]un"vo"$d]un"vo"$ q C	 C	A1XX A Acz199 "b!qAAQYY "b!qAAQYY6V#3#3 !MAMAAqyyVf__Vb[Q.Vb[Q.Vb[Q.v!b&[Q.!b&[Q.!b&[Q.#qyyVv-=-=-=="WM"WM"WMA::AAaZZAAf__zzZ!f*4:!Z!f*4:!Z!f*4:!Z!f*4:!Z!f*4:$zzzzZ!f*4:zzZ!f*4:!Z!f*4:!Z!f*4:!Z!f*4:!$zzzzaA!VAE
!VAE
AE

!QOAA $b(E1Q6	K/"445&'3CSIIIr   )__doc__rer    	pyglet.glr   pyglet.imager   r   compileDOTALLrF   rp   r	   rb   rh   rz   r    r   r   <module>r      s   
 
			            / / / / / / / /bj	222rz(")444.# .# .# .# .#m .# .# .#b6P 6P 6Pr<J <J <J~AJ AJ AJHdJ dJ dJ dJ dJr   