From WiiBrew
Jump to navigation Jump to search

TypeFramework library

libwiigui is a GPL licensed GUI library for the Wii, created to help structure the design of a complicated GUI interface, and to enable an author to create a sophisticated, feature-rich GUI. It was originally conceived and written after I started to design a GUI for Snes9x GX, and found libwiisprite and GRRLIB inadequate for the purpose. It uses GX for drawing, and makes use of PNGU for displaying images and FreeTypeGX for text. It was designed to be flexible and is easy to modify - don't be afraid to change the way it works or expand it to suit your GUI's purposes! If you do, and you think your changes might benefit others, please share them so they might be added to the project!


  • Extensible classes
  • Built-in TTF, PNG support (uses FreeTypeGX and PNGU/libpng)
  • Built-in sound support (OGG and PCM)
  • Integrated hotspot support
  • Automatic handling of navigation via controller pad
  • Window focus support
  • Sophisticated object positioning
  • Comprehensive object state and event system
  • Support for animated effects
  • Included template and sample class extensions (eg: on-screen keyboard)


See also: Libwiigui/tutorial

Start from the included demo/template. For more advanced uses, and more extensions, see the source code for Snes9x GX, FCE Ultra GX, and Visual Boy Advance GX. A copy of the documentation is included, or you can read it online.


This library was wholly designed and written by Tantric. Thanks to the authors of PNGU and FreeTypeGX, of which this library makes use. Thanks also to the authors of GRRLIB and libwiisprite for laying the foundations. Thanks to mvit for the artwork and Peter de Man for the music used in the template.

Bugs & Suggestions

If you have any issues with the library, or wish to contribute in any way, please post on the libwiigui Google Code site Issues page.

Update History

1.06 - July 22, 2011

  • Compatibility with devkitPPC r24 and libogc 1.8.7
  • Minor bug fixes and optimizations

1.05 - October 16, 2009

  • Text alignment corrections
  • Compatibility with devkitPPC r18 and libogc 1.8.0
  • Removed outside dependencies - uses only devkitpro portlibs now
  • Added grayscale method to image class (thanks dimok!)
  • Other minor optimizations

1.04 - August 4, 2009

  • Rewritten ogg player - fixed a crashing bug
  • Improved text rendering performance
  • Improved logic for option browser and file browser classes
  • Onscreen keyboard class improvements
  • GuiText: Added SetScroll and SetWrap and changed behavior of SetMaxWidth
  • Other minor GUI logic corrections and code cleanup

1.03 - May 22, 2009

  • Add file browser class to template - browses your SD card
  • New images for the template (thanks mvit!)
  • Add a function to get the parent element

1.02 - April 13, 2009

  • Fixed letterboxing on PAL
  • Add STATE_HELD for held button actions (eg: draggable elements)
  • Now tracks state changes per-remote
  • Default constructor for GuiImage
  • Keyboard corrections, added more keyboard keys
  • Better handling of multiple wiimote cursors on-screen
  • Added functions for the ability to alter button behavior for all states
  • Documented GuiTrigger class
  • Refactor - moved trigger class definition to gui.h

1.01 - April 5, 2009

  • Changed default sound format to 16bit PCM 48000
  • Added loop option for OGG sound playback

1.0 - April 4, 2009

  • Inital release

See Also