1998-10-20 20:41:24 +04:00
|
|
|
README - Fast Light Tool Kit (FLTK) Version 1.0
|
|
|
|
-----------------------------------------------
|
1998-10-06 22:21:25 +04:00
|
|
|
|
1998-10-20 20:41:24 +04:00
|
|
|
WHAT IS FLTK?
|
1998-10-06 22:21:25 +04:00
|
|
|
|
1998-10-20 20:41:24 +04:00
|
|
|
FLTK (pronounced "fulltick") is a LGPL'd C++ graphical user
|
|
|
|
interface toolkit for X (UNIX(r)), OpenGL, and WIN32 (Microsoft(r)
|
|
|
|
Windows(r) NT 4.0, 95, or 98). It is currently maintained by a small
|
|
|
|
group of developers across the world with a central repository in
|
|
|
|
the US.
|
1998-10-06 22:21:25 +04:00
|
|
|
|
1998-10-20 20:41:24 +04:00
|
|
|
FLTK was originally created to build in-house applications at
|
|
|
|
Digital Domain for image processing and 3D graphics. The original
|
|
|
|
author, Bill Spitzak, received permission from Digital Domain to
|
|
|
|
release it to the public domain in the hopes that it could be used
|
|
|
|
to make better, faster, and nicer-looking UNIX programs. Digital
|
|
|
|
Domain has since withdrawn support for FLTK, and Bill is no longer
|
|
|
|
able to actively develop it.
|
1998-10-06 22:21:25 +04:00
|
|
|
|
|
|
|
|
1998-10-20 20:41:24 +04:00
|
|
|
FEATURES
|
1998-10-06 22:21:25 +04:00
|
|
|
|
1998-10-20 20:41:24 +04:00
|
|
|
FLTK was designed to be statically linked. This was done by
|
|
|
|
splitting it into many small objects and desigining it so that
|
|
|
|
functions that are not used do not have pointers to them in the
|
|
|
|
parts that are used, and thus do not get linked in. This allows you
|
|
|
|
to make an easy-to-install program, or to modify FLTK to the exact
|
|
|
|
requirements of your appli- cation, without worrying about bloat.
|
|
|
|
FLTK works fine as a shared library, though, and has started being
|
|
|
|
included on Linux distribu- tions.
|
1998-10-06 22:21:25 +04:00
|
|
|
|
1998-10-20 20:41:24 +04:00
|
|
|
Here are some of the core features unique to FLTK:
|
1998-10-06 22:21:25 +04:00
|
|
|
|
1998-10-20 20:41:24 +04:00
|
|
|
- sizeof(Fl_Widget) == 48.
|
1998-10-06 22:21:25 +04:00
|
|
|
|
1998-10-20 20:41:24 +04:00
|
|
|
- The "core" (the "hello" program compiled & linked with a
|
|
|
|
static FLTK library using gcc on a 486 and then stripped) is
|
|
|
|
39.5K.
|
1998-10-06 22:21:25 +04:00
|
|
|
|
1998-10-20 20:41:24 +04:00
|
|
|
- A program including every widget is less than 108K. Does not
|
|
|
|
use macros, templates, multiple inheritance, or exceptions.
|
1998-10-06 22:21:25 +04:00
|
|
|
|
1998-10-20 20:41:24 +04:00
|
|
|
- Written directly atop Xlib (or the WIN32 API) for maximum
|
|
|
|
speed, and carefully optimized for code size and
|
|
|
|
performance.
|
1998-10-06 22:21:25 +04:00
|
|
|
|
1998-10-20 20:41:24 +04:00
|
|
|
- Precise low-level compatability between the X and Windows
|
|
|
|
version (only about 10% of the code is different).
|
1998-10-06 22:21:25 +04:00
|
|
|
|
1998-10-20 20:41:24 +04:00
|
|
|
- Interactive user interface builder program. Output is human-
|
|
|
|
readable and editable C++ source code.
|
1998-10-06 22:21:25 +04:00
|
|
|
|
1998-10-20 20:41:24 +04:00
|
|
|
- Support for the X double buffering extension (emulation if
|
|
|
|
not available and under Windows.)
|
1998-10-06 22:21:25 +04:00
|
|
|
|
1998-10-20 20:41:24 +04:00
|
|
|
- Support for X overlay hardware (emulation if none and under
|
|
|
|
Windows.)
|
1998-10-06 22:21:25 +04:00
|
|
|
|
1998-10-20 20:41:24 +04:00
|
|
|
- Very small & fast portable 2-D drawing library to hide Xlib
|
|
|
|
and WIN32.
|
1998-10-06 22:21:25 +04:00
|
|
|
|
1998-10-20 20:41:24 +04:00
|
|
|
- OpenGL/Mesa drawing area widget.
|
1998-10-06 22:21:25 +04:00
|
|
|
|
1998-10-20 20:41:24 +04:00
|
|
|
- Support for OpenGL overlay hardware on both X and Windows.
|
|
|
|
Emulation if none.
|
1998-10-06 22:21:25 +04:00
|
|
|
|
1998-10-20 20:41:24 +04:00
|
|
|
- Text input fields with Emacs key bindings, X cut & paste, and
|
|
|
|
foreign letter compose!
|
1998-10-06 22:21:25 +04:00
|
|
|
|
1998-10-20 20:41:24 +04:00
|
|
|
- Compatability header file for the Glut library.
|
1998-10-06 22:21:25 +04:00
|
|
|
|
1998-10-20 20:41:24 +04:00
|
|
|
- Compatability header file for the XForms library.
|
1998-10-06 22:21:25 +04:00
|
|
|
|
1998-10-20 20:41:24 +04:00
|
|
|
- Much too much to list here...
|
1998-10-06 22:21:25 +04:00
|
|
|
|
|
|
|
|
1998-10-20 20:41:24 +04:00
|
|
|
LICENSING
|
1998-10-06 22:21:25 +04:00
|
|
|
|
1998-10-20 20:41:24 +04:00
|
|
|
FLTK comes with complete free source code. FLTK is available under
|
|
|
|
the terms of the GNU Library General Public License. Contrary to
|
|
|
|
popular belief, it can be used in commercial software! (Even Bill
|
|
|
|
Gates could use it.)
|
1998-10-06 22:21:25 +04:00
|
|
|
|
|
|
|
|
1998-10-20 20:41:24 +04:00
|
|
|
WHAT DOES "FLTK" MEAN?
|
1998-10-06 22:21:25 +04:00
|
|
|
|
1998-10-20 20:41:24 +04:00
|
|
|
FLTK was originally designed to be compatable with the Forms
|
|
|
|
Library written for SGI machines. In that library all the functions
|
|
|
|
and structures started with "fl_". This naming was extended to all
|
|
|
|
new methods and widgets in the C++ library, and this prefix was
|
|
|
|
taken as the name of the library. It is almost impossible to search
|
|
|
|
for "FL" on the Internet, due to the fact that it is also the
|
|
|
|
abbreviation for Florida. After much debating and searching for a
|
|
|
|
new name for the toolkit, which was already in use by several
|
|
|
|
people, Bill came up with "FLTK", and even a bogus excuse that it
|
|
|
|
stands for "The Fast Light Tool Kit".
|
1998-10-06 22:21:25 +04:00
|
|
|
|
|
|
|
|
1998-10-20 20:41:24 +04:00
|
|
|
BUILDING AND INSTALLING FLTK UNDER UNIX
|
1998-10-06 22:21:25 +04:00
|
|
|
|
1998-10-20 20:41:24 +04:00
|
|
|
FLTK uses GNU autoconf to configure itself for your UNIX platform.
|
|
|
|
If you aren't using UNIX then you'll need to configure things
|
|
|
|
differently. See below for other operating system configurations.
|
1998-10-06 22:21:25 +04:00
|
|
|
|
1998-10-20 20:41:24 +04:00
|
|
|
Before you configure FLTK you'll want to make sure your environment
|
|
|
|
is setup properly. Some variables of note are:
|
|
|
|
|
|
|
|
CC - C compiler to use
|
|
|
|
CFLAGS - C compiler options
|
|
|
|
|
|
|
|
CXX - C++ compiler to use
|
|
|
|
CXXFLAGS - C++ compiler options
|
|
|
|
|
|
|
|
LDFLAGS - Linker options
|
|
|
|
LIBS - Linker libraries
|
|
|
|
|
|
|
|
The main things that the configure script will look for are the
|
|
|
|
X11, OpenGL (or Mesa), and JPEG header and library files. Make
|
|
|
|
sure that they are in the standard include/library locations, and
|
|
|
|
if not define one or more of the environment variables listed
|
|
|
|
above.
|
|
|
|
|
|
|
|
Once you have everything ready you can run the "configure" script
|
|
|
|
located in this directory. The "--enable-windows-style" option to
|
|
|
|
configure will make the FLTK widgets look more like their Microsoft
|
|
|
|
Windows counterparts. Other options include:
|
|
|
|
|
|
|
|
--enable-debug - Enable debugging code & symbols
|
|
|
|
--enable-shared - Enable generation of shared libraries
|
|
|
|
|
|
|
|
--bindir=/path - Set the location for executables
|
|
|
|
[default = /usr/local/bin]
|
|
|
|
--libdir=/path - Set the location for libraries
|
|
|
|
[default = /usr/local/lib]
|
|
|
|
--includedir=/path - Set the location for include files.
|
|
|
|
[default = /usr/local/include]
|
|
|
|
--prefix=/dir - Set the directory prefix for files
|
|
|
|
[default = /usr/local]
|
|
|
|
|
|
|
|
When the configure script is done you can just run the "make"
|
|
|
|
command. This will build the library, FLUID tool, and all of the
|
|
|
|
test programs.
|
|
|
|
|
|
|
|
To install the library, become root and type "make install". This
|
|
|
|
will copy the "fluid" executable to "bindir", the header files to
|
|
|
|
"includedir", and the library files to "libdir".
|
|
|
|
|
|
|
|
|
|
|
|
BUILDING FLTK UNDER MICROSOFT WINDOWS
|
|
|
|
|
|
|
|
There are two ways to build FLTK under Microsoft Windows. The
|
|
|
|
first is to use the 5.0 project files under the "visualc"
|
|
|
|
directory. Just open (or double-click on) the "fltk.dsw" file to
|
|
|
|
get the whole shebang.
|
|
|
|
|
|
|
|
The second method is to use a GNU-based development tool with the
|
|
|
|
files in the "makefiles" directory. To build using one of these
|
|
|
|
tools simply copy the appropriate makeinclude and config files to
|
|
|
|
the main directory and do a make:
|
|
|
|
|
|
|
|
cp makefiles/makeinclude.<env> makeinclude
|
|
|
|
cp makefiles/config.<env> config.h
|
|
|
|
make
|
|
|
|
|
|
|
|
|
|
|
|
BUILDING FLTK UNDER OS/2
|
|
|
|
|
|
|
|
The current OS/2 build requires XFree86 for OS/2 to work. A native
|
|
|
|
Presentation Manager version has not been implemented yet
|
|
|
|
(volunteers are welcome!).
|
|
|
|
|
|
|
|
To build the XFree86 version of FLTK for OS/2, copy the appropriate
|
|
|
|
makeinclude and config files to the main directory and do a make:
|
|
|
|
|
|
|
|
cp makefiles/makeinclude.os2x makeinclude
|
|
|
|
cp makefiles/config.os2x config.h
|
|
|
|
make
|
|
|
|
|
|
|
|
|
|
|
|
ON-LINE DOCUMENTATION
|
|
|
|
|
|
|
|
All of the documentation is in HTML in the subdirectory
|
|
|
|
"documentation". The "index.html" file should be your starting
|
|
|
|
point.
|
|
|
|
|
|
|
|
|
|
|
|
INTERNET RESOURCES
|
|
|
|
|
|
|
|
FLTK is available on the 'net in a bunch of locations:
|
|
|
|
|
|
|
|
- WWW: http://fltk.easysw.com
|
|
|
|
|
|
|
|
- FTP: ftp://ftp.easysw.com/pub/fltk
|
|
|
|
ftp://ftp.funet.fi/mirrors/ftp.easysw.com/pub/fltk
|
|
|
|
|
|
|
|
- EMail: fltk@easysw.com [see instructions below]
|
|
|
|
fltk-bugs@easysw.com [for reporting bugs]
|
|
|
|
|
|
|
|
To send a message to the FLTK mailing list ("fltk@easysw.com") you
|
|
|
|
must first join the list. Non-member submissions are blocked to
|
|
|
|
avoid problems with SPAM...
|
|
|
|
|
|
|
|
To join the FLTK mailing list, send a message to
|
|
|
|
"majordomo@easysw.com" with "subscribe fltk" in the message body.
|
|
|
|
A digest of this list is available by subscribing to the
|
|
|
|
"fltk-digest" mailing list.
|
|
|
|
|
|
|
|
|
|
|
|
REPORTING BUGS
|
|
|
|
|
|
|
|
To report a bug in FLTK, send an email to "fltk-bugs@easysw.com".
|
|
|
|
Please include the FLTK version, operating system & version, and
|
|
|
|
compiler that you are using when describing the bug or problem.
|
|
|
|
|
|
|
|
For general support and questions, please use the FLTK mailing
|
|
|
|
list at "fltk@easysw.com".
|
|
|
|
|
|
|
|
|
|
|
|
WINDOW MANAGERS
|
|
|
|
|
|
|
|
FLTK now uses X transient windows for modal() windows. This may
|
|
|
|
confuse some window managers. Mostly it causes them to not put any
|
|
|
|
borders on the modal windows and prevent you from moving them.
|
|
|
|
|
|
|
|
For FVWM I recommend you put "DecorateTransients" into your
|
|
|
|
~/.fvwmrc file.
|
|
|
|
|
|
|
|
|
|
|
|
MESA
|
|
|
|
|
|
|
|
Currently the best way to get OpenGL on your Linux system is to use
|
|
|
|
Mesa. FLTK has been tested with Mesa on several machines (and also
|
|
|
|
with "real" OpenGL on SGI machines).
|
|
|
|
|
|
|
|
Mesa is available at "http://www.ssec.wisc.edu/~brianp/Mesa.html".
|
|
|
|
|
|
|
|
The configure script will not see Mesa unless it is installed as
|
|
|
|
either libGL or libMesa. If you don't want to do this you will
|
|
|
|
have to edit config.h (set HAVE_GL to 1) and makeinclude (add the
|
|
|
|
libraries).
|
|
|
|
|
|
|
|
|
|
|
|
HOW TO WRITE PROGRAMS THAT USE FLTK
|
|
|
|
|
|
|
|
The proper way to include FLTK header files is "#include
|
|
|
|
<FL/Fl_xyz.H>". If FLTK is installed this will work without
|
|
|
|
switches. If not you will need to provide a "-Idir" switch
|
|
|
|
pointing to this directory (all the headers are in ./FL).
|
|
|
|
|
|
|
|
Windows developers please note: case *is* significant under other
|
|
|
|
operating systems, and the C standard uses the forward slash (/) to
|
|
|
|
separate directories. The following #include directives are *not*
|
|
|
|
recommended for portability reasons:
|
|
|
|
|
|
|
|
#include <fl\fl_xyz.h>
|
|
|
|
#include <fl/fl_xyz.h>
|
|
|
|
#include <FL\Fl_xyz.H>
|
|
|
|
|
|
|
|
Linker switches will be something like "-lfltk -L/usr/X11R6/lib
|
|
|
|
-lX11". Some programs may require "-lXext" or "-lm". If FLTK is
|
|
|
|
not installed you will need to add a "-Ldir" switch pointing at
|
|
|
|
./lib.
|
|
|
|
|
|
|
|
If you wish to distribute a program (in source form) that uses
|
|
|
|
FLTK, you are allowed by the license to directly include the
|
|
|
|
portions of FLTK that you need. This may make it easier for a user
|
|
|
|
to compile your program since they don't need to install the
|
|
|
|
library. Please provide instructions for the user on how they can
|
|
|
|
get the entire source of FLTK.
|
|
|
|
|
|
|
|
If you wish to distribute a compiled program without source code,
|
|
|
|
this is allowed also. See the file "COPYING" for details.
|
|
|
|
|
|
|
|
|
|
|
|
TRADEMARKS
|
|
|
|
|
|
|
|
Microsoft and Windows are registered trademarks of Microsoft
|
|
|
|
Corportation. UNIX is a registered trademark of the X/Open Group,
|
|
|
|
Inc.
|
|
|
|
|
|
|
|
|
|
|
|
COPYRIGHT
|
|
|
|
|
|
|
|
FLTK is copyright 1998 by Bill Spitzak (spitzak@d2.com) and others,
|
|
|
|
including:
|
|
|
|
|
|
|
|
Curtis Edwards (curtise@fa.disney.com)
|
|
|
|
Gustavo Hime (hime@centroin.com.br)
|
|
|
|
Vincent Penne (vincent.penne@infonie.fr)
|
|
|
|
Michael Sweet (mike@easysw.com)
|
|
|
|
Carl Thompson (clip@home.net)
|
|
|
|
|
|
|
|
This library is free software; you can redistribute it and/or
|
|
|
|
modify it under the terms of the GNU Library General Public License
|
|
|
|
as published by the Free Software Foundation; either version 2 of
|
|
|
|
the License, or (at your option) any later version.
|
|
|
|
|
|
|
|
This library is distributed in the hope that it will be useful, but
|
|
|
|
WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
|
|
Library General Public License for more details.
|
|
|
|
|
|
|
|
You should have received a copy of the GNU Library General Public
|
|
|
|
License along with this library; if not, write to the Free Software
|
|
|
|
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
|
|
|
|
USA.
|