Whoops, I screwed up the timeout callbacks a bit.

add_timeout will now do the callback at time t after the call to
add_timeout, like before.

add_interval_timeout is a new call that measures time from when the
last timeout was called.  This has slightly less overhead and allows
accurate spacing of timeouts.

Patch from Stuart Levy so the *last* widget in an Fl_Pack may be
resizable.  This should be compatable because resizable didn't do
anything before so there was no reason to set it.

Makefiles for no-cygwin from Paul Baxter (see README.win32 for info).


git-svn-id: file:///fltk/svn/fltk/branches/branch-1.0@1222 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
This commit is contained in:
Bill Spitzak 2000-06-20 05:47:38 +00:00
parent be106a0977
commit f7e4caec25
9 changed files with 511 additions and 100 deletions

View File

@ -1,5 +1,5 @@
//
// "$Id: Fl.H,v 1.8.2.7 2000/06/16 07:27:57 bill Exp $"
// "$Id: Fl.H,v 1.8.2.8 2000/06/20 05:47:32 bill Exp $"
//
// Main header file for the Fast Light Tool Kit (FLTK).
//
@ -91,6 +91,7 @@ public:
static FL_EXPORT int run();
static FL_EXPORT Fl_Widget* readqueue();
static FL_EXPORT void add_timeout(double t, Fl_Timeout_Handler,void* = 0);
static FL_EXPORT void add_interval_timeout(double t, Fl_Timeout_Handler,void* = 0);
static FL_EXPORT int has_timeout(Fl_Timeout_Handler, void* = 0);
static FL_EXPORT void remove_timeout(Fl_Timeout_Handler, void* = 0);
static FL_EXPORT void add_fd(int fd, int when, void (*cb)(int,void*),void* =0);
@ -213,5 +214,5 @@ public:
#endif
//
// End of "$Id: Fl.H,v 1.8.2.7 2000/06/16 07:27:57 bill Exp $".
// End of "$Id: Fl.H,v 1.8.2.8 2000/06/20 05:47:32 bill Exp $".
//

View File

