
    kj!                           G d  d          Z dS )c                      e Zd ZdZedefd            Zedefd            Zedefd            Z	e	j
        deddfd            Z	edefd	            Zedefd
            Zdeeef         fdZddZddZddZdeeef         fdZdS )	BaseTimerz
    A timer controls the time passed into the the render function.
    This can be used in creative ways to control the current time
    such as basing it on current location in an audio file.

    All methods must be implemented.
    returnc                     t                      )z"bool: The pause state of the timerNotImplementedErrorselfs    V/home/agentuser/manim-venv/lib/python3.11/site-packages/moderngl_window/timers/base.py	is_pausedzBaseTimer.is_paused
        "###    c                     t                      )z%bool: Is the timer currently running?r   r   s    r
   
is_runningzBaseTimer.is_running   r   r   c                     t                      )zGet or set the current time.
        This can be used to jump around in the timeline.

        Returns:
            float: The current time in seconds
        r   r   s    r
   timezBaseTimer.time   s     "###r   valueNc                     t                      )Nr   )r	   r   s     r
   r   zBaseTimer.time       !###r   c                     t                      )z"Get the current frames per second.r   r   s    r
   fpszBaseTimer.fps"   r   r   c                     t                      )z/get the average fps since the timer was startedr   r   s    r
   fps_averagezBaseTimer.fps_average'   r   r   c                     t                      )zGet timer information for the next frame.

        Returns:
            tuple[float, float]: The frametime and current time
        r   r   s    r
   
next_framezBaseTimer.next_frame,   s     "###r   c                     t                      )z/Start the timer initially or resume after pauser   r   s    r
   startzBaseTimer.start4   r   r   c                     t                      )zPause the timerr   r   s    r
   pausezBaseTimer.pause8   r   r   c                     t                      )zToggle pause stater   r   s    r
   toggle_pausezBaseTimer.toggle_pause<   r   r   c                     t                      )z
        Stop the timer. Should only be called once when stopping the timer.

        Returns:
            tuple[float, float]> Current position in the timer, actual running duration
        r   r   s    r
   stopzBaseTimer.stop@   s     "###r   )r   N)__name__
__module____qualname____doc__propertyboolr   r   floatr   setterr   r   tupler   r   r   r    r"    r   r
   r   r      s         $4 $ $ $ X$ $D $ $ $ X$ $e $ $ $ X$ 
[$% $D $ $ $ [$ $U $ $ $ X$ $U $ $ $ X$$E%,/ $ $ $ $$ $ $ $$ $ $ $$ $ $ $$eE5L) $ $ $ $ $ $r   r   N)r   r,   r   r
   <module>r-      sA   F$ F$ F$ F$ F$ F$ F$ F$ F$ F$r   