com.jogamp.opengl.util
Class AnimatorBase

java.lang.Object
  extended by com.jogamp.opengl.util.AnimatorBase
All Implemented Interfaces:
FPSCounter, GLAnimatorControl
Direct Known Subclasses:
Animator, FPSAnimator

public abstract class AnimatorBase
extends Object
implements GLAnimatorControl

Base implementation of GLAnimatorControl

The change synchronization is done via synchronized blocks on the AnimatorBase instance.
Status get / set activity is synced with a RecursiveLock, used as a memory barrier.
This is suitable, since all change requests are allowed to be expensive as they are not expected to be called at every frame.


Nested Class Summary
static interface AnimatorBase.AnimatorImpl
           
 
Field Summary
 
Fields inherited from interface javax.media.opengl.FPSCounter
DEFAULT_FRAMES_PER_INTERVAL
 
Constructor Summary
AnimatorBase()
          Creates a new, empty Animator.
 
Method Summary
 void add(GLAutoDrawable drawable)
           
 long getFPSStartTime()
          Returns the time of the first display call in milliseconds after enabling this feature via FPSCounter.setUpdateFPSFrames(int, PrintStream).
This value is reset via FPSCounter.resetFPSCounter().
 float getLastFPS()
           
 long getLastFPSPeriod()
           
 long getLastFPSUpdateTime()
          Returns the time of the last update interval in milliseconds, if this feature is enabled via FPSCounter.setUpdateFPSFrames(int, PrintStream).
This value is reset via FPSCounter.resetFPSCounter().
 Thread getThread()
           
 float getTotalFPS()
           
 long getTotalFPSDuration()
           
 int getTotalFPSFrames()
           
 int getUpdateFPSFrames()
           
 void remove(GLAutoDrawable drawable)
          Removes a drawable from the animator's list of rendering drawables.
This method should get called in case a drawable becomes invalid, and will not be recovered.
This allows the animator thread to become idle in case the last drawable has reached it's end of life.
 void resetFPSCounter()
          Reset all performance counter (startTime, currentTime, frame number)
 void setIgnoreExceptions(boolean ignoreExceptions)
          Sets a flag causing this Animator to ignore exceptions produced while redrawing the drawables.
 void setPrintExceptions(boolean printExceptions)
          Sets a flag indicating that when exceptions are being ignored by this Animator (see setIgnoreExceptions(boolean)), to print the exceptions' stack traces for diagnostic information.
 void setUpdateFPSFrames(int frames, PrintStream out)
           
 String toString()
           
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface javax.media.opengl.GLAnimatorControl
isAnimating, isPaused, isStarted, pause, resume, start, stop
 

Constructor Detail

AnimatorBase

public AnimatorBase()
Creates a new, empty Animator.

Method Detail

add

public void add(GLAutoDrawable drawable)

remove

public void remove(GLAutoDrawable drawable)
Description copied from interface: GLAnimatorControl
Removes a drawable from the animator's list of rendering drawables.
This method should get called in case a drawable becomes invalid, and will not be recovered.
This allows the animator thread to become idle in case the last drawable has reached it's end of life.

Specified by:
remove in interface GLAnimatorControl
Parameters:
drawable - the to be removed drawable

setUpdateFPSFrames

public final void setUpdateFPSFrames(int frames,
                                     PrintStream out)
Specified by:
setUpdateFPSFrames in interface FPSCounter
Parameters:
frames - Update interval in frames.
At every rendered frames interval the currentTime and fps values are updated. If the frames interval is <= 0, no update will be issued, ie the FPSCounter feature is turned off. You may choose FPSCounter.DEFAULT_FRAMES_PER_INTERVAL.
out - optional print stream where the fps values gets printed if not null at every frames interval

resetFPSCounter

public final void resetFPSCounter()
Description copied from interface: FPSCounter
Reset all performance counter (startTime, currentTime, frame number)