@ -1,6 +1,13 @@
README.win32 - 06/13/2000 - Building FLTK under Windows
README.win32 - 06/15/2000 - Building FLTK under Windows
-------------------------------------------------------
This document is split into two main sections.
The first describes several possible build environments,
whilst the second describes some of the issues associated with
using the GNU-like build configurations in the makefiles/
subdirectory.
-------------------------------------------------------
INTRODUCTION
@ -40,7 +47,7 @@ These supplementary files (headers and replacement libraries) can be
found at the Mingw home page along with its native toolkit.
If you are not familiar with these GNU-like toolkits please refer to
the links section later in this document. In particular, check out
the links section later in this section. In particular, check out
their license conditions carefully before use.
@ -52,35 +59,41 @@ cygnus: Built natively under the Cygwin toolset and using the Un*x
compatibility layer provided by CYGWIN1.DLL
mingw: Mainly based upon the Mingw utilities, compiler and tools but
currently needs supplementing by additional tools such as
make.exe. Consequently the Makefiles provided do require the
Cygwin toolset as a convenient way of obtaining some of the
build utilities but generates code not using CYGWIN1.DLL.
currently needs supplementing by additional tools such as
make.exe. Consequently the Makefiles provided do require the
Cygwin toolset as a convenient way of obtaining some of the
build utilities but generates code not using CYGWIN1.DLL.
It is also possible to build an executable using the Mingw toolset and
other windows-native tools (rather than using Cygwin). At present such
tools do exist but are spread widely over the net and of differing
versions.
other windows-native tools (rather than using Cygwin for supplementary
tools like make). At present although such tools do exist, they are
spread widely over the net and of differing versions.
The advantage of this approach would be no necessity to download the
Cygwin tools. At this time it is felt that the maintenance costs of
this approach outweigh any benefits however.
The advantage of this approach though would be no necessity to download
and configure the Cygwin tools.
At this time it is felt that the maintenance costs of this approach
outweigh any benefits however.
It is intended that the Cygwin tools themselves provide a basic Mingw
alternate compilation mode through the compile/link flag -mno-cygwin.
By design, the Cygwin tools themselves are supposed to provide a basic
Mingw alternate compilation mode through the compile/link
flag -mno-cygwin.
At the time of writing v1.1.2 of Cygwin has just been released and
still has some serious configuration issues for Mingw compilation and
so cannot be recommended.
This Cygwin-only method has a number of deficiencies that prevent many
modern programs from compiling unless further headers and replacement
libraries are added.
This Cygwin-only method also has a number of deficiencies that prevent
many modern programs from compiling unless further headers and
replacement libraries are added (even if basic mingw compilation did
work OK).
These additions are also available at the Mingw site mentioned above.
These additions are also available at the Mingw site mentioned in the
links section. I refer to these as the mingw supplementary files as
opposed to the full toolset.
As you can see there are many ways to configure the various bits of
Cygwin and Mingw. In order to set up development refer to the links
Cygwin and Mingw. In order to set up development, refer to the links
section below for more guidance.
@ -118,7 +131,7 @@ Our recommendation is to:
2) Get the latest Cygwin toolset.
Get the latest full Mingw toolset.
Configure your PATH to find the Mingw tools first but also have the
Cygwin supplementary tools on your PATH for commands like make.
@ -126,23 +139,29 @@ Our recommendation is to:
Produce executables dependent on CYGWIN1.DLL (Check licensing).
i.e. No supplementary Mingw files required.
1) and 2) provide windows-native executables whilst 3) has a un*x
portability layer but is reliant on a proprietary DLL.
See the later sections for detailed information about using one of
these configurations.
Other options:
4) When the Cygwin tools are fixed...
Get the latest Cygwin toolset.
Get the latest Mingw supplementary files for Cygwin.
This would be a good long-term solution since this would allow
Cygwin native or Cygwin-hosted Mingw compilation without the
confusion of two versions of some of the tools.
This is in fact how things are intended when the two toolsets are in
step.
5) Get the latest full Mingw toolset.
Get the necessary supplementary tools for native versions of make etc
Get the necessary supplementary tools for native versions of make etc
Again a good long-term solution but currently difficult to maintain
due to the diversity of tools and versions.
@ -168,7 +187,7 @@ LINKS
In particular the insights and recommendations for using Cygwin for Mingw
compilation are very useful:
http://www.xraylith.wisc.edu/~khan/software/gnu-win32/mno-cygwin-howto.txt
http://www.xraylith.wisc.edu/~khan/software/gnu-win32/mno-cygwin-howto.txt
4) Check out the FLTK mailing list at the FLTK homepage:
@ -186,6 +205,15 @@ LINKS
http://www.carlthompson.net/cygwin/
6) GCC compiler homepage
http://gcc.gnu.org/
7) OpenGL page - for OpenGL and GLUT libs
http://www.opengl.org/
------------------------------------------------------------------
BUILDING FLTK WITH CYGWIN OR MINGW
@ -199,7 +227,7 @@ a) Cygwin 'native' system (intend building an executable using CYGWIN1.DLL)
Having read the Cygwin documentation and happily compiled and linked your
own small test programs (see below)...
i) Copy makefiles/Makefile.cygnus to top level FLTK directory.
ii) Backup existing Makefile and rename top level copy of Makefile.cygnus to
@ -208,7 +236,7 @@ ii) Backup existing Makefile and rename top level copy of Makefile.cygnus to
iii) Type make
The first time it is run it will copy other configuration files from the
makefiles directory and then begin building FLTK, Fluid and the test examples.
makefiles directory and then begin building FLTK, Fluid and the test examples
iv) The build process will produce libraries in the lib directory and various
executables.
@ -217,8 +245,7 @@ v) Read the rest of this document to learn how to troubleshoot your setup or
change various configuration settings.
b) For a combination Cygwin + full Mingw solution as described in 'Win32 build
environments.txt'
b) For a combination Cygwin + full Mingw solution
Download the Cygwin tools and Mingw tools.
Set the PATH to find the Mingw tools first and then the Cygwin ones.
@ -231,22 +258,36 @@ c) For a Cygwin solution with only supplementary libraries/headers from Mingw
At the time of writing, Cygwin 1.1.2 does not work with early June 2000 gcc
tools to produce Mingw executables.
[For the truly adventurous it can be made to work by following the
instructions from Dale Goudney on the cygwin mailing list dated June 13 or
subsequent updated gcc distribution for cygwin.]
As such this is not currently supported via a Makefile, but here are some tips:
As such this is not currently supported via a supported set of configuration
files, but a preliminary (largely untested) set are provided as *.no-cygwin.
The compiler and linker option -mno-Cygwin SHOULD be all that's necessary to
add to makeinclude.cygnus as the toolset should then pull in the correct
alternate files.
The files are a hybrid of the cygnus and mingw-native files.
I would strongly recommend you read the insights into this process described by
Mumit Khan (see links section of 'Win32 build environments.txt' )
Here's a 'recipe' to derive *.no-cygwin from *.cygnus and *.mingw.
The compiler and linker option -mno-cygwin should be added to
makeinclude.cygnus as the toolset should then pull in the correct alternate
files. (creating makeinclude.no-cygwin)
Because we are using a basic mingw arrangement, config.mingw is copied to
config.no-cygwin.
Makefile.no-cygwin is created from a copy of Makefile.cygnus with a minor
change towards the bottom of the Makefile where config.cygnus and
makeinclude.cygnus should be replaced by equivalent *.no-cygwin.
I would strongly recommend you read the insights into this process described
by Mumit Khan (see links section of the first part of this document above.)
1.2 How do I set up Cygwin and/or Mingw
See the links provided in the 'Win32 build environments.txt' document
supplementing this one.
This isn't really an FLTK issue and is adequately diescribed at the linked
See the links section provided in the first part of this document.
This isn't really an FLTK issue and is adequately described at the linked
sites.
@ -258,8 +299,8 @@ sites.
There are many reasons for a failed compilation, including an incorrect
development toolset.
If you haven't regularly used the environment before, try compiling a few basic
programs directly.
If you haven't regularly used the environment before, try compiling a few
basic programs directly.
e.g. 1
@ -315,8 +356,8 @@ int main()
gcc hello.cxx
Default compilation with gcc will probably no longer work complaining it can't
find 'cout' etc.
Default compilation with gcc will probably no longer work complaining it
can't find 'cout' etc.
Hopefully g++ will though!
@ -325,7 +366,7 @@ g++ hello.cxx
Although gcc and g++ end up calling the same common code, they often differ
by what default libraries they include, hence the failure for gcc and success
for g++.
for g++. (g++ additionally adds the standard C++ libs)
Once again you can try adding the -v option or looking at the file with
@ -337,6 +378,10 @@ ld --help
Hopefully if all goes well, you should be set to try compilation for real.
If these don't compile then it would be prudent to check the latest info
for the compiler you're using (maybe a newer version is available?) or
look for additional information at the compiler home page.
e.g. http://gcc.gnu.org/ for gcc details and documentation
2.2 Make errors
@ -349,14 +394,16 @@ For example the type of 'end of line' characters can cause problems.
a) Basic advice:
Check that the environment is set correctly. You may need to set MAKE_MODE to
unix for instance.
Check that the environment is set correctly. You may need to set MAKE_MODE
to unix for instance. ( SET MAKE_MODE=unix in DOS window )
Try and get a newer version of make ( make v3.79 at time of writing).
Try and get a newer version of make ( make v3.79 at time of writing). Prior
versions particularly some patch levels for v3.77 didn't cope as well with
mixed EOL characters (unix vs Windows)
Check for incorrect end of line characters.
Check that your build environment is correctly mapping text files.
Check that your build environment is correctly mapping text files correctly.
[Cygwin has a text mode and binary mode for mount points.
Typically files should be mounted on a drive in text mode.
@ -374,12 +421,12 @@ b) Check the correct Makefile is in the top level directory
3.1 Getting rid of that peskey console window in the background!
3.2 Slimming down an executable
By default the configuration leaves an executable suitable for debugging. That
means it is not stripped of debugging symbols, but also that it needs to put
those error messages somewhere.
By default the configuration leaves an executable suitable for debugging.
That means it is not stripped of debugging symbols, but also that it needs
to put those error messages somewhere.
Take a look at the 'makeinclude.<env>' file for your environment and there are
a few notes on how to avoid the console window and how to slim down the
Take a look at the 'makeinclude.<env>' file for your environment and there
are a few notes on how to avoid the console window and how to slim down the
executable.
@ -397,11 +444,11 @@ By default this is set to 0 to disable Open GL operation.
will change this to compile and link in OpenGL.
In order for it to work you will need a few OpenGL headers for both Cygwin and
Mingw. These are not part of the official distributions of Cygwin or Mingw, so
need to be added.
In order for it to work you will need a few OpenGL headers for both Cygwin
and Mingw. These are not part of the official distributions of Cygwin or
Mingw, so need to be added.
http://www.carlthompson.net/fltk/
http://www.carlthompson.net/fltk/
has a small zip file called MingwGL.zip which contains the necessary headers.
@ -409,17 +456,17 @@ Normally these are put in FLTK's Gl directory.
You will also need an opengl library and an additional set of GLUT libraries.
The opengl files are most likely already part of your operating system, and the
GLUT libraries may be found by searching at
The opengl files are most likely already part of your operating system, and
the GLUT libraries may be found by searching at
http://www.opengl.org/
Do a search for 'GLUT windows' and the first couple of results will take you to
the latest GLUT and OpenGL libs for windows.
Do a search for 'GLUT windows' and the first couple of results will take you
to the latest GLUT and OpenGL libs for windows.
The binaries (DLLs normally) need to be put somewhere on the system PATH.
Consult the install documentation on the site for info.
Many programs use OpenGL and GLUT so you may already have them on your system.
Many programs use OpenGL and GLUT so you may already have them on your system
[ I have compiled/tested with OpenGL 1.1 and GLUT DLLs version 3.7 ]
[ FLTK compiled/tested with OpenGL 1.1 and GLUT DLLs version 3.7 ]

