World of Rigid Bodies (WoRB)
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines
WoRB::GLUT_Framework< GlutApplication > Class Template Reference

GLUT wrapper around a single instance of a GlutApplication template class. More...

#include <Utilities.h>

Public Member Functions

 GLUT_Framework ()
 ~GLUT_Framework ()
bool Initialize ()
bool Initialize (int *argc, char *argv[])
void Terminate ()
void Connect (GlutApplication &application)
 Connects GLUT event handlers to GlutApplication instance.
void Disconnect ()
 Disconect event handlers from the GlutApplication instance.

Static Private Member Functions

static void CloseFunc ()
 Called when glut closes the application window.
static void DisplayFunc ()
 Called each frame to display the scene.
static void MouseFunc (int button, int state, int x, int y)
 Called when a mouse button is pressed.
static void ReshapeFunc (int width, int height)
 Called when the display window changes size.
static void KeyboardFunc (unsigned char key, int, int)
 Called when a key is pressed.
static void SpecialFunc (int key, int, int)
 Called when a special key is pressed.
static void MotionFunc (int x, int y)
 Called when the mouse is dragged.
static void MouseWheelFunc (int wheel, int direction, int x, int y)
 Called when the mouse wheel is spun.

Private Attributes

bool Initialized
 Indicates whether glut has been initialized.

Static Private Attributes

static GlutApplication * Application = 0
 Holds an instance of the GlutApplication.

Detailed Description

template<class GlutApplication>
class WoRB::GLUT_Framework< GlutApplication >

GLUT wrapper around a single instance of a GlutApplication template class.

GlutApplication should implement event handlers that respond to GLUT callbacks.

Definition at line 477 of file Utilities.h.


Constructor & Destructor Documentation

template<class GlutApplication>
WoRB::GLUT_Framework< GlutApplication >::GLUT_Framework ( ) [inline]

Definition at line 561 of file Utilities.h.

References WoRB::Printf().

            : Initialized( false )
        {
            Printf( "WoRB: GLUT_Framework: Constructed\n" );
        }
template<class GlutApplication>
WoRB::GLUT_Framework< GlutApplication >::~GLUT_Framework ( ) [inline]

Definition at line 567 of file Utilities.h.

References WoRB::GLUT_Framework< GlutApplication >::Initialized, and WoRB::Printf().

        {
            Initialized = false;
            Printf( "WoRB: GLUT_Framework: Destructed\n" );
        }

Member Function Documentation

template<class GlutApplication>
static void WoRB::GLUT_Framework< GlutApplication >::CloseFunc ( ) [inline, static, private]

Called when glut closes the application window.

Definition at line 489 of file Utilities.h.

References WoRB::GLUT_Framework< GlutApplication >::Application.

Referenced by WoRB::GLUT_Framework< GlutApplication >::Connect().

        {
            if ( Application && Application->IsValid () ) {
                Application->CloseEventHandler ();
            }
        }
template<class GlutApplication>
void WoRB::GLUT_Framework< GlutApplication >::Connect ( GlutApplication &  application) [inline]
template<class GlutApplication>
void WoRB::GLUT_Framework< GlutApplication >::Disconnect ( ) [inline]

Disconect event handlers from the GlutApplication instance.

Definition at line 634 of file Utilities.h.

References WoRB::GLUT_Framework< GlutApplication >::Application, and WoRB::Printf().

Referenced by mexFunction(), and WoRB::GLUT_Framework< GlutApplication >::Terminate().

        {
            Printf( "WoRB: GLUT_Framework: Disconnecting event handlers\n" );

            GLUT_Framework::Application = 0;
        }
template<class GlutApplication>
static void WoRB::GLUT_Framework< GlutApplication >::DisplayFunc ( ) [inline, static, private]

Called each frame to display the scene.

Definition at line 498 of file Utilities.h.

References WoRB::GLUT_Framework< GlutApplication >::Application.

Referenced by WoRB::GLUT_Framework< GlutApplication >::Connect().

        {
            if ( Application && Application->IsValid () ) {
                Application->DisplayEventHandler ();
            }
        }
template<class GlutApplication>
bool WoRB::GLUT_Framework< GlutApplication >::Initialize ( ) [inline]

Definition at line 573 of file Utilities.h.

Referenced by main(), and mexFunction().

        {
            // We must have proper dummy argument for glutInit() not to crash.
            int   argc   = 1; 
            char  arg0[] = "WoRB";
            char* argv[] = { arg0 };

            return Initialize( &argc, argv );
        }
