
    ^j                         d Z ddlZddlmZ  G d d          Z G d d          Z G d d	          Zd
ZdZdZ	dZ
d Zd Zd Zd Zd Zd ZdS )zGRead GIF control data.

http://www.w3.org/Graphics/GIF/spec-gif89a.txt
    N)ImageDecodeExceptionc                       e Zd Zd ZdS )	GIFStreamc                     g | _         d S )N)images)selfs    R/home/agentuser/manim-venv/lib/python3.11/site-packages/pyglet/image/codecs/gif.py__init__zGIFStream.__init__   s        N)__name__
__module____qualname__r
    r   r	   r   r      s#            r   r   c                       e Zd ZdZdS )GIFImageNr   r   r   delayr   r   r	   r   r              EEEr   r   c                       e Zd ZdZdS )GraphicsScopeNr   r   r   r	   r   r      r   r   r   !      ,   ;   c                     t          j        |           }|                    |          }t          |          |k     rt	          d          t          j        | |          S )NUnexpected EOF)structcalcsizereadlenr   unpack)fmtfilesizedatas       r	   r!   r!      sR    ?3D99T??D
4yy4"#3444=d###r   c                     |                      d          }t          |          st          d          t          |          S )N   r   )r   r    r   ord)r#   r%   s     r	   	read_byter)   '   s:    99Q<<Dt99 5"#3444t99r   c                    |                      d          }|                      d          }|dk    rt          d          t                      }t          d|           \  }}}}}|dz  }	|dz  }
|	r|                      d|
z            }t	                      }t          |           }|t          k    r|t          k    r t          | ||           t	                      }nW|t          k    r<t          |           }|t          k    rt          | ||           n t          |            nt          |           	 t          |           }|t          k    |S )z3Read a GIF file stream.

    :rtype: GIFStream
       s   GIFzNot a GIF streamHHBBB         )r   r   r   r!   r   r)   LABEL_TRAILERLABEL_IMAGE_DESCRIPTORread_table_based_imageLABEL_EXTENSION_INTRODUCERLABEL_GRAPHIC_CONTROL_EXTENSIONread_graphic_control_extensionskip_data_sub_blocksprint)r#   	signatureversionstreamlogical_screen_widthlogical_screen_heightfieldsbackground_color_indexpixel_aspect_ratioglobal_color_table_flagglobal_color_table_sizeglobal_color_tablegraphics_scope
block_typeextension_block_types                  r	   r   r   .   se    		!IiillGF"#5666[[F "'400	$tm$sl  E!YYq,C'CDD #__N4J

%
%///"4@@@*__NN555#,T?? #'FFF.tV^LLLL$T**** *t__
 
%
%  Mr   c                     t          |           }|dk    r,|                     |          }t          |           }|dk    *d S d S )Nr   )r)   r   )r#   
block_sizer%   s      r	   r6   r6   _   sE    4J
//yy$$t__
 //////r   c                 *   t                      }|j                            |           |j        |_        t	          d|           \  }}}}}|dz  }	|dz  }
|	r|                     d|
z            }|                     d          }t          |            d S )NHHHHBr-   r.   r/   r'   )r   r   appendr   r!   r   r6   )r#   r:   rC   	gif_imageimage_left_positionimage_top_positionimage_widthimage_heightr=   local_color_table_flaglocal_color_table_sizelocal_color_tablelzw_code_sizes                r	   r2   r2   g   s    

I
M###$*IO gt$$	#d]#c\  C IIa+A&ABB IIaLLMr   c                     t          d|           \  }}}}}|dk    rt          d          |r!|dk    rd}t          |          dz  |_        d S d S )NBBHBB   zIncorrect block sizer'   
   d   )r!   r   floatr   )r#   r:   rC   rG   r=   
delay_timetransparent_color_index
terminators           r	   r5   r5      sy     '4((	ZQ"#9::: 7 ??J$Z00367 7r   )__doc__r   pyglet.image.codecsr   r   r   r   r3   r4   r1   r0   r!   r)   r   r6   r2   r5   r   r   r	   <module>r_      s"   
  4 4 4 4 4 4       
              
 " "&  $ $ $  . . .b% % %  07 7 7 7 7r   