View File

@ -282,8 +282,10 @@ in future versions, however. </LI>
Adds a callback function that is called every time by
<tt>Fl::wait()</tt> and also makes it act as though the timeout is
zero (so it just checks for events and returns immediately). This can
be used to get background processing done.
zero (this makes <tt>Fl::wait()</tt> return immediately, so if it is
in a loop it is called repeatedly, and thus the idle fucntion is
called repeatedly). The idle function can be used to get background
processing done.
<P>You can have multiple idle callbacks. To remove an idle callback use <A
href=#remove_idle><tt>Fl::remove_idle()</tt></A>.
@ -295,26 +297,34 @@ but <tt>Fl::ready()</tt> does not.
<tt>Fl::wait()</tt>, <tt>Fl::check()</tt>, and <tt>Fl::ready()</tt>.
Fltk will not recursively call the idle callback.
<h3><A name=add_timeout>static void Fl::add_timeout(float t, void
(*cb)(void*),void*v=0)</A></h3>
<h3><A name=add_timeout>static void Fl::add_timeout(float t, void (*cb)(void*),void*v=0)</A></h3>
Add a one-shot timeout callback. The function will be called by
<tt>Fl::wait()</tt> at <i>t</i> seconds after this function is called
(except if you call this inside a timeout callback, then the time is
measured from when the callback was done, to allow accurate repeating
events). The optional <tt>void*</tt> argument is passed to the
callback.
<tt>Fl::wait()</tt> at <i>t</i> seconds after this function is called.
The optional <tt>void*</tt> argument is passed to the callback.
<P>This code will print &quot;TICK&quot; each second on stdout:
<h3><A name=add_interval_timeout>static void Fl::add_interval_timeout(float t, void (*cb)(void*),void*v=0)</A></h3>
Add a one-shot timeout callback. The difference from <a
href=#add_timeout>add_timeout</a> is that the time is measured from
when the last timeout callback was called, rather than from the moment
this function is called (if no timeout has been called recently the
time is measured from the next call to Fl::wait). This is designed
for making regularly-spaced timeouts at high speed (like for movie
playback), it also has slightly less system-call overhead than
add_timeout.
<P>This code will print &quot;TICK&quot; each second on stdout, with a
fair degree of accuracy:
<UL><PRE>void callback(void*) {
printf(&quot;TICK\n&quot;);
Fl::add_timeout(1.0,callback);
printf(&quot;TICK\n&quot;);
Fl::add_interval_timeout(1.0,callback);
}
main() {
Fl::add_timeout(1.0,callback);
Fl::run();
Fl::add_timeout(1.0,callback);
for (;;) Fl::wait();
}</PRE></UL>
<h3><A name=arg>static int Fl::arg(int argc, char **argv, int &amp;i)</A></h3>
@ -509,7 +519,7 @@ pick an item with a single click. Don't pass non-zero to this.
<br><A name=get_key>int Fl::get_key(int)</A></h3>
<tt>Fl::event_key()</tt> returns which key on the keyboard was last
pushed.
pushed. It returns zero if the last event was not a key press or release.
<P><tt>Fl::event_key(int)</tt> returns true if the given key was held
down (or pressed) <I>during</I> the last event. This is constant until
@ -955,9 +965,9 @@ Fl_Widget::test_shortcut()</tt></A>.
<h3><A name=visual>static int Fl::visual(int)</A></h3>
Selects a visual so that your graphics are drawn correctly. You must
do this before calling show() on any windows. This does nothing if
the default visual satisfies the capabilities, or if no visual
Selects a visual so that your graphics are drawn correctly. This is
only allowed before you call show() on any windows. This does nothing
if the default visual satisfies the capabilities, or if no visual
satisfies the capabilities, or on systems that don't have such
brain-dead notions.

