From 86443be0a3795fa860850f0cf81ae7cc6843858d Mon Sep 17 00:00:00 2001 From: Sven Gothel Date: Fri, 23 Feb 2001 05:20:21 +0000 Subject: Version 2.6.0.0 --- gl4java/drawable/GLEventListener.java | 102 ++++++++++++++++++++++++++++++++++ 1 file changed, 102 insertions(+) create mode 100644 gl4java/drawable/GLEventListener.java (limited to 'gl4java/drawable/GLEventListener.java') diff --git a/gl4java/drawable/GLEventListener.java b/gl4java/drawable/GLEventListener.java new file mode 100644 index 0000000..feb388d --- /dev/null +++ b/gl4java/drawable/GLEventListener.java @@ -0,0 +1,102 @@ +package gl4java.drawable; + +import gl4java.GLEnum; +import gl4java.GLUEnum; + +/** Declares events which client code can handle to perform OpenGL + rendering into a GLDrawable without subclassing. */ + +public interface GLEventListener + extends java.util.EventListener, GLEnum, GLUEnum +{ + /** Called by the drawable immediately after the OpenGL context is + initialized; the GLContext has already been made current when + this method is called. Can be used to perform one-time OpenGL + initialization such as setup of lights and display lists. + + @see gl4java.awt.GLCanvas#init + @see gl4java.swing.GLJPanel#init + */ + public void init(GLDrawable drawable); + + /** Called by the drawable before initiate rendering by the client. At + the time this method is called, the duration for this frames + time consume is started. + After all GLEventListeners have been notified of a preDisplay event, + the drawable will continues with the + {@link gl4java.drawable.GLEventListener#display} event. + + @see gl4java.awt.GLAnimCanvas#display + @see gl4java.awt.GLCanvas#display + @see gl4java.swing.GLJPanel#display + @see gl4java.drawable.GLEventListener#display + @see gl4java.drawable.GLEventListener#postDisplay + */ + public void preDisplay(GLDrawable drawable); + + /** Called by the drawable to initiate rendering by the client. At + the time this method is called, the drawable has already called + {@link gl4java.drawable.GLEventListener#preDisplay} and made + its associated GLContext current by a call to {@link + gl4java.GLContext#gljMakeCurrent}. After all GLEventListeners + have been notified of a display event, the drawable will swap + its buffers if necessary and then free its GLContext with a call + to {@link gl4java.GLContext#gljFree} and + and continues with the + {@link gl4java.drawable.GLEventListener#postDisplay} event. + So the GLContext is locked while the GLEventListeners + receives this display event. + + @see gl4java.awt.GLAnimCanvas#display + @see gl4java.awt.GLCanvas#display + @see gl4java.swing.GLJPanel#display + @see gl4java.drawable.GLEventListener#preDisplay + @see gl4java.drawable.GLEventListener#postDisplay + */ + public void display(GLDrawable drawable); + + /** Called by the drawable after initiate rendering by the client. At + the time this method is called, the drawable has already called + {@link gl4java.drawable.GLEventListener#display}. + After all GLEventListeners + have been notified of a postDisplay event, the + duration for the consumed time is stopped. + + @see gl4java.awt.GLAnimCanvas#display + @see gl4java.awt.GLCanvas#display + @see gl4java.swing.GLJPanel#display + @see gl4java.drawable.GLEventListener#preDisplay + @see gl4java.drawable.GLEventListener#display + @see gl4java.drawable.GLEventListener#postDisplay + */ + public void postDisplay(GLDrawable drawable); + + /** Called by the drawable if it wants to destroy itself. + Here you can clean up any OpenGL stuff (delete textures + or whatever) prior to actually deleting the OpenGL context. + + @see gl4java.awt.GLCanvas#doCleanup + @see gl4java.swing.GLJPanel#doCleanup + */ + public void cleanup(GLDrawable drawable); + + /** Called by the drawable during the first repaint after the + component has been resized. The client can update the viewport + and view volume of the window appropriately, for example by a + call to {@link gl4java.GLFunc#glViewport}; note that for + convenience the component has already called {@link + gl4java.GLContext#gljResize}(width, height) and {@link + gl4java.GLFunc.glViewport}(0, 0, width, height) when this method + is called, so the client may not have to do anything in this + method. At the time this method is called, the drawable has + already made its associated GLContext current by a call to + {@link gl4java.GLContext#gljMakeCurrent}. After all + GLEventListeners have been notified of a reshape event, the + drawable will free its GLContext with a call to {@link + gl4java.GLContext#gljFree}. + + @see gl4java.awt.GLCanvas#reshape + @see gl4java.swing.GLJPanel#reshape + */ + public void reshape(GLDrawable drawable, int width, int height); +} -- cgit v1.2.3