UFO 0.5.2 released

This release features a platform independent access to the event queue and many bug fixes.

I have updated the LibUSDL backend as well as the Tutorials. Furthermore I have (more or less) finished the LibUGT backend. Most parts are working now.

Unfortunately I didn't have the time to update the msvc project files. I will create them upon request.

Please Download and send Feedback!

-- Johannes Schmidt

UFO 0.5.0 released

It's high time for a new release. The last version was released more than a half year ago. This is almost a complete rewrite of the UFO API.

Major changes:

  • Removed garbage collector dependency. We are using now a custom reference counting memory tracking.
  • C++ and include namespaces
  • signals and slots replace listener system.
  • UPoint, UDimension, URectangle and UInsets have been changed to basic, inlined types.
  • Added mouse wheel event.
  • Added focus manager.
  • Added repaint manager and repaint on demand.
  • Changed custom Type naming convention to match the naming convention classes.
  • header files have .hpp as extension.
  • GNU systems: replaced *-config files with pkg-config config files.
  • Separated headers and sources for simpler installations. Improved automake makefiles and removed recursive makefiles.
  • Many bug fixes.

See the Changelog file within the 0.5 release for further details.

Version 0.5.0 is still an alpha release. No Warranty! It has been tested with g++-3.2 and MS VC++ 6

Please download and send feedback!

-- Johannes Schmidt

info update

Some updates to the style sheets.

I have uploaded new snapshots of UFO 0.5 and USDL 0.5 to the sourceforge download page.

Any MSVC 6/7 hackers out there? I need working project files for the upcoming 0.5 release. Please contact me if you are interested in creating msvc project files.

I started my physics studies at Oct 14. This may slow down a bit my work on libUFO.

-- Johannes Schmidt

website update

The libUFO website now uses CSS to render its content.

I have added a new screen shot.

The current code within the CVS tree will likely become UFO 0.5.

-- Johannes Schmidt

0.5 snapshot

I have uploaded snapshots of UFO 0.5 and USDL 0.5 to the sourceforge download page.

The code has been tested with g++-3.1 and MS VC++ 6. On request I can upload msvc project files.

Please note: This code is for testing only - DO NOT REDISTRIBUTE!
These packages come with absolutely NO WARRANTY. They also come without meat, for those on a restricted diet.

Any feedback is appreciated.

-- Johannes Schmidt

CVS update

I have imported the UFO 0.5 API in the cvs tree. The new modules are ufo-0.5 and usdl-0.5. See the sourceforge CVS page on details for checking out.
LibUFO 0.5 uses pkg-config for its build system and removed the *-config scripts.

-- Johannes Schmidt

info update

LibUFO 0.5 will be almost a full rewrite. The garbage collector dependency will be removed, signals and slots will be used, namespaces will be used (C++ as well as 'include namespace'). I am trying to release a first 0.5pre snap shot till weekend.

-- Johannes Schmidt


I am about changing the memory management of libUFO. Since most people do not like garbage collectors very much, I've set up a survey about the upcoming memory management. There are 3 choices:

  1. the garbage collector (like today)
    Advantage: very easy to use
    Disadvantage: restricted portability, need for special STL container allocators
  2. handler/reference classes. The actual data is placed in pimpl like implicitly shared classes.
    Advantage: No need for explicitly setting ref counts;
    Disadvantage: not as easily extensible as today, more overhead.
  3. classic reference counting.
    Disadvantage: possibly more lost objects, slightly higher overhead (at least for the user)

Please vote and/or send feedback.

-- Johannes Schmidt

API doc update

I have uploaded an updated version of the API doc - made with doxygen.

Furthermore, I have realized that we are already in July and therefore I have fixed the date of the last posting ;)

The last news for today:
Version 0.5 will introduce some changes to the current API.

  • I have decided to replace the listener thing with a signal and slot based object communication. This is more or less the same idea as before. But with slots you can use every (member) function as event callback.
  • A global config file will control the behaviour of the GUI. Possible tasks are plugin control and standard values for native 'look and feel's and font classes
  • To be continued

Thanks for any feedback.

-- Johannes Schmidt

libUFO 0.4.5 released
Major changes:
  • Changed name of UList to UListBox
  • Added UCheckBox
  • Added UList as list wrapper for collectable objects
  • Added new static colors to UColor
  • Removed the menu popup delay
  • Removed theme dependency
  • Improved look of text carets
  • Many bug fixes
  • Changed darker/brighter behaviour to accept 'factor' values
  • Changed child/listener vectors to lists to allow removal of objects during an iteration
  • Buttons remember their pressed state when a pressed mouse exits and re-enters the button

download files.

As always, please email me with questions and problems.

-- Johannes Schmidt


The last update was released quite a time ago, but at the time I am pondering about the future of libUFO.
At most I am uncertain about the event system. At the time libUFO uses the Java(TM) way, i.e. event object and listener classes for each event. The advantage is that is completely type safe, OO and very extensible. The disadvantage is that is somtimes circuitous to use. An alternative would be a signal/slot system, but this would mean a big API change to libUFO.
As such an API change would affect every user of libUFO, I want to ask you. Therefore I have set up a sourceforge survey.

Thanks for any feedback.

-- Johannes Schmidt


Added new screen shot which shows a preview of the new 0.4.4 version.

Fixed broken download links for USDL.

-- Johannes Schmidt


Next week, I will be on holiday in Italy (I have really deserved it ;-).
Enjoy the weather and get a little sun!

-- Johannes Schmidt

