Go to file
Michael R Sweet b2172ee88a Added common headings & CVS tags.
Added "unsigned char" fix from Darren Humphrey.


git-svn-id: file:///fltk/svn/fltk/trunk@30 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
1998-10-21 16:29:01 +00:00
FL Fixed all the frigging file headings - was missing a $ in the Id string. 1998-10-21 14:21:44 +00:00
GL Fixed all the frigging file headings - was missing a $ in the Id string. 1998-10-21 14:21:44 +00:00
documentation Initial revision 1998-10-06 18:21:25 +00:00
fluid Added common headings & CVS tags. 1998-10-21 16:29:01 +00:00
lib Initial revision 1998-10-06 18:21:25 +00:00
makefiles Added config.h files for Cygnus and MingW32 development environments. 1998-10-20 14:43:42 +00:00
src Fixed all the frigging file headings - was missing a $ in the Id string. 1998-10-21 14:21:44 +00:00
test Fixed all the frigging file headings - was missing a $ in the Id string. 1998-10-21 14:21:44 +00:00
visualc Updated autoconf files to support shared libraries and JPEG library. 1998-10-20 16:41:24 +00:00
COPYING Initial revision 1998-10-06 18:21:25 +00:00
Makefile Fixed all the frigging file headings - was missing a $ in the Id string. 1998-10-21 14:21:44 +00:00
README Updated autoconf files to support shared libraries and JPEG library. 1998-10-20 16:41:24 +00:00
README.win32 Updated autoconf files to support shared libraries and JPEG library. 1998-10-20 16:41:24 +00:00
configh.in Fixed all the frigging file headings - was missing a $ in the Id string. 1998-10-21 14:21:44 +00:00
configure Initial revision 1998-10-06 18:21:25 +00:00
configure.in Fixed all the frigging file headings - was missing a $ in the Id string. 1998-10-21 14:21:44 +00:00
forms.h Initial revision 1998-10-06 18:21:25 +00:00
install-sh Initial revision 1998-10-06 18:21:25 +00:00
makeinclude.in Fixed all the frigging file headings - was missing a $ in the Id string. 1998-10-21 14:21:44 +00:00

README

README - Fast Light Tool Kit (FLTK) Version 1.0
-----------------------------------------------

WHAT IS FLTK?

    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. 

    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. 


FEATURES

    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. 

    Here are some of the core features unique to FLTK: 

	- sizeof(Fl_Widget) == 48.

	- The "core" (the "hello" program compiled & linked with a
	  static FLTK library using gcc on a 486 and then stripped) is
	  39.5K. 

	- A program including every widget is less than 108K.  Does not
	  use macros, templates, multiple inheritance, or exceptions. 

	- Written directly atop Xlib (or the WIN32 API) for maximum
	  speed, and carefully optimized for code size and
	  performance. 

	- Precise low-level compatability between the X and Windows
	  version (only about 10% of the code is different). 

	- Interactive user interface builder program. Output is human-
	  readable and editable C++ source code. 

	- Support for the X double buffering extension (emulation if
	  not available and under Windows.)

	- Support for X overlay hardware (emulation if none and under
	  Windows.)

	- Very small & fast portable 2-D drawing library to hide Xlib
	  and WIN32.

	- OpenGL/Mesa drawing area widget.

	- Support for OpenGL overlay hardware on both X and Windows.
	  Emulation if none.

	- Text input fields with Emacs key bindings, X cut & paste, and
	  foreign letter compose!

	- Compatability header file for the Glut library.

	- Compatability header file for the XForms library.

	- Much too much to list here...


LICENSING

    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.) 


WHAT DOES "FLTK" MEAN?

    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". 


BUILDING AND INSTALLING FLTK UNDER UNIX

    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.

    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
	--enable-windows-style  - Enable the Microsoft Windows "look-n-feel"

	--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.