template<class GlutApplication>
bool WoRB::GLUT_Framework< GlutApplication >::Initialize ( int *  argc,
char *  argv[] 
) [inline]

Definition at line 583 of file Utilities.h.

References WoRB::GLUT_Framework< GlutApplication >::Initialized, and WoRB::Printf().

        {
            if ( Initialized )  {
                return true;
            }

            Printf( "WoRB: GLUT_Framework: Calling glutInit...\n" );

            // In case of glut >= v2.8.0
            #ifdef GLUT_HAS_MULTI
                glutInitWarningFunc( OnGlutWarning );
                glutInitErrorFunc( OnGlutError );
            #endif

            glutInit( argc, argv );

            Initialized = glutGet( GLUT_INIT_STATE ) != 0;

            return Initialized;
        }
template<class GlutApplication>
static void WoRB::GLUT_Framework< GlutApplication >::KeyboardFunc ( unsigned char  key,
int  ,
int   
) [inline, static, private]

Called when a key is pressed.

Definition at line 525 of file Utilities.h.

References WoRB::GLUT_Framework< GlutApplication >::Application.

Referenced by WoRB::GLUT_Framework< GlutApplication >::Connect().

        {
            if ( Application && Application->IsValid () ) {
                Application->KeyboardEventHandler( key );
            }
        }
template<class GlutApplication>
static void WoRB::GLUT_Framework< GlutApplication >::MotionFunc ( int  x,
int  y 
) [inline, static, private]

Called when the mouse is dragged.

Definition at line 543 of file Utilities.h.

References WoRB::GLUT_Framework< GlutApplication >::Application.

Referenced by WoRB::GLUT_Framework< GlutApplication >::Connect().

        {
            if ( Application && Application->IsValid () ) {
                Application->MotionEventHandler( x, y );
            }
        }
template<class GlutApplication>
static void WoRB::GLUT_Framework< GlutApplication >::MouseFunc ( int  button,
int  state,
int  x,
int  y 
) [inline, static, private]

Called when a mouse button is pressed.

Definition at line 507 of file Utilities.h.

References WoRB::GLUT_Framework< GlutApplication >::Application.

Referenced by WoRB::GLUT_Framework< GlutApplication >::Connect().

        {
            if ( Application && Application->IsValid () ) {
                Application->MouseEventHandler( button, state, x, y );
            }
        }
template<class GlutApplication>
static void WoRB::GLUT_Framework< GlutApplication >::MouseWheelFunc ( int  wheel,
int  direction,
int  x,
int  y 
) [inline, static, private]

Called when the mouse wheel is spun.

Definition at line 552 of file Utilities.h.

References WoRB::GLUT_Framework< GlutApplication >::Application.

Referenced by WoRB::GLUT_Framework< GlutApplication >::Connect().

        {
            if ( Application && Application->IsValid () ) {
                Application->MouseWheelEventHandler( wheel, direction, x, y );
            }
        }
template<class GlutApplication>
static void WoRB::GLUT_Framework< GlutApplication >::ReshapeFunc ( int  width,
int  height 
) [inline, static, private]

Called when the display window changes size.

Definition at line 516 of file Utilities.h.

References WoRB::GLUT_Framework< GlutApplication >::Application.

Referenced by WoRB::GLUT_Framework< GlutApplication >::Connect().

        {
            if ( Application && Application->IsValid () ) {
                Application->ReshapeEventHandler( width, height );
            }
        }
template<class GlutApplication>
static void WoRB::GLUT_Framework< GlutApplication >::SpecialFunc ( int  key,
int  ,
int   
) [inline, static, private]

Called when a special key is pressed.

Definition at line 534 of file Utilities.h.

References WoRB::GLUT_Framework< GlutApplication >::Application.

Referenced by WoRB::GLUT_Framework< GlutApplication >::Connect().

        {
            if ( Application && Application->IsValid () ) {
                Application->SpecialKeyEventHandler( key );
            }
        }
template<class GlutApplication>
void WoRB::GLUT_Framework< GlutApplication >::Terminate ( ) [inline]

Definition at line 604 of file Utilities.h.

References WoRB::GLUT_Framework< GlutApplication >::Disconnect(), WoRB::GLUT_Framework< GlutApplication >::Initialized, and WoRB::Printf().

Referenced by main().

        {
            Disconnect ();

            Printf( "WoRB: GLUT_Framework: glutExit...\n" );
            // glutExit ();

            Initialized = false;
        }

Field Documentation

template<class GlutApplication>
bool WoRB::GLUT_Framework< GlutApplication >::Initialized [private]

The documentation for this class was generated from the following files: