X-MAS releases

LibUFO v0.3.3:

major changes
  • Added many missing UFO_Export Macros
  • Added UDocumentFactory: This class provides some specialized Documents and should be used instead of using document classes directly. See example4 within libUSDL/test directory
  • Added UDocumentEvent and UDocumentListener
  • Added UDocumentChange interface (used by document events; not yet fully implemented)
  • Added UDocumentChange interface. This is used to filter text inserts e.g. for digit only documents.
  • Added UBasicDocument as base class for std::string documents

LibUSDL v0.3.3:

major changes
  • Added makeScreenShot(std::string) to USDL_Frame
  • Updated example4 to new document API

I will be on holiday from 2001-12-26 to 2002-01-06, so don't expect any changes or releases next two weeks.

-- Johannes Schmidt

libUFO v0.3.2 released
major changes
  • Migrated Event dispatching from backend to UContext
  • You can add now event garbbing or listening widgets to a context
  • Added a margin to widgets. You can specify a margin with my_widget->setMargin(int, int, int, int) or my_widget->setMargin(const UInsets*)
  • Added UFontMetrics::getCharWidth(const wchar_t)
  • Updated the Default Look And Feel
  • some other changes, see Changelog
-- Johannes Schmidt

libUSDL v0.3.2 released
major changes
  • Updated USDL_EventHandler to the new event API (see libUFO contexts).
-- Johannes Schmidt


I forgot to say that some naming conventions have changed. There is only one 'U' within a qualifyer. For example, constants within class namespaces donīt have preceding 'U's.

That means
UMouseEvent::UMouse_PRESSED -> UMouseEvent::Mouse_PRESSED

-- Johannes Schmidt

libUFO v0.3.1 and libUSDL v0.3.1 released

This is just a bug fix release.

major changes
  • fixed UMenu bug. Popup menus do now display
  • fixed some text widget bugs
  • fixed UDefaultDocumentRenderer bug
  • fixed some wrong delete()
  • updated UDefaultTheme
  • fixed SDL to UFO event mapping
-- Johannes Schmidt

additional notes

You can check out sources from the CVS tree with anonymus CVS access.

modul names

  • libufo sources are in modul ufo-0
  • libusdl sources are in modul usdl-0
-- Johannes Schmidt

libUFO v0.3.0 released

Yes, it is done. The new API is finally ready for a release.

major changes
  • split libUFO in a core library and an auxiliary library. The core lib depends only on OpenGL, libgc, and the C++ STL. The dependencies of the auxiliary library is implementation dependent.
  • new abstract font layer: fonts are now derived from the interface UFont. Now, you can write your own font renderer (e.g. to implement a TT font renderer). As example and std. implementation, there is a texture font renderer, which can eliminate too big gaps between the character quads (see screen shot page).
  • Loading images: You can load and save images by creating an Object of the class UImageIO. This class is extensible with plugins for other image types. Pnm images are supported natively. (Till now only loading)
  • LibUFO does not know frames or other top level objects. All widgets are within a UContext (which has to be implemented by an aux lib) which handles all OpenGL context specific things.
  • Platform specific things (e.g. delay[==sleep]) is migrated to UToolkit which has to be implemented by an aux lib.
  • many other things I can't remember.

If you want to port your libUFO lt 0.2.5 applications, you'll have to download libUFO-0.3 (of course) and an aux lib, currently there is only libUSDL which uses SDL as backend. Furthermore, you must include usdl.h and rename some classes:

