================================================== ========================================
LIBRARY: AbsoUI (aui)
================================================== ========================================
Author: Absolution
E-Mail:
Absolution@game-deception.org
Last Updated: 11-19-2009
Project Page:
http://www.game-deception.org/aui
Summary
------------------------------------------------------------------------------------------
AbsoUI is a user interface library that is capable of rendering widgets that are
primarily programmed in C++ and exported to XML. The way widgets are declared
is similar to that of Microsoft's XAML.
Architecture and OS Support
------------------------------------------------------------------------------------------
AbsoUI as it currently stands is only supported on x86 Windows.
How to build AbsoUI
------------------------------------------------------------------------------------------
Link the library in .\AUI\proj\lib\$(ConfigurationName)\AUI.lib to your
project and add all the header files located in .\AUI\.
How to use AbsoUI
------------------------------------------------------------------------------------------
AbsoUI is very simple to implement; it can be done in very few lines of code.
Initialization:
Somewhere before any drawing is done, add these lines of code
aui::kernel32.Initialize();
aui::user32.Initialize();
aui::opengl32.Initialize();
aui::gui.display.GetDisplayInfo();
aui::gui.BuildControlFactory();
aui::gui.Initialize(); // Set up windows
The line order cannot be changed. The first three lines dynamically get the
address of required Win32API functions. GetDisplayInfo will calculate
the display width and height based on glViewport. The control factory is
subsequently built and when Initialized is called, a single TopWindow
type control is created. TopControl.xml is loaded into memory and subsequent
controls are built on top of it. There can only be one TopControl per view
port.
Each time a new widget is created, AUI will look into AUI\WidgetName.xml for
an XML file that contains its default parameters. It will also go down its
inheritance classes and load those files as well.
Ex: Window class inherits from Control
When <Window x=50 /> is written in an XML file that is loaded, AUI will load
Control.xml for defaults (since Control is Window's base class), and then will
load Window.xml secondly. It then parses all arguments for window (such as
x=50). You can even declare things for Window, such as ColorManager. For
instance, if you want to recolor the background specifically for Window, you
can do:
<Window x=50>
<ColorManager>
<Color32 name="background" red="0" green="0" blue="255" alpha="255" />
</ColorManager>
</Window>
This will create a window with x=50 and all other default parameters except
the background color will be blue.
Rendering:
You should only draw the UI once per frame. Here is some example code
aui::draw->Pre2DDraw(); // optional
// draw gui
if( !aui::gui.GetTopControl()->children.empty() )
{
aui::gui.GetTopControl()->Render( 0, 0 );
aui::gui.GetTopControl()->RenderCursor( aui::Control::cursX, aui::Control::cursY );
}
aui::draw->Post2DDraw(); // optional, only if you called Pre2DDraw
This will render all controls recursively.
Input:
A mouse input example is located in .\AUIWinTest\AuiWinTest.cpp and keyboard
input is still being worked on. These function prototypes are likely to change
as time goes on. A class to simplify input is in the works.
x64 Support
------------------------------------------------------------------------------------------
AbsoUI is available x64, it just needs to be recompiled. If you need the lib files, feel
free to email
absolution@game-deception.org.
Notes
------------------------------------------------------------------------------------------
A lot of controls are in progress. Classes which are not done include:
Caret (functional)
CommandMenu
CursorPointer (functional)
DrawDX8
DrawDX9
Font
FontStyle
Input
InputBox
Label
ListBox
Scrollbar
Textbox
Winamp
There will eventually be a new class to deal with fonts and printing text.