Chapter 6. Integrating libUFO in existing applications

Table of Contents

Custom OpenGL contexts

If you have already an existing application and you want to integrate a GUI, this is the right chapter for you.

Custom OpenGL contexts

Example 6.1. Custom OpenGL contexts

// create your OpenGL context

// creates the toolkit and loads necessary plugins
// this may be at any point before all other UFO calls
UXToolkit tk;

// Loads system resources
// You must have a valid OpenGL context at this time
UXDisplay display("dummygl");

// Instead of a frame like in normal application, just create a libUFO context
//
// deviceBounds is the bounding rectangle of your GL context
// contextBounds is the desired bounding rectangle of your UFO context within
//  the GL contex (usually 0,0 and size of deviceBounds)
UXContext context(deviceBounds, contextBounds);

// you may make the root pane transparent so that UFO does not overwrite
// your own drawing
// context.getRootPane()->setOpaque(false);

// add your widgets
context.getContentPane()->add(new ULabel("label");

// more of your code, your main loop
{
// you have to pump the input events manually to the UFO event queue
display.pushKeyDown(&context, keyCode, unicodeChar);
display.pushMouseMove(&context, x, y);
// etc.

// dispatch and process events
display.dispatchEvents();

// draw the libUFO context
context.repaint();
}

A full example is given in test/sdl.cpp and test/glut.cpp