summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBill Spitzak <spitzak@gmail.com>2000-06-20 05:47:38 +0000
committerBill Spitzak <spitzak@gmail.com>2000-06-20 05:47:38 +0000
commitf7e4caec2575619b6578b866bb59630bb513049c (patch)
treec236ea95955da7e11f5269cbaeb48b41ccfcd664
parentbe106a097747ddd5c0e05e7662b66c8859d4aa12 (diff)
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
-rw-r--r--FL/Fl.H5
-rw-r--r--README.win32173
-rw-r--r--documentation/functions.html46
-rw-r--r--makefiles/Makefile.no-cygwin96
-rw-r--r--makefiles/config.no-cygwin157
-rw-r--r--makefiles/makeinclude.no-cygwin99
-rw-r--r--src/Fl.cxx16
-rw-r--r--src/Fl_Pack.cxx11
-rw-r--r--src/Fl_win32.cxx8
9 files changed, 511 insertions, 100 deletions
diff --git a/FL/Fl.H b/FL/Fl.H
index 9f0aece50..c5f7489af 100644
--- a/FL/Fl.H
+++ b/FL/Fl.H
@@ -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 $".
//
diff --git a/README.win32 b/README.win32
index 37feae9f5..ac3a895d4 100644
--- a/README.win32
+++ b/README.win32
@@ -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 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.
-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.
-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 supported set of configuration
+files, but a preliminary (largely untested) set are provided as *.no-cygwin.
+
+The files are a hybrid of the cygnus and mingw-native files.
+
+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.
-As such this is not currently supported via a Makefile, but here are some tips:
+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.
-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.
-I would strongly recommend you read the insights into this process described by
-Mumit Khan (see links section of 'Win32 build environments.txt' )
+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 ]
diff --git a/documentation/functions.html b/documentation/functions.html
index 162b89400..a79bdd1fd 100644
--- a/documentation/functions.html
+++ b/documentation/functions.html
@@ -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.
diff --git a/makefiles/Makefile.no-cygwin b/makefiles/Makefile.no-cygwin
new file mode 100644
index 000000000..673f6e3d5
--- /dev/null
+++ b/makefiles/Makefile.no-cygwin
@@ -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 $".
+#
diff --git a/makefiles/config.no-cygwin b/makefiles/config.no-cygwin
new file mode 100644
index 000000000..2ab4d1d1b
--- /dev/null
+++ b/makefiles/config.no-cygwin
@@ -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 $".
+ */
diff --git a/makefiles/makeinclude.no-cygwin b/makefiles/makeinclude.no-cygwin
new file mode 100644
index 000000000..bf2e0db7e
--- /dev/null
+++ b/makefiles/makeinclude.no-cygwin
@@ -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 $".
+#
diff --git a/src/Fl.cxx b/src/Fl.cxx
index d67235e9f..c8584707e 100644
--- a/src/Fl.cxx
+++ b/src/Fl.cxx
@@ -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 $".
//
diff --git a/src/Fl_Pack.cxx b/src/Fl_Pack.cxx
index d3818c10c..dac8e4501 100644
--- a/src/Fl_Pack.cxx
+++ b/src/Fl_Pack.cxx
@@ -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 $".
//
diff --git a/src/Fl_win32.cxx b/src/Fl_win32.cxx
index 982044ab3..1f5eeb90b 100644
--- a/src/Fl_win32.cxx
+++ b/src/Fl_win32.cxx
@@ -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 $".
//