Home | About | Partners | Contact Us
VA Linux Systems

glGUI

Things to look at:

Overview

This is the main page for glGUI. It is a cross-platform user interface currently implemented in OpenGL. See the Sourceforge project page to get the latest release.

Projects that use glGUI

Please let me know if you have a project using glGUI that you would like to have listed here.

screenshots of glut sample (release 9a windows & linux)

(variable width fonts and various bug fixes)


readme.txt from the latest glGUI release

glGUI release 9a
29 September, 2003

Project Admin:
 Scott Franke [druid-]
  sfranke@gljournal.org

Contributers:

updated 29 September 2003 (rel 9a)
-----------------------
+ Variable width font support
+ Arrow and delete keys through glut to editable text box



purpose:
-----------------------
The purpose of glGUI is to create a set of classes for a general purpose GUI,
without platform or API restrictions for use in games and other applications
that require only basic GUI functionality.  glGUI is not meant to be a
replacement for a full windowed GUI and as such does not include that level of
functionality.


notes on the sample:
-----------------------
The class documentation (generated by Doxygen) is included in the html director
(index.html).  Beyond that, there is currently no documentation to help you use
glGUI.  Sorry.  When the code is more mature (or sooner if someone wants to
volunteer), a detailed technical document on the classes will be written and
released.

While we appreciate bug reports and suggestions, please check the issues list at
the bottom before contacting the developers.  I would prefer any contact go
through the glgui-users mailing list or one of the public forums on sourceforge
(both links below).  But if you have something that for some reason needs to be
private, contact the project admin (address at the top).


brief info links:
-----------------------
project info:
  http://glgui.sourceforge.net

contact info:
 Users mailing list:
  glgui-users@lists.sourceforge.net
 Public Forums:
  http://sourceforge.net/forum/?group_id=3899
 Developers mailing list:
  glgui-dev@lists.sourceforge.net

my dev notes:
[feel free to contact me (through the dev list) regarding any of these]
-----------------------

[Current TODO list:]
 frame
   *** coordsys->range doesn't affect rendering
   tooltipframe should be a frameid
 combobox
   support for non-vertical listboxes
 resize button
   no negative resizing
 menu
   close submenu if not selected (frame::select() & deselect())?
 UI
   MessageBox - pops up to front, etc
   Warning and error logging - ui has a console?
 messagebox
   how are they defined, activated, etc?
   what place in XML file?  resource?
 OVERALL
   change to use gl like get/set function naming scheme *f *fv, etc
   Move all enable/disable to go through ui->activate or whatever
 INTERNAL DOCUMENTATION
   applicable flags to each CUI_Frame::... element
 listbox & menus & tool tips
   reposition to fit in the parent frame

[add to XML schema:]
 ?console

[Features to add:]
 file i/o
 controls
   ?tab control
   ?spinner
 double click, right click
 ?slider w/ scroll buttons
 ?resolution dependence support - flag to use x/y pixel size as coordinate
system
 ?console cvar read/write protection

[tough problems:]
 editable textbox:
   up/down movement
   click and drag cursor/selection
 listbox:
   adding/removing items in an open box will screw up its size
 Frame:
   save.  Will take some work to have it not generate excessively large XML
files.  take it out?
 console:
   detect recursion in aliases - or not allow an alias to call another alias?

[Concerns, issues (should these be added?):]
 version info
 centralized error handling
 separators
 language support (unicode)
 better fonts
 breakup rendering
 nochildren flag (for non-frames)


UPDATE HISTORY:
-----------------------

updated 09 June (rel 9)
-----------------------
Various changes over the last few years, mostly for:
+ glut sample - currently compiling on win32 and linux