View File

@ -0,0 +1,96 @@
#
# "$Id: Makefile.no-cygwin,v 1.1.2.1 2000/06/20 05:47:35 bill Exp $"
#
# Top-level makefile for the Fast Light Tool Kit (FLTK).
#
# Copyright 1998-2000 by Bill Spitzak and others.
#
# 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.
#
# Please report all bugs and problems to "fltk-bugs@fltk.org".
#
# By default use a Un*x-style shell
#
# uncomment next line to use NT command shell
# SHELL=cmd.exe
#
# or uncomment next line to explicitly use a unix-compatible shell
# SHELL=sh.exe
#
# If we are using a Un*x-based make, make sure the environmental var is set
# set MAKE_MODE=unix
#
# By default, a Un*x style make is assumed, so towards the bottom of this
# file filenames are copied with 'cp' and use forward slashes throughout
# in filepaths.
#
# Changing to a Windows-based command line would require 'cp' replaced with
# a local equivalent ('copy' is OK) and potentially for forward-slashes in
# filepaths to be replaced by back-slashes.
all: makeinclude config.h
echo "=== making src ==="
touch src/makedepend
cd src ; $(MAKE)
echo "=== making fluid ==="
touch fluid/makedepend
cd fluid ; $(MAKE)
echo "=== making test ==="
touch test/makedepend
cd test ; $(MAKE)
install:
echo "=== installing src ==="
touch src/makedepend
cd src ; $(MAKE) install
echo "=== installing fluid ==="
touch fluid/makedepend
cd fluid ; $(MAKE) install
depend:
echo "=== making src dependencies ==="
touch src/makedepend
cd src ; $(MAKE) depend
echo "=== making fluid dependencies ==="
touch fluid/makedepend
cd fluid ; $(MAKE) depend
echo "=== making test dependencies ==="
touch test/makedepend
cd test ; $(MAKE) depend
clean:
-@ rm -f core config.cache *.o *.bck
echo "=== cleaning src ==="
touch src/makedepend
cd src ; $(MAKE) clean
echo "=== cleaning fluid ==="
touch fluid/makedepend
cd fluid ; $(MAKE) clean
echo "=== cleaning test ==="
touch test/makedepend
cd test ; $(MAKE) clean
config.h: makefiles/config.no-cygwin
cp $< $@
makeinclude: makefiles/makeinclude.no-cygwin
cp $< $@
#
# End of "$Id: Makefile.no-cygwin,v 1.1.2.1 2000/06/20 05:47:35 bill Exp $".
#