to UTexture and UImageIO. Now, you don't have to specify a full qualified name, if you want to load images from the archive.
  • Moved image related stuff to src/image
  • new (In-)Validation API. You can now specify exactly what you want to (in-)validate via UWidget::VALIDATION_LAYOUT, UWidget::VALIDATION_UI, UWidget::VALIDATION_UI_INSTALL, UWidget::VALIDATION_ALL as arguments to UWidget::[in]validate(Validation). Defaults are UWidget::invalidate(UWidget::VALIDATION_LAYOUT) and UWidget::validate(UWidget::VALIDATION_ALL).
  • Some improvements in look and feel refreshing and font caching.
  • Many bug fixes
  • I have updated the windows (vc6) project files.

    download files.

    As always, please email me with questions and problems.

    libUFO 0.4.3 released
    This is an important update because a major bug in pnm loading was fixed.
    Major changes:
    • Fixed pnm loading
    • Added tga loader. Should be much more reliable than the pnm loader (thanks to Kevin Meinert).
    • Added
    loadFromArchive(const std::string&)
    -- Johannes Schmidt

    , , to UUIManager.
  • Added refresh() to UUIManager, UTheme and ULookAndFeel. Should be executed every time when GL context was destroyed and recreated
  • Added UImageIcon class for easy creation of icons via file names and UFO textures.
  • Added scroll bar widget (not yet fully implemented).
  • Deprecated classes: UTheme, UInternalFrameBorder, UButtonBorder, UMenuBarBorder, UMenuBorder
  • Many bug fixes
  • The windows (vc6) project files weren't updated (due to lack of time). On interest, I can release a vc6 version next week.

    Please note: You need an updated backend to use v0.4.2.

    download files.

    As always, please email me with questions and problems.

    libUFO 0.4.2 released
    This isn't really a public release as the UI system currently is within a major change. But last version was released 2 months ago so I decided to make a new (perhaps a bit unstable) release. Most user code shouldn't be affected.
    Major changes
    • Changed almost all std::string arguments to const std::string references
    • Added debug name string to UObjcet for easier debugging.
    • Added classes and files for UList, UListModel, UBasicListModel, UListCellRenderer, UListUI, UDefaultListUI, UListSelectionEvent, UListSelectionListener
    • Added several static constant colors to UColor: black, darkGray, gray, lightGray, red, green, blue, cyan, magenta, yellow, orange, pink
    • Added removeAll() to UWidget to remove all widgets at once
    • Added uint32_t getTicks() to UToolkit to retrieve the number of millisseconds since the initialization of libUFO
    • Added
    getColor(const std::string&)
    getBorder(const std::string&)
    getFont(const std::string&)
    -- Johannes Schmidt

    libUX preview released

    This week, I hacked a little example how to write an X11 backend for libUFO.

    You can download v0.1, which isn't complete but the most important things work (like event translation, ..). There is a screen shot available. Please note that you will need the current CVS version of UFO (or wait for v0.4.2, scheduled: 2002-05-04) to compile libUX 0.1. Big parts of the X11 code were taken gratefully from the freeglut project.

    -- Johannes Schmidt

    Info update

    I am back. At the time, I am working on some missing widgets (lists, scroll panes). I have uploaded a screen shot of the new list widget. So far, I have also done speed improvements and bug fixes, it's all in the CVS.

    -- Johannes Schmidt

    Info update

    No, I am not dead. I am going to write my Abitur / high school graduation and therefore all next releases are delayed. I will be back in one and a half week.

    -- Johannes Schmidt


    Readded the API-docs (made with doxygen).

    -- Johannes Schmidt


    Updated FAQ

    Added tutorial 8: key bindings to tutorials page

    Updated CVS. Mainly bug fixes and some performance improvements.

    -- Johannes Schmidt

    LibUFO v0.4.1 released
    major changes:
    • Added support for key bindings
    • Added classes UKeyStroke, UInputMap
    • Added class UProperties (for simple config file parsing)
    • Added support for mouse button information (thanks to Kai-Peter)
    • Fixed 'multiple internal frames' bug

    You can add key bindings via key strokes. You can create a key stroke from a UKeyEvent, using key syms(for key pressed/released events) or using unicode characters(for key typed events). Then, you can add a key binding via my_widget->getInputMap()->add(my_keyStroke, my_actiontListener);

    You can get the button information from a mouse event via my_event->getButton();. To determine which button was changed, compare this value to UMouseEvent::BUTTON_{LEFT|MIDDLE|RIGHT} or UMouseEvent::WHEEL_{UP|DOWN}.

    This version is neither binary nor source compatible to 0.4.0.

    Backends need an update to support v0.4.1.
    libUSDL was updated to 0.4.1.

    Please report any bugs to my contact address above.

    -- Johannes Schmidt

    libUGT (glut backend)

    Out of curiosity, I decided to release my recently hacked glut backend for libUFO, libUGT. Please consider this only as interesting code snippet as the most important parts(like event processing) are missing. There is a new screen shot of libUFO using UGT backend.

    -- Johannes Schmidt


    Added some content to the introduction.

    Fixed configure bug in libUSDL. Please redownload or edit your (set USDL_BINARY_AGE=0). And please inform me, if you find a bug within the releases.

    -- Johannes Schmidt

    LibUFO v0.4.0 released
    major changes:
    • ISO C++ compliance
    • Added MS vc6 project files
    • Added UFileArchive class for theme file loading
    • Added UCollectable as new base class for all garbage collected classes
    • Moved virtual key syms to UKey namespace. Changed prefix from VK_ to UK_
    • Moved Modifier constants to UMod namespace

    The USDL backend was updated to v0.4.

    This version was tested with vc6 and gcc-3.0. For ms vc6, you will need STLport as STL implementation for msvc. Probably, you will need STLport for gcc-2.95, too.


    -- Johannes Schmidt

    Happy New Year

    Some changes to the web site structure.

    -- Johannes Schmidt

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