diff options
| author | Bill Spitzak <spitzak@gmail.com> | 2000-06-20 05:47:38 +0000 |
|---|---|---|
| committer | Bill Spitzak <spitzak@gmail.com> | 2000-06-20 05:47:38 +0000 |
| commit | f7e4caec2575619b6578b866bb59630bb513049c (patch) | |
| tree | c236ea95955da7e11f5269cbaeb48b41ccfcd664 | |
| parent | be106a097747ddd5c0e05e7662b66c8859d4aa12 (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.H | 5 | ||||
| -rw-r--r-- | README.win32 | 173 | ||||
| -rw-r--r-- | documentation/functions.html | 46 | ||||
| -rw-r--r-- | makefiles/Makefile.no-cygwin | 96 | ||||
| -rw-r--r-- | makefiles/config.no-cygwin | 157 | ||||
| -rw-r--r-- | makefiles/makeinclude.no-cygwin | 99 | ||||
| -rw-r--r-- | src/Fl.cxx | 16 | ||||
| -rw-r--r-- | src/Fl_Pack.cxx | 11 | ||||
| -rw-r--r-- | src/Fl_win32.cxx | 8 |
9 files changed, 511 insertions, 100 deletions
@@ -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 "TICK" 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 "TICK" each second on stdout, with a +fair degree of accuracy: <UL><PRE>void callback(void*) { - printf("TICK\n"); - Fl::add_timeout(1.0,callback); + printf("TICK\n"); + 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 &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 $". // |