157
makefiles/config.no-cygwin Normal file
View File

@ -0,0 +1,157 @@
/*
* "$Id: config.no-cygwin,v 1.1.2.1 2000/06/20 05:47:35 bill Exp $"
*
* Configuration file for the Fast Light Tool Kit (FLTK).
*
* Copyright 1998-2000 by Bill Spitzak and others.
*
* 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.
*
* Please report all bugs and problems to "FLTK-bugs@fltk.org".
*/
/*
* BORDER_WIDTH:
*
* Thickness of FL_UP_BOX and FL_DOWN_BOX. Current 1,2, and 3 are
* supported.
*
* 3 is the historic FLTK look.
* 2 is the default and looks like Microsoft Windows, KDE, and Qt.
* 1 is a plausible future evolution...
*
* Note that this may be simulated at runtime by redefining the boxtypes
* using Fl::set_boxtype().
*/
#define BORDER_WIDTH 2
/*
* HAVE_GL:
*
* Do you have OpenGL? Set this to 0 if you don't have or plan to use
* OpenGL, and FLTK will be smaller.
*
* In order to set to 1 you will need to obtain the OpenGL header and
* library files. Consult the README.win32 file for further details.
*/
#define HAVE_GL 0
/*
* USE_COLORMAP:
*
* Setting this to zero will save a good deal of code (especially for
* fl_draw_image), but FLTK will only work on TrueColor visuals.
*/
#define USE_COLORMAP 1
/*
* HAVE_XDBE:
*
* Do we have the X double-buffer extension?
*/
#define HAVE_XDBE 0
/*
* USE_XDBE:
*
* Actually try to use the double-buffer extension? Set this to zero
* disable use of XDBE without breaking the list_visuals program.
*/
#define USE_XDBE HAVE_XDBE
/*
* HAVE_OVERLAY:
*
* Use the X overlay extension? FLTK will try to use an overlay
* visual for Fl_Overlay_Window, the Gl_Window overlay, and for the
* menus. Setting this to zero will remove a substantial amount of
* code from FLTK. Overlays have only been tested on SGI servers!
*/
#define HAVE_OVERLAY 0
/*
* HAVE_GL_OVERLAY:
*
* It is possible your GL has an overlay even if X does not. If so,
* set this to 1.
*/
#define HAVE_GL_OVERLAY HAVE_OVERLAY
/*
* WORDS_BIGENDIAN:
*
* Byte order of your machine: 1 = big-endian, 0 = little-endian.
*/
#define WORDS_BIGENDIAN 0
/*
* U16, U32, U64:
*
* Types used by fl_draw_image. One of U32 or U64 must be defined.
* U16 is optional but FLTK will work better with it!
*/
#define U16 unsigned short
#define U32 unsigned
/* #undef U64 */
/*
* HAVE_DIRENT_H, HAVE_SYS_NDIR_H, HAVE_SYS_DIR_H, HAVE_NDIR_H, HAVE_SCANDIR:
*
* Where is <dirent.h> (used only by fl_file_chooser and scandir).
*/
#define HAVE_DIRENT_H 1
#define HAVE_SYS_NDIR_H 0
#define HAVE_SYS_DIR_H 0
#define HAVE_NDIR_H 0
#define HAVE_SCANDIR 0
/*
* possibly missing sprintf-style functions:
*/
#define HAVE_VSNPRINTF 0
#define HAVE_SNPRINTF 0
#define HAVE_VSPRINTF 0
/*
* HAVE_SYS_SELECT_H:
*
* Whether or not select() call has its own header file.
*/
#define HAVE_SYS_SELECT_H 0
/*
* HAVE_POLL:
*
* Use poll() if we don't have select().
*/
#define HAVE_POLL 0
/*
* End of "$Id: config.no-cygwin,v 1.1.2.1 2000/06/20 05:47:35 bill Exp $".
*/

