                             FLTK License
                           December 11, 2001

The FLTK library and included programs are provided under the terms
of the GNU Library General Public License (LGPL) with the following
exceptions:

    1. Modifications to the FLTK configure script, config
       header file, and makefiles by themselves to support
       a specific platform do not constitute a modified or
       derivative work.

       The authors do request that such modifications be
       contributed to the FLTK project - send all
       contributions to "fltk-bugs@fltk.org".

    2. Widgets that are subclassed from FLTK widgets do not
       constitute a derivative work.

    3. Static linking of applications and widgets to the
       FLTK library does not constitute a derivative work
       and does not require the author to provide source
       code for the application or widget, use the shared
       FLTK libraries, or link their applications or
       widgets against a user-supplied version of FLTK.

       If you link the application or widget to a modified
       version of FLTK, then the changes to FLTK must be
       provided under the terms of the LGPL in sections
       1, 2, and 4.

    4. You do not have to provide a copy of the FLTK license
       with programs that are linked to the FLTK library, nor
       do you have to identify the FLTK license in your
       program or documentation as required by section 6
       of the LGPL.

       However, programs must still identify their use of FLTK.
       The following example statement can be included in user
       documentation to satisfy this requirement:

           [program/widget] is based in part on the work of
           the FLTK project (http://www.fltk.org).

