Link to our source (SVN browser) : http://code.google.com/p/kinect/source/browse/#svn%2Ftrunk%2Ffreenect%2Fgroup3

GestureRecognizer.{h,cpp}
    
    An example of how to use the GestureRecognizer is shown in SceneDrawerMain.cpp.

    To initialize:

        GestureRecognizer recognizer;
        recognizer.init(SAMPLE_XML_PATH);

    To register a callback:

        recognizer.registerUserCallbacks(User_NewUser, User_LostUser);

        -- where User_NewUser and User_LostUser are defined according to the
           following signature, defined in GestureRecognizer.h:

              typedef void (XN_CALLBACK_TYPE* UserHandler)(xn::UserGenerator& generator, XnUserID user, void* pCookie);
               

SceneDrawer.{h,cpp} and SceneDrawerMain.cpp:

    The scene drawer can draw the kinect data (depth/rgb) in a gl window,
    as well as draw text on top of the scene. The SceneDrawerMain program
    provides an example usage of both the GestureRecognizer and SceneDrawer
    components.

    To render the depth/rgb maps using the SceneDrawer, grab the depth and
    scene metadata from the depth and user generators, respectively, and pass
    both structures to the DrawDepthMap() function. This code is from the OpenNI
    sample, and was modified to use the GestureRecognizer instead of directly
    using the generators, where possible.

    The Label is used internally to remember where strings are placed within the window.
    to draw text, simply call SetLabel(...) with the appropriate arguments. The same call
    will update a label's text if it already exists. Each label is identified by a name
    so that it is easy to update the text in several areas on the screen without having
    to reset their positions.

HandTracker.{java,h,cpp}

    The HandTracker component wraps a subset of the GestureRecognizer in Java. There
    is no need to use or modify the C++ files (we will make adjustments upon request).

    The HandTracker currently doubles as an example of how to use the wrapper. The wrapper
    consists of the methods marked "native" and the example code is in the main method, the
    constructor, and the methods called from run().

    To use this component, implement the appropriate interface and register the implementing
    objects with the following calls:

        public native void RegisterHandCallbackObject( IHandCallbackObject obj );
        public native void UnRegisterHandCallbackObject( );

        public native void RegisterGestureCallbackObject( IGestureCallbackObject obj );
        public native void UnRegisterGestureCallbackObject( );