View File

@ -0,0 +1,99 @@
#
# "$Id: makeinclude.no-cygwin,v 1.1.2.1 2000/06/20 05:47:36 bill Exp $"
#
# Make include file for the Fast Light Tool Kit (FLTK).
#
# Copyright 1998-2000 by Bill Spitzak and others.
#
# 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.
#
# Please report all bugs and problems to "fltk-bugs@fltk.org".
#
# Notes:
#
# 1) Console windows appearing
#
# Consoles will not appear when run from a cygwin shell command line prompt
# but will cause an 'unnecessary' console to appear when run directly from
# windows (say explorer). It provides i/o for stdin/stdout for debugging
#
# To avoid this use an additional compile/link switch to move the program
# entry point to WinMain(). If not defined a link warning may appear
# but the program will run correctly from main() and not produce a console.
# Adding -mwindows to CFLAGS,CXXFLAGS,LDLIBS,GLDLIBS below
# will cause this revised behaviour
#
# 2) Stripping the executable to reduce size
#
# An external program may be run to strip out any debug symbols:
# strip filename.exe
#
# Alternatively add -s option to LDLIBS and GLDLIBS below to strip all
# symbols. (or -S for stripping of debug symbols only). See 'ld' man page
# for other useful link-time options.
#
# The default is to leave -mwindows and the stripping off, so as to facilitate
# debugging. For release it may be appropriate to add these additional switches
prefix = /usr/local
exec_prefix = ${prefix}
bindir = ${exec_prefix}/bin
includedir = ${prefix}/include
libdir = ${exec_prefix}/lib
srcdir = .
# compiler names:
CXX = g++
CC = gcc
# flags for C++ compiler:
CFLAGS = -Wall -O2 -DWIN32 -mno-cygwin
CXXFLAGS = -Wall -O2 -DWIN32 -mno-cygwin
# program to make the archive:
LIBNAME = libfltk.a
LIBCOMMAND = ar -ruv
RANLIB = ranlib
DSONAME =
DSOCOMMAND = echo
# libraries to link with (in addition to default libs):
LDLIBS = -lm -lgdi32 -lwsock32 -mno-cygwin
GLDLIBS = -lglu32 -lopengl32 -lm -lgdi32 -lwsock32 -mno-cygwin
# Be quiet when building...
.SILENT:
# Build commands and filename extensions...
.SUFFIXES: .c .cxx .h .fl .o
.cxx:
echo Compiling and linking $@...
$(CXX) -I.. -L../lib $(CXXFLAGS) $< -lfltk $(LDLIBS) -o $@
.c.o:
echo Compiling $@...
$(CC) -I.. $(CXXFLAGS) $< -c
.cxx.o:
echo Compiling $@...
$(CXX) -I.. $(CXXFLAGS) $< -c
#
# End of "$Id: makeinclude.no-cygwin,v 1.1.2.1 2000/06/20 05:47:36 bill Exp $".
#