UApp => USDL_App
UFrame => USDL_Frame
UEventHandler => USDL_EventHandler
USDL_Frame must specify an parent frame or NULL (till now there can't be more than own USDL_Frame), therefore change your USDL_Frame c'tor to new USDL_Frame(NULL, "the title for my usdl frame");

At best, look at the example programs within the test directory of libUSDL.

So, I have to do some other things now. I will expand this explanation on Friday (I know, this was quite confusing).

If you have any annotations, questions, complaints, please email me.

-- Johannes Schmidt

2001-10-29 :
(2001-10-29 :)

Long awaited, now it is there: Finally, I registered a mailing list at sourceforge ( till now only a developer list; I donīt think, the source is already useable). You can register at

-- Johannes Schmidt


New website design.

As seen above, I made a major API change. LibUFO was split in a core library and an extension library(libUFOX). I am trying to make quickly releases of the new API. The current version of the old API is still avaiable in the CVS tree (modul ufo). The new modul in CVS will be called "ufo-0.3".

-- Johannes Schmidt

libufo-0.2.5 released
  • use autoheader and a config header
  • the default value for building a static ufo library is 'no'
  • UFrame handles video expose events
  • 2 new tutorial files (use of text widgets, use libUFO in an existing SDL frame)
  • the documentation was updated
-- Johannes Schmidt

CVS update

new classes:

  • UCaret: a text caret
  • UTextUI: base class for all text widget UIs
  • UDefaultTextField: a single line text area (not fully implemented)
  • UDefaultTextPane: a multi line text area (not yet implemented)
  • UDefaultTextFieldUI (not fully implemented)
  • UDefaultTextPaneUI (not yet implemented)
new interfaces:
  • USDLReceiver: contains just one abstract method: handleEvent(const SDL_Event*)
major changes:
  • you can add USDLReceiver to the UEventHandler receivers
  • event handling: only the bottom most widget receives mouse events
  • some changes to text API
  • many bug fixes
-- Johannes Schmidt

CVS update
new classes:
  • UDocument: an interface for a text container
  • UDefaultDocument: a sample implementation for a plain text Document
  • UDocumentRenderer: an interface for a text renderer
  • UDefaultDocument: a sample implementation for a plain text renderer
  • UTextWidget: base class for all text widgets. It contains a UDocument and a proper document renderer. You can specify a content type with an string, till now only text/plain is supported.
major changes:
  • buttons indicates if they have the focus
-- Johannes Schmidt

libufo-0.2.4 released
This time I was really quick :)
major changes:
  • respect for namespace std ( really, this time it should be true :P)
  • this code can be compiled with gcc-3 ( at least on my system )
  • fixed UMenu bug
-- Johannes Schmidt

libufo-0.2.3 released
major changes:
  • the UMouseEvent class has now a function getClickCount() so that the user can retrieve how many times the mouse was clicked ( e.g. 2 for a double click )
  • respect for namespace std
  • Alignment support for widgets
  • Alignment support for UFlowLayout
  • New UEventHandler class, which notifies its receivers when a SDL event was fired. The event handler itsself is registered at the UApp instance, to get SDL events.
  • I have made a few examples to learn libUFO
  • many bug fixes
-- Johannes Schmidt

  • there are test binaries of the current CVS tree on the sourceforge server ( rpm, deb and tar.gz ).
-- Johannes Schmidt

added horizontal and vertical alignment to CVS
-- Johannes Schmidt

libufo-0.2.2 released
major changes:
  • new event handling (down - top). A frame that receives a SDL event now determines with getVisibleWidgetAt(int,int) the widget that should process the event. The event is also posted to the parent widgets.
  • use of dynmaic_cast. I removed the C stylish casts. Perhaps, the class name and instanceof things in UObject will be removed, too, because I realized that they are unnecessary.
  • I implemented a layered pane. The root pane widget uses now layered panes to display the sub widgets( content widgets, internal frames, popup menus) in the correct drawing order.
  • I implemented a border layout ( like the java(TM) border layout ). It is used by internal frames.
  • Widgets have now properties. You can acces them by UWidget::put(std::string, UObject*) and UWidget::get(std::string).
  • I wrote wrapper classes for std::string and int (UString, UInteger) to save string and int values in the widget properties.
  • many bug fixes
-- Johannes Schmidt


Ok, I was on holiday last week. No changes.

-- Johannes Schmidt

libufo-0.2.1 released

better support for menus.

working on internal frames.

-- Johannes Schmidt


Ok, it's the first time using the NEWS board.

-- Johannes Schmidt

Sourceforge.netValid HTML 4.01!Valid CSS!Johannes Schmidt
Compiled: Fri Apr 7 15:33:33 CEST 2006