Specified by:
resetFPSCounter in interface FPSCounter

getUpdateFPSFrames

public final int getUpdateFPSFrames()
Specified by:
getUpdateFPSFrames in interface FPSCounter
Returns:
update interval in frames
See Also:
FPSCounter.setUpdateFPSFrames(int, PrintStream)

getFPSStartTime

public final long getFPSStartTime()
Description copied from interface: FPSCounter
Returns the time of the first display call in milliseconds after enabling this feature via FPSCounter.setUpdateFPSFrames(int, PrintStream).
This value is reset via FPSCounter.resetFPSCounter().

Specified by:
getFPSStartTime in interface FPSCounter
See Also:
FPSCounter.setUpdateFPSFrames(int, PrintStream), FPSCounter.resetFPSCounter()

getLastFPSUpdateTime

public final long getLastFPSUpdateTime()
Description copied from interface: FPSCounter
Returns the time of the last update interval in milliseconds, if this feature is enabled via FPSCounter.setUpdateFPSFrames(int, PrintStream).
This value is reset via FPSCounter.resetFPSCounter().

Specified by:
getLastFPSUpdateTime in interface FPSCounter
See Also:
FPSCounter.setUpdateFPSFrames(int, PrintStream), FPSCounter.resetFPSCounter()

getLastFPSPeriod

public final long getLastFPSPeriod()
Specified by:
getLastFPSPeriod in interface FPSCounter
Returns:
Duration of the last update interval in milliseconds.
See Also:
FPSCounter.setUpdateFPSFrames(int, PrintStream), FPSCounter.resetFPSCounter()

getLastFPS

public final float getLastFPS()
Specified by:
getLastFPS in interface FPSCounter
Returns:
Last update interval's frames per seconds, FPSCounter.getUpdateFPSFrames() / FPSCounter.getLastFPSPeriod()
See Also:
FPSCounter.setUpdateFPSFrames(int, PrintStream), FPSCounter.resetFPSCounter()

getTotalFPSFrames

public final int getTotalFPSFrames()
Specified by:
getTotalFPSFrames in interface FPSCounter
Returns:
Number of frame rendered since FPSCounter.getFPSStartTime() up to FPSCounter.getLastFPSUpdateTime()
See Also:
FPSCounter.setUpdateFPSFrames(int, PrintStream), FPSCounter.resetFPSCounter()

getTotalFPSDuration

public final long getTotalFPSDuration()
Specified by:
getTotalFPSDuration in interface FPSCounter
Returns:
Total duration in milliseconds, FPSCounter.getLastFPSUpdateTime() - FPSCounter.getFPSStartTime()
See Also:
FPSCounter.setUpdateFPSFrames(int, PrintStream), FPSCounter.resetFPSCounter()

getTotalFPS

public final float getTotalFPS()
Specified by:
getTotalFPS in interface FPSCounter
Returns:
Total frames per seconds, FPSCounter.getTotalFPSFrames() / FPSCounter.getTotalFPSDuration()
See Also:
FPSCounter.setUpdateFPSFrames(int, PrintStream), FPSCounter.resetFPSCounter()

getThread

public final Thread getThread()
Specified by:
getThread in interface GLAnimatorControl
Returns:
The animation thread if running, otherwise null.
See Also:
GLAnimatorControl.start(), GLAnimatorControl.stop()

setIgnoreExceptions

public void setIgnoreExceptions(boolean ignoreExceptions)
Sets a flag causing this Animator to ignore exceptions produced while redrawing the drawables. By default this flag is set to false, causing any exception thrown to halt the Animator.


setPrintExceptions

public void setPrintExceptions(boolean printExceptions)
Sets a flag indicating that when exceptions are being ignored by this Animator (see setIgnoreExceptions(boolean)), to print the exceptions' stack traces for diagnostic information. Defaults to false.


toString

public String toString()
Overrides:
toString in class Object


Copyright 2010 JogAmp Community.