View File

@ -1,5 +1,5 @@
//
// "$Id: Fl.cxx,v 1.24.2.27 2000/06/18 00:38:39 bill Exp $"
// "$Id: Fl.cxx,v 1.24.2.28 2000/06/20 05:47:36 bill Exp $"
//
// Main event handling code for the Fast Light Tool Kit (FLTK).
//
@ -132,7 +132,6 @@ static void elapse_timeouts() {
}
static char in_idle;
static char in_timeout;
double Fl::wait(double time_to_wait) {
if (numtimeouts) {
@ -148,9 +147,7 @@ double Fl::wait(double time_to_wait) {
if (numtimeouts)
memmove(timeout, timeout+1, numtimeouts*sizeof(Timeout));
// Now it is safe for the callback to do add_timeout:
in_timeout = 1;
cb(arg);
in_timeout = 0;
}
} else {
reset_clock = 1; // we are not going to check the clock
@ -200,12 +197,11 @@ int Fl::ready() {
}
void Fl::add_timeout(double t, Fl_Timeout_Handler cb, void *v) {
elapse_timeouts();
add_interval_timeout(t, cb, v);
}
// This little test gets rid of about half the calls to get the time
// and has the added advantage of making timeouts that think they
// are happening at regular intervals actually happen at regular
// intervals:
if (!in_timeout) elapse_timeouts();
void Fl::add_interval_timeout(double t, Fl_Timeout_Handler cb, void *v) {
if (numtimeouts >= timeout_array_size) {
timeout_array_size = 2*timeout_array_size+1;
@ -733,5 +729,5 @@ void Fl_Window::flush() {
}
//
// End of "$Id: Fl.cxx,v 1.24.2.27 2000/06/18 00:38:39 bill Exp $".
// End of "$Id: Fl.cxx,v 1.24.2.28 2000/06/20 05:47:36 bill Exp $".
//

View File

@ -1,5 +1,5 @@
//
// "$Id: Fl_Pack.cxx,v 1.6.2.2 2000/06/05 21:20:55 mike Exp $"
// "$Id: Fl_Pack.cxx,v 1.6.2.3 2000/06/20 05:47:37 bill Exp $"
//
// Packing widget for the Fast Light Tool Kit (FLTK).
//
@ -63,6 +63,13 @@ void Fl_Pack::draw() {
Y = current_position;
H = o->h();
}
// Last child, if resizable, takes all remaining room
if(i == 0 && o == this->resizable()) {
if(horizontal())
W = this->w() - Fl::box_dw(box()) - maximum_position;
else
H = this->h() - Fl::box_dh(box()) - maximum_position;
}
if (spacing_ && current_position>maximum_position &&
(X != o->x() || Y != o->y() || d&FL_DAMAGE_ALL)) {
fl_color(color());
@ -105,5 +112,5 @@ void Fl_Pack::draw() {
}
//
// End of "$Id: Fl_Pack.cxx,v 1.6.2.2 2000/06/05 21:20:55 mike Exp $".
// End of "$Id: Fl_Pack.cxx,v 1.6.2.3 2000/06/20 05:47:37 bill Exp $".
//

View File

@ -1,5 +1,5 @@
//
// "$Id: Fl_win32.cxx,v 1.33.2.27 2000/06/18 00:38:40 bill Exp $"
// "$Id: Fl_win32.cxx,v 1.33.2.28 2000/06/20 05:47:38 bill Exp $"
//
// WIN32-specific code for the Fast Light Tool Kit (FLTK).
//
@ -151,8 +151,6 @@ void Fl::remove_fd(int n) {
MSG fl_msg;
#define FOREVER 1e20
// This is never called with time_to_wait < 0.0.
// It *should* return negative on error, 0 if nothing happens before
// timeout, and >0 if any callbacks were done. This version only
@ -233,7 +231,7 @@ int fl_wait(double time_to_wait) {
int fl_ready() {
if (PeekMessage(&fl_msg, NULL, 0, 0, PM_NOREMOVE)) return 1;
#ifdef USE_ASYNC_SELECT
return (0);
return 0;
#else
timeval t;
t.tv_sec = 0;
@ -953,5 +951,5 @@ void Fl_Window::make_current() {
}
//
// End of "$Id: Fl_win32.cxx,v 1.33.2.27 2000/06/18 00:38:40 bill Exp $".
// End of "$Id: Fl_win32.cxx,v 1.33.2.28 2000/06/20 05:47:38 bill Exp $".
//