228 строки
8.5 KiB
Plaintext
228 строки
8.5 KiB
Plaintext
Welcome to the GLUI User Interface Library, v2.3!
|
|
March 22, 2005
|
|
-------------------------------------------------
|
|
|
|
This distribution contains the latest community-maintained fork of the
|
|
GLUI Library. It is based on the GLUI v2.1 beta version from Paul
|
|
Rademacher (http://www.cs.unc.edu/~rademach/glui/) plus the
|
|
compatibility changes made by Nigel Stewart in his "GLUI v2.2"
|
|
(http://www.nigels.com/glt/glui) In accordance with the LGPL under
|
|
which the library is released (according to Paul's web page at least),
|
|
these changes are available to everyone in the community.
|
|
|
|
WARNING: This version (2.3) introduces some incompatible changes with
|
|
previous versions!!
|
|
|
|
CHANGES:
|
|
|
|
----------------------------------
|
|
- GLUI_String is now a std::string
|
|
This is the main source of most incopatibilities, but I felt it was
|
|
a necessary change, because the previous usage of a fixed-sized
|
|
buffer was just too unsafe. I myself was bitten a few times passing
|
|
a char* buffer of insufficient size into GLUI as a live variable.
|
|
It is still possible to use a char buffer, but it is not recommended.
|
|
|
|
If you used GLUI_String before as a live var type, the easiest way
|
|
to get your code compiling again is to change those to "char
|
|
buf[300]". The better way, though, is to update your code to treat
|
|
it as a std::string.
|
|
|
|
For instance, if you used to pass mystr to functions that take
|
|
'const char*', now use mystr.c_str() method, instead.
|
|
If you used strcpy(mystr, b) to set the value, now just do mystr=b.
|
|
If you used sprintf(mystr,...) to set the value, now do
|
|
glui_format_string(mystr,...).
|
|
If you used to clear the string with mystr[0]='\0', now just clear
|
|
it with mystr="".
|
|
|
|
----------------------------------
|
|
- Enhanced GLUI_EditText
|
|
Control keys can be used for navigation and control. The bindings
|
|
are bash-like: Ctrl-B for previous char, Ctrl-F for forward char, etc.
|
|
bindings. Also control keys that aren't bound to commands are
|
|
simply ignored, whereas before they would be inserted as invisible
|
|
characters.
|
|
|
|
----------------------------------
|
|
- Added GLUI_CommandLine class
|
|
This is a GLUI_EditText with a history mechanism.
|
|
|
|
----------------------------------
|
|
- New, more object oriented construction API.
|
|
Now instead of calling
|
|
|
|
glui->add_button_to_panel( panel, "my button", myid, mycallback );
|
|
|
|
you should just call the button constructor:
|
|
|
|
new GLUI_Button( panel, "my button", myid, mycallback );
|
|
|
|
And similarly to add it to a GLUI instead of a panel, rather than:
|
|
|
|
glui->add_button( glui, "my button", myid, mycallback );
|
|
|
|
just call the constructor with the GLUI as the first argument:
|
|
|
|
new GLUI_Button( glui, "my button", myid, mycallback );
|
|
|
|
The old scheme is now deprecated, but still works. The benefit of
|
|
this new scheme is that now the GLUI class doesn't have to know
|
|
about all the different types of GLUI_Controls that exist.
|
|
Previously GLUI had to both know about all the controls, and know
|
|
how to initialize them. Now the responsibility for initialization
|
|
belongs to the GLUI_Control subclasses themselves, where it
|
|
belongs. Additionally it means that you can create your own
|
|
GLUI_Control subclasses which will be on equal footing with the
|
|
built-in controls, whereas before any user-created controls would
|
|
always be "second-class citizens" since they would have to be
|
|
constructed differently from the built-ins.
|
|
|
|
|
|
----------------------------------
|
|
- Removed need for type-declaring arguments when argment type suffices.
|
|
This effects GLUI_Spinner and GLUI_EditText (and GLUI_CommandLine?).
|
|
|
|
For example, instead of calling
|
|
|
|
new GLUI_Spinner( glui, "myspin", GLUI_SPINNER_INT, &live_int_var );
|
|
|
|
you can just omit the GLUI_SPINNER_INT part, because the type of the
|
|
live_int_var tells the compiler which type you want.
|
|
|
|
new GLUI_Spinner( glui, "myspin", &live_int_var );
|
|
|
|
If you're not using a live, var, you can still use the
|
|
GLUI_SPINNER_INT type argument. See glui.h for all the new
|
|
constructor signatures. Note this only works with the new
|
|
construction API, not with the old "add_blah_to_panel" style of
|
|
API.
|
|
|
|
----------------------------------
|
|
- GLUI_Rotation uses your matrix live-variable now.
|
|
GLUI used to ignore the matrix in your live variable. This version
|
|
doesn't ignore it, so you'll need to set it to the identity matrix
|
|
yourself if that's what you want it to start as. There could
|
|
probably be some improvements to this API, though.
|
|
|
|
----------------------------------
|
|
- Improvements to 'const' usage.
|
|
Most char*'s in GLUI functions used to be non-const even when the
|
|
functions did not modify the string. I changed everywhere
|
|
appropriate to use const char* instead.
|
|
|
|
----------------------------------
|
|
- Updated license info in the headers
|
|
Paul's web page says that GLUI is LGPL, but that wasn't declared in
|
|
the code itself. I've modified all the headers with the standard
|
|
LGPL notice.
|
|
|
|
----------------------------------
|
|
- Updated examples for the API changes
|
|
|
|
----------------------------------
|
|
- Created project files for Visual Studio .NET (MSVC7.1)
|
|
|
|
|
|
That's about it. Enjoy!
|
|
|
|
|
|
If you find yourself with too much time on your hands, the things I
|
|
think would be most useful for future improvements to GLUI would be:
|
|
|
|
1. The GLUI_TextBox and GLUI_Tree definitely need some work, still.
|
|
2. Clipboard integration under Windows/X-Win. I have some code that
|
|
works on Win32 that I once integrated with GLUI, but I lost that
|
|
version somewhere. I still have the Win32 clipboard code, though
|
|
if anyone wants to work on integrating it. I have some X-Win
|
|
clipboard code, too, but I never got it working quite right.
|
|
3. Remove the dependency on GLUT, making the connection with window
|
|
system APIs into a more plug-in/adapter modular design.
|
|
So e.g. if you want to use GLUT, you'd link with the GLUI lib and a
|
|
GLUI_GLUT lib, and call one extra GLUI_glut_init() function or
|
|
something.
|
|
|
|
|
|
Definitly consider submitting a patch if you've made some nice improvements
|
|
to GLUI. Hopefully being an LGPL sourceforge project will attract some new
|
|
interest to the GLUI project.
|
|
|
|
Bill Baxter
|
|
baxter
|
|
at
|
|
cs unc edu
|
|
|
|
=================================================
|
|
JOHN KEW'S ADDITIONS (March 2005)
|
|
=================================================
|
|
|
|
Thanks to John Kew of Natural Solutions Inc.,
|
|
there are some new widgets. These are demonstrated in example6.cpp.
|
|
|
|
The new widgets are:
|
|
|
|
* GLUI_Scrollbar - A scrollbar slider widget
|
|
* GLUI_TextBox - A multi-line text widget
|
|
* GLUI_List - A static choice list
|
|
* GLUI_FileBrowser - A simple filebrowser based on GLUI_List
|
|
* GLUI_Tree - Hierarchical tree widget
|
|
* GLUI_TreePanel - Manager for the tree widget
|
|
|
|
And one other change:
|
|
|
|
* GLUI_Rollout has optional embossed border
|
|
|
|
=================================================
|
|
PAUL'S ORIGINAL GLUI 2.0/2.1 README
|
|
=================================================
|
|
|
|
Welcome to the GLUI User Interface Library, v2.0 beta!
|
|
-------------------------------------------------
|
|
|
|
This distribution contains the full GLUI sources, as well as 5 example
|
|
programs. You'll find the full manual under "glui_manual.pdf". The
|
|
GLUI web page is at
|
|
|
|
http://www.cs.unc.edu/~rademach/glui
|
|
|
|
|
|
---------- Windows ----------
|
|
|
|
The directory 'msvc' contains a Visual C++ workspace entitled
|
|
'glui.dsw'. To recompile the library and examples, open this
|
|
workspace and run the menu command "Build:Batch Build:Build". The 3
|
|
executables will be in the 'bin' directory, and the library in the
|
|
'lib' directory.
|
|
|
|
To create a new Windows executable using GLUI, create a "Win32 Console
|
|
Application" in VC++, add the GLUI library (in 'msvc/lib/glui32.lib'),
|
|
and add the OpenGL libs:
|
|
|
|
glui32.lib glut32.lib glu32.lib opengl32.lib (Microsoft OpenGL)
|
|
|
|
Include the file "glui.h" in any file that uses the GLUI library.
|
|
|
|
|
|
---------- Unix ----------
|
|
|
|
An SGI/HP makefile is found in the file 'makefile' (certain lines may need
|
|
to be commented/uncommented).
|
|
|
|
To include GLUI in your own apps, add the glui library to your
|
|
makefile (before the glut library 'libglut.a'), and include "glui.h"
|
|
in your sources.
|
|
|
|
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
Please let me know what you think, what you'd like to change or add,
|
|
and especially what bugs you encounter. Also, please send me your
|
|
e-mail so I can add you to a mailing list for updates.
|
|
|
|
Good luck, and thanks for trying this out!
|
|
|
|
Paul Rademacher
|
|
rademach
|
|
at
|
|
cs unc edu |