updated 18 August (rel 8)
-----------------------
The file /glGUI/UI/CUI_Resource.h is not in CVS at the time of this release.  It
got added with the wrong case and I haven't been able to get this fixed yet
(shouldn't be much longer).  Be sure to get the release zip which contains this
file if you want to build the project.
 + XercesSAX project that builds a smaller version of the xerces parser (no DOM
code).  Converted all the other projects to use this new one.
 + CUI_Resource class for the resources to inherit from.  It keeps track of
memory management issues, which were also improved in CUI_Registry.
 + Applicable flags are listed in the internal class documentation.
 + Selection and deselection of list-type objects is more correct.
 + Coordinate systems now correctly affect both rendering and hit detection.
 + file loading moved into CUI_UI's LoadUI method.
 + CUI_ErrorHandler can log to files, the console and eventually will pop-up
message boxes.

updated 28 July (rel 7)
-----------------------
File loading using the Xerces XML parser from Apache (see legal info at the
bottom of this text file).  The only documentation that exists for the file
format is the XML Schema in the filedocs/ directory.  There is a sample XML
file in the media/ directory and the SampleXML project (in bin/) loads this and
displays it with just a little extra code for setting up shaders and handling a
few callbacks.
A more functional (and attractive) sample will come later on.

If the xerces parser becomes too much of a burden (as far as maintaining
cross-platform capability), we'll find another way to do it.

Please feel free to play around with this and report any bugs to the bug tracker
on sourceforge (http://sourceforge.net/bugs/?group_id=3899) or to the glgui-dev
mailing list (glgui-dev@lists.sourceforge.net).  I haven't tested file loading
too much, so there are probably many bugs to be found.

updated 19 July (rel 6)
-----------------------
Added a few new controls, fixed some bugs, and made lots and lots of
improvements and changes in general.  The XML schema online is out of date.
Check the sourceforge project page for news when I update it.
 + toggle items in ListBox and Menu.
 + tooltips on any frame
 + progress bar has an option to display "value/max" after text
 + listitems create their own frames, so custom list views are now possible
 + scrollable frame - on demand scrollbars
 + resize button - resize any dimension of parent frame by dragging this button.
Also can be used to move the parent frame.
 + text field - single line, message to callback when the user hits enter or as
it is being edited (option)
 + console - with variables and functions (still needs command history, command
completion, and alias functionality)

updated 7 July (rel 5)
-----------------------
A few new controls and a lot of bug fixes and misc code improvements.  The
first revision of the file format spec is online at glgui.sourceforge.net.  I'm
using XML as it is straightforward and easy to use even before a resource
editor is ready.
 + combobox
 + radio button group
 + scrollable text box
 + messagebox
(I moved old updates to the bottom of this file)

updated 29 June (rel 4)
-----------------------
Controls are higher level GUI components - they automatically generate other
frames as their children and handle communication between them to increase
functionality.
Other changes/additions:
 + a few more slight improvements to callback
 + draggable frame views
 + draggable frames
 + controls
 + listbox (control)
 + menu (control)

updated 23 June (rel 3)
-----------------------
The project was converted to be a dynamic library.  It is currently buildable
as a dll in win32.  The sample application uses the dll and inherits a few
classes to create platform functionality (opengl and a simple shader).
Other changes:
 + better selection
 + better keyboard handling
 + better button callbacks (shared at a root frame level) with button IDs
[I updated the todo list, etc below]

updated 19 Jun
-----------------------
Because of existing project name conflictions, this project will keep the name
'glGUI'.  Sorry for any confusion.


LEGAL INFORMATION:
-----------------------

license info:
-----------------------
This project is released under the zip/libpng license.

Copyright (c) 2000 Scott Franke
This software is provided 'as-is', without any express or implied warranty. In
no event will the authors be held liable for any damages arising from the use
of this software.

Permission is granted to anyone to use this software for any purpose, including
commercial applications, and to alter it and redistribute it freely, subject to
the following restrictions:

1. The origin of this software must not be misrepresented; you must not claim
that you wrote the original software. If you use this software in a product, an
acknowledgment in the product documentation would be appreciated but is not
required.

2. Altered source versions must be plainly marked as such, and must not be
misrepresented as being the original software.

3. This notice may not be removed or altered from any source distribution.

Xerces XML Parser (xml.apache.org)
-----------------------
This product includes software developed by the
Apache Software Foundation (http://www.apache.org/).

/*
 * The Apache Software License, Version 1.1
 *
 *
 * Copyright (c) 1999-2000 The Apache Software Foundation.  All rights 
 * reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 *
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer. 
 *
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in
 *    the documentation and/or other materials provided with the
 *    distribution.
 *
 * 3. The end-user documentation included with the redistribution,
 *    if any, must include the following acknowledgment:  
 *       "This product includes software developed by the
 *        Apache Software Foundation (http://www.apache.org/)."
 *    Alternately, this acknowledgment may appear in the software itself,
 *    if and wherever such third-party acknowledgments normally appear.
 *
 * 4. The names "Xerces" and "Apache Software Foundation" must
 *    not be used to endorse or promote products derived from this
 *    software without prior written permission. For written 
 *    permission, please contact apache@apache.org.
 *
 * 5. Products derived from this software may not be called "Apache",
 *    nor may "Apache" appear in their name, without prior written
 *    permission of the Apache Software Foundation.
 *
 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
 * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
 * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
 * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * SUCH DAMAGE.
 * ====================================================================
 *
 * This software consists of voluntary contributions made by many
 * individuals on behalf of the Apache Software Foundation and was
 * originally based on software copyright (c) 1999, International
 * Business Machines, Inc., http://www.ibm.com.  For more
 * information on the Apache Software Foundation, please see
 * .
 */



All trademarks and copyrights on this page are properties of their respective owners. Forum comments are owned by the poster. The rest is copyright 1999-2000 VA Linux Systems, Inc.