diff options
Diffstat (limited to 'debian/fireflies/fireflies-2.08/libgfx')
110 files changed, 23418 insertions, 0 deletions
diff --git a/debian/fireflies/fireflies-2.08/libgfx/CHANGES.txt b/debian/fireflies/fireflies-2.08/libgfx/CHANGES.txt new file mode 100644 index 00000000..8f15b370 --- /dev/null +++ b/debian/fireflies/fireflies-2.08/libgfx/CHANGES.txt @@ -0,0 +1,284 @@ +in Version 1.1 +-------------- + + o Got rid of the n-vector and n*n-matrix code as it was quite broken. + + o All MxGUI menu commands are visible to external code now. + + o Got rid of the command-line compilation stuff for VC. + + o Moved all the Windows-specific headers -- which have never moved + beyond experimental -- into a Windows specific <gfx/win/...> location. + + o Placed all libgfx code in the 'gfx' namespace. To improve + compatibility with old code, the <gfx/gfx.h> header will + automatically import this namespace into the default global one. + This behavior can be turned off by defining the GFX_NAMESPACE + preprocessor symbol. + + o The scripting framework now allows for encapsulation of one syntax + inside another. However, this is experimental, and is likely to + change considerably in a future release. + + o Extended the script interface to support void parsers that throw + exceptions on errors rather than passing return codes. In future, + this will become the default way of writing parser functions. + + o The script_do_xxx() functions formerly defined in <gfx/script.h> + have been removed. They were long ago superseded by the + CmdEnv::do_xxx() methods. + + o Fixed the unitize() method for quaternions, which did not in fact + result in a unit quaternion. + + o Added a small collection of useful color manipulation routines in + <gfx/color.h>. + + o Added an ortho_camera_lookat() function to complement the + longstanding camera_lookat() perspective function. + +in Version 1.0.3 +---------------- + + o When compiling with GCC, warnings are turned on by default. To + compile without warnings, you must use --disable-warnings when + running the 'configure' script. + + o The tests used by the 'configure' script to detect OpenGL headers + were a bit broken. These tests are now much more reliable. + + o The quaternion SLERPing code in previous revisions was incorrect + due to a typo in the code. This problem has been fixed. + + o The file parser provided by <gfx/script.h> now supports the use of + libgzstream. When using the library, the scripting code will + automatically decompress files ending with {.gz, .z, .Z} suffixes. + You must use the --enable-gzstream option when running ./configure. + + o New experimental build files for use with Apple's XCode + development environment are available in the 'xcode' directory. + + o Added functions to <gfx/geom3d.h> for computing the volume + of tetrahedra. + + o The MIN/MAX macros were broken under Cygwin. + + o Fixed up a few miscellaneous compiler warnings. + + o Added an experimental MxBinder class to <gfx/gui.h>. This makes + it fairly painless to bind MxGUI member functions to FLTK callbacks. + + o Moved management of libgfx source code from CVS to Subversion. + + +in Version 1.0.2 +---------------- + + o The MxGUI::snapshot_to_file() method now takes an optional + filename argument. When provided, the code will simply write a + snapshot to this file, rather than presenting the user with a file + selector. + + o The MxGUI::snapshot_to_file() method will now save the alpha + channel of the window, assuming the file format supports that. + (Currently, only PNG and TIFF support alpha channels.) + + o MxGUI OpenGL windows allocate alpha channels (when available). + + o New vector/matrix modules: + + - <gfx/symmat4.h> Symmetric 4x4 matrices; after <gfx/symmat3.h> + - <gfx/vecn.h> Preliminary support for n-D vectors + - <gfx/matn.h> Preliminary support for nxn matrices + - <gfx/symmatn.h> Preliminary support for nxn symmetric matrices + + o Project files for Apple's ProjectBuilder (OS X) are located in the + macos subdirectory. + + o Added checks in the autoconf script for <ext/hash_map> and + <ext/hash_set>, which is where GCC3 chooses to place these + non-standard STL components. + + o The scripting framework now supports a CmdEnv::ignore_command() + method that lets client code specify command names that should be + ignored. This is also available from the input file itself by + using the 'ignore' command. + + o The Baseball-derived classes now have read()/write() methods for + exchanging view information in a textual form. + + +in Version 1.0.1 +---------------- + + o The library should now compile correctly under Visual Studio .NET + (a.k.a Visual C++ 7). + + o The array<> and varray<> templates in <gfx/array.h> have been + removed. Their original purpose was to support legacy code + written in prior to the widespread adoption of STL. The array2<> + and array3<> templates remain, but they are now subclasses of + std::vector<>. + + o Many of the functions in <gfx/geom3d.h> were re-written to by + templatized by vector class rather than by element type. Thus, + they may now be used with any suitable vector type, not just the + TVec3<> template defined in <gfx/vec3.h>. + + o The CmdLine::collect_as_xxx() methods used by the file format + scripting interface now accept an optional 'offset' argument. + This parameter controls at which token the methods start reading. + Their previous behavior was to always begin reading at the first + token on the command line. + + o The script_do_xxx() functions have been replaced with + CmdEnv::do_xxx() methods. The old global functions remain in + place for compatibility, but the new CmdEnv methods should be used + in preference to them. + + o The autoconf process now sets up a symbolic FLTKCONFIG program + name. This is primarily of interest under MacOS X, where the + fltk-config program is used to finalize the build of a GUI + application so that it will launch correctly from the Finder. + The Makefile in the 'test' directory demonstrates the correct use + of this program as a post-build step. + + o Bug fixes: + + - The Raster destructor is now correctly declared as virtual. + + - Certain type declarations have been made more rigorously + correct for proper compilation under GCC 3. + + o A geom4d package has been added that provides functionality + analogous to the geom3d package. + + o A couple of new experimental packages have been added for building + Win32 interfaces with MFC: mfc, wintools, gui-mfc. They are + unfinished, undocumented, and may be unstable. Most users of this + library will want to avoid them. + + +in Version 1.0 +---------------- + + o The documentation is now (mostly) complete and (mostly) + synchronized with the actual code. + + o Trackball & Arcball now share a common Baseball base class. + + o Extensions to the autoconf script to allow for: + + - Automatic configuration under Mac OS X + + - Selection of whether to compile with Cygwin libraries or not + + - Handle differences between FLTK 1.0.x and 1.1.x in the way + that OpenGL code is handled + + o Some minor changes to make the library compile under Mac OS X. + + o Bug fixes: + + - ByteRaster copy constructer faulted due to incorrect size + computation for memcpy(). + +in Version 0.9.3 +---------------- + + o Even more significant changes in the file format scripting package. The + old approach was getting increasingly unmanageable, and the reliance on + magic global constructors for handler registration was proving to be + problematic. + + o Added descriptive interface to vector/matrix types to make + templates easier to write. + + o Vector templates now handle assignment between vectors of + different types (e.g., Vec3 and Vec3f) much more cleanly. + + o New packages to efficiently support symmetric matrix types + (e.g., <gfx/symmat3.h>). + + o Added is_inside_bbox() and clamp_to_bbox() to geom3d package. + + o More complete documentation. + + o Bug fixes in various packages: + + - fixed autoconf script to correctly detect headers + + - Raster class now uses delete[] to match its use of new[]. + + - Scalar multiplication of vectors under VC++ must now use + constants of the same type as the vector elements. This + prevents a tricky bug related to the VC++ template + instantiation. + + +in Version 0.9.2 +---------------- + + o Significant changes to the file format scripting package. All previous + global functions are still available for backwards compatibility, but + you may need to change the definitions of your command handlers. + + o The interface of the <geom3d> package has changed considerably + + - Changed the triangle_* functions to be inlined templated functions. + Before they only worked with Vec3's. Now, they'll work with any + TVec3<T> type. + + - Added a templated compute_bbox() function. + + o Camera and object control has changed a bit + + - The camera_lookat() function in the <gltools> package was putting + both the perspective and lookAt transformations on the Projection + stack. It now correctly puts the perspective on the Projection + stack and the lookAt transformation on the ModelView stack. + + - The Arcball and Trackball manipulators now apply all transformations + to the object, rather than applying rotation to the object and + translation to the camera. + + o Added eigenvalue/eigenvector functions for all matrix types. + + - Because of licensing restrictions, only the 2x2 implementation is + actually present, although prototypes exist for all dimensions. + + o Added a restricted STL-like interface to <array> package. + + o Bug fixes in various packages + + - The 2x2 matrix inversion method was incorrect. + + - read_tiff_image() always returned a 3-channel image. It will now + return an image with the same number of channels as in the file + read. + + +in Version 0.9.1 +--------------- + + o Added a new quaternion package <gfx/quat.h>. [currently undocumented] + + o Added Trackball & Arcball interactive rotation control packages. This + makes it much easier to write applications where the user interactively + spins a model in the window. [currently undocumented] + + o Bug fixes in various packages. + + - Vec3, Vec4 operators for Visual C++ were broken. + - Fixed improper deallocation of array2<> and array3<> objects. + - camera_lookat() incorrectly computed camera location. + + o Applications built on the MxGUI framework can now receive key + press events in the OpenGL canvas area by overriding the key_press() + method. + + +in Version 0.9 +----------- + + This was the initial preliminary release for Fall 2000. diff --git a/debian/fireflies/fireflies-2.08/libgfx/README.txt b/debian/fireflies/fireflies-2.08/libgfx/README.txt new file mode 100644 index 00000000..cffdc13a --- /dev/null +++ b/debian/fireflies/fireflies-2.08/libgfx/README.txt @@ -0,0 +1,71 @@ +------------------------------------------------------------------------ + + libgfx: A Graphics Library + Version 1.1.0 + + Michael Garland <[email protected]> + http://graphics.cs.uiuc.edu/~garland/software/libgfx.html + + Copyright (C) 1999-2005 Michael Garland. + +------------------------------------------------------------------------ + +OVERVIEW +-------- + +The purpose of this library is to simplify the creation of computer graphics +software. Specifically, it is targeted towards cross-platform development +using the OpenGL rendering API and the FLTK interface toolkit. It attempts to +provide facilities which are useful in the majority of graphics programs. It +is derived from the MixKit library I wrote for doing polygonal surface +simplification (see http://graphics.cs.uiuc.edu/~garland/software/qslim.html). + +Instructions on building and using the library can be found in the 'doc' +subdirectory. + + + +CURRENT STATUS +-------------- + +After having gone through multiple pre-release versions, the first +official version (1.0) was released in March 2002. The changes made in +successive 1.0.x series releases were meant primarily to fix bugs and +add new functionality. The current 1.1.x series of releases makes +certain incompatible changes to the code, such as moving headers and +removing support for out-dated mechanisms. + +While the license for this library does not require it, I'd like to +encourage you to contribute bug reports, patches, and whatever +improvements you might come up with to this library. In that way, +others can benefit from your efforts, and you can benefit from the +efforts of others. + + +USAGE TERMS & CONDITIONS +------------------------ + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, and/or sell copies of the Software, and to permit persons +to whom the Software is furnished to do so, provided that the above +copyright notice(s) and this permission notice appear in all copies of +the Software and that both the above copyright notice(s) and this +permission notice appear in supporting documentation. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR +HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL +INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING +FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, +NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION +WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +Except as contained in this notice, the name of a copyright holder +shall not be used in advertising or otherwise to promote the sale, use +or other dealings in this Software without prior written authorization +of the copyright holder. diff --git a/debian/fireflies/fireflies-2.08/libgfx/configure b/debian/fireflies/fireflies-2.08/libgfx/configure new file mode 100755 index 00000000..0f37a1d9 --- /dev/null +++ b/debian/fireflies/fireflies-2.08/libgfx/configure @@ -0,0 +1,9653 @@ +#! /bin/sh +# From configure.in Revision: 1.19 . +# Guess values for system-dependent variables and create Makefiles. +# Generated by GNU Autoconf 2.59. +# +# Copyright (C) 2003 Free Software Foundation, Inc. +# This configure script is free software; the Free Software Foundation +# gives unlimited permission to copy, distribute and modify it. +## --------------------- ## +## M4sh Initialization. ## +## --------------------- ## + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' +elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then + set -o posix +fi +DUALCASE=1; export DUALCASE # for MKS sh + +# Support unset when possible. +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + as_unset=unset +else + as_unset=false +fi + + +# Work around bugs in pre-3.0 UWIN ksh. +$as_unset ENV MAIL MAILPATH +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +for as_var in \ + LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ + LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ + LC_TELEPHONE LC_TIME +do + if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then + eval $as_var=C; export $as_var + else + $as_unset $as_var + fi +done + +# Required to use basename. +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + + +# Name of the executable. +as_me=`$as_basename "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)$' \| \ + . : '\(.\)' 2>/dev/null || +echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } + /^X\/\(\/\/\)$/{ s//\1/; q; } + /^X\/\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + + +# PATH needs CR, and LINENO needs CR and PATH. +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi + + + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" || { + # Find who we are. Look in the path if we contain no path at all + # relative or not. + case $0 in + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break +done + + ;; + esac + # We did not find ourselves, most probably we were run as `sh COMMAND' + # in which case we are not to be found in the path. + if test "x$as_myself" = x; then + as_myself=$0 + fi + if test ! -f "$as_myself"; then + { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2 + { (exit 1); exit 1; }; } + fi + case $CONFIG_SHELL in + '') + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for as_base in sh bash ksh sh5; do + case $as_dir in + /*) + if ("$as_dir/$as_base" -c ' + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then + $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } + $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } + CONFIG_SHELL=$as_dir/$as_base + export CONFIG_SHELL + exec "$CONFIG_SHELL" "$0" ${1+"$@"} + fi;; + esac + done +done +;; + esac + + # Create $as_me.lineno as a copy of $as_myself, but with $LINENO + # uniformly replaced by the line number. The first 'sed' inserts a + # line-number line before each line; the second 'sed' does the real + # work. The second script uses 'N' to pair each line-number line + # with the numbered line, and appends trailing '-' during + # substitution so that $LINENO is not a special case at line end. + # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the + # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) + sed '=' <$as_myself | + sed ' + N + s,$,-, + : loop + s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, + t loop + s,-$,, + s,^['$as_cr_digits']*\n,, + ' >$as_me.lineno && + chmod +x $as_me.lineno || + { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 + { (exit 1); exit 1; }; } + + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensible to this). + . ./$as_me.lineno + # Exit status is that of the last command. + exit +} + + +case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in + *c*,-n*) ECHO_N= ECHO_C=' +' ECHO_T=' ' ;; + *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; + *) ECHO_N= ECHO_C='\c' ECHO_T= ;; +esac + +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +rm -f conf$$ conf$$.exe conf$$.file +echo >conf$$.file +if ln -s conf$$.file conf$$ 2>/dev/null; then + # We could just check for DJGPP; but this test a) works b) is more generic + # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). + if test -f conf$$.exe; then + # Don't use ln at all; we don't have any links + as_ln_s='cp -p' + else + as_ln_s='ln -s' + fi +elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.file + +if mkdir -p . 2>/dev/null; then + as_mkdir_p=: +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +as_executable_p="test -f" + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +# IFS +# We need space, tab and new line, in precisely that order. +as_nl=' +' +IFS=" $as_nl" + +# CDPATH. +$as_unset CDPATH + + +# Name of the host. +# hostname on some systems (SVR3.2, Linux) returns a bogus exit status, +# so uname gets run too. +ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` + +exec 6>&1 + +# +# Initializations. +# +ac_default_prefix=/usr/local +ac_config_libobj_dir=. +cross_compiling=no +subdirs= +MFLAGS= +MAKEFLAGS= +SHELL=${CONFIG_SHELL-/bin/sh} + +# Maximum number of lines to put in a shell here document. +# This variable seems obsolete. It should probably be removed, and +# only ac_max_sed_lines should be used. +: ${ac_max_here_lines=38} + +# Identity of this package. +PACKAGE_NAME= +PACKAGE_TARNAME= +PACKAGE_VERSION= +PACKAGE_STRING= +PACKAGE_BUGREPORT= + +ac_unique_file="include/gfx/gfx.h" +# Factoring default headers for most tests. +ac_includes_default="\ +#include <stdio.h> +#if HAVE_SYS_TYPES_H +# include <sys/types.h> +#endif +#if HAVE_SYS_STAT_H +# include <sys/stat.h> +#endif +#if STDC_HEADERS +# include <stdlib.h> +# include <stddef.h> +#else +# if HAVE_STDLIB_H +# include <stdlib.h> +# endif +#endif +#if HAVE_STRING_H +# if !STDC_HEADERS && HAVE_MEMORY_H +# include <memory.h> +# endif +# include <string.h> +#endif +#if HAVE_STRINGS_H +# include <strings.h> +#endif +#if HAVE_INTTYPES_H +# include <inttypes.h> +#else +# if HAVE_STDINT_H +# include <stdint.h> +# endif +#endif +#if HAVE_UNISTD_H +# include <unistd.h> +#endif" + +ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT CPP CXX CXXFLAGS ac_ct_CXX CXXCPP RANLIB ac_ct_RANLIB RM FLTKCONFIG CC_DEPEND CXX_DEPEND IMG_LIBS EGREP X_CFLAGS X_LIBS X_PRE_LIBS X_EXTRA_LIBS X_CORE X_DCORE GL_LIBS FLTK_LIBS ALLOCA LIBOBJS LTLIBOBJS' +ac_subst_files='' + +# Initialize some variables set by options. +ac_init_help= +ac_init_version=false +# The variables have the same names as the options, with +# dashes changed to underlines. +cache_file=/dev/null +exec_prefix=NONE +no_create= +no_recursion= +prefix=NONE +program_prefix=NONE +program_suffix=NONE +program_transform_name=s,x,x, +silent= +site= +srcdir= +verbose= +x_includes=NONE +x_libraries=NONE + +# Installation directory options. +# These are left unexpanded so users can "make install exec_prefix=/foo" +# and all the variables that are supposed to be based on exec_prefix +# by default will actually change. +# Use braces instead of parens because sh, perl, etc. also accept them. +bindir='${exec_prefix}/bin' +sbindir='${exec_prefix}/sbin' +libexecdir='${exec_prefix}/libexec' +datadir='${prefix}/share' +sysconfdir='${prefix}/etc' +sharedstatedir='${prefix}/com' +localstatedir='${prefix}/var' +libdir='${exec_prefix}/lib' +includedir='${prefix}/include' +oldincludedir='/usr/include' +infodir='${prefix}/info' +mandir='${prefix}/man' + +ac_prev= +for ac_option +do + # If the previous option needs an argument, assign it. + if test -n "$ac_prev"; then + eval "$ac_prev=\$ac_option" + ac_prev= + continue + fi + + ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'` + + # Accept the important Cygnus configure options, so we can diagnose typos. + + case $ac_option in + + -bindir | --bindir | --bindi | --bind | --bin | --bi) + ac_prev=bindir ;; + -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) + bindir=$ac_optarg ;; + + -build | --build | --buil | --bui | --bu) + ac_prev=build_alias ;; + -build=* | --build=* | --buil=* | --bui=* | --bu=*) + build_alias=$ac_optarg ;; + + -cache-file | --cache-file | --cache-fil | --cache-fi \ + | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) + ac_prev=cache_file ;; + -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ + | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) + cache_file=$ac_optarg ;; + + --config-cache | -C) + cache_file=config.cache ;; + + -datadir | --datadir | --datadi | --datad | --data | --dat | --da) + ac_prev=datadir ;; + -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ + | --da=*) + datadir=$ac_optarg ;; + + -disable-* | --disable-*) + ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid feature name: $ac_feature" >&2 + { (exit 1); exit 1; }; } + ac_feature=`echo $ac_feature | sed 's/-/_/g'` + eval "enable_$ac_feature=no" ;; + + -enable-* | --enable-*) + ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid feature name: $ac_feature" >&2 + { (exit 1); exit 1; }; } + ac_feature=`echo $ac_feature | sed 's/-/_/g'` + case $ac_option in + *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; + *) ac_optarg=yes ;; + esac + eval "enable_$ac_feature='$ac_optarg'" ;; + + -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ + | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ + | --exec | --exe | --ex) + ac_prev=exec_prefix ;; + -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ + | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ + | --exec=* | --exe=* | --ex=*) + exec_prefix=$ac_optarg ;; + + -gas | --gas | --ga | --g) + # Obsolete; use --with-gas. + with_gas=yes ;; + + -help | --help | --hel | --he | -h) + ac_init_help=long ;; + -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) + ac_init_help=recursive ;; + -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) + ac_init_help=short ;; + + -host | --host | --hos | --ho) + ac_prev=host_alias ;; + -host=* | --host=* | --hos=* | --ho=*) + host_alias=$ac_optarg ;; + + -includedir | --includedir | --includedi | --included | --include \ + | --includ | --inclu | --incl | --inc) + ac_prev=includedir ;; + -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ + | --includ=* | --inclu=* | --incl=* | --inc=*) + includedir=$ac_optarg ;; + + -infodir | --infodir | --infodi | --infod | --info | --inf) + ac_prev=infodir ;; + -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) + infodir=$ac_optarg ;; + + -libdir | --libdir | --libdi | --libd) + ac_prev=libdir ;; + -libdir=* | --libdir=* | --libdi=* | --libd=*) + libdir=$ac_optarg ;; + + -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ + | --libexe | --libex | --libe) + ac_prev=libexecdir ;; + -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ + | --libexe=* | --libex=* | --libe=*) + libexecdir=$ac_optarg ;; + + -localstatedir | --localstatedir | --localstatedi | --localstated \ + | --localstate | --localstat | --localsta | --localst \ + | --locals | --local | --loca | --loc | --lo) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ + | --localstate=* | --localstat=* | --localsta=* | --localst=* \ + | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) + localstatedir=$ac_optarg ;; + + -mandir | --mandir | --mandi | --mand | --man | --ma | --m) + ac_prev=mandir ;; + -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) + mandir=$ac_optarg ;; + + -nfp | --nfp | --nf) + # Obsolete; use --without-fp. + with_fp=no ;; + + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c | -n) + no_create=yes ;; + + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) + no_recursion=yes ;; + + -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ + | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ + | --oldin | --oldi | --old | --ol | --o) + ac_prev=oldincludedir ;; + -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ + | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ + | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) + oldincludedir=$ac_optarg ;; + + -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) + ac_prev=prefix ;; + -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) + prefix=$ac_optarg ;; + + -program-prefix | --program-prefix | --program-prefi | --program-pref \ + | --program-pre | --program-pr | --program-p) + ac_prev=program_prefix ;; + -program-prefix=* | --program-prefix=* | --program-prefi=* \ + | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) + program_prefix=$ac_optarg ;; + + -program-suffix | --program-suffix | --program-suffi | --program-suff \ + | --program-suf | --program-su | --program-s) + ac_prev=program_suffix ;; + -program-suffix=* | --program-suffix=* | --program-suffi=* \ + | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) + program_suffix=$ac_optarg ;; + + -program-transform-name | --program-transform-name \ + | --program-transform-nam | --program-transform-na \ + | --program-transform-n | --program-transform- \ + | --program-transform | --program-transfor \ + | --program-transfo | --program-transf \ + | --program-trans | --program-tran \ + | --progr-tra | --program-tr | --program-t) + ac_prev=program_transform_name ;; + -program-transform-name=* | --program-transform-name=* \ + | --program-transform-nam=* | --program-transform-na=* \ + | --program-transform-n=* | --program-transform-=* \ + | --program-transform=* | --program-transfor=* \ + | --program-transfo=* | --program-transf=* \ + | --program-trans=* | --program-tran=* \ + | --progr-tra=* | --program-tr=* | --program-t=*) + program_transform_name=$ac_optarg ;; + + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + silent=yes ;; + + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) + ac_prev=sbindir ;; + -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ + | --sbi=* | --sb=*) + sbindir=$ac_optarg ;; + + -sharedstatedir | --sharedstatedir | --sharedstatedi \ + | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ + | --sharedst | --shareds | --shared | --share | --shar \ + | --sha | --sh) + ac_prev=sharedstatedir ;; + -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ + | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ + | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ + | --sha=* | --sh=*) + sharedstatedir=$ac_optarg ;; + + -site | --site | --sit) + ac_prev=site ;; + -site=* | --site=* | --sit=*) + site=$ac_optarg ;; + + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) + ac_prev=srcdir ;; + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) + srcdir=$ac_optarg ;; + + -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ + | --syscon | --sysco | --sysc | --sys | --sy) + ac_prev=sysconfdir ;; + -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ + | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) + sysconfdir=$ac_optarg ;; + + -target | --target | --targe | --targ | --tar | --ta | --t) + ac_prev=target_alias ;; + -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) + target_alias=$ac_optarg ;; + + -v | -verbose | --verbose | --verbos | --verbo | --verb) + verbose=yes ;; + + -version | --version | --versio | --versi | --vers | -V) + ac_init_version=: ;; + + -with-* | --with-*) + ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid package name: $ac_package" >&2 + { (exit 1); exit 1; }; } + ac_package=`echo $ac_package| sed 's/-/_/g'` + case $ac_option in + *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; + *) ac_optarg=yes ;; + esac + eval "with_$ac_package='$ac_optarg'" ;; + + -without-* | --without-*) + ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid package name: $ac_package" >&2 + { (exit 1); exit 1; }; } + ac_package=`echo $ac_package | sed 's/-/_/g'` + eval "with_$ac_package=no" ;; + + --x) + # Obsolete; use --with-x. + with_x=yes ;; + + -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ + | --x-incl | --x-inc | --x-in | --x-i) + ac_prev=x_includes ;; + -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ + | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) + x_includes=$ac_optarg ;; + + -x-libraries | --x-libraries | --x-librarie | --x-librari \ + | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) + ac_prev=x_libraries ;; + -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ + | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) + x_libraries=$ac_optarg ;; + + -*) { echo "$as_me: error: unrecognized option: $ac_option +Try \`$0 --help' for more information." >&2 + { (exit 1); exit 1; }; } + ;; + + *=*) + ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` + # Reject names that are not valid shell variable names. + expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 + { (exit 1); exit 1; }; } + ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` + eval "$ac_envvar='$ac_optarg'" + export $ac_envvar ;; + + *) + # FIXME: should be removed in autoconf 3.0. + echo "$as_me: WARNING: you should use --build, --host, --target" >&2 + expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && + echo "$as_me: WARNING: invalid host type: $ac_option" >&2 + : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} + ;; + + esac +done + +if test -n "$ac_prev"; then + ac_option=--`echo $ac_prev | sed 's/_/-/g'` + { echo "$as_me: error: missing argument to $ac_option" >&2 + { (exit 1); exit 1; }; } +fi + +# Be sure to have absolute paths. +for ac_var in exec_prefix prefix +do + eval ac_val=$`echo $ac_var` + case $ac_val in + [\\/$]* | ?:[\\/]* | NONE | '' ) ;; + *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 + { (exit 1); exit 1; }; };; + esac +done + +# Be sure to have absolute paths. +for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \ + localstatedir libdir includedir oldincludedir infodir mandir +do + eval ac_val=$`echo $ac_var` + case $ac_val in + [\\/$]* | ?:[\\/]* ) ;; + *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 + { (exit 1); exit 1; }; };; + esac +done + +# There might be people who depend on the old broken behavior: `$host' +# used to hold the argument of --host etc. +# FIXME: To remove some day. +build=$build_alias +host=$host_alias +target=$target_alias + +# FIXME: To remove some day. +if test "x$host_alias" != x; then + if test "x$build_alias" = x; then + cross_compiling=maybe + echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. + If a cross compiler is detected then cross compile mode will be used." >&2 + elif test "x$build_alias" != "x$host_alias"; then + cross_compiling=yes + fi +fi + +ac_tool_prefix= +test -n "$host_alias" && ac_tool_prefix=$host_alias- + +test "$silent" = yes && exec 6>/dev/null + + +# Find the source files, if location was not specified. +if test -z "$srcdir"; then + ac_srcdir_defaulted=yes + # Try the directory containing this script, then its parent. + ac_confdir=`(dirname "$0") 2>/dev/null || +$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$0" : 'X\(//\)[^/]' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$0" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + srcdir=$ac_confdir + if test ! -r $srcdir/$ac_unique_file; then + srcdir=.. + fi +else + ac_srcdir_defaulted=no +fi +if test ! -r $srcdir/$ac_unique_file; then + if test "$ac_srcdir_defaulted" = yes; then + { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2 + { (exit 1); exit 1; }; } + else + { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 + { (exit 1); exit 1; }; } + fi +fi +(cd $srcdir && test -r ./$ac_unique_file) 2>/dev/null || + { echo "$as_me: error: sources are in $srcdir, but \`cd $srcdir' does not work" >&2 + { (exit 1); exit 1; }; } +srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'` +ac_env_build_alias_set=${build_alias+set} +ac_env_build_alias_value=$build_alias +ac_cv_env_build_alias_set=${build_alias+set} +ac_cv_env_build_alias_value=$build_alias +ac_env_host_alias_set=${host_alias+set} +ac_env_host_alias_value=$host_alias +ac_cv_env_host_alias_set=${host_alias+set} +ac_cv_env_host_alias_value=$host_alias +ac_env_target_alias_set=${target_alias+set} +ac_env_target_alias_value=$target_alias +ac_cv_env_target_alias_set=${target_alias+set} +ac_cv_env_target_alias_value=$target_alias +ac_env_CC_set=${CC+set} +ac_env_CC_value=$CC +ac_cv_env_CC_set=${CC+set} +ac_cv_env_CC_value=$CC +ac_env_CFLAGS_set=${CFLAGS+set} +ac_env_CFLAGS_value=$CFLAGS +ac_cv_env_CFLAGS_set=${CFLAGS+set} +ac_cv_env_CFLAGS_value=$CFLAGS +ac_env_LDFLAGS_set=${LDFLAGS+set} +ac_env_LDFLAGS_value=$LDFLAGS +ac_cv_env_LDFLAGS_set=${LDFLAGS+set} +ac_cv_env_LDFLAGS_value=$LDFLAGS +ac_env_CPPFLAGS_set=${CPPFLAGS+set} +ac_env_CPPFLAGS_value=$CPPFLAGS +ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set} +ac_cv_env_CPPFLAGS_value=$CPPFLAGS +ac_env_CPP_set=${CPP+set} +ac_env_CPP_value=$CPP +ac_cv_env_CPP_set=${CPP+set} +ac_cv_env_CPP_value=$CPP +ac_env_CXX_set=${CXX+set} +ac_env_CXX_value=$CXX +ac_cv_env_CXX_set=${CXX+set} +ac_cv_env_CXX_value=$CXX +ac_env_CXXFLAGS_set=${CXXFLAGS+set} +ac_env_CXXFLAGS_value=$CXXFLAGS +ac_cv_env_CXXFLAGS_set=${CXXFLAGS+set} +ac_cv_env_CXXFLAGS_value=$CXXFLAGS +ac_env_CXXCPP_set=${CXXCPP+set} +ac_env_CXXCPP_value=$CXXCPP +ac_cv_env_CXXCPP_set=${CXXCPP+set} +ac_cv_env_CXXCPP_value=$CXXCPP + +# +# Report the --help message. +# +if test "$ac_init_help" = "long"; then + # Omit some internal or obsolete options to make the list less imposing. + # This message is too long to be a string in the A/UX 3.1 sh. + cat <<_ACEOF +\`configure' configures this package to adapt to many kinds of systems. + +Usage: $0 [OPTION]... [VAR=VALUE]... + +To assign environment variables (e.g., CC, CFLAGS...), specify them as +VAR=VALUE. See below for descriptions of some of the useful variables. + +Defaults for the options are specified in brackets. + +Configuration: + -h, --help display this help and exit + --help=short display options specific to this package + --help=recursive display the short help of all the included packages + -V, --version display version information and exit + -q, --quiet, --silent do not print \`checking...' messages + --cache-file=FILE cache test results in FILE [disabled] + -C, --config-cache alias for \`--cache-file=config.cache' + -n, --no-create do not create output files + --srcdir=DIR find the sources in DIR [configure dir or \`..'] + +_ACEOF + + cat <<_ACEOF +Installation directories: + --prefix=PREFIX install architecture-independent files in PREFIX + [$ac_default_prefix] + --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX + [PREFIX] + +By default, \`make install' will install all the files in +\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify +an installation prefix other than \`$ac_default_prefix' using \`--prefix', +for instance \`--prefix=\$HOME'. + +For better control, use the options below. + +Fine tuning of the installation directories: + --bindir=DIR user executables [EPREFIX/bin] + --sbindir=DIR system admin executables [EPREFIX/sbin] + --libexecdir=DIR program executables [EPREFIX/libexec] + --datadir=DIR read-only architecture-independent data [PREFIX/share] + --sysconfdir=DIR read-only single-machine data [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] + --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --libdir=DIR object code libraries [EPREFIX/lib] + --includedir=DIR C header files [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc [/usr/include] + --infodir=DIR info documentation [PREFIX/info] + --mandir=DIR man documentation [PREFIX/man] +_ACEOF + + cat <<\_ACEOF + +X features: + --x-includes=DIR X include files are in DIR + --x-libraries=DIR X library files are in DIR +_ACEOF +fi + +if test -n "$ac_init_help"; then + + cat <<\_ACEOF + +Optional Features: + --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) + --enable-FEATURE[=ARG] include FEATURE [ARG=yes] + --enable-gzstream Allow for automatic (de)compression + --disable-warnings Disable GCC warning (default to on) + --enable-cygwin Use the Cygwin libraries (default=yes) + +Optional Packages: + --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] + --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) + --with-libtiff-lzw Use the libtiff LZW compression kit + --with-local=DIR Use libraries in DIR (default /usr/local) + --with-x use the X Window System + +Some influential environment variables: + CC C compiler command + CFLAGS C compiler flags + LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a + nonstandard directory <lib dir> + CPPFLAGS C/C++ preprocessor flags, e.g. -I<include dir> if you have + headers in a nonstandard directory <include dir> + CPP C preprocessor + CXX C++ compiler command + CXXFLAGS C++ compiler flags + CXXCPP C++ preprocessor + +Use these variables to override the choices made by `configure' or to help +it to find libraries and programs with nonstandard names/locations. + +_ACEOF +fi + +if test "$ac_init_help" = "recursive"; then + # If there are subdirs, report their specific --help. + ac_popdir=`pwd` + for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue + test -d $ac_dir || continue + ac_builddir=. + +if test "$ac_dir" != .; then + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + # A "../" for each directory in $ac_dir_suffix. + ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +else + ac_dir_suffix= ac_top_builddir= +fi + +case $srcdir in + .) # No --srcdir option. We are building in place. + ac_srcdir=. + if test -z "$ac_top_builddir"; then + ac_top_srcdir=. + else + ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` + fi ;; + [\\/]* | ?:[\\/]* ) # Absolute path. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir ;; + *) # Relative path. + ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_builddir$srcdir ;; +esac + +# Do not use `cd foo && pwd` to compute absolute paths, because +# the directories may not exist. +case `pwd` in +.) ac_abs_builddir="$ac_dir";; +*) + case "$ac_dir" in + .) ac_abs_builddir=`pwd`;; + [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; + *) ac_abs_builddir=`pwd`/"$ac_dir";; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_builddir=${ac_top_builddir}.;; +*) + case ${ac_top_builddir}. in + .) ac_abs_top_builddir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; + *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_srcdir=$ac_srcdir;; +*) + case $ac_srcdir in + .) ac_abs_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; + *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_srcdir=$ac_top_srcdir;; +*) + case $ac_top_srcdir in + .) ac_abs_top_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; + *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; + esac;; +esac + + cd $ac_dir + # Check for guested configure; otherwise get Cygnus style configure. + if test -f $ac_srcdir/configure.gnu; then + echo + $SHELL $ac_srcdir/configure.gnu --help=recursive + elif test -f $ac_srcdir/configure; then + echo + $SHELL $ac_srcdir/configure --help=recursive + elif test -f $ac_srcdir/configure.ac || + test -f $ac_srcdir/configure.in; then + echo + $ac_configure --help + else + echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + fi + cd $ac_popdir + done +fi + +test -n "$ac_init_help" && exit 0 +if $ac_init_version; then + cat <<\_ACEOF + +Copyright (C) 2003 Free Software Foundation, Inc. +This configure script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it. +_ACEOF + exit 0 +fi +exec 5>config.log +cat >&5 <<_ACEOF +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. + +It was created by $as_me, which was +generated by GNU Autoconf 2.59. Invocation command line was + + $ $0 $@ + +_ACEOF +{ +cat <<_ASUNAME +## --------- ## +## Platform. ## +## --------- ## + +hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` + +/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` +hostinfo = `(hostinfo) 2>/dev/null || echo unknown` +/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` +/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` + +_ASUNAME + +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + echo "PATH: $as_dir" +done + +} >&5 + +cat >&5 <<_ACEOF + + +## ----------- ## +## Core tests. ## +## ----------- ## + +_ACEOF + + +# Keep a trace of the command line. +# Strip out --no-create and --no-recursion so they do not pile up. +# Strip out --silent because we don't want to record it for future runs. +# Also quote any args containing shell meta-characters. +# Make two passes to allow for proper duplicate-argument suppression. +ac_configure_args= +ac_configure_args0= +ac_configure_args1= +ac_sep= +ac_must_keep_next=false +for ac_pass in 1 2 +do + for ac_arg + do + case $ac_arg in + -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + continue ;; + *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) + ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + case $ac_pass in + 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;; + 2) + ac_configure_args1="$ac_configure_args1 '$ac_arg'" + if test $ac_must_keep_next = true; then + ac_must_keep_next=false # Got value, back to normal. + else + case $ac_arg in + *=* | --config-cache | -C | -disable-* | --disable-* \ + | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ + | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ + | -with-* | --with-* | -without-* | --without-* | --x) + case "$ac_configure_args0 " in + "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; + esac + ;; + -* ) ac_must_keep_next=true ;; + esac + fi + ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'" + # Get rid of the leading space. + ac_sep=" " + ;; + esac + done +done +$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; } +$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; } + +# When interrupted or exit'd, cleanup temporary files, and complete +# config.log. We remove comments because anyway the quotes in there +# would cause problems or look ugly. +# WARNING: Be sure not to use single quotes in there, as some shells, +# such as our DU 5.0 friend, will then `close' the trap. +trap 'exit_status=$? + # Save into config.log some information that might help in debugging. + { + echo + + cat <<\_ASBOX +## ---------------- ## +## Cache variables. ## +## ---------------- ## +_ASBOX + echo + # The following way of writing the cache mishandles newlines in values, +{ + (set) 2>&1 | + case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in + *ac_space=\ *) + sed -n \ + "s/'"'"'/'"'"'\\\\'"'"''"'"'/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p" + ;; + *) + sed -n \ + "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" + ;; + esac; +} + echo + + cat <<\_ASBOX +## ----------------- ## +## Output variables. ## +## ----------------- ## +_ASBOX + echo + for ac_var in $ac_subst_vars + do + eval ac_val=$`echo $ac_var` + echo "$ac_var='"'"'$ac_val'"'"'" + done | sort + echo + + if test -n "$ac_subst_files"; then + cat <<\_ASBOX +## ------------- ## +## Output files. ## +## ------------- ## +_ASBOX + echo + for ac_var in $ac_subst_files + do + eval ac_val=$`echo $ac_var` + echo "$ac_var='"'"'$ac_val'"'"'" + done | sort + echo + fi + + if test -s confdefs.h; then + cat <<\_ASBOX +## ----------- ## +## confdefs.h. ## +## ----------- ## +_ASBOX + echo + sed "/^$/d" confdefs.h | sort + echo + fi + test "$ac_signal" != 0 && + echo "$as_me: caught signal $ac_signal" + echo "$as_me: exit $exit_status" + } >&5 + rm -f core *.core && + rm -rf conftest* confdefs* conf$$* $ac_clean_files && + exit $exit_status + ' 0 +for ac_signal in 1 2 13 15; do + trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal +done +ac_signal=0 + +# confdefs.h avoids OS command line length limits that DEFS can exceed. +rm -rf conftest* confdefs.h +# AIX cpp loses on an empty file, so make sure it contains at least a newline. +echo >confdefs.h + +# Predefined preprocessor variables. + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_NAME "$PACKAGE_NAME" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_TARNAME "$PACKAGE_TARNAME" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_VERSION "$PACKAGE_VERSION" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_STRING "$PACKAGE_STRING" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" +_ACEOF + + +# Let the site file select an alternate cache file if it wants to. +# Prefer explicitly selected file to automatically selected ones. +if test -z "$CONFIG_SITE"; then + if test "x$prefix" != xNONE; then + CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" + else + CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" + fi +fi +for ac_site_file in $CONFIG_SITE; do + if test -r "$ac_site_file"; then + { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 +echo "$as_me: loading site script $ac_site_file" >&6;} + sed 's/^/| /' "$ac_site_file" >&5 + . "$ac_site_file" + fi +done + +if test -r "$cache_file"; then + # Some versions of bash will fail to source /dev/null (special + # files actually), so we avoid doing that. + if test -f "$cache_file"; then + { echo "$as_me:$LINENO: loading cache $cache_file" >&5 +echo "$as_me: loading cache $cache_file" >&6;} + case $cache_file in + [\\/]* | ?:[\\/]* ) . $cache_file;; + *) . ./$cache_file;; + esac + fi +else + { echo "$as_me:$LINENO: creating cache $cache_file" >&5 +echo "$as_me: creating cache $cache_file" >&6;} + >$cache_file +fi + +# Check that the precious variables saved in the cache have kept the same +# value. +ac_cache_corrupted=false +for ac_var in `(set) 2>&1 | + sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do + eval ac_old_set=\$ac_cv_env_${ac_var}_set + eval ac_new_set=\$ac_env_${ac_var}_set + eval ac_old_val="\$ac_cv_env_${ac_var}_value" + eval ac_new_val="\$ac_env_${ac_var}_value" + case $ac_old_set,$ac_new_set in + set,) + { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,set) + { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5 +echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,);; + *) + if test "x$ac_old_val" != "x$ac_new_val"; then + { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 +echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} + { echo "$as_me:$LINENO: former value: $ac_old_val" >&5 +echo "$as_me: former value: $ac_old_val" >&2;} + { echo "$as_me:$LINENO: current value: $ac_new_val" >&5 +echo "$as_me: current value: $ac_new_val" >&2;} + ac_cache_corrupted=: + fi;; + esac + # Pass precious variables to config.status. + if test "$ac_new_set" = set; then + case $ac_new_val in + *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) + ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *) ac_arg=$ac_var=$ac_new_val ;; + esac + case " $ac_configure_args " in + *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. + *) ac_configure_args="$ac_configure_args '$ac_arg'" ;; + esac + fi +done +if $ac_cache_corrupted; then + { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5 +echo "$as_me: error: changes in the environment can compromise the build" >&2;} + { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 +echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} + { (exit 1); exit 1; }; } +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + + + + + + + + + + + + + + + + + + ac_config_headers="$ac_config_headers include/gfx/config.h" + + +sys=`uname` + + + +# Check whether --with-libtiff-lzw or --without-libtiff-lzw was given. +if test "${with_libtiff_lzw+set}" = set; then + withval="$with_libtiff_lzw" + cat >>confdefs.h <<\_ACEOF +#define HAVE_LIBTIFF_LZW 1 +_ACEOF + +fi; + + +# Check whether --with-local or --without-local was given. +if test "${with_local+set}" = set; then + withval="$with_local" + if test $withval = "yes"; then withval="/usr/local"; fi + CPPFLAGS="-I${withval}/include" + LDFLAGS="-L${withval}/lib" +fi; + +# Check whether --enable-gzstream or --disable-gzstream was given. +if test "${enable_gzstream+set}" = set; then + enableval="$enable_gzstream" + +fi; + +if test "$enable_gzstream" = "yes"; then + cat >>confdefs.h <<\_ACEOF +#define HAVE_GZSTREAM 1 +_ACEOF + +fi + +# Check whether --enable-warnings or --disable-warnings was given. +if test "${enable_warnings+set}" = set; then + enableval="$enable_warnings" + +else + enable_warnings="yes" +fi; + +case $sys in + CYGWIN*|cygwin*) + # Check whether --enable-cygwin or --disable-cygwin was given. +if test "${enable_cygwin+set}" = set; then + enableval="$enable_cygwin" + +fi; + + if test "$enable_cygwin" = "no"; then + CFLAGS="$CFLAGS -mno-cygwin" + CPPFLAGS="$CPPFLAGS -mno-cygwin" + CXXFLAGS="$CXXFLAGS -mno-cygwin" + fi + ;; +esac + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. +set dummy ${ac_tool_prefix}gcc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}gcc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="gcc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + CC=$ac_ct_CC +else + CC="$ac_cv_prog_CC" +fi + +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. +set dummy ${ac_tool_prefix}cc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}cc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="cc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + CC=$ac_ct_CC +else + CC="$ac_cv_prog_CC" +fi + +fi +if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + ac_prog_rejected=no +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue + fi + ac_cv_prog_CC="cc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC + shift + if test $# != 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift + ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" + fi +fi +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + for ac_prog in cl + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in cl +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$ac_ct_CC" && break +done + + CC=$ac_ct_CC +fi + +fi + + +test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH +See \`config.log' for more details." >&5 +echo "$as_me: error: no acceptable C compiler found in \$PATH +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } + +# Provide some information about the compiler. +echo "$as_me:$LINENO:" \ + "checking for C compiler version" >&5 +ac_compiler=`set X $ac_compile; echo $2` +{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version </dev/null >&5\"") >&5 + (eval $ac_compiler --version </dev/null >&5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v </dev/null >&5\"") >&5 + (eval $ac_compiler -v </dev/null >&5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V </dev/null >&5\"") >&5 + (eval $ac_compiler -V </dev/null >&5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files a.out a.exe b.out" +# Try to create an executable without -o first, disregard a.out. +# It will help us diagnose broken compilers, and finding out an intuition +# of exeext. +echo "$as_me:$LINENO: checking for C compiler default output file name" >&5 +echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6 +ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` +if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5 + (eval $ac_link_default) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + # Find the output, starting from the most likely. This scheme is +# not robust to junk in `.', hence go to wildcards (a.*) only as a last +# resort. + +# Be careful to initialize this variable, since it used to be cached. +# Otherwise an old cache value of `no' led to `EXEEXT = no' in a Makefile. +ac_cv_exeext= +# b.out is created by i960 compilers. +for ac_file in a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out +do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) + ;; + conftest.$ac_ext ) + # This is the source file. + ;; + [ab].out ) + # We found the default executable, but exeext='' is most + # certainly right. + break;; + *.* ) + ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + # FIXME: I believe we export ac_cv_exeext for Libtool, + # but it would be cool to find out if it's true. Does anybody + # maintain Libtool? --akim. + export ac_cv_exeext + break;; + * ) + break;; + esac +done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { echo "$as_me:$LINENO: error: C compiler cannot create executables +See \`config.log' for more details." >&5 +echo "$as_me: error: C compiler cannot create executables +See \`config.log' for more details." >&2;} + { (exit 77); exit 77; }; } +fi + +ac_exeext=$ac_cv_exeext +echo "$as_me:$LINENO: result: $ac_file" >&5 +echo "${ECHO_T}$ac_file" >&6 + +# Check the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +echo "$as_me:$LINENO: checking whether the C compiler works" >&5 +echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6 +# FIXME: These cross compiler hacks should be removed for Autoconf 3.0 +# If not cross compiling, check that we can run a simple program. +if test "$cross_compiling" != yes; then + if { ac_try='./$ac_file' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + cross_compiling=no + else + if test "$cross_compiling" = maybe; then + cross_compiling=yes + else + { { echo "$as_me:$LINENO: error: cannot run C compiled programs. +If you meant to cross compile, use \`--host'. +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot run C compiled programs. +If you meant to cross compile, use \`--host'. +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } + fi + fi +fi +echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + +rm -f a.out a.exe conftest$ac_cv_exeext b.out +ac_clean_files=$ac_clean_files_save +# Check the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 +echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6 +echo "$as_me:$LINENO: result: $cross_compiling" >&5 +echo "${ECHO_T}$cross_compiling" >&6 + +echo "$as_me:$LINENO: checking for suffix of executables" >&5 +echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + # If both `conftest.exe' and `conftest' are `present' (well, observable) +# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will +# work properly (i.e., refer to `conftest.exe'), while it won't with +# `rm'. +for ac_file in conftest.exe conftest conftest.*; do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;; + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + export ac_cv_exeext + break;; + * ) break;; + esac +done +else + { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute suffix of executables: cannot compile and link +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi + +rm -f conftest$ac_cv_exeext +echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 +echo "${ECHO_T}$ac_cv_exeext" >&6 + +rm -f conftest.$ac_ext +EXEEXT=$ac_cv_exeext +ac_exeext=$EXEEXT +echo "$as_me:$LINENO: checking for suffix of object files" >&5 +echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6 +if test "${ac_cv_objext+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.o conftest.obj +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg ) ;; + *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` + break;; + esac +done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute suffix of object files: cannot compile +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi + +rm -f conftest.$ac_cv_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 +echo "${ECHO_T}$ac_cv_objext" >&6 +OBJEXT=$ac_cv_objext +ac_objext=$OBJEXT +echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 +echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6 +if test "${ac_cv_c_compiler_gnu+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_compiler_gnu=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_compiler_gnu=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu + +fi +echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 +echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6 +GCC=`test $ac_compiler_gnu = yes && echo yes` +ac_test_CFLAGS=${CFLAGS+set} +ac_save_CFLAGS=$CFLAGS +CFLAGS="-g" +echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 +echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6 +if test "${ac_cv_prog_cc_g+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_prog_cc_g=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_prog_cc_g=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 +echo "${ECHO_T}$ac_cv_prog_cc_g" >&6 +if test "$ac_test_CFLAGS" = set; then + CFLAGS=$ac_save_CFLAGS +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi +echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5 +echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6 +if test "${ac_cv_prog_cc_stdc+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_prog_cc_stdc=no +ac_save_CC=$CC +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <stdarg.h> +#include <stdio.h> +#include <sys/types.h> +#include <sys/stat.h> +/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ +struct buf { int x; }; +FILE * (*rcsopen) (struct buf *, struct stat *, int); +static char *e (p, i) + char **p; + int i; +{ + return p[i]; +} +static char *f (char * (*g) (char **, int), char **p, ...) +{ + char *s; + va_list v; + va_start (v,p); + s = g (p, va_arg (v,int)); + va_end (v); + return s; +} + +/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has + function prototypes and stuff, but not '\xHH' hex character constants. + These don't provoke an error unfortunately, instead are silently treated + as 'x'. The following induces an error, until -std1 is added to get + proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an + array size at least. It's necessary to write '\x00'==0 to get something + that's true only with -std1. */ +int osf4_cc_array ['\x00' == 0 ? 1 : -1]; + +int test (int i, double x); +struct s1 {int (*f) (int a);}; +struct s2 {int (*f) (double a);}; +int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); +int argc; +char **argv; +int +main () +{ +return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; + ; + return 0; +} +_ACEOF +# Don't try gcc -ansi; that turns off useful extensions and +# breaks some systems' header files. +# AIX -qlanglvl=ansi +# Ultrix and OSF/1 -std1 +# HP-UX 10.20 and later -Ae +# HP-UX older versions -Aa -D_HPUX_SOURCE +# SVR4 -Xc -D__EXTENSIONS__ +for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_prog_cc_stdc=$ac_arg +break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext +done +rm -f conftest.$ac_ext conftest.$ac_objext +CC=$ac_save_CC + +fi + +case "x$ac_cv_prog_cc_stdc" in + x|xno) + echo "$as_me:$LINENO: result: none needed" >&5 +echo "${ECHO_T}none needed" >&6 ;; + *) + echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5 +echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6 + CC="$CC $ac_cv_prog_cc_stdc" ;; +esac + +# Some people use a C++ compiler to compile C. Since we use `exit', +# in C++ we need to declare it. In case someone uses the same compiler +# for both compiling C and C++ we need to have the C++ compiler decide +# the declaration of exit, since it's the most demanding environment. +cat >conftest.$ac_ext <<_ACEOF +#ifndef __cplusplus + choke me +#endif +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + for ac_declaration in \ + '' \ + 'extern "C" void std::exit (int) throw (); using std::exit;' \ + 'extern "C" void std::exit (int); using std::exit;' \ + 'extern "C" void exit (int) throw ();' \ + 'extern "C" void exit (int);' \ + 'void exit (int);' +do + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_declaration +#include <stdlib.h> +int +main () +{ +exit (42); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +continue +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_declaration +int +main () +{ +exit (42); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +done +rm -f conftest* +if test -n "$ac_declaration"; then + echo '#ifdef __cplusplus' >>confdefs.h + echo $ac_declaration >>confdefs.h + echo '#endif' >>confdefs.h +fi + +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 +echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6 +# On Suns, sometimes $CPP names a directory. +if test -n "$CPP" && test -d "$CPP"; then + CPP= +fi +if test -z "$CPP"; then + if test "${ac_cv_prog_CPP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # Double quotes because CPP needs to be expanded + for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" + do + ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since + # <limits.h> exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#ifdef __STDC__ +# include <limits.h> +#else +# include <assert.h> +#endif + Syntax error +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.$ac_ext + + # OK, works on sane cases. Now check whether non-existent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <ac_nonexistent.h> +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + # Broken: success on invalid input. +continue +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.err conftest.$ac_ext +if $ac_preproc_ok; then + break +fi + + done + ac_cv_prog_CPP=$CPP + +fi + CPP=$ac_cv_prog_CPP +else + ac_cv_prog_CPP=$CPP +fi +echo "$as_me:$LINENO: result: $CPP" >&5 +echo "${ECHO_T}$CPP" >&6 +ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since + # <limits.h> exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#ifdef __STDC__ +# include <limits.h> +#else +# include <assert.h> +#endif + Syntax error +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.$ac_ext + + # OK, works on sane cases. Now check whether non-existent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <ac_nonexistent.h> +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + # Broken: success on invalid input. +continue +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.err conftest.$ac_ext +if $ac_preproc_ok; then + : +else + { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details." >&5 +echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +ac_ext=cc +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu +if test -n "$ac_tool_prefix"; then + for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CXX+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CXX"; then + ac_cv_prog_CXX="$CXX" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +CXX=$ac_cv_prog_CXX +if test -n "$CXX"; then + echo "$as_me:$LINENO: result: $CXX" >&5 +echo "${ECHO_T}$CXX" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$CXX" && break + done +fi +if test -z "$CXX"; then + ac_ct_CXX=$CXX + for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CXX"; then + ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CXX="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +ac_ct_CXX=$ac_cv_prog_ac_ct_CXX +if test -n "$ac_ct_CXX"; then + echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5 +echo "${ECHO_T}$ac_ct_CXX" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$ac_ct_CXX" && break +done +test -n "$ac_ct_CXX" || ac_ct_CXX="g++" + + CXX=$ac_ct_CXX +fi + + +# Provide some information about the compiler. +echo "$as_me:$LINENO:" \ + "checking for C++ compiler version" >&5 +ac_compiler=`set X $ac_compile; echo $2` +{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version </dev/null >&5\"") >&5 + (eval $ac_compiler --version </dev/null >&5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v </dev/null >&5\"") >&5 + (eval $ac_compiler -v </dev/null >&5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V </dev/null >&5\"") >&5 + (eval $ac_compiler -V </dev/null >&5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + +echo "$as_me:$LINENO: checking whether we are using the GNU C++ compiler" >&5 +echo $ECHO_N "checking whether we are using the GNU C++ compiler... $ECHO_C" >&6 +if test "${ac_cv_cxx_compiler_gnu+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_compiler_gnu=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_compiler_gnu=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_cxx_compiler_gnu=$ac_compiler_gnu + +fi +echo "$as_me:$LINENO: result: $ac_cv_cxx_compiler_gnu" >&5 +echo "${ECHO_T}$ac_cv_cxx_compiler_gnu" >&6 +GXX=`test $ac_compiler_gnu = yes && echo yes` +ac_test_CXXFLAGS=${CXXFLAGS+set} +ac_save_CXXFLAGS=$CXXFLAGS +CXXFLAGS="-g" +echo "$as_me:$LINENO: checking whether $CXX accepts -g" >&5 +echo $ECHO_N "checking whether $CXX accepts -g... $ECHO_C" >&6 +if test "${ac_cv_prog_cxx_g+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_prog_cxx_g=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_prog_cxx_g=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5 +echo "${ECHO_T}$ac_cv_prog_cxx_g" >&6 +if test "$ac_test_CXXFLAGS" = set; then + CXXFLAGS=$ac_save_CXXFLAGS +elif test $ac_cv_prog_cxx_g = yes; then + if test "$GXX" = yes; then + CXXFLAGS="-g -O2" + else + CXXFLAGS="-g" + fi +else + if test "$GXX" = yes; then + CXXFLAGS="-O2" + else + CXXFLAGS= + fi +fi +for ac_declaration in \ + '' \ + 'extern "C" void std::exit (int) throw (); using std::exit;' \ + 'extern "C" void std::exit (int); using std::exit;' \ + 'extern "C" void exit (int) throw ();' \ + 'extern "C" void exit (int);' \ + 'void exit (int);' +do + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_declaration +#include <stdlib.h> +int +main () +{ +exit (42); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +continue +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_declaration +int +main () +{ +exit (42); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +done +rm -f conftest* +if test -n "$ac_declaration"; then + echo '#ifdef __cplusplus' >>confdefs.h + echo $ac_declaration >>confdefs.h + echo '#endif' >>confdefs.h +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +ac_ext=cc +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu +echo "$as_me:$LINENO: checking how to run the C++ preprocessor" >&5 +echo $ECHO_N "checking how to run the C++ preprocessor... $ECHO_C" >&6 +if test -z "$CXXCPP"; then + if test "${ac_cv_prog_CXXCPP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # Double quotes because CXXCPP needs to be expanded + for CXXCPP in "$CXX -E" "/lib/cpp" + do + ac_preproc_ok=false +for ac_cxx_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since + # <limits.h> exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#ifdef __STDC__ +# include <limits.h> +#else +# include <assert.h> +#endif + Syntax error +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_cxx_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.$ac_ext + + # OK, works on sane cases. Now check whether non-existent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <ac_nonexistent.h> +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_cxx_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + # Broken: success on invalid input. +continue +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.err conftest.$ac_ext +if $ac_preproc_ok; then + break +fi + + done + ac_cv_prog_CXXCPP=$CXXCPP + +fi + CXXCPP=$ac_cv_prog_CXXCPP +else + ac_cv_prog_CXXCPP=$CXXCPP +fi +echo "$as_me:$LINENO: result: $CXXCPP" >&5 +echo "${ECHO_T}$CXXCPP" >&6 +ac_preproc_ok=false +for ac_cxx_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since + # <limits.h> exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#ifdef __STDC__ +# include <limits.h> +#else +# include <assert.h> +#endif + Syntax error +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_cxx_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.$ac_ext + + # OK, works on sane cases. Now check whether non-existent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <ac_nonexistent.h> +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_cxx_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + # Broken: success on invalid input. +continue +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.err conftest.$ac_ext +if $ac_preproc_ok; then + : +else + { { echo "$as_me:$LINENO: error: C++ preprocessor \"$CXXCPP\" fails sanity check +See \`config.log' for more details." >&5 +echo "$as_me: error: C++ preprocessor \"$CXXCPP\" fails sanity check +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. +set dummy ${ac_tool_prefix}ranlib; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_RANLIB+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$RANLIB"; then + ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +RANLIB=$ac_cv_prog_RANLIB +if test -n "$RANLIB"; then + echo "$as_me:$LINENO: result: $RANLIB" >&5 +echo "${ECHO_T}$RANLIB" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_RANLIB"; then + ac_ct_RANLIB=$RANLIB + # Extract the first word of "ranlib", so it can be a program name with args. +set dummy ranlib; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_RANLIB"; then + ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_RANLIB="ranlib" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":" +fi +fi +ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB +if test -n "$ac_ct_RANLIB"; then + echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 +echo "${ECHO_T}$ac_ct_RANLIB" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + RANLIB=$ac_ct_RANLIB +else + RANLIB="$ac_cv_prog_RANLIB" +fi + +ac_ext=cc +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + +# Extract the first word of "rm", so it can be a program name with args. +set dummy rm; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_path_RM+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $RM in + [\\/]* | ?:[\\/]*) + ac_cv_path_RM="$RM" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_RM="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + ;; +esac +fi +RM=$ac_cv_path_RM + +if test -n "$RM"; then + echo "$as_me:$LINENO: result: $RM" >&5 +echo "${ECHO_T}$RM" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +# Extract the first word of "fltk-config", so it can be a program name with args. +set dummy fltk-config; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_FLTKCONFIG+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$FLTKCONFIG"; then + ac_cv_prog_FLTKCONFIG="$FLTKCONFIG" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_FLTKCONFIG="fltk-config" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + test -z "$ac_cv_prog_FLTKCONFIG" && ac_cv_prog_FLTKCONFIG=":" +fi +fi +FLTKCONFIG=$ac_cv_prog_FLTKCONFIG +if test -n "$FLTKCONFIG"; then + echo "$as_me:$LINENO: result: $FLTKCONFIG" >&5 +echo "${ECHO_T}$FLTKCONFIG" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + +if test $GCC = "yes"; then + CC_DEPEND="\$(CC) -M" + CXX_DEPEND="\$(CXX) -M" +else + CC_DEPEND="makedepend" + CXX_DEPEND="makedepend" +fi + + + + +if test $GCC = "yes" -a "$enable_warnings" = "yes"; then + warning="-Wall -Wno-sign-compare" + CPPFLAGS="$CPPFLAGS $warning" +fi + + + + +echo "$as_me:$LINENO: checking for sqrt in -lm" >&5 +echo $ECHO_N "checking for sqrt in -lm... $ECHO_C" >&6 +if test "${ac_cv_lib_m_sqrt+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lm $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char sqrt (); +int +main () +{ +sqrt (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_m_sqrt=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_m_sqrt=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_m_sqrt" >&5 +echo "${ECHO_T}$ac_cv_lib_m_sqrt" >&6 +if test $ac_cv_lib_m_sqrt = yes; then + cat >>confdefs.h <<_ACEOF +#define HAVE_LIBM 1 +_ACEOF + + LIBS="-lm $LIBS" + +fi + + +BASE_LIBS=${LIBS} +BASE_CFLAGS=${CFLAGS} +BASE_CXXFLAGS=${CXXFLAGS} +BASE_LDFLAGS=${LDFLAGS} + +IMG_LIBS="" + + + + +echo "$as_me:$LINENO: checking for zlibVersion in -lz" >&5 +echo $ECHO_N "checking for zlibVersion in -lz... $ECHO_C" >&6 +if test "${ac_cv_lib_z_zlibVersion+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lz $IMG_LIBS $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char zlibVersion (); +int +main () +{ +zlibVersion (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_z_zlibVersion=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_z_zlibVersion=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_z_zlibVersion" >&5 +echo "${ECHO_T}$ac_cv_lib_z_zlibVersion" >&6 +if test $ac_cv_lib_z_zlibVersion = yes; then + cat >>confdefs.h <<\_ACEOF +#define HAVE_LIBZ 1 +_ACEOF + \ + IMG_LIBS="$IMG_LIBS -lz" +fi + + +echo "$as_me:$LINENO: checking for jpeg_start_compress in -ljpeg" >&5 +echo $ECHO_N "checking for jpeg_start_compress in -ljpeg... $ECHO_C" >&6 +if test "${ac_cv_lib_jpeg_jpeg_start_compress+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ljpeg $IMG_LIBS $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char jpeg_start_compress (); +int +main () +{ +jpeg_start_compress (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_jpeg_jpeg_start_compress=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_jpeg_jpeg_start_compress=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_jpeg_jpeg_start_compress" >&5 +echo "${ECHO_T}$ac_cv_lib_jpeg_jpeg_start_compress" >&6 +if test $ac_cv_lib_jpeg_jpeg_start_compress = yes; then + cat >>confdefs.h <<\_ACEOF +#define HAVE_LIBJPEG 1 +_ACEOF + \ + IMG_LIBS="$IMG_LIBS -ljpeg" +fi + + +echo "$as_me:$LINENO: checking for TIFFOpen in -ltiff" >&5 +echo $ECHO_N "checking for TIFFOpen in -ltiff... $ECHO_C" >&6 +if test "${ac_cv_lib_tiff_TIFFOpen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ltiff $IMG_LIBS $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char TIFFOpen (); +int +main () +{ +TIFFOpen (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_tiff_TIFFOpen=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_tiff_TIFFOpen=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_tiff_TIFFOpen" >&5 +echo "${ECHO_T}$ac_cv_lib_tiff_TIFFOpen" >&6 +if test $ac_cv_lib_tiff_TIFFOpen = yes; then + cat >>confdefs.h <<\_ACEOF +#define HAVE_LIBTIFF 1 +_ACEOF + \ + IMG_LIBS="$IMG_LIBS -ltiff" +fi + + +echo "$as_me:$LINENO: checking for png_read_image in -lpng" >&5 +echo $ECHO_N "checking for png_read_image in -lpng... $ECHO_C" >&6 +if test "${ac_cv_lib_png_png_read_image+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lpng $IMG_LIBS $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char png_read_image (); +int +main () +{ +png_read_image (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_png_png_read_image=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_png_png_read_image=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_png_png_read_image" >&5 +echo "${ECHO_T}$ac_cv_lib_png_png_read_image" >&6 +if test $ac_cv_lib_png_png_read_image = yes; then + cat >>confdefs.h <<\_ACEOF +#define HAVE_LIBPNG 1 +_ACEOF + \ + IMG_LIBS="$IMG_LIBS -lpng" +fi + + + + +echo "$as_me:$LINENO: checking for egrep" >&5 +echo $ECHO_N "checking for egrep... $ECHO_C" >&6 +if test "${ac_cv_prog_egrep+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if echo a | (grep -E '(a|b)') >/dev/null 2>&1 + then ac_cv_prog_egrep='grep -E' + else ac_cv_prog_egrep='egrep' + fi +fi +echo "$as_me:$LINENO: result: $ac_cv_prog_egrep" >&5 +echo "${ECHO_T}$ac_cv_prog_egrep" >&6 + EGREP=$ac_cv_prog_egrep + + +echo "$as_me:$LINENO: checking for ANSI C header files" >&5 +echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6 +if test "${ac_cv_header_stdc+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <stdlib.h> +#include <stdarg.h> +#include <string.h> +#include <float.h> + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_header_stdc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_header_stdc=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +if test $ac_cv_header_stdc = yes; then + # SunOS 4.x string.h does not declare mem*, contrary to ANSI. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <string.h> + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "memchr" >/dev/null 2>&1; then + : +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <stdlib.h> + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "free" >/dev/null 2>&1; then + : +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. + if test "$cross_compiling" = yes; then + : +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <ctype.h> +#if ((' ' & 0x0FF) == 0x020) +# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +#else +# define ISLOWER(c) \ + (('a' <= (c) && (c) <= 'i') \ + || ('j' <= (c) && (c) <= 'r') \ + || ('s' <= (c) && (c) <= 'z')) +# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) +#endif + +#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) +int +main () +{ + int i; + for (i = 0; i < 256; i++) + if (XOR (islower (i), ISLOWER (i)) + || toupper (i) != TOUPPER (i)) + exit(2); + exit (0); +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +ac_cv_header_stdc=no +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 +echo "${ECHO_T}$ac_cv_header_stdc" >&6 +if test $ac_cv_header_stdc = yes; then + +cat >>confdefs.h <<\_ACEOF +#define STDC_HEADERS 1 +_ACEOF + +fi + +# On IRIX 5.3, sys/types and inttypes.h are conflicting. + + + + + + + + + +for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ + inttypes.h stdint.h unistd.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default + +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_Header=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_Header=no" +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + + + +for ac_header in GL/gl.h OpenGL/gl.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_header_compiler=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <$ac_header> +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_cxx_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi +rm -f conftest.err conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_cxx_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} + ( + cat <<\_ASBOX +## ------------------------------------------ ## +## Report this to the AC_PACKAGE_NAME lists. ## +## ------------------------------------------ ## +_ASBOX + ) | + sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=\$ac_header_preproc" +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + break +fi + +done + + + +for ac_header in GL/glu.h OpenGL/glu.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_header_compiler=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <$ac_header> +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_cxx_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi +rm -f conftest.err conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_cxx_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} + ( + cat <<\_ASBOX +## ------------------------------------------ ## +## Report this to the AC_PACKAGE_NAME lists. ## +## ------------------------------------------ ## +_ASBOX + ) | + sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=\$ac_header_preproc" +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + break +fi + +done + + + + + + +for ac_header in GL/glext.h GL/glxext.h GL/wglext.h OpenGL/glext.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#if HAVE_GL_GL_H + #include <GL/gl.h> + #elif HAVE_OPENGL_GL_H + #include <OpenGL/gl.h> + #endif + + +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_Header=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_Header=no" +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + +case $sys in + +Darwin*) + cat >>confdefs.h <<\_ACEOF +#define HAVE_OPENGL "OpenGL" +_ACEOF + + cat >>confdefs.h <<\_ACEOF +#define HAVE_POLYOFFSET 1 +_ACEOF + + GL_LIBS="-framework AGL -framework OpenGL" + X_CORE="-framework Carbon -framework ApplicationServices" + X_DCORE="$X_CORE" + X_PRE_LIBS="" + X_EXTRA_LIBS="" + + + + + + ;; + +CYGWIN*|cygwin*) + CPPFLAGS="${CPPFLAGS} -DWIN32" + cat >>confdefs.h <<\_ACEOF +#define HAVE_OPENGL "OpenGL" +_ACEOF + + cat >>confdefs.h <<\_ACEOF +#define HAVE_POLYOFFSET 1 +_ACEOF + + GL_LIBS="-lopengl32 -lglu32" + X_DCORE="-lkernel32 -luser32 -lgdi32 -lcomdlg32 -lole32 -luuid -lcomctl32 -lwsock32" + X_CORE="-mwindows -lole32 -luuid -lcomctl32 -lwsock32" + + X_PRE_LIBS="" + X_EXTRA_LIBS="" + + + + + + ;; + +*) + echo "$as_me:$LINENO: checking for X" >&5 +echo $ECHO_N "checking for X... $ECHO_C" >&6 + + +# Check whether --with-x or --without-x was given. +if test "${with_x+set}" = set; then + withval="$with_x" + +fi; +# $have_x is `yes', `no', `disabled', or empty when we do not yet know. +if test "x$with_x" = xno; then + # The user explicitly disabled X. + have_x=disabled +else + if test "x$x_includes" != xNONE && test "x$x_libraries" != xNONE; then + # Both variables are already set. + have_x=yes + else + if test "${ac_cv_have_x+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # One or both of the vars are not set, and there is no cached value. +ac_x_includes=no ac_x_libraries=no +rm -fr conftest.dir +if mkdir conftest.dir; then + cd conftest.dir + # Make sure to not put "make" in the Imakefile rules, since we grep it out. + cat >Imakefile <<'_ACEOF' +acfindx: + @echo 'ac_im_incroot="${INCROOT}"; ac_im_usrlibdir="${USRLIBDIR}"; ac_im_libdir="${LIBDIR}"' +_ACEOF + if (xmkmf) >/dev/null 2>/dev/null && test -f Makefile; then + # GNU make sometimes prints "make[1]: Entering...", which would confuse us. + eval `${MAKE-make} acfindx 2>/dev/null | grep -v make` + # Open Windows xmkmf reportedly sets LIBDIR instead of USRLIBDIR. + for ac_extension in a so sl; do + if test ! -f $ac_im_usrlibdir/libX11.$ac_extension && + test -f $ac_im_libdir/libX11.$ac_extension; then + ac_im_usrlibdir=$ac_im_libdir; break + fi + done + # Screen out bogus values from the imake configuration. They are + # bogus both because they are the default anyway, and because + # using them would break gcc on systems where it needs fixed includes. + case $ac_im_incroot in + /usr/include) ;; + *) test -f "$ac_im_incroot/X11/Xos.h" && ac_x_includes=$ac_im_incroot;; + esac + case $ac_im_usrlibdir in + /usr/lib | /lib) ;; + *) test -d "$ac_im_usrlibdir" && ac_x_libraries=$ac_im_usrlibdir ;; + esac + fi + cd .. + rm -fr conftest.dir +fi + +# Standard set of common directories for X headers. +# Check X11 before X11Rn because it is often a symlink to the current release. +ac_x_header_dirs=' +/usr/X11/include +/usr/X11R6/include +/usr/X11R5/include +/usr/X11R4/include + +/usr/include/X11 +/usr/include/X11R6 +/usr/include/X11R5 +/usr/include/X11R4 + +/usr/local/X11/include +/usr/local/X11R6/include +/usr/local/X11R5/include +/usr/local/X11R4/include + +/usr/local/include/X11 +/usr/local/include/X11R6 +/usr/local/include/X11R5 +/usr/local/include/X11R4 + +/usr/X386/include +/usr/x386/include +/usr/XFree86/include/X11 + +/usr/include +/usr/local/include +/usr/unsupported/include +/usr/athena/include +/usr/local/x11r5/include +/usr/lpp/Xamples/include + +/usr/openwin/include +/usr/openwin/share/include' + +if test "$ac_x_includes" = no; then + # Guess where to find include files, by looking for Intrinsic.h. + # First, try using that file with no special directory specified. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <X11/Intrinsic.h> +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_cxx_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + # We can compile using X headers with no special include directory. +ac_x_includes= +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + for ac_dir in $ac_x_header_dirs; do + if test -r "$ac_dir/X11/Intrinsic.h"; then + ac_x_includes=$ac_dir + break + fi +done +fi +rm -f conftest.err conftest.$ac_ext +fi # $ac_x_includes = no + +if test "$ac_x_libraries" = no; then + # Check for the libraries. + # See if we find them without any special options. + # Don't add to $LIBS permanently. + ac_save_LIBS=$LIBS + LIBS="-lXt $LIBS" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <X11/Intrinsic.h> +int +main () +{ +XtMalloc (0) + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + LIBS=$ac_save_LIBS +# We can link X programs with no special library path. +ac_x_libraries= +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +LIBS=$ac_save_LIBS +for ac_dir in `echo "$ac_x_includes $ac_x_header_dirs" | sed s/include/lib/g` +do + # Don't even attempt the hair of trying to link an X program! + for ac_extension in a so sl; do + if test -r $ac_dir/libXt.$ac_extension; then + ac_x_libraries=$ac_dir + break 2 + fi + done +done +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi # $ac_x_libraries = no + +if test "$ac_x_includes" = no || test "$ac_x_libraries" = no; then + # Didn't find X anywhere. Cache the known absence of X. + ac_cv_have_x="have_x=no" +else + # Record where we found X for the cache. + ac_cv_have_x="have_x=yes \ + ac_x_includes=$ac_x_includes ac_x_libraries=$ac_x_libraries" +fi +fi + + fi + eval "$ac_cv_have_x" +fi # $with_x != no + +if test "$have_x" != yes; then + echo "$as_me:$LINENO: result: $have_x" >&5 +echo "${ECHO_T}$have_x" >&6 + no_x=yes +else + # If each of the values was on the command line, it overrides each guess. + test "x$x_includes" = xNONE && x_includes=$ac_x_includes + test "x$x_libraries" = xNONE && x_libraries=$ac_x_libraries + # Update the cache value to reflect the command line values. + ac_cv_have_x="have_x=yes \ + ac_x_includes=$x_includes ac_x_libraries=$x_libraries" + echo "$as_me:$LINENO: result: libraries $x_libraries, headers $x_includes" >&5 +echo "${ECHO_T}libraries $x_libraries, headers $x_includes" >&6 +fi + +if test "$no_x" = yes; then + # Not all programs may use this symbol, but it does not hurt to define it. + +cat >>confdefs.h <<\_ACEOF +#define X_DISPLAY_MISSING 1 +_ACEOF + + X_CFLAGS= X_PRE_LIBS= X_LIBS= X_EXTRA_LIBS= +else + if test -n "$x_includes"; then + X_CFLAGS="$X_CFLAGS -I$x_includes" + fi + + # It would also be nice to do this for all -L options, not just this one. + if test -n "$x_libraries"; then + X_LIBS="$X_LIBS -L$x_libraries" + # For Solaris; some versions of Sun CC require a space after -R and + # others require no space. Words are not sufficient . . . . + case `(uname -sr) 2>/dev/null` in + "SunOS 5"*) + echo "$as_me:$LINENO: checking whether -R must be followed by a space" >&5 +echo $ECHO_N "checking whether -R must be followed by a space... $ECHO_C" >&6 + ac_xsave_LIBS=$LIBS; LIBS="$LIBS -R$x_libraries" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_R_nospace=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_R_nospace=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + if test $ac_R_nospace = yes; then + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 + X_LIBS="$X_LIBS -R$x_libraries" + else + LIBS="$ac_xsave_LIBS -R $x_libraries" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_R_space=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_R_space=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + if test $ac_R_space = yes; then + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + X_LIBS="$X_LIBS -R $x_libraries" + else + echo "$as_me:$LINENO: result: neither works" >&5 +echo "${ECHO_T}neither works" >&6 + fi + fi + LIBS=$ac_xsave_LIBS + esac + fi + + # Check for system-dependent libraries X programs must link with. + # Do this before checking for the system-independent R6 libraries + # (-lICE), since we may need -lsocket or whatever for X linking. + + if test "$ISC" = yes; then + X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl_s -linet" + else + # Martyn Johnson says this is needed for Ultrix, if the X + # libraries were built with DECnet support. And Karl Berry says + # the Alpha needs dnet_stub (dnet does not exist). + ac_xsave_LIBS="$LIBS"; LIBS="$LIBS $X_LIBS -lX11" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char XOpenDisplay (); +int +main () +{ +XOpenDisplay (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +echo "$as_me:$LINENO: checking for dnet_ntoa in -ldnet" >&5 +echo $ECHO_N "checking for dnet_ntoa in -ldnet... $ECHO_C" >&6 +if test "${ac_cv_lib_dnet_dnet_ntoa+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldnet $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dnet_ntoa (); +int +main () +{ +dnet_ntoa (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_dnet_dnet_ntoa=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_dnet_dnet_ntoa=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_dnet_dnet_ntoa" >&5 +echo "${ECHO_T}$ac_cv_lib_dnet_dnet_ntoa" >&6 +if test $ac_cv_lib_dnet_dnet_ntoa = yes; then + X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet" +fi + + if test $ac_cv_lib_dnet_dnet_ntoa = no; then + echo "$as_me:$LINENO: checking for dnet_ntoa in -ldnet_stub" >&5 +echo $ECHO_N "checking for dnet_ntoa in -ldnet_stub... $ECHO_C" >&6 +if test "${ac_cv_lib_dnet_stub_dnet_ntoa+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldnet_stub $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dnet_ntoa (); +int +main () +{ +dnet_ntoa (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_dnet_stub_dnet_ntoa=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_dnet_stub_dnet_ntoa=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_dnet_stub_dnet_ntoa" >&5 +echo "${ECHO_T}$ac_cv_lib_dnet_stub_dnet_ntoa" >&6 +if test $ac_cv_lib_dnet_stub_dnet_ntoa = yes; then + X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet_stub" +fi + + fi +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LIBS="$ac_xsave_LIBS" + + # [email protected] says -lnsl (and -lsocket) are needed for his 386/AT, + # to get the SysV transport functions. + # Chad R. Larson says the Pyramis MIS-ES running DC/OSx (SVR4) + # needs -lnsl. + # The nsl library prevents programs from opening the X display + # on Irix 5.2, according to T.E. Dickey. + # The functions gethostbyname, getservbyname, and inet_addr are + # in -lbsd on LynxOS 3.0.1/i386, according to Lars Hecking. + echo "$as_me:$LINENO: checking for gethostbyname" >&5 +echo $ECHO_N "checking for gethostbyname... $ECHO_C" >&6 +if test "${ac_cv_func_gethostbyname+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define gethostbyname to an innocuous variant, in case <limits.h> declares gethostbyname. + For example, HP-UX 11i <limits.h> declares gettimeofday. */ +#define gethostbyname innocuous_gethostbyname + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char gethostbyname (); below. + Prefer <limits.h> to <assert.h> if __STDC__ is defined, since + <limits.h> exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include <limits.h> +#else +# include <assert.h> +#endif + +#undef gethostbyname + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char gethostbyname (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_gethostbyname) || defined (__stub___gethostbyname) +choke me +#else +char (*f) () = gethostbyname; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != gethostbyname; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_gethostbyname=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_gethostbyname=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_gethostbyname" >&5 +echo "${ECHO_T}$ac_cv_func_gethostbyname" >&6 + + if test $ac_cv_func_gethostbyname = no; then + echo "$as_me:$LINENO: checking for gethostbyname in -lnsl" >&5 +echo $ECHO_N "checking for gethostbyname in -lnsl... $ECHO_C" >&6 +if test "${ac_cv_lib_nsl_gethostbyname+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lnsl $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char gethostbyname (); +int +main () +{ +gethostbyname (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_nsl_gethostbyname=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_nsl_gethostbyname=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_nsl_gethostbyname" >&5 +echo "${ECHO_T}$ac_cv_lib_nsl_gethostbyname" >&6 +if test $ac_cv_lib_nsl_gethostbyname = yes; then + X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl" +fi + + if test $ac_cv_lib_nsl_gethostbyname = no; then + echo "$as_me:$LINENO: checking for gethostbyname in -lbsd" >&5 +echo $ECHO_N "checking for gethostbyname in -lbsd... $ECHO_C" >&6 +if test "${ac_cv_lib_bsd_gethostbyname+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lbsd $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char gethostbyname (); +int +main () +{ +gethostbyname (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_bsd_gethostbyname=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_bsd_gethostbyname=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_bsd_gethostbyname" >&5 +echo "${ECHO_T}$ac_cv_lib_bsd_gethostbyname" >&6 +if test $ac_cv_lib_bsd_gethostbyname = yes; then + X_EXTRA_LIBS="$X_EXTRA_LIBS -lbsd" +fi + + fi + fi + + # [email protected] says without -lsocket, + # socket/setsockopt and other routines are undefined under SCO ODT + # 2.0. But -lsocket is broken on IRIX 5.2 (and is not necessary + # on later versions), says Simon Leinen: it contains gethostby* + # variants that don't use the name server (or something). -lsocket + # must be given before -lnsl if both are needed. We assume that + # if connect needs -lnsl, so does gethostbyname. + echo "$as_me:$LINENO: checking for connect" >&5 +echo $ECHO_N "checking for connect... $ECHO_C" >&6 +if test "${ac_cv_func_connect+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define connect to an innocuous variant, in case <limits.h> declares connect. + For example, HP-UX 11i <limits.h> declares gettimeofday. */ +#define connect innocuous_connect + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char connect (); below. + Prefer <limits.h> to <assert.h> if __STDC__ is defined, since + <limits.h> exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include <limits.h> +#else +# include <assert.h> +#endif + +#undef connect + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char connect (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_connect) || defined (__stub___connect) +choke me +#else +char (*f) () = connect; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != connect; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_connect=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_connect=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_connect" >&5 +echo "${ECHO_T}$ac_cv_func_connect" >&6 + + if test $ac_cv_func_connect = no; then + echo "$as_me:$LINENO: checking for connect in -lsocket" >&5 +echo $ECHO_N "checking for connect in -lsocket... $ECHO_C" >&6 +if test "${ac_cv_lib_socket_connect+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lsocket $X_EXTRA_LIBS $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char connect (); +int +main () +{ +connect (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_socket_connect=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_socket_connect=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_socket_connect" >&5 +echo "${ECHO_T}$ac_cv_lib_socket_connect" >&6 +if test $ac_cv_lib_socket_connect = yes; then + X_EXTRA_LIBS="-lsocket $X_EXTRA_LIBS" +fi + + fi + + # Guillermo Gomez says -lposix is necessary on A/UX. + echo "$as_me:$LINENO: checking for remove" >&5 +echo $ECHO_N "checking for remove... $ECHO_C" >&6 +if test "${ac_cv_func_remove+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define remove to an innocuous variant, in case <limits.h> declares remove. + For example, HP-UX 11i <limits.h> declares gettimeofday. */ +#define remove innocuous_remove + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char remove (); below. + Prefer <limits.h> to <assert.h> if __STDC__ is defined, since + <limits.h> exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include <limits.h> +#else +# include <assert.h> +#endif + +#undef remove + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char remove (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_remove) || defined (__stub___remove) +choke me +#else +char (*f) () = remove; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != remove; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_remove=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_remove=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_remove" >&5 +echo "${ECHO_T}$ac_cv_func_remove" >&6 + + if test $ac_cv_func_remove = no; then + echo "$as_me:$LINENO: checking for remove in -lposix" >&5 +echo $ECHO_N "checking for remove in -lposix... $ECHO_C" >&6 +if test "${ac_cv_lib_posix_remove+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lposix $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char remove (); +int +main () +{ +remove (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_posix_remove=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_posix_remove=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_posix_remove" >&5 +echo "${ECHO_T}$ac_cv_lib_posix_remove" >&6 +if test $ac_cv_lib_posix_remove = yes; then + X_EXTRA_LIBS="$X_EXTRA_LIBS -lposix" +fi + + fi + + # BSDI BSD/OS 2.1 needs -lipc for XOpenDisplay. + echo "$as_me:$LINENO: checking for shmat" >&5 +echo $ECHO_N "checking for shmat... $ECHO_C" >&6 +if test "${ac_cv_func_shmat+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define shmat to an innocuous variant, in case <limits.h> declares shmat. + For example, HP-UX 11i <limits.h> declares gettimeofday. */ +#define shmat innocuous_shmat + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char shmat (); below. + Prefer <limits.h> to <assert.h> if __STDC__ is defined, since + <limits.h> exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include <limits.h> +#else +# include <assert.h> +#endif + +#undef shmat + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char shmat (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_shmat) || defined (__stub___shmat) +choke me +#else +char (*f) () = shmat; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != shmat; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_shmat=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_shmat=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_shmat" >&5 +echo "${ECHO_T}$ac_cv_func_shmat" >&6 + + if test $ac_cv_func_shmat = no; then + echo "$as_me:$LINENO: checking for shmat in -lipc" >&5 +echo $ECHO_N "checking for shmat in -lipc... $ECHO_C" >&6 +if test "${ac_cv_lib_ipc_shmat+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lipc $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char shmat (); +int +main () +{ +shmat (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_ipc_shmat=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_ipc_shmat=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_ipc_shmat" >&5 +echo "${ECHO_T}$ac_cv_lib_ipc_shmat" >&6 +if test $ac_cv_lib_ipc_shmat = yes; then + X_EXTRA_LIBS="$X_EXTRA_LIBS -lipc" +fi + + fi + fi + + # Check for libraries that X11R6 Xt/Xaw programs need. + ac_save_LDFLAGS=$LDFLAGS + test -n "$x_libraries" && LDFLAGS="$LDFLAGS -L$x_libraries" + # SM needs ICE to (dynamically) link under SunOS 4.x (so we have to + # check for ICE first), but we must link in the order -lSM -lICE or + # we get undefined symbols. So assume we have SM if we have ICE. + # These have to be linked with before -lX11, unlike the other + # libraries we check for below, so use a different variable. + # John Interrante, Karl Berry + echo "$as_me:$LINENO: checking for IceConnectionNumber in -lICE" >&5 +echo $ECHO_N "checking for IceConnectionNumber in -lICE... $ECHO_C" >&6 +if test "${ac_cv_lib_ICE_IceConnectionNumber+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lICE $X_EXTRA_LIBS $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char IceConnectionNumber (); +int +main () +{ +IceConnectionNumber (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_ICE_IceConnectionNumber=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_ICE_IceConnectionNumber=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_ICE_IceConnectionNumber" >&5 +echo "${ECHO_T}$ac_cv_lib_ICE_IceConnectionNumber" >&6 +if test $ac_cv_lib_ICE_IceConnectionNumber = yes; then + X_PRE_LIBS="$X_PRE_LIBS -lSM -lICE" +fi + + LDFLAGS=$ac_save_LDFLAGS + +fi + + CFLAGS="${CFLAGS} ${X_CFLAGS}" + CXXFLAGS="${CXXFLAGS} ${X_CFLAGS}" + LIBS="${X_PRE_LIBS} -lX11 ${X_EXTRA_LIBS} ${LIBS}" + LDFLAGS="${LDFLAGS} ${X_LIBS}" + + X_CORE="-lX11 -lXext" + X_DCORE="$X_CORE" + + glneeds="$X_CORE $X_EXTRA_LIBS" + + echo "$as_me:$LINENO: checking for glBegin in -lGL" >&5 +echo $ECHO_N "checking for glBegin in -lGL... $ECHO_C" >&6 +if test "${ac_cv_lib_GL_glBegin+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lGL $glneeds $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char glBegin (); +int +main () +{ +glBegin (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_GL_glBegin=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_GL_glBegin=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_GL_glBegin" >&5 +echo "${ECHO_T}$ac_cv_lib_GL_glBegin" >&6 +if test $ac_cv_lib_GL_glBegin = yes; then + \ + cat >>confdefs.h <<\_ACEOF +#define HAVE_OPENGL "OpenGL" +_ACEOF + GL_LIBS="-lGL -lGLU" +else + \ + echo "$as_me:$LINENO: checking for glBegin in -lMesaGL" >&5 +echo $ECHO_N "checking for glBegin in -lMesaGL... $ECHO_C" >&6 +if test "${ac_cv_lib_MesaGL_glBegin+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lMesaGL $glneeds $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char glBegin (); +int +main () +{ +glBegin (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_MesaGL_glBegin=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_MesaGL_glBegin=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_MesaGL_glBegin" >&5 +echo "${ECHO_T}$ac_cv_lib_MesaGL_glBegin" >&6 +if test $ac_cv_lib_MesaGL_glBegin = yes; then + \ + cat >>confdefs.h <<\_ACEOF +#define HAVE_OPENGL "Mesa" +_ACEOF + + GL_LIBS="-lMesaGL -lMesaGLU" +fi + +fi + + + LIBS="${GL_LIBS} $glneeds" + + echo "$as_me:$LINENO: checking for glPolygonOffset" >&5 +echo $ECHO_N "checking for glPolygonOffset... $ECHO_C" >&6 +if test "${ac_cv_func_glPolygonOffset+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define glPolygonOffset to an innocuous variant, in case <limits.h> declares glPolygonOffset. + For example, HP-UX 11i <limits.h> declares gettimeofday. */ +#define glPolygonOffset innocuous_glPolygonOffset + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char glPolygonOffset (); below. + Prefer <limits.h> to <assert.h> if __STDC__ is defined, since + <limits.h> exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include <limits.h> +#else +# include <assert.h> +#endif + +#undef glPolygonOffset + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char glPolygonOffset (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_glPolygonOffset) || defined (__stub___glPolygonOffset) +choke me +#else +char (*f) () = glPolygonOffset; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != glPolygonOffset; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_glPolygonOffset=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_glPolygonOffset=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_glPolygonOffset" >&5 +echo "${ECHO_T}$ac_cv_func_glPolygonOffset" >&6 +if test $ac_cv_func_glPolygonOffset = yes; then + cat >>confdefs.h <<\_ACEOF +#define HAVE_POLYOFFSET 1 +_ACEOF + +fi + + echo "$as_me:$LINENO: checking for glPolygonOffsetEXT" >&5 +echo $ECHO_N "checking for glPolygonOffsetEXT... $ECHO_C" >&6 +if test "${ac_cv_func_glPolygonOffsetEXT+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define glPolygonOffsetEXT to an innocuous variant, in case <limits.h> declares glPolygonOffsetEXT. + For example, HP-UX 11i <limits.h> declares gettimeofday. */ +#define glPolygonOffsetEXT innocuous_glPolygonOffsetEXT + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char glPolygonOffsetEXT (); below. + Prefer <limits.h> to <assert.h> if __STDC__ is defined, since + <limits.h> exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include <limits.h> +#else +# include <assert.h> +#endif + +#undef glPolygonOffsetEXT + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char glPolygonOffsetEXT (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_glPolygonOffsetEXT) || defined (__stub___glPolygonOffsetEXT) +choke me +#else +char (*f) () = glPolygonOffsetEXT; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != glPolygonOffsetEXT; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_glPolygonOffsetEXT=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_glPolygonOffsetEXT=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_glPolygonOffsetEXT" >&5 +echo "${ECHO_T}$ac_cv_func_glPolygonOffsetEXT" >&6 +if test $ac_cv_func_glPolygonOffsetEXT = yes; then + cat >>confdefs.h <<\_ACEOF +#define HAVE_POLYOFFSET_EXT 1 +_ACEOF + +fi + + ;; +esac + + + + + + +FLTK_LIBS="-lfltk" + +echo "$as_me:$LINENO: checking for FLTK library" >&5 +echo $ECHO_N "checking for FLTK library... $ECHO_C" >&6 +save_libs=$LIBS +LIBS="$FLTK_LIBS $X_CORE $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <FL/Fl.H> +int +main () +{ +Fl::run(); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + cat >>confdefs.h <<\_ACEOF +#define HAVE_FLTK 1 +_ACEOF + + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 + FLTK_LIBS="" +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$save_libs + +echo "$as_me:$LINENO: checking for FLTK GL support" >&5 +echo $ECHO_N "checking for FLTK GL support... $ECHO_C" >&6 +save_libs=$LIBS +LIBS="$FLTK_LIBS $GL_LIBS $X_CORE $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <FL/Fl.H> + #include <FL/Fl_Gl_Window.H> +int +main () +{ +Fl_Gl_Window win(640,480); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + cat >>confdefs.h <<\_ACEOF +#define HAVE_FLTK_GL 1 +_ACEOF + + echo "$as_me:$LINENO: result: in libfltk" >&5 +echo "${ECHO_T}in libfltk" >&6 +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +FLTK_LIBS="-lfltk_gl $FLTK_LIBS" + LIBS="$FLTK_LIBS $GL_LIBS $X_CORE $save_libs" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <FL/Fl.H> + #include <FL/Fl_Gl_Window.H> +int +main () +{ +Fl_Gl_Window win(640,480); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + cat >>confdefs.h <<\_ACEOF +#define HAVE_FLTK_GL 1 +_ACEOF + + echo "$as_me:$LINENO: result: in libfltk_gl" >&5 +echo "${ECHO_T}in libfltk_gl" >&6 +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +FLTK_LIBS="-lfltk" + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + +LIBS=$save_libs + + +LIBS=${BASE_LIBS} +CFLAGS=${BASE_CFLAGS} +CXXFLAGS=${BASE_CXXFLAGS} +LDFLAGS=${BASE_LDFLAGS} + + +echo "$as_me:$LINENO: checking for ANSI C header files" >&5 +echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6 +if test "${ac_cv_header_stdc+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <stdlib.h> +#include <stdarg.h> +#include <string.h> +#include <float.h> + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_header_stdc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_header_stdc=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +if test $ac_cv_header_stdc = yes; then + # SunOS 4.x string.h does not declare mem*, contrary to ANSI. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <string.h> + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "memchr" >/dev/null 2>&1; then + : +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <stdlib.h> + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "free" >/dev/null 2>&1; then + : +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. + if test "$cross_compiling" = yes; then + : +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <ctype.h> +#if ((' ' & 0x0FF) == 0x020) +# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +#else +# define ISLOWER(c) \ + (('a' <= (c) && (c) <= 'i') \ + || ('j' <= (c) && (c) <= 'r') \ + || ('s' <= (c) && (c) <= 'z')) +# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) +#endif + +#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) +int +main () +{ + int i; + for (i = 0; i < 256; i++) + if (XOR (islower (i), ISLOWER (i)) + || toupper (i) != TOUPPER (i)) + exit(2); + exit (0); +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +ac_cv_header_stdc=no +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 +echo "${ECHO_T}$ac_cv_header_stdc" >&6 +if test $ac_cv_header_stdc = yes; then + +cat >>confdefs.h <<\_ACEOF +#define STDC_HEADERS 1 +_ACEOF + +fi + + +for ac_header in limits.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_header_compiler=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <$ac_header> +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_cxx_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi +rm -f conftest.err conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_cxx_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} + ( + cat <<\_ASBOX +## ------------------------------------------ ## +## Report this to the AC_PACKAGE_NAME lists. ## +## ------------------------------------------ ## +_ASBOX + ) | + sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=\$ac_header_preproc" +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + +for ac_header in unistd.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_header_compiler=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <$ac_header> +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_cxx_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi +rm -f conftest.err conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_cxx_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} + ( + cat <<\_ASBOX +## ------------------------------------------ ## +## Report this to the AC_PACKAGE_NAME lists. ## +## ------------------------------------------ ## +_ASBOX + ) | + sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=\$ac_header_preproc" +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + + + +for ac_header in hash_map +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_header_compiler=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <$ac_header> +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_cxx_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi +rm -f conftest.err conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_cxx_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} + ( + cat <<\_ASBOX +## ------------------------------------------ ## +## Report this to the AC_PACKAGE_NAME lists. ## +## ------------------------------------------ ## +_ASBOX + ) | + sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=\$ac_header_preproc" +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + +for ac_header in hash_set +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_header_compiler=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <$ac_header> +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_cxx_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi +rm -f conftest.err conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_cxx_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} + ( + cat <<\_ASBOX +## ------------------------------------------ ## +## Report this to the AC_PACKAGE_NAME lists. ## +## ------------------------------------------ ## +_ASBOX + ) | + sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=\$ac_header_preproc" +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + +for ac_header in ext/hash_map +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_header_compiler=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <$ac_header> +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_cxx_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi +rm -f conftest.err conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_cxx_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} + ( + cat <<\_ASBOX +## ------------------------------------------ ## +## Report this to the AC_PACKAGE_NAME lists. ## +## ------------------------------------------ ## +_ASBOX + ) | + sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=\$ac_header_preproc" +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + +for ac_header in ext/hash_set +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_header_compiler=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <$ac_header> +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_cxx_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi +rm -f conftest.err conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_cxx_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} + ( + cat <<\_ASBOX +## ------------------------------------------ ## +## Report this to the AC_PACKAGE_NAME lists. ## +## ------------------------------------------ ## +_ASBOX + ) | + sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=\$ac_header_preproc" +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + +for ac_header in valarray +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_header_compiler=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <$ac_header> +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_cxx_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi +rm -f conftest.err conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_cxx_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} + ( + cat <<\_ASBOX +## ------------------------------------------ ## +## Report this to the AC_PACKAGE_NAME lists. ## +## ------------------------------------------ ## +_ASBOX + ) | + sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=\$ac_header_preproc" +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + +for ac_header in sstream +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_header_compiler=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <$ac_header> +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_cxx_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi +rm -f conftest.err conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_cxx_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} + ( + cat <<\_ASBOX +## ------------------------------------------ ## +## Report this to the AC_PACKAGE_NAME lists. ## +## ------------------------------------------ ## +_ASBOX + ) | + sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=\$ac_header_preproc" +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + +for ac_header in strstream +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_header_compiler=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <$ac_header> +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_cxx_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi +rm -f conftest.err conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_cxx_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} + ( + cat <<\_ASBOX +## ------------------------------------------ ## +## Report this to the AC_PACKAGE_NAME lists. ## +## ------------------------------------------ ## +_ASBOX + ) | + sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=\$ac_header_preproc" +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + + +echo "$as_me:$LINENO: checking for an ANSI C-conforming const" >&5 +echo $ECHO_N "checking for an ANSI C-conforming const... $ECHO_C" >&6 +if test "${ac_cv_c_const+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ +/* FIXME: Include the comments suggested by Paul. */ +#ifndef __cplusplus + /* Ultrix mips cc rejects this. */ + typedef int charset[2]; + const charset x; + /* SunOS 4.1.1 cc rejects this. */ + char const *const *ccp; + char **p; + /* NEC SVR4.0.2 mips cc rejects this. */ + struct point {int x, y;}; + static struct point const zero = {0,0}; + /* AIX XL C 1.02.0.0 rejects this. + It does not let you subtract one const X* pointer from another in + an arm of an if-expression whose if-part is not a constant + expression */ + const char *g = "string"; + ccp = &g + (g ? g-g : 0); + /* HPUX 7.0 cc rejects these. */ + ++ccp; + p = (char**) ccp; + ccp = (char const *const *) p; + { /* SCO 3.2v4 cc rejects this. */ + char *t; + char const *s = 0 ? (char *) 0 : (char const *) 0; + + *t++ = 0; + } + { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ + int x[] = {25, 17}; + const int *foo = &x[0]; + ++foo; + } + { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */ + typedef const int *iptr; + iptr p = 0; + ++p; + } + { /* AIX XL C 1.02.0.0 rejects this saying + "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ + struct s { int j; const int *ap[3]; }; + struct s *b; b->j = 5; + } + { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ + const int foo = 10; + } +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_c_const=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_c_const=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_c_const" >&5 +echo "${ECHO_T}$ac_cv_c_const" >&6 +if test $ac_cv_c_const = no; then + +cat >>confdefs.h <<\_ACEOF +#define const +_ACEOF + +fi + +echo "$as_me:$LINENO: checking for inline" >&5 +echo $ECHO_N "checking for inline... $ECHO_C" >&6 +if test "${ac_cv_c_inline+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_c_inline=no +for ac_kw in inline __inline__ __inline; do + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#ifndef __cplusplus +typedef int foo_t; +static $ac_kw foo_t static_foo () {return 0; } +$ac_kw foo_t foo () {return 0; } +#endif + +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_c_inline=$ac_kw; break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +done + +fi +echo "$as_me:$LINENO: result: $ac_cv_c_inline" >&5 +echo "${ECHO_T}$ac_cv_c_inline" >&6 + + +case $ac_cv_c_inline in + inline | yes) ;; + *) + case $ac_cv_c_inline in + no) ac_val=;; + *) ac_val=$ac_cv_c_inline;; + esac + cat >>confdefs.h <<_ACEOF +#ifndef __cplusplus +#define inline $ac_val +#endif +_ACEOF + ;; +esac + + +echo "$as_me:$LINENO: checking for type bool" >&5 +echo $ECHO_N "checking for type bool... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ +bool x; x; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + cat >>confdefs.h <<\_ACEOF +#define HAVE_BOOL 1 +_ACEOF + +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + + +# The Ultrix 4.2 mips builtin alloca declared by alloca.h only works +# for constant arguments. Useless! +echo "$as_me:$LINENO: checking for working alloca.h" >&5 +echo $ECHO_N "checking for working alloca.h... $ECHO_C" >&6 +if test "${ac_cv_working_alloca_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <alloca.h> +int +main () +{ +char *p = (char *) alloca (2 * sizeof (int)); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_working_alloca_h=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_working_alloca_h=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_working_alloca_h" >&5 +echo "${ECHO_T}$ac_cv_working_alloca_h" >&6 +if test $ac_cv_working_alloca_h = yes; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_ALLOCA_H 1 +_ACEOF + +fi + +echo "$as_me:$LINENO: checking for alloca" >&5 +echo $ECHO_N "checking for alloca... $ECHO_C" >&6 +if test "${ac_cv_func_alloca_works+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#ifdef __GNUC__ +# define alloca __builtin_alloca +#else +# ifdef _MSC_VER +# include <malloc.h> +# define alloca _alloca +# else +# if HAVE_ALLOCA_H +# include <alloca.h> +# else +# ifdef _AIX + #pragma alloca +# else +# ifndef alloca /* predefined by HP cc +Olibcalls */ +char *alloca (); +# endif +# endif +# endif +# endif +#endif + +int +main () +{ +char *p = (char *) alloca (1); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_alloca_works=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_alloca_works=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_alloca_works" >&5 +echo "${ECHO_T}$ac_cv_func_alloca_works" >&6 + +if test $ac_cv_func_alloca_works = yes; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_ALLOCA 1 +_ACEOF + +else + # The SVR3 libPW and SVR4 libucb both contain incompatible functions +# that cause trouble. Some versions do not even contain alloca or +# contain a buggy version. If you still want to use their alloca, +# use ar to extract alloca.o from them instead of compiling alloca.c. + +ALLOCA=alloca.$ac_objext + +cat >>confdefs.h <<\_ACEOF +#define C_ALLOCA 1 +_ACEOF + + +echo "$as_me:$LINENO: checking whether \`alloca.c' needs Cray hooks" >&5 +echo $ECHO_N "checking whether \`alloca.c' needs Cray hooks... $ECHO_C" >&6 +if test "${ac_cv_os_cray+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#if defined(CRAY) && ! defined(CRAY2) +webecray +#else +wenotbecray +#endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "webecray" >/dev/null 2>&1; then + ac_cv_os_cray=yes +else + ac_cv_os_cray=no +fi +rm -f conftest* + +fi +echo "$as_me:$LINENO: result: $ac_cv_os_cray" >&5 +echo "${ECHO_T}$ac_cv_os_cray" >&6 +if test $ac_cv_os_cray = yes; then + for ac_func in _getb67 GETB67 getb67; do + as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func. + For example, HP-UX 11i <limits.h> declares gettimeofday. */ +#define $ac_func innocuous_$ac_func + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func (); below. + Prefer <limits.h> to <assert.h> if __STDC__ is defined, since + <limits.h> exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include <limits.h> +#else +# include <assert.h> +#endif + +#undef $ac_func + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +choke me +#else +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != $ac_func; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_var=no" +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + +cat >>confdefs.h <<_ACEOF +#define CRAY_STACKSEG_END $ac_func +_ACEOF + + break +fi + + done +fi + +echo "$as_me:$LINENO: checking stack direction for C alloca" >&5 +echo $ECHO_N "checking stack direction for C alloca... $ECHO_C" >&6 +if test "${ac_cv_c_stack_direction+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then + ac_cv_c_stack_direction=0 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +int +find_stack_direction () +{ + static char *addr = 0; + auto char dummy; + if (addr == 0) + { + addr = &dummy; + return find_stack_direction (); + } + else + return (&dummy > addr) ? 1 : -1; +} + +int +main () +{ + exit (find_stack_direction () < 0); +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_c_stack_direction=1 +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +ac_cv_c_stack_direction=-1 +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_c_stack_direction" >&5 +echo "${ECHO_T}$ac_cv_c_stack_direction" >&6 + +cat >>confdefs.h <<_ACEOF +#define STACK_DIRECTION $ac_cv_c_stack_direction +_ACEOF + + +fi + + + + + + + +for ac_func in rint getrusage times random getopt getopt_long +do +as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func. + For example, HP-UX 11i <limits.h> declares gettimeofday. */ +#define $ac_func innocuous_$ac_func + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func (); below. + Prefer <limits.h> to <assert.h> if __STDC__ is defined, since + <limits.h> exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include <limits.h> +#else +# include <assert.h> +#endif + +#undef $ac_func + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +choke me +#else +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != $ac_func; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_var=no" +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + + + +ROOT=`pwd` + +CPPFLAGS="$CPPFLAGS -I${ROOT}/include -DHAVE_CONFIG_H" +CFLAGS="$BASE_CFLAGS $CPPFLAGS" +CXXFLAGS="$BASE_CXXFLAGS $CPPFLAGS" +LDFLAGS="$BASE_LDFLAGS -L${ROOT}/src" + + ac_config_files="$ac_config_files gfx-config" +cat >confcache <<\_ACEOF +# This file is a shell script that caches the results of configure +# tests run on this system so they can be shared between configure +# scripts and configure runs, see configure's option --config-cache. +# It is not useful on other systems. If it contains results you don't +# want to keep, you may remove or edit it. +# +# config.status only pays attention to the cache file if you give it +# the --recheck option to rerun configure. +# +# `ac_cv_env_foo' variables (set or unset) will be overridden when +# loading this file, other *unset* `ac_cv_foo' will be assigned the +# following values. + +_ACEOF + +# The following way of writing the cache mishandles newlines in values, +# but we know of no workaround that is simple, portable, and efficient. +# So, don't put newlines in cache variables' values. +# Ultrix sh set writes to stderr and can't be redirected directly, +# and sets the high bit in the cache file unless we assign to the vars. +{ + (set) 2>&1 | + case `(ac_space=' '; set | grep ac_space) 2>&1` in + *ac_space=\ *) + # `set' does not quote correctly, so add quotes (double-quote + # substitution turns \\\\ into \\, and sed turns \\ into \). + sed -n \ + "s/'/'\\\\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" + ;; + *) + # `set' quotes correctly as required by POSIX, so do not add quotes. + sed -n \ + "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" + ;; + esac; +} | + sed ' + t clear + : clear + s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ + t end + /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ + : end' >>confcache +if diff $cache_file confcache >/dev/null 2>&1; then :; else + if test -w $cache_file; then + test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file" + cat confcache >$cache_file + else + echo "not updating unwritable cache $cache_file" + fi +fi +rm -f confcache + +test "x$prefix" = xNONE && prefix=$ac_default_prefix +# Let make expand exec_prefix. +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +# VPATH may cause trouble with some makes, so we remove $(srcdir), +# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and +# trailing colons and then remove the whole line if VPATH becomes empty +# (actually we leave an empty line to preserve line numbers). +if test "x$srcdir" = x.; then + ac_vpsub='/^[ ]*VPATH[ ]*=/{ +s/:*\$(srcdir):*/:/; +s/:*\${srcdir}:*/:/; +s/:*@srcdir@:*/:/; +s/^\([^=]*=[ ]*\):*/\1/; +s/:*$//; +s/^[^=]*=[ ]*$//; +}' +fi + +DEFS=-DHAVE_CONFIG_H + +ac_libobjs= +ac_ltlibobjs= +for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue + # 1. Remove the extension, and $U if already installed. + ac_i=`echo "$ac_i" | + sed 's/\$U\././;s/\.o$//;s/\.obj$//'` + # 2. Add them. + ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext" + ac_ltlibobjs="$ac_ltlibobjs $ac_i"'$U.lo' +done +LIBOBJS=$ac_libobjs + +LTLIBOBJS=$ac_ltlibobjs + + + +: ${CONFIG_STATUS=./config.status} +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files $CONFIG_STATUS" +{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5 +echo "$as_me: creating $CONFIG_STATUS" >&6;} +cat >$CONFIG_STATUS <<_ACEOF +#! $SHELL +# Generated by $as_me. +# Run this file to recreate the current configuration. +# Compiler output produced by configure, useful for debugging +# configure, is in config.log if it exists. + +debug=false +ac_cs_recheck=false +ac_cs_silent=false +SHELL=\${CONFIG_SHELL-$SHELL} +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF +## --------------------- ## +## M4sh Initialization. ## +## --------------------- ## + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' +elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then + set -o posix +fi +DUALCASE=1; export DUALCASE # for MKS sh + +# Support unset when possible. +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + as_unset=unset +else + as_unset=false +fi + + +# Work around bugs in pre-3.0 UWIN ksh. +$as_unset ENV MAIL MAILPATH +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +for as_var in \ + LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ + LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ + LC_TELEPHONE LC_TIME +do + if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then + eval $as_var=C; export $as_var + else + $as_unset $as_var + fi +done + +# Required to use basename. +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + + +# Name of the executable. +as_me=`$as_basename "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)$' \| \ + . : '\(.\)' 2>/dev/null || +echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } + /^X\/\(\/\/\)$/{ s//\1/; q; } + /^X\/\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + + +# PATH needs CR, and LINENO needs CR and PATH. +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi + + + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" || { + # Find who we are. Look in the path if we contain no path at all + # relative or not. + case $0 in + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break +done + + ;; + esac + # We did not find ourselves, most probably we were run as `sh COMMAND' + # in which case we are not to be found in the path. + if test "x$as_myself" = x; then + as_myself=$0 + fi + if test ! -f "$as_myself"; then + { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5 +echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;} + { (exit 1); exit 1; }; } + fi + case $CONFIG_SHELL in + '') + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for as_base in sh bash ksh sh5; do + case $as_dir in + /*) + if ("$as_dir/$as_base" -c ' + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then + $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } + $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } + CONFIG_SHELL=$as_dir/$as_base + export CONFIG_SHELL + exec "$CONFIG_SHELL" "$0" ${1+"$@"} + fi;; + esac + done +done +;; + esac + + # Create $as_me.lineno as a copy of $as_myself, but with $LINENO + # uniformly replaced by the line number. The first 'sed' inserts a + # line-number line before each line; the second 'sed' does the real + # work. The second script uses 'N' to pair each line-number line + # with the numbered line, and appends trailing '-' during + # substitution so that $LINENO is not a special case at line end. + # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the + # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) + sed '=' <$as_myself | + sed ' + N + s,$,-, + : loop + s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, + t loop + s,-$,, + s,^['$as_cr_digits']*\n,, + ' >$as_me.lineno && + chmod +x $as_me.lineno || + { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5 +echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;} + { (exit 1); exit 1; }; } + + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensible to this). + . ./$as_me.lineno + # Exit status is that of the last command. + exit +} + + +case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in + *c*,-n*) ECHO_N= ECHO_C=' +' ECHO_T=' ' ;; + *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; + *) ECHO_N= ECHO_C='\c' ECHO_T= ;; +esac + +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +rm -f conf$$ conf$$.exe conf$$.file +echo >conf$$.file +if ln -s conf$$.file conf$$ 2>/dev/null; then + # We could just check for DJGPP; but this test a) works b) is more generic + # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). + if test -f conf$$.exe; then + # Don't use ln at all; we don't have any links + as_ln_s='cp -p' + else + as_ln_s='ln -s' + fi +elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.file + +if mkdir -p . 2>/dev/null; then + as_mkdir_p=: +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +as_executable_p="test -f" + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +# IFS +# We need space, tab and new line, in precisely that order. +as_nl=' +' +IFS=" $as_nl" + +# CDPATH. +$as_unset CDPATH + +exec 6>&1 + +# Open the log real soon, to keep \$[0] and so on meaningful, and to +# report actual input values of CONFIG_FILES etc. instead of their +# values after options handling. Logging --version etc. is OK. +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +## Running $as_me. ## +_ASBOX +} >&5 +cat >&5 <<_CSEOF + +This file was extended by $as_me, which was +generated by GNU Autoconf 2.59. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +_CSEOF +echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5 +echo >&5 +_ACEOF + +# Files that config.status was made for. +if test -n "$ac_config_files"; then + echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS +fi + +if test -n "$ac_config_headers"; then + echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS +fi + +if test -n "$ac_config_links"; then + echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS +fi + +if test -n "$ac_config_commands"; then + echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS +fi + +cat >>$CONFIG_STATUS <<\_ACEOF + +ac_cs_usage="\ +\`$as_me' instantiates files from templates according to the +current configuration. + +Usage: $0 [OPTIONS] [FILE]... + + -h, --help print this help, then exit + -V, --version print version number, then exit + -q, --quiet do not print progress messages + -d, --debug don't remove temporary files + --recheck update $as_me by reconfiguring in the same conditions + --file=FILE[:TEMPLATE] + instantiate the configuration file FILE + --header=FILE[:TEMPLATE] + instantiate the configuration header FILE + +Configuration files: +$config_files + +Configuration headers: +$config_headers + +Report bugs to <[email protected]>." +_ACEOF + +cat >>$CONFIG_STATUS <<_ACEOF +ac_cs_version="\\ +config.status +configured by $0, generated by GNU Autoconf 2.59, + with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" + +Copyright (C) 2003 Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." +srcdir=$srcdir +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF +# If no file are specified by the user, then we need to provide default +# value. By we need to know if files were specified by the user. +ac_need_defaults=: +while test $# != 0 +do + case $1 in + --*=*) + ac_option=`expr "x$1" : 'x\([^=]*\)='` + ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'` + ac_shift=: + ;; + -*) + ac_option=$1 + ac_optarg=$2 + ac_shift=shift + ;; + *) # This is not an option, so the user has probably given explicit + # arguments. + ac_option=$1 + ac_need_defaults=false;; + esac + + case $ac_option in + # Handling of the options. +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; + --version | --vers* | -V ) + echo "$ac_cs_version"; exit 0 ;; + --he | --h) + # Conflict between --help and --header + { { echo "$as_me:$LINENO: error: ambiguous option: $1 +Try \`$0 --help' for more information." >&5 +echo "$as_me: error: ambiguous option: $1 +Try \`$0 --help' for more information." >&2;} + { (exit 1); exit 1; }; };; + --help | --hel | -h ) + echo "$ac_cs_usage"; exit 0 ;; + --debug | --d* | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + CONFIG_FILES="$CONFIG_FILES $ac_optarg" + ac_need_defaults=false;; + --header | --heade | --head | --hea ) + $ac_shift + CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg" + ac_need_defaults=false;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil | --si | --s) + ac_cs_silent=: ;; + + # This is an error. + -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1 +Try \`$0 --help' for more information." >&5 +echo "$as_me: error: unrecognized option: $1 +Try \`$0 --help' for more information." >&2;} + { (exit 1); exit 1; }; } ;; + + *) ac_config_targets="$ac_config_targets $1" ;; + + esac + shift +done + +ac_configure_extra_args= + +if $ac_cs_silent; then + exec 6>/dev/null + ac_configure_extra_args="$ac_configure_extra_args --silent" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF +if \$ac_cs_recheck; then + echo "running $SHELL $0 " $ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6 + exec $SHELL $0 $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion +fi + +_ACEOF + + + + + +cat >>$CONFIG_STATUS <<\_ACEOF +for ac_config_target in $ac_config_targets +do + case "$ac_config_target" in + # Handling of arguments. + "gfx-config" ) CONFIG_FILES="$CONFIG_FILES gfx-config" ;; + "include/gfx/config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS include/gfx/config.h" ;; + *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 +echo "$as_me: error: invalid argument: $ac_config_target" >&2;} + { (exit 1); exit 1; }; };; + esac +done + +# If the user did not use the arguments to specify the items to instantiate, +# then the envvar interface is used. Set only those that are not. +# We use the long form for the default assignment because of an extremely +# bizarre bug on SunOS 4.1.3. +if $ac_need_defaults; then + test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files + test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers +fi + +# Have a temporary directory for convenience. Make it in the build tree +# simply because there is no reason to put it here, and in addition, +# creating and moving files from /tmp can sometimes cause problems. +# Create a temporary directory, and hook for its removal unless debugging. +$debug || +{ + trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0 + trap '{ (exit 1); exit 1; }' 1 2 13 15 +} + +# Create a (secure) tmp directory for tmp files. + +{ + tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` && + test -n "$tmp" && test -d "$tmp" +} || +{ + tmp=./confstat$$-$RANDOM + (umask 077 && mkdir $tmp) +} || +{ + echo "$me: cannot create a temporary directory in ." >&2 + { (exit 1); exit 1; } +} + +_ACEOF + +cat >>$CONFIG_STATUS <<_ACEOF + +# +# CONFIG_FILES section. +# + +# No need to generate the scripts if there are no CONFIG_FILES. +# This happens for instance when ./config.status config.h +if test -n "\$CONFIG_FILES"; then + # Protect against being on the right side of a sed subst in config.status. + sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g; + s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF +s,@SHELL@,$SHELL,;t t +s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t +s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t +s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t +s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t +s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t +s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t +s,@exec_prefix@,$exec_prefix,;t t +s,@prefix@,$prefix,;t t +s,@program_transform_name@,$program_transform_name,;t t +s,@bindir@,$bindir,;t t +s,@sbindir@,$sbindir,;t t +s,@libexecdir@,$libexecdir,;t t +s,@datadir@,$datadir,;t t +s,@sysconfdir@,$sysconfdir,;t t +s,@sharedstatedir@,$sharedstatedir,;t t +s,@localstatedir@,$localstatedir,;t t +s,@libdir@,$libdir,;t t +s,@includedir@,$includedir,;t t +s,@oldincludedir@,$oldincludedir,;t t +s,@infodir@,$infodir,;t t +s,@mandir@,$mandir,;t t +s,@build_alias@,$build_alias,;t t +s,@host_alias@,$host_alias,;t t +s,@target_alias@,$target_alias,;t t +s,@DEFS@,$DEFS,;t t +s,@ECHO_C@,$ECHO_C,;t t +s,@ECHO_N@,$ECHO_N,;t t +s,@ECHO_T@,$ECHO_T,;t t +s,@LIBS@,$LIBS,;t t +s,@CC@,$CC,;t t +s,@CFLAGS@,$CFLAGS,;t t +s,@LDFLAGS@,$LDFLAGS,;t t +s,@CPPFLAGS@,$CPPFLAGS,;t t +s,@ac_ct_CC@,$ac_ct_CC,;t t +s,@EXEEXT@,$EXEEXT,;t t +s,@OBJEXT@,$OBJEXT,;t t +s,@CPP@,$CPP,;t t +s,@CXX@,$CXX,;t t +s,@CXXFLAGS@,$CXXFLAGS,;t t +s,@ac_ct_CXX@,$ac_ct_CXX,;t t +s,@CXXCPP@,$CXXCPP,;t t +s,@RANLIB@,$RANLIB,;t t +s,@ac_ct_RANLIB@,$ac_ct_RANLIB,;t t +s,@RM@,$RM,;t t +s,@FLTKCONFIG@,$FLTKCONFIG,;t t +s,@CC_DEPEND@,$CC_DEPEND,;t t +s,@CXX_DEPEND@,$CXX_DEPEND,;t t +s,@IMG_LIBS@,$IMG_LIBS,;t t +s,@EGREP@,$EGREP,;t t +s,@X_CFLAGS@,$X_CFLAGS,;t t +s,@X_LIBS@,$X_LIBS,;t t +s,@X_PRE_LIBS@,$X_PRE_LIBS,;t t +s,@X_EXTRA_LIBS@,$X_EXTRA_LIBS,;t t +s,@X_CORE@,$X_CORE,;t t +s,@X_DCORE@,$X_DCORE,;t t +s,@GL_LIBS@,$GL_LIBS,;t t +s,@FLTK_LIBS@,$FLTK_LIBS,;t t +s,@ALLOCA@,$ALLOCA,;t t +s,@LIBOBJS@,$LIBOBJS,;t t +s,@LTLIBOBJS@,$LTLIBOBJS,;t t +CEOF + +_ACEOF + + cat >>$CONFIG_STATUS <<\_ACEOF + # Split the substitutions into bite-sized pieces for seds with + # small command number limits, like on Digital OSF/1 and HP-UX. + ac_max_sed_lines=48 + ac_sed_frag=1 # Number of current file. + ac_beg=1 # First line for current file. + ac_end=$ac_max_sed_lines # Line after last line for current file. + ac_more_lines=: + ac_sed_cmds= + while $ac_more_lines; do + if test $ac_beg -gt 1; then + sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag + else + sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag + fi + if test ! -s $tmp/subs.frag; then + ac_more_lines=false + else + # The purpose of the label and of the branching condition is to + # speed up the sed processing (if there are no `@' at all, there + # is no need to browse any of the substitutions). + # These are the two extra sed commands mentioned above. + (echo ':t + /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed + if test -z "$ac_sed_cmds"; then + ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed" + else + ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed" + fi + ac_sed_frag=`expr $ac_sed_frag + 1` + ac_beg=$ac_end + ac_end=`expr $ac_end + $ac_max_sed_lines` + fi + done + if test -z "$ac_sed_cmds"; then + ac_sed_cmds=cat + fi +fi # test -n "$CONFIG_FILES" + +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF +for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue + # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". + case $ac_file in + - | *:- | *:-:* ) # input from stdin + cat >$tmp/stdin + ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + * ) ac_file_in=$ac_file.in ;; + esac + + # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories. + ac_dir=`(dirname "$ac_file") 2>/dev/null || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + { if $as_mkdir_p; then + mkdir -p "$ac_dir" + else + as_dir="$ac_dir" + as_dirs= + while test ! -d "$as_dir"; do + as_dirs="$as_dir $as_dirs" + as_dir=`(dirname "$as_dir") 2>/dev/null || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + done + test ! -n "$as_dirs" || mkdir $as_dirs + fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 +echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} + { (exit 1); exit 1; }; }; } + + ac_builddir=. + +if test "$ac_dir" != .; then + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + # A "../" for each directory in $ac_dir_suffix. + ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +else + ac_dir_suffix= ac_top_builddir= +fi + +case $srcdir in + .) # No --srcdir option. We are building in place. + ac_srcdir=. + if test -z "$ac_top_builddir"; then + ac_top_srcdir=. + else + ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` + fi ;; + [\\/]* | ?:[\\/]* ) # Absolute path. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir ;; + *) # Relative path. + ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_builddir$srcdir ;; +esac + +# Do not use `cd foo && pwd` to compute absolute paths, because +# the directories may not exist. +case `pwd` in +.) ac_abs_builddir="$ac_dir";; +*) + case "$ac_dir" in + .) ac_abs_builddir=`pwd`;; + [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; + *) ac_abs_builddir=`pwd`/"$ac_dir";; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_builddir=${ac_top_builddir}.;; +*) + case ${ac_top_builddir}. in + .) ac_abs_top_builddir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; + *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_srcdir=$ac_srcdir;; +*) + case $ac_srcdir in + .) ac_abs_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; + *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_srcdir=$ac_top_srcdir;; +*) + case $ac_top_srcdir in + .) ac_abs_top_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; + *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; + esac;; +esac + + + + if test x"$ac_file" != x-; then + { echo "$as_me:$LINENO: creating $ac_file" >&5 +echo "$as_me: creating $ac_file" >&6;} + rm -f "$ac_file" + fi + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + if test x"$ac_file" = x-; then + configure_input= + else + configure_input="$ac_file. " + fi + configure_input=$configure_input"Generated from `echo $ac_file_in | + sed 's,.*/,,'` by configure." + + # First look for the input files in the build tree, otherwise in the + # src tree. + ac_file_inputs=`IFS=: + for f in $ac_file_in; do + case $f in + -) echo $tmp/stdin ;; + [\\/$]*) + # Absolute (can't be DOS-style, as IFS=:) + test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + echo "$f";; + *) # Relative + if test -f "$f"; then + # Build tree + echo "$f" + elif test -f "$srcdir/$f"; then + # Source tree + echo "$srcdir/$f" + else + # /dev/null tree + { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + fi;; + esac + done` || { (exit 1); exit 1; } +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF + sed "$ac_vpsub +$extrasub +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s,@configure_input@,$configure_input,;t t +s,@srcdir@,$ac_srcdir,;t t +s,@abs_srcdir@,$ac_abs_srcdir,;t t +s,@top_srcdir@,$ac_top_srcdir,;t t +s,@abs_top_srcdir@,$ac_abs_top_srcdir,;t t +s,@builddir@,$ac_builddir,;t t +s,@abs_builddir@,$ac_abs_builddir,;t t +s,@top_builddir@,$ac_top_builddir,;t t +s,@abs_top_builddir@,$ac_abs_top_builddir,;t t +" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out + rm -f $tmp/stdin + if test x"$ac_file" != x-; then + mv $tmp/out $ac_file + else + cat $tmp/out + rm -f $tmp/out + fi + +done +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF + +# +# CONFIG_HEADER section. +# + +# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where +# NAME is the cpp macro being defined and VALUE is the value it is being given. +# +# ac_d sets the value in "#define NAME VALUE" lines. +ac_dA='s,^\([ ]*\)#\([ ]*define[ ][ ]*\)' +ac_dB='[ ].*$,\1#\2' +ac_dC=' ' +ac_dD=',;t' +# ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE". +ac_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' +ac_uB='$,\1#\2define\3' +ac_uC=' ' +ac_uD=',;t' + +for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue + # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". + case $ac_file in + - | *:- | *:-:* ) # input from stdin + cat >$tmp/stdin + ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + * ) ac_file_in=$ac_file.in ;; + esac + + test x"$ac_file" != x- && { echo "$as_me:$LINENO: creating $ac_file" >&5 +echo "$as_me: creating $ac_file" >&6;} + + # First look for the input files in the build tree, otherwise in the + # src tree. + ac_file_inputs=`IFS=: + for f in $ac_file_in; do + case $f in + -) echo $tmp/stdin ;; + [\\/$]*) + # Absolute (can't be DOS-style, as IFS=:) + test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + # Do quote $f, to prevent DOS paths from being IFS'd. + echo "$f";; + *) # Relative + if test -f "$f"; then + # Build tree + echo "$f" + elif test -f "$srcdir/$f"; then + # Source tree + echo "$srcdir/$f" + else + # /dev/null tree + { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + fi;; + esac + done` || { (exit 1); exit 1; } + # Remove the trailing spaces. + sed 's/[ ]*$//' $ac_file_inputs >$tmp/in + +_ACEOF + +# Transform confdefs.h into two sed scripts, `conftest.defines' and +# `conftest.undefs', that substitutes the proper values into +# config.h.in to produce config.h. The first handles `#define' +# templates, and the second `#undef' templates. +# And first: Protect against being on the right side of a sed subst in +# config.status. Protect against being in an unquoted here document +# in config.status. +rm -f conftest.defines conftest.undefs +# Using a here document instead of a string reduces the quoting nightmare. +# Putting comments in sed scripts is not portable. +# +# `end' is used to avoid that the second main sed command (meant for +# 0-ary CPP macros) applies to n-ary macro definitions. +# See the Autoconf documentation for `clear'. +cat >confdef2sed.sed <<\_ACEOF +s/[\\&,]/\\&/g +s,[\\$`],\\&,g +t clear +: clear +s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*\)\(([^)]*)\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1\2${ac_dC}\3${ac_dD},gp +t end +s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD},gp +: end +_ACEOF +# If some macros were called several times there might be several times +# the same #defines, which is useless. Nevertheless, we may not want to +# sort them, since we want the *last* AC-DEFINE to be honored. +uniq confdefs.h | sed -n -f confdef2sed.sed >conftest.defines +sed 's/ac_d/ac_u/g' conftest.defines >conftest.undefs +rm -f confdef2sed.sed + +# This sed command replaces #undef with comments. This is necessary, for +# example, in the case of _POSIX_SOURCE, which is predefined and required +# on some systems where configure will not decide to define it. +cat >>conftest.undefs <<\_ACEOF +s,^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */, +_ACEOF + +# Break up conftest.defines because some shells have a limit on the size +# of here documents, and old seds have small limits too (100 cmds). +echo ' # Handle all the #define templates only if necessary.' >>$CONFIG_STATUS +echo ' if grep "^[ ]*#[ ]*define" $tmp/in >/dev/null; then' >>$CONFIG_STATUS +echo ' # If there are no defines, we may have an empty if/fi' >>$CONFIG_STATUS +echo ' :' >>$CONFIG_STATUS +rm -f conftest.tail +while grep . conftest.defines >/dev/null +do + # Write a limited-size here document to $tmp/defines.sed. + echo ' cat >$tmp/defines.sed <<CEOF' >>$CONFIG_STATUS + # Speed up: don't consider the non `#define' lines. + echo '/^[ ]*#[ ]*define/!b' >>$CONFIG_STATUS + # Work around the forget-to-reset-the-flag bug. + echo 't clr' >>$CONFIG_STATUS + echo ': clr' >>$CONFIG_STATUS + sed ${ac_max_here_lines}q conftest.defines >>$CONFIG_STATUS + echo 'CEOF + sed -f $tmp/defines.sed $tmp/in >$tmp/out + rm -f $tmp/in + mv $tmp/out $tmp/in +' >>$CONFIG_STATUS + sed 1,${ac_max_here_lines}d conftest.defines >conftest.tail + rm -f conftest.defines + mv conftest.tail conftest.defines +done +rm -f conftest.defines +echo ' fi # grep' >>$CONFIG_STATUS +echo >>$CONFIG_STATUS + +# Break up conftest.undefs because some shells have a limit on the size +# of here documents, and old seds have small limits too (100 cmds). +echo ' # Handle all the #undef templates' >>$CONFIG_STATUS +rm -f conftest.tail +while grep . conftest.undefs >/dev/null +do + # Write a limited-size here document to $tmp/undefs.sed. + echo ' cat >$tmp/undefs.sed <<CEOF' >>$CONFIG_STATUS + # Speed up: don't consider the non `#undef' + echo '/^[ ]*#[ ]*undef/!b' >>$CONFIG_STATUS + # Work around the forget-to-reset-the-flag bug. + echo 't clr' >>$CONFIG_STATUS + echo ': clr' >>$CONFIG_STATUS + sed ${ac_max_here_lines}q conftest.undefs >>$CONFIG_STATUS + echo 'CEOF + sed -f $tmp/undefs.sed $tmp/in >$tmp/out + rm -f $tmp/in + mv $tmp/out $tmp/in +' >>$CONFIG_STATUS + sed 1,${ac_max_here_lines}d conftest.undefs >conftest.tail + rm -f conftest.undefs + mv conftest.tail conftest.undefs +done +rm -f conftest.undefs + +cat >>$CONFIG_STATUS <<\_ACEOF + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + if test x"$ac_file" = x-; then + echo "/* Generated by configure. */" >$tmp/config.h + else + echo "/* $ac_file. Generated by configure. */" >$tmp/config.h + fi + cat $tmp/in >>$tmp/config.h + rm -f $tmp/in + if test x"$ac_file" != x-; then + if diff $ac_file $tmp/config.h >/dev/null 2>&1; then + { echo "$as_me:$LINENO: $ac_file is unchanged" >&5 +echo "$as_me: $ac_file is unchanged" >&6;} + else + ac_dir=`(dirname "$ac_file") 2>/dev/null || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + { if $as_mkdir_p; then + mkdir -p "$ac_dir" + else + as_dir="$ac_dir" + as_dirs= + while test ! -d "$as_dir"; do + as_dirs="$as_dir $as_dirs" + as_dir=`(dirname "$as_dir") 2>/dev/null || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + done + test ! -n "$as_dirs" || mkdir $as_dirs + fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 +echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} + { (exit 1); exit 1; }; }; } + + rm -f $ac_file + mv $tmp/config.h $ac_file + fi + else + cat $tmp/config.h + rm -f $tmp/config.h + fi +done +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF + +{ (exit 0); exit 0; } +_ACEOF +chmod +x $CONFIG_STATUS +ac_clean_files=$ac_clean_files_save + + +# configure is writing to config.log, and then calls config.status. +# config.status does its own redirection, appending to config.log. +# Unfortunately, on DOS this fails, as config.log is still kept open +# by configure, so config.status won't be able to write to it; its +# output is simply discarded. So we exec the FD to /dev/null, +# effectively closing config.log, so it can be properly (re)opened and +# appended to by config.status. When coming back to configure, we +# need to make the FD available again. +if test "$no_create" != yes; then + ac_cs_success=: + ac_config_status_args= + test "$silent" = yes && + ac_config_status_args="$ac_config_status_args --quiet" + exec 5>/dev/null + $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false + exec 5>>config.log + # Use ||, not &&, to avoid exiting from the if with $? = 1, which + # would make configure fail if this is the last instruction. + $ac_cs_success || { (exit 1); exit 1; } +fi + diff --git a/debian/fireflies/fireflies-2.08/libgfx/configure.in b/debian/fireflies/fireflies-2.08/libgfx/configure.in new file mode 100644 index 00000000..f0c0a630 --- /dev/null +++ b/debian/fireflies/fireflies-2.08/libgfx/configure.in @@ -0,0 +1,290 @@ +dnl Process this file with 'autoconf' to produce a 'configure' script +dnl $Id: configure.in 409 2004-07-06 19:22:39Z garland $ + +AC_REVISION($Revision: 1.19 $) +AC_INIT(include/gfx/gfx.h) +AC_CONFIG_HEADER(include/gfx/config.h) + +sys=`uname` + +dnl ---------------------------------------------------------------------- +dnl -- +dnl -- Handle command line options +dnl -- + +AC_ARG_WITH(libtiff-lzw, + [ --with-libtiff-lzw Use the libtiff LZW compression kit], + AC_DEFINE(HAVE_LIBTIFF_LZW)) + +AC_ARG_WITH(local, + [ --with-local[=DIR] Use libraries in DIR (default /usr/local)], + [if test $withval = "yes"; then withval="/usr/local"; fi + CPPFLAGS="-I${withval}/include" + LDFLAGS="-L${withval}/lib"]) + +AC_ARG_ENABLE(gzstream, + [ --enable-gzstream Allow for automatic (de)compression]) + +if test "$enable_gzstream" = "yes"; then + AC_DEFINE(HAVE_GZSTREAM) +fi + +AC_ARG_ENABLE(warnings, + [ --disable-warnings Disable GCC warning (default to on)], + [], + [enable_warnings="yes"]) + +case $sys in + CYGWIN*|cygwin*) + AC_ARG_ENABLE(cygwin, + [ --enable-cygwin Use the Cygwin libraries (default=yes)]) + + if test "$enable_cygwin" = "no"; then + CFLAGS="$CFLAGS -mno-cygwin" + CPPFLAGS="$CPPFLAGS -mno-cygwin" + CXXFLAGS="$CXXFLAGS -mno-cygwin" + fi + ;; +esac + +dnl ---------------------------------------------------------------------- +dnl -- +dnl -- Check for programs that the build process needs +dnl -- + +AC_PROG_CC +AC_PROG_CPP +AC_PROG_CXX +AC_PROG_CXXCPP +AC_PROG_RANLIB +AC_LANG_CPLUSPLUS +AC_PATH_PROG(RM, rm) +AC_CHECK_PROG(FLTKCONFIG, fltk-config, fltk-config, :) + +dnl -- It might be good to write a more thorough test here +if test $GCC = "yes"; then + CC_DEPEND="\$(CC) -M" + CXX_DEPEND="\$(CXX) -M" +else + CC_DEPEND="makedepend" + CXX_DEPEND="makedepend" +fi + +AC_SUBST(CC_DEPEND) +AC_SUBST(CXX_DEPEND) + +dnl -- If we're using GCC, turn on warnings unless disabled +if test $GCC = "yes" -a "$enable_warnings" = "yes"; then + warning="-Wall -Wno-sign-compare" + CPPFLAGS="$CPPFLAGS $warning" +fi + +dnl ---------------------------------------------------------------------- +dnl -- +dnl -- Check for libraries +dnl -- + +AC_CHECK_LIB(m, sqrt) + +dnl -- Save the basic (non-GUI) compilation configuration +BASE_LIBS=${LIBS} +BASE_CFLAGS=${CFLAGS} +BASE_CXXFLAGS=${CXXFLAGS} +BASE_LDFLAGS=${LDFLAGS} + +IMG_LIBS="" +AC_SUBST(IMG_LIBS) + + +dnl -- We pass IMG_LIBS as need libraries to these check because libtiff +dnl -- can be compiled to use both libz and libjpeg. + +AC_CHECK_LIB(z, zlibVersion, AC_DEFINE(HAVE_LIBZ) \ + IMG_LIBS="$IMG_LIBS -lz", , $IMG_LIBS) + +AC_CHECK_LIB(jpeg, jpeg_start_compress, AC_DEFINE(HAVE_LIBJPEG) \ + IMG_LIBS="$IMG_LIBS -ljpeg", , $IMG_LIBS) + +AC_CHECK_LIB(tiff, TIFFOpen, AC_DEFINE(HAVE_LIBTIFF) \ + IMG_LIBS="$IMG_LIBS -ltiff", , $IMG_LIBS) + +AC_CHECK_LIB(png, png_read_image, AC_DEFINE(HAVE_LIBPNG) \ + IMG_LIBS="$IMG_LIBS -lpng", , $IMG_LIBS) + +dnl -- Check for OpenGL headers and libraries + +AC_CHECK_HEADERS([GL/gl.h OpenGL/gl.h], [break]) +AC_CHECK_HEADERS([GL/glu.h OpenGL/glu.h], [break]) + +dnl -- OpenGL Extension headers +AC_CHECK_HEADERS(GL/glext.h GL/glxext.h GL/wglext.h OpenGL/glext.h, + [], [], + [#if HAVE_GL_GL_H + #include <GL/gl.h> + #elif HAVE_OPENGL_GL_H + #include <OpenGL/gl.h> + #endif + ]) + +case $sys in + +Darwin*) + AC_DEFINE(HAVE_OPENGL, "OpenGL") + AC_DEFINE(HAVE_POLYOFFSET) + GL_LIBS="-framework AGL -framework OpenGL" + X_CORE="-framework Carbon -framework ApplicationServices" + X_DCORE="$X_CORE" + X_PRE_LIBS="" + X_EXTRA_LIBS="" + + AC_SUBST(X_CFLAGS) + AC_SUBST(X_LIBS) + AC_SUBST(X_PRE_LIBS) + AC_SUBST(X_EXTRA_LIBS) + ;; + +CYGWIN*|cygwin*) + CPPFLAGS="${CPPFLAGS} -DWIN32" + AC_DEFINE(HAVE_OPENGL, "OpenGL") + AC_DEFINE(HAVE_POLYOFFSET) + GL_LIBS="-lopengl32 -lglu32" + X_DCORE="-lkernel32 -luser32 -lgdi32 -lcomdlg32 -lole32 -luuid -lcomctl32 -lwsock32" + X_CORE="-mwindows -lole32 -luuid -lcomctl32 -lwsock32" + + X_PRE_LIBS="" + X_EXTRA_LIBS="" + + AC_SUBST(X_CFLAGS) + AC_SUBST(X_LIBS) + AC_SUBST(X_PRE_LIBS) + AC_SUBST(X_EXTRA_LIBS) + ;; + +*) + AC_PATH_XTRA + CFLAGS="${CFLAGS} ${X_CFLAGS}" + CXXFLAGS="${CXXFLAGS} ${X_CFLAGS}" + LIBS="${X_PRE_LIBS} -lX11 ${X_EXTRA_LIBS} ${LIBS}" + LDFLAGS="${LDFLAGS} ${X_LIBS}" + + X_CORE="-lX11 -lXext" + X_DCORE="$X_CORE" + + glneeds="$X_CORE $X_EXTRA_LIBS" + + AC_CHECK_LIB(GL, glBegin, \ + AC_DEFINE(HAVE_OPENGL, "OpenGL") GL_LIBS="-lGL -lGLU", \ + AC_CHECK_LIB(MesaGL, glBegin, \ + [AC_DEFINE(HAVE_OPENGL, "Mesa") + GL_LIBS="-lMesaGL -lMesaGLU"], ,$glneeds),$glneeds) + + LIBS="${GL_LIBS} $glneeds" + + dnl -- Check for OpenGL extensions + AC_CHECK_FUNC(glPolygonOffset, AC_DEFINE(HAVE_POLYOFFSET)) + AC_CHECK_FUNC(glPolygonOffsetEXT, AC_DEFINE(HAVE_POLYOFFSET_EXT)) + ;; +esac + +AC_SUBST(X_CORE) +AC_SUBST(X_DCORE) +AC_SUBST(GL_LIBS) + +dnl -- Check for FLTK +dnl We use custom AC_TRY_LINK tests because AC_CHECK_LIB can't really +dnl properly handle C++ name mangling. + +FLTK_LIBS="-lfltk" + +AC_MSG_CHECKING(for FLTK library) +save_libs=$LIBS +LIBS="$FLTK_LIBS $X_CORE $LIBS" +AC_TRY_LINK( + [#include <FL/Fl.H>], + [Fl::run();], + [AC_DEFINE(HAVE_FLTK) + AC_MSG_RESULT(yes)], + [AC_MSG_RESULT(no) + FLTK_LIBS=""]) +LIBS=$save_libs + +AC_MSG_CHECKING(for FLTK GL support) +save_libs=$LIBS +LIBS="$FLTK_LIBS $GL_LIBS $X_CORE $LIBS" +AC_TRY_LINK( + [#include <FL/Fl.H> + #include <FL/Fl_Gl_Window.H>], + [Fl_Gl_Window win(640,480);], + [AC_DEFINE(HAVE_FLTK_GL) + AC_MSG_RESULT(in libfltk)], + [FLTK_LIBS="-lfltk_gl $FLTK_LIBS" + LIBS="$FLTK_LIBS $GL_LIBS $X_CORE $save_libs" + AC_TRY_LINK( + [#include <FL/Fl.H> + #include <FL/Fl_Gl_Window.H>], + [Fl_Gl_Window win(640,480);], + [AC_DEFINE(HAVE_FLTK_GL) + AC_MSG_RESULT(in libfltk_gl)], + [FLTK_LIBS="-lfltk" + AC_MSG_RESULT(no)])]) + +LIBS=$save_libs +AC_SUBST(FLTK_LIBS) + +dnl -- Restore non-GUI compilation settings +LIBS=${BASE_LIBS} +CFLAGS=${BASE_CFLAGS} +CXXFLAGS=${BASE_CXXFLAGS} +LDFLAGS=${BASE_LDFLAGS} + +dnl ---------------------------------------------------------------------- +dnl -- +dnl -- Check for header files that we'll need +dnl -- + +AC_HEADER_STDC +AC_CHECK_HEADERS(limits.h) +AC_CHECK_HEADERS(unistd.h) + + +dnl -- STL headers that aren't always available +AC_CHECK_HEADERS(hash_map) +AC_CHECK_HEADERS(hash_set) +AC_CHECK_HEADERS(ext/hash_map) +AC_CHECK_HEADERS(ext/hash_set) +AC_CHECK_HEADERS(valarray) +AC_CHECK_HEADERS(sstream) +AC_CHECK_HEADERS(strstream) + +dnl ---------------------------------------------------------------------- +dnl -- +dnl -- Check for typedefs, declarations, and compiler characteristics +dnl -- + +AC_C_CONST +AC_C_INLINE + +AC_MSG_CHECKING(for type bool) +AC_TRY_COMPILE([], + [bool x; x;], + [AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_BOOL)], + AC_MSG_RESULT(no)) + + +AC_FUNC_ALLOCA +AC_CHECK_FUNCS(rint getrusage times random getopt getopt_long) + +dnl ---------------------------------------------------------------------- +dnl -- +dnl -- Wrap up and write the results +dnl -- + +ROOT=`pwd` + +CPPFLAGS="$CPPFLAGS -I${ROOT}/include -DHAVE_CONFIG_H" +CFLAGS="$BASE_CFLAGS $CPPFLAGS" +CXXFLAGS="$BASE_CXXFLAGS $CPPFLAGS" +LDFLAGS="$BASE_LDFLAGS -L${ROOT}/src" + +AC_OUTPUT(gfx-config) diff --git a/debian/fireflies/fireflies-2.08/libgfx/doc/build.html b/debian/fireflies/fireflies-2.08/libgfx/doc/build.html new file mode 100644 index 00000000..e373c81e --- /dev/null +++ b/debian/fireflies/fireflies-2.08/libgfx/doc/build.html @@ -0,0 +1,135 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" + "http://www.w3.org/TR/REC-html40/loose.dtd"> +<!-- $Id: build.html 334 2002-04-02 17:01:32Z garland $ --> + +<html> + +<head> +<title>libgfx: Building the Library</title> +<link rel=stylesheet href="cdoc.css" type="text/css"> +<meta name="Author" content="Michael Garland"> +</head> + +<body> + +<h2>Building the Library</h2> + +<p><tt>libgfx</tt> is a C++ library which is meant to be fairly easy +to compile on a wide range of systems. It was developed under Windows +NT 4.0, Windows 2000, and RedHat Linux 6. + +<p>This library does make use of the ANSI C++ Standard Library. For +instance, it uses the new <tt><iostream></tt> rather than the +old <tt><iostream.h></tt> package. And it does make some +minimal use of the Standard Template Library (STL). Therefore, it may +not work on older C++ compilers. It is known to work on Microsoft +Visual C++ version 5.0 and above and GNU GCC version 2.9 and above. + +<p><strong>Required</strong> external libraries: +<ul> +<li>The <a href="http://www.fltk.org">FLTK</a> graphical interface toolkit. +<li>An <a href="http://www.opengl.org">OpenGL</a> library +or the <a href="http://www.mesa3d.org">Mesa</a> library. +</ul> + + +<p><strong>Optional</strong> external libraries: +<ul> +<li>The <a href="http://www.libtiff.org">libtiff</a> library for TIFF image +file support + +<li>The JPEG support library from the +<a href="http://www.ijg.org">Independent JPEG Group</a> + +<li>The <a href="http://www.libpng.org/pub/png/">libpng</a> library +for PNG image file support. + +</ul> + + +<h3>For Windows Systems</h3> + + + + +<h4>Visual C++</h4> + +<p>A Visual C++ 6.0 workspace and accompanying project files are +provided in the <tt>vc6</tt> directory. +An older VC++ 5.0 workspace is available in the <tt>vc5</tt> directory. +However, this is no longer in regular use and may be out of date. + +<h5>Manual Build</h5> + +<p>The library can also be built manually using the <tt>nmake</tt> +command line tool. A <tt>configure.bat</tt> batch file is provided +which will set up the necessary configuration files. + +<p>To build the library manually, use the following process: +<ol> +<li><tt>configure.bat</tt> +<li><tt>cd src</tt> +<li><tt>nmake /f Makefile.vc</tt> +</ol> + + +<h4>Cygwin</h4> + +<p>The <tt>libgfx</tt> library will build properly under Windows with + the <a href="http://sourceware.cygnus.com/cygwin/">Cygwin</a> + toolset. Simply follow the directions for <a href="#unix">Unix + systems</a>. + + + + +<h3><a name="unix">For Unix Systems</a></h3> + +<p>The Unix build process relies on the GNU +<a href="http://www.gnu.org/software/autoconf/autoconf.html">Autoconf</a> +system to properly configure the software. + +<p>Once the required libraries are installed, you should be able to +build the library using the following process: +<ol> +<li><tt>./configure</tt> +<li><tt>cd src</tt> +<li><tt>make</tt> +</ol> +If the support libraries are installed in a directory outside the default +search path, you can invoke the <tt>configure</tt> script with the option +<tt>--with-local[=dir]</tt> which will add "dir" to the search path. The +default local directory is <tt>/usr/local</tt>, but you can specify any +directory of your choice. + +<h3><a name="macosx">For Mac OS X Systems</a></h3> + +<p>The current version of <tt>libgfx</tt> can be successfully compiled +under Mac OS X, but it requires a bit of manual intervention. + +<p>First, you should install the FLTK library. To build under Mac OS X, +you must use version 1.1.0 or later. +Next, you should follow the instructions for using the Autoconf +script outlined in the <a href="#unix">directions for Unix systems</a> +above. + +<p>This is sufficient to compile command-line programs. However, GUI +programs require a little extra work. The typical GUI <tt>make</tt> rule looks +like this: +<pre> + gui-program: gui-program.cxx + $(CXX) -o $@ $^ $(CXXFLAGS) $(LDFLAGS) -lgfx $(GUI_LIBS) -lm +</pre> +To work correctly with the Mac OS, you must add an additional step to +this <tt>make</tt> rule: +<pre> + gui-program: gui-program.cxx + $(CXX) -o $@ $^ $(CXXFLAGS) $(LDFLAGS) -lgfx $(GUI_LIBS) -lm + $(FLTKCONFIG) --post $@ +</pre> +This uses the <tt>fltk-config</tt> script to add a standard resource +fork to the compiled application. + +</body> + +</html> diff --git a/debian/fireflies/fireflies-2.08/libgfx/doc/cdoc.css b/debian/fireflies/fireflies-2.08/libgfx/doc/cdoc.css new file mode 100644 index 00000000..289832b6 --- /dev/null +++ b/debian/fireflies/fireflies-2.08/libgfx/doc/cdoc.css @@ -0,0 +1,86 @@ +/* + * Stylesheet for code documentation + * + * $Id: cdoc.css 268 2001-10-02 16:09:20Z garland $ + */ + +BODY { + font-family: "Times New Roman", "Times", serif; + background-color: white; + color: black; +} + +@media screen { + BODY { + margin-left: 11.11%; + margin-right: 11.11%; + } + + /* To be used for floating navbars */ + DIV.navbar { + font-family: Arial Narrow; + display: block; + text-align: left; + float: right; + padding-bottom: 2pt; + padding-left: 2pt; + border-left: thin dashed black; + border-bottom: thin dashed black; + } +} + +@media print { + /* IE often prints Web pages in excessively large fonts */ + BODY { font-size: 10pt; } + + /* Navbars should not be printed */ + DIV.navbar { display: none } + + /* H2 headers are used as the top-level elements for separate sections */ + H2 { page-break-before: always } +} + +H1, H2, H3, H4, H5, H6 { clear: both; font-family: Arial, sans-serif; } +H1 { font-size: 249% } +H2 { font-size: 172%; } +H3 { font-size: 144%; } +H4 { font-size: 120%; margin-bottom: 0.5em; } +H5,H6 { font-size: 100%; margin-bottom: 0.2em; } + +H1, H2, H3, H4 { + color: #4444aa; + background-color: #cccccc; + padding-top: 4px; + padding-left: 4px; + padding-right: 4px; + padding-bottom: 4px; +} + +H1,H2 { margin-left: -1.5em; } +H3 { margin-left: -0.75em; } + +P { text-indent: 0pt; } +P.indent { text-indent: 1em; } +P.justify { text-align: justify; } + +PRE.code { margin-left: 2em } + +/* The standard size scale */ +.min5 { font-size: 40%; } +.min4 { font-size: 48%; } +.min3 { font-size: 58%; } +.min2 { font-size: 69%; } +.min1 { font-size: 83%; } +.min0 { font-size: 100%; } +.mag0 { font-size: 100%; } +.mag1 { font-size: 120%; } +.mag2 { font-size: 144%; } +.mag3 { font-size: 172%; } +.mag4 { font-size: 207%; } +.mag5 { font-size: 249%; } + +/* Link styles */ +A { text-decoration: none } +A:active {color: red} +A:hover {color: red} +A:visited {color: purple} diff --git a/debian/fireflies/fireflies-2.08/libgfx/doc/ex-gui.html b/debian/fireflies/fireflies-2.08/libgfx/doc/ex-gui.html new file mode 100644 index 00000000..d1e0a1be --- /dev/null +++ b/debian/fireflies/fireflies-2.08/libgfx/doc/ex-gui.html @@ -0,0 +1,238 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" + "http://www.w3.org/TR/REC-html40/loose.dtd"> +<!-- $Id: ex-gui.html 173 2000-09-07 02:57:34Z garland $ --> + +<!-- Based on ../tests/t-gui.cxx revision 1.3 --> + +<html> + +<head> +<title>libgfx: Simple GUI Example Program</title> +<link rel=stylesheet href="cdoc.css" type="text/css"> +<meta name="Author" content="Michael Garland"> + +<style type="text/css"> +<!-- +pre { margin-left: 2em } +--> +</style> + +</head> + +<body> + +<h2>Simple GUI Example Program</h2> + +<p>This is a very simple program which uses the minimalist <a +href="gui.html">GUI</a> facility provided by <tt>libgfx</tt> +to create a window a draw a red square in it. When first started, it +presents the user with a window which looks like the one shown below. +The full source code for this example application can be found in +the file <tt>tests/t-gui.cxx</tt> in the <tt>libgfx</tt> source +distribution. + +<p> +<div align=center> +<img src="gui-redbox.gif"> +</div> + +<h3>Setup</h3> + +<p>The program begins by including some of the standard +<tt>libgfx</tt> headers. + +<pre> +#include <gfx/gfx.h> +#include <gfx/gui.h> +#include <gfx/gltools.h> +</pre> + +<p>The first step in using the <tt>libgfx</tt> GUI framework is to +subclass the <tt>MxGUI</tt> class and override whatever handlers you +want to write code for. After defining the subclass, you must then +create a <em>single</em> instance. In this application, we override +the handlers involved with drawing and mouse events. +We also follow the recommended idiom of naming our derived subclass +<tt>GUI</tt> and its lone instance <tt>gui</tt>. + +<pre> +class GUI : public MxGUI +{ +public: + float angle, opt_theta, center[2]; + bool dragging; + +public: + <i>// Drawing-related handler methods</i> + virtual void setup_for_drawing(); + virtual void draw_contents(); + virtual void update_animation(); + + <i>// Mouse-related handler methods</i> + virtual bool mouse_down(int *where, int which); + virtual bool mouse_up(int *where, int which); + virtual bool mouse_drag(int *where, int *last, int which); +}; + +GUI gui; +</pre> + + +<h3>Application Entry Point</h3> + +<p><tt>MxGUI</tt> programs always use the <tt>main()</tt> procedure as +their entry point, even on Windows systems. This application follows +the recommended sequence of actions +<ol> +<li>Initialize member variables defined by the <tt>GUI</tt> derived class. +<li>Call <tt>gui.initialize()</tt> to parse the command line and +create the application. +<li>Customize the default application by changing labels, adding +menus, etc. +<li>And finally, call <tt>gui.run()</tt> to open the application +window and begin the event loop. +</ol> +These four distinct phases are indicated in the program source by +whitespace-separated blocks. + +<pre> +main(int argc, char **argv) +{ + gui.opt_theta = 10.0f; + gui.angle = 0.0f; + gui.dragging = false; + gui.center[0] = gui.center[1] = 0.0f; + + gui.initialize(argc, argv); + + gui.toplevel->label("Simple GUI Example"); + + return gui.run(); +} +</pre> + +<h3>Drawing-Related Handler Methods</h3> + +<p>Whenever our OpenGL drawing canvas is created, resized, or +otherwise reconfigured, the <tt>setup_for_drawing()</tt> handler is +invoked. This is where you want to set up any graphics state that is +the same for every frame. + +<pre> +void GUI::setup_for_drawing() +{ + glClearColor(0.65f, 0.65f, 0.65f, 0.0f); + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + + glMatrixMode(GL_PROJECTION); + gluOrtho2D(-1.0, 1.0, -1.0, 1.0); +} +</pre> + + +<p>If the contents of the OpenGL canvas need to be redrawn, the +<tt>draw_contents()</tt> handler is invoked. + +<pre> +void GUI::draw_contents() +{ + glClear(GL_COLOR_BUFFER_BIT); + + glMatrixMode(GL_MODELVIEW); + glPushMatrix(); + glLoadIdentity(); + + <i>// Draw the black axes</i> + glColor3f(0.0, 0.0, 0.0); + glBegin(GL_LINES); + glVertex2f(-1.0, 0.0); + glVertex2f(1.0, 0.0); + glVertex2f(0.0, -1.0); + glVertex2f(0.0, 1.0); + glEnd(); + + glTranslatef(center[0], center[1], 0); + glRotatef(angle, 0, 0, 1); + + <i>// Draw the red rectangle</i> + glEnable(GL_BLEND); + glColor4d(0.8, 0.15, 0.15, 0.85); + glBegin(dragging?GL_LINE_LOOP:GL_POLYGON); + glBegin(GL_POLYGON); + glVertex2f(-0.5, -0.5); + glVertex2f(-0.5, 0.5); + glVertex2f(0.5, 0.5); + glVertex2f(0.5, -0.5); + glEnd(); + glDisable(GL_BLEND); + + glPopMatrix(); +} +</pre> + +<p>The <tt>MxGUI</tt> framework provides a simplistic animation +mechanism. Whenever animation is activated --- the user controls this +via a menu entry --- the event loop will periodically call the +<tt>update_animation()</tt> handler. +<pre> +void GUI::update_animation() +{ + angle += opt_theta; +} +</pre> + +<h3>Mouse-Related Handler Methods</h3> + +<p>When the user clicks the left mouse button, we want to re-center +the square around that position. We use a call to the +<tt>unproject_pixel()</tt> <a href="gl.html">utility function</a> +to map the pixel location into a world-space coordinate. + +<pre> +static bool center_on_click(float *ctr, int *where) +{ + double world[3]; + + unproject_pixel(where, world); + ctr[0] = (float)world[0]; + ctr[1] = (float)world[1]; + + return true; +} +</pre> + +<p>Given the above code to center the rectangle on a click location, +it is a simple matter to write our mouse handlers. Whenever the +left button is pressed or dragged, we recenter the rectangle. We also +maintain the value of <tt>gui.dragging</tt> to indicate whether the +mouse is being dragged. If it is, the <tt>draw_contents()</tt> +handler will draw the rectangle as an outline rather than a filled box. + +<pre> +bool GUI::mouse_down(int *where, int which) +{ + if( which==1 ) + { + dragging = true; + return center_on_click(center, where); + } + else return false; +} + +bool GUI::mouse_up(int *where, int which) +{ + dragging = false; + return (which==1); +} + +bool GUI::mouse_drag(int *where, int *last, int which) +{ + if( which==1 ) + return center_on_click(center, where); + else + return false; +} +</pre> + +</body> +</html> diff --git a/debian/fireflies/fireflies-2.08/libgfx/doc/ex-script.html b/debian/fireflies/fireflies-2.08/libgfx/doc/ex-script.html new file mode 100644 index 00000000..56124fb4 --- /dev/null +++ b/debian/fireflies/fireflies-2.08/libgfx/doc/ex-script.html @@ -0,0 +1,153 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" + "http://www.w3.org/TR/REC-html40/loose.dtd"> +<!-- $Id: ex-script.html 269 2001-10-10 00:38:28Z garland $ --> + +<!-- Based on ../tests/t-script.cxx revision 1.6 --> + +<html> + +<head> +<title>libgfx: Simple Scripted Program</title> +<link rel=stylesheet href="cdoc.css" type="text/css"> +<meta name="Author" content="Michael Garland"> + +<style type="text/css"> +<!-- +pre { margin-left: 2em } +--> +</style> + +</head> + +<body> + +<h2>Simple Scripted Program</h2> + +<p>This program demonstrates some of the basic features provided by the +<tt>libgfx</tt> <a href="script.html">scripting package</a>. Given a list of +file names on the command line, it reads each of them in turn and executes the +scripting commands contained within them. + +<h3>Setup and Initialization</h3> + +<p>The program begins by including the headers for the <tt>libgfx</tt> modules +which it uses: +<pre> +#include <gfx/gfx.h> +#include <gfx/script.h> +#include <gfx/vec3.h> +</pre> + +<p>The <tt>main()</tt> application entry point performs a very simple task. +It creates a scripting environment (<tt>class CmdEnv</tt> and registers a set +of scripting commands. Once these handlers have been installed, +it loops over every file name specified on the command line and executes it as +a script. +<pre> +main(int argc, char *argv[]) +{ + CmdEnv env; + + env.register_command("add", proc_add); + env.register_command("avg", proc_add); + env.register_command("echo", proc_echo); + env.register_command("vec3", proc_vec3); + + for(int i=1; i&argc; i++) + script_do_file(argv[i], env); + + return 0; +} +</pre> + +<h3>Command Procedures</h3> + +<p>Every scripting command is handled by some command procedure. The +registration code above binds the actual procedures to the names of their +scripting commands. Then, whenever a given command occurs in a script being +processed, the corresponding handler is invoked. + +<p>The first command procedure actually implements two scripting commands: +<tt>add</tt> and <tt>avg</tt>. It determines which command has been invoked +by examining its <tt>name</tt> argument. +It treats its command line as a whitespace-separated sequence of numbers, +either adds or averages all of them, and then prints the result. +<pre> +int proc_add(const CmdLine &cmd) +{ + double sum = 0.0; + int count; + + std::vector<double> values; + cmd.collect_as_numbers(values); + for(count=0; count<values.size(); count++) + sum += values[count]; + + if( cmd.opname() == "avg" && count>0 ) + sum /= (double)count; + + cout << sum << endl; + return SCRIPT_OK; +} +</pre> + +<p>This next procedure requires precisely 3 numeric arguments, from which it +constructs a 3-D vector using the <tt>Vec3</tt> class. If the number of +arguments is not 3, it returns a value indicating a syntax error occurred. +<pre> +int proc_vec3(const CmdLine &cmd) +{ + if( cmd.argcount() != 3 ) return SCRIPT_ERR_SYNTAX; + + Vec3 v; + cmd.collect_as_numbers(v, 3); + + cout << v << endl; + return SCRIPT_OK; +} +</pre> + +<p>Finally, the <tt>echo</tt> procedure does not interpret its arguments at +all. Instead, it simply prints the entire argument line as is. +<pre> +int proc_echo(const CmdLine &cmd) +{ + cout << cmd.argline() << endl; + return SCRIPT_OK; +} +</pre> + +<h3>Sample Execution</h3> + +<p>To demonstrate the action of this sample program, here is a particularly +simple script. +<pre> +# This is a test script meant to be fed to t-script. It is not meant as an +# exhaustive test, but mainly as a demonstration. + +echo The following sum should be 15 +add 1 2 3 4 5 + +echo +echo The following average should be 3.5 +avg 3 8 2 1 + +echo +echo The following is the vector [1 0 0] +vec3 1 0 0 +</pre> + +<p>When given to the sample program, it produces the following output +<pre> +The following sum should be 15 +15 + +The following average should be 3.5 +3.5 + +The following is the vector [1 0 0] +1 0 0 +</pre> + +</body> +</html> diff --git a/debian/fireflies/fireflies-2.08/libgfx/doc/geom3d.html b/debian/fireflies/fireflies-2.08/libgfx/doc/geom3d.html new file mode 100644 index 00000000..549aa7a7 --- /dev/null +++ b/debian/fireflies/fireflies-2.08/libgfx/doc/geom3d.html @@ -0,0 +1,59 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" + "http://www.w3.org/TR/REC-html40/loose.dtd"> +<!-- $Id: geom3d.html 160 2000-09-05 19:44:15Z garland $ --> + +<html> + +<head> +<title>libgfx: 3-D Geometric Procedures</title> +<link rel=stylesheet href="cdoc.css" type="text/css"> +<meta name="Author" content="Michael Garland"> +</head> + +<body> + +<h2>3-D Geometric Procedures</h2> + +<p>Triangles are a very common modeling primitive in many graphics +applications. The <tt>libgfx</tt> library provides a package of routines for +computing various geometric properties of triangles. +To use this package you must include the standard header file +<pre> + #include <gfx/geom3d.h> +</pre> +Note that all of these functions assume that the corners of the triangle are +listed in <em>counter-clockwise order</em> around the outward pointing normal. + +<p>You can compute the (signed) area of a triangle using the following +function. Note that the area will be negative if the vertices are listed in +clockwise order. +<pre> + double triangle_area(const Vec3&, const Vec3&, const Vec3&); +</pre> + +<p>The following functions compute the plane defined by a triangle, and the +corresponding normal vector. The standard versions always use unit normal +vectors while the "raw" versions will use unscaled normals. +<pre> + Vec3 triangle_normal(const Vec3&, const Vec3&, const Vec3&); + Vec4 triangle_plane(const Vec3&, const Vec3&, const Vec3&); + + Vec3 triangle_raw_normal(const Vec3&, const Vec3&, const Vec3&); + Vec4 triangle_raw_plane(const Vec3&, const Vec3&, const Vec3&); +</pre> + + +<p>For some meshing applications, it may on occasion be necessary to assess +the aspect ratio of a triangle. +<pre> + double triangle_compactness(const Vec3&, const Vec3&, const Vec3&); +</pre> +This function computes the "compactness" of a triangle. The returned value +will be between 0 and 1, with 0 meaning a degenerate (area=0) triangle and 1 +meaning an equilateral triangle. The formula used, originally suggested by +Andre Gueziec, is 4*sqrt(3) * Area / (L1 + L2 + L3) where Li is the squared +length of side <i>i</i> of the triangle. + +</body> + +</html> diff --git a/debian/fireflies/fireflies-2.08/libgfx/doc/gl.html b/debian/fireflies/fireflies-2.08/libgfx/doc/gl.html new file mode 100644 index 00000000..a00ba9ab --- /dev/null +++ b/debian/fireflies/fireflies-2.08/libgfx/doc/gl.html @@ -0,0 +1,112 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" + "http://www.w3.org/TR/REC-html40/loose.dtd"> +<!-- $Id: gl.html 156 2000-09-05 16:33:04Z garland $ --> + +<html> + +<head> +<title>libgfx: OpenGL Support</title> +<link rel=stylesheet href="cdoc.css" type="text/css"> +<meta name="Author" content="Michael Garland"> +</head> + +<body> + +<h2>OpenGL Support</h2> + +<p> + + +<p><strong>Important:</strong> +The standard way to include the OpenGL headers is to include the +headers + +<pre> + #include <GL/gl.h> + #include <GL/glu.h> +</pre> + +However, to ensure portability you <em>should not</em> do this; use +the following inclusion instead: + +<pre> + #include <gfx/gl.h> +</pre> + +The primary reason for this is that the Microsoft OpenGL headers do +not work properly unless you have included <tt><windows.h></tt> +first. This <tt>libgfx</tt> header takes care of the necessary +<tt>#ifdefs</tt> and keeps your code looking cleaner. + + +<h3>Utility Functions</h3> + + +To gain access to these utility functions, include the header + +<pre> + #include <gfx/gltools.h> +</pre> + +<p>Given a pixel coordinate in the OpenGL viewport, it is often +necessary to project this to a 3-D point in the world being displayed. +You can use the function +<pre> + int unproject_pixel(int *pixel, double *world, double z=0.0); +</pre> +to accomplish this. + + + +<p>To simplify the display of 3-D scenes, the function +<pre> + void camera_lookat(const Vec3& min, const Vec3& max, double aspect); +</pre> +will set up a standard viewing geometry for displaying an object +bounded by the axis-aligned box [<tt>min</tt>, <tt>max</tt>] in a +window whose aspect ratio is <tt>aspect</tt>. +The camera will be looking at the center of the box, from a position +further along the <i>z</i> axis, with a 60° field of view. +The viewing transform will be multiplied into the current matrix, +using calls to <tt>gluPerspective()</tt> and <tt>gluLookAt()</tt>. + +<p>Errors during OpenGL processing are not reported to the user, they are +merely flagged in the current OpenGL state. To check for and report any +OpenGL errors, you can call the function: +<pre> + void check_opengl_errors(const char *msg=NULL); +</pre> +An optional message can be provided which will be prepended to the error +reported (if any). + +<h4>Picking</h4> + +<p>Interactive programs frequently need to allow the user to select +individual components of the scene being displayed by clicking on the +rendered image. Given a pixel location in the window, the application +must determine which entity the user clicked on. +The standard technique for doing this with OpenGL is with the selection +buffer. The <tt>libgfx</tt> library provides some utility functions to make +using the selection buffer somewhat easier. +Details on using the selection buffer can be found in the OpenGL Programming +Guide. + +<p>Before drawing your primitives, call the function +<pre> + void begin_opengl_pick(int *ctr, double radius, GLuint *buf, int size); +</pre> +with the location of the user's pointer (<tt>ctr</tt>) and +the <tt>radius</tt> of the region to consider. You will also need to allocate +and pass a buffer of object identifiers to hold the candidate objects. +Having set things up, you can draw your primitives as usual, assigning an +integer identifier to each using the <tt>glLoadName()</tt> function. +After all primitives have been drawn, call the function +<pre> + GLuint complete_opengl_pick(GLuint *buffer); +</pre> +The returned value will be the identifier of the object clicked on, or +<tt>opengl_pick_nil</tt> if the user clicked on the background. + +</body> + +</html> diff --git a/debian/fireflies/fireflies-2.08/libgfx/doc/gui-layout.gif b/debian/fireflies/fireflies-2.08/libgfx/doc/gui-layout.gif Binary files differnew file mode 100644 index 00000000..767daa05 --- /dev/null +++ b/debian/fireflies/fireflies-2.08/libgfx/doc/gui-layout.gif diff --git a/debian/fireflies/fireflies-2.08/libgfx/doc/gui-redbox.gif b/debian/fireflies/fireflies-2.08/libgfx/doc/gui-redbox.gif Binary files differnew file mode 100644 index 00000000..d53d89fd --- /dev/null +++ b/debian/fireflies/fireflies-2.08/libgfx/doc/gui-redbox.gif diff --git a/debian/fireflies/fireflies-2.08/libgfx/doc/gui.html b/debian/fireflies/fireflies-2.08/libgfx/doc/gui.html new file mode 100644 index 00000000..01031805 --- /dev/null +++ b/debian/fireflies/fireflies-2.08/libgfx/doc/gui.html @@ -0,0 +1,257 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" + "http://www.w3.org/TR/REC-html40/loose.dtd"> +<!-- $Id: gui.html 307 2002-03-11 21:15:37Z garland $ --> + +<html> + +<head> +<title>libgfx: Minimalist GUI Framework</title> +<link rel=stylesheet href="cdoc.css" type="text/css"> +<meta name="Author" content="Michael Garland"> +</head> + +<body> + +<h2>Minimalist GUI Framework</h2> + +<p>All interactive graphics applications need to create some sort of graphical +user interface. While many applications may require a fairly sophisticated +interface, there is a large class of applications which can be built with a +very simple interface. The <tt>libgfx</tt> library provides a framework to +ease the construction of such simple interfaces. + +<p>The kind of application interface supported by the GUI framework is +pictured in the following figure: +<blockquote> +<center><img src="gui-layout.gif"></center> +</blockquote> + +The application window consists of three primary components: +<ol> +<li>A menu bar, which is managed by the GUI framework, +<li>An OpenGL canvas window where the application is free to draw its content +and receive user events such as mouse clicks, and +<li>A status bar where the application can print text messages. +</ol> + +<p>The <a href="ex-gui.html">code for the application pictured +above</a> provides a concrete example of using this GUI framework. + +<h3>Creating a GUI Application</h3> + +<p>To begin building your GUI application, you'll need to include the GUI +framework header: +<pre> + #include <gfx/gui.h> +</pre> +The framework itself is packaged as a C++ class named <tt>MxGUI</tt>. +You create your application by subclassing it and overriding various virtual +methods. You can then create a single instance of this class, which will +represent your application. +For consistency, it is recommended that you name +the derived subclass <tt>GUI</tt> and its instance <tt>gui</tt> as in the +following: +<pre> + class GUI : public MxGUI + { + public: + <i>// Application variables and methods</i> + + public: + <i>// Override virtual methods to handle events</i> + }; + + GUI gui; <i>// Create application instance</i> +</pre> + +<p>Programs based using this framework always use the <tt>main()</tt> +procedure as their entry point, <em>even on Windows systems</em>. +Inside this main procedure, you should perform this general sequence of +operations: +<ol> +<li>Initialize global variables and member variables defined in the +<tt>GUI</tt> class. +<li>Call the <tt>gui.initialize()</tt> procedure to parse the command line and +create the application. +<li>Customize the default application by changing labels, adding menus, etc. +<li>Call <tt>gui.run()</tt> to open the application window and begin the event +loop. +</ol> + +<p>The <tt>MxGUI::initialize</tt> method must be called to initialize the GUI +framework. +<pre> + virtual void initialize(int argc, char **argv, + Fl_Menu_Item *layout=NULL, int xw=640, int yw=480); +</pre> +You should pass to it the <tt>argc</tt> and <tt>argv</tt> command-line +variables as passed into <tt>main()</tt>. The framework will take care of +parsing the command-line and calling the appropriate handlers. +The optional <tt>layout</tt> argument can be used to specify an initial menu +structure; the default value of <tt>NULL</tt> directs the framework to use the +default menu layout. +The optional <tt>xw</tt> and <tt>yw</tt> arguments specify the desired width +and height (in pixels) of the OpenGL canvas. + +<h4>Command-Line Processing</h4> + +<p> +The <tt>MxGUI</tt> framework uses the FLTK +<a href="http://www.fltk.org/doc-1.0/functions.html#args"><tt>Fl::args</tt></a> +facility to parse the command line passed to <tt>MxGUI::initialize()</tt>. +For each option on the command line, it invokes the following handler: +<pre> + virtual int cmdline_option(int argc, char **argv, int& index); +</pre> +The <tt>argc</tt> and <tt>argv</tt> values are the complete array originally +passed to <tt>initialize()</tt>. The <tt>index</tt> argument indicates which +element of <tt>argv</tt> contains the current switch being processed. +This <tt>index</tt> variable is passed by reference to allow the handler to +consume additional elements of <tt>argv</tt> by incrementing <tt>index</tt>. +The handler should return <tt>1</tt> if it handled the switch and <tt>0</tt> +otherwise. + +<p>Once all options have been processed, the initialization code invokes the +following handler for each file listed on the command line. +<pre> + virtual void cmdline_file(const char *file); +</pre> +If no files are specified this handler will be invoked with a <tt>NULL</tt> +value. + +<h4>Drawing</h4> + +<p>The <tt>MxGUI</tt> framework uses two virtual methods to control drawing in +the OpenGL canvas. The first of these is: +<pre> + virtual void setup_for_drawing(); +</pre> +This method is called whenever the canvas has been reconfigured. Primarily, +this occurs when the canvas has either just been shown on the screen (e.g., +after creation) or when it has been resized. + +<p>Whenever the canvas needs to be repainted, the framework will invoke the +handler: +<pre> + virtual void draw_contents(); +</pre> +You should override this method and place all your drawing code in it. + + +<h4>Handling Mouse Events</h4> + +<p>Interactive applications will typically want to receive mouse events taking +place on the OpenGL canvas. The framework classifies mouse events into three +types: +<ol> +<li><strong>Button down:</strong> + the user has depressed a mouse button +<li><strong>Button up:</strong> + the user has released a previously depressed button +<li><strong>Drag:</strong> + the user is moving the mouse with a button depressed +</ol> +When one of these events occur, the corresponding event handler will be +invoked: +<pre> + virtual bool mouse_down(int *where, int which); + virtual bool mouse_up(int *where, int which); + virtual bool mouse_drag(int *where, int *last, int which); +</pre> +The <tt>where</tt> argument is a 2-D array containing the pixel location in +the OpenGL canvas at which the mouse was pointing when the event occurred. +The number of the button involved (either 1, 2, or 3) is passed in the +<tt>which</tt> argument. +To simplify drag operations, that event handler is also passed the location of +the <tt>last</tt> received drag event. + +<p>All of these mouse handlers should return <tt>true</tt> if the canvas +should be redrawn in response to the event just handled. If the canvas does +not need to be updated, they should return <tt>false</tt>. + +<h4>Handling Key Presses</h4> + +<p>Key press events can be received through the virtual function: +<pre> + virtual bool key_press(int key); +</pre> +The return value of this function indicates whether the key press event +was consumed by the handler. You should make sure to return +<tt>false</tt> if you do not use the given key, otherwise keyboard +accelerators for the menu bar will no longer function correctly. + +<p>Note that FLTK defines +<a + href="http://www.fltk.org/doc-1.0/enumerations.html#key_values">symbolic + names</a> for non-ASCII keys. You can also query the state of the +modifier keys using the <tt><a href="http://www.fltk.org/doc-1.0/enumerations.html#13_6">Fl::event_state()</a></tt> function. + +<h4>Animation</h4> + +<p>A very simple mechanism for supporting animation is also provided by the +framework. To take advantage of this, first set the <tt>MxGUI</tt> instance +variable +<pre> + float default_fps; +</pre> +to the desired number of frames per second (defaults to 24). The method +<pre> + void animate(bool will); +</pre> +can then be used to start and stop animation. +The system works by setting a system timer to go off every 1/fps of a second. +When that timer goes off, the framework will call the handler +<pre> + virtual void update_animation(); +</pre> +so that the application can update its state appropriately, after which the +framework will invoke the <tt>draw_contents()</tt> handler to repaint the +canvas. Note that this system makes no effort to guarantee a consistent +update rate. + +<p>The default menu bar contains items to toggle animation on and off and to +set the desired <tt>default_fps</tt> value. + + +<h3>The Menu Bar</h3> + +<p>Many GUI applications use menu systems to provide the user control over the +application. By default, the <tt>MxGUI</tt> framework creates a very simple +menu layout for its applications. This standard menu provides basic features +such as saving a snapshot of the OpenGL canvas to an image file, toggling +animation, and setting the size of the display canvas. +However, the application also has complete freedom to customize the menu +system. + +<h4>Static Menu Layouts</h4> + +<p>The <tt>initialize()</tt> method accepts an optional argument which +specifies the layout of the menu system. This layout is an array of <a +href="http://www.fltk.org/doc-1.0/Fl_Menu_Item.html">Fl_Menu_Item</a> elements, +whose format is described in the <a +href="http://www.fltk.org/doc-1.0/Fl_Menu_Item.html">FLTK documentation</a>. +Passing a menu layout to <tt>initialize()</tt> will completely replace the +default menu structure. + +<h4>Adding Menus at Run Time</h4> + +<p>Once an initial menu system has been created, either the default or an +application-specific one, additional items can be added at run time. To do +this, you can invoke the <a +href="http://www.fltk.org/doc-1.0/Fl_Menu_.html#Fl_Menu_.add"><tt>add()</tt></a> +method of the <tt>MxGUI::menu_bar</tt> object. + + +<h3>The Status Bar</h3> + +<p>The status bar at the bottom of the GUI application can be used to display +short textual messages to the user. +You can use the following method to print text in the status bar: +<pre> + int status(const char *fmt, ...); +</pre> +It accepts argument lists of exactly the same form as the <tt>printf</tt> +function of the C standard library. + +</body> +</html> diff --git a/debian/fireflies/fireflies-2.08/libgfx/doc/index.html b/debian/fireflies/fireflies-2.08/libgfx/doc/index.html new file mode 100644 index 00000000..5844b4ed --- /dev/null +++ b/debian/fireflies/fireflies-2.08/libgfx/doc/index.html @@ -0,0 +1,81 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" + "http://www.w3.org/TR/REC-html40/loose.dtd"> +<!-- $Id: index.html 372 2003-06-26 10:46:43Z garland $ --> + +<html> + +<head> +<title>libgfx: A Library for Writing Graphics Programs</title> +<link rel=stylesheet href="cdoc.css" type="text/css"> +<meta name="Author" content="Michael Garland"> +</head> + +<body> + +<h1>libgfx: A Graphics Library</h1> + +<p>This software and associated documentation files are +Copyright © 1999–2001 Michael Garland. +Please see the accompanying <a href="license.html">License</a> +for details. + + +<h2>Contents</h2> + +<ul> + <li><a href="#intro">Introduction</a> + <li><a href="build.html">Building the Library</a> + <li><a href="start.html">Getting Started</a> + + <li><a href="vec.html">Vector Math</a> + <ul> + <li><a href="vec2.html">2-D vectors</a> + <li><a href="vec3.html">3-D vectors</a> + <li><a href="vec4.html">4-D vectors</a> + </ul> + + <li><a href="mat.html">Matrix Math</a> + <ul> + <li><a href="mat2.html">2-D matrices</a> + <li><a href="mat3.html">3-D matrices</a> + <li><a href="mat4.html">4-D matrices</a> + </ul> + + <li><a href="intvec.html">Packed Integer Vectors</a> + <li><a href="quat.html">Quaternions</a> + <li><a href="geom3d.html">3-D Geometric Procedures</a> + <li><a href="gl.html">OpenGL Support</a> + <li><a href="raster.html">Raster Images</a> + <li><a href="gui.html">Minimalist GUI framework</a> + <li><a href="rotate.html">Interactive Rotation Control</a> + <li><a href="script.html">Simple File Format Scripting</a> + + <li>Example Programs + <ul> + <li><a href="ex-gui.html">Simple GUI Program</a> + <li><a href="ex-script.html">Simple Scripted Program</a> + </ul> + + <li><a href="license.html">Copyright Notice and License</a> +</ul> + + +<h2><a name="intro">Introduction</a></h2> + +<p>The purpose of this library is to simplify the creation of computer +graphics software. Specifically, it is targeted towards +cross-platform development using the +<a href="http://www.opengl.org">OpenGL</a> rendering API and the +<a href="http://www.fltk.org">FLTK</a> interface toolkit. +It is derived from the <a +href="http://www.uiuc.edu/~garland/software/qslim20.html">MixKit</a> library I +developed for supporting polygonal +<a href="http://www.uiuc.edu/~garland/research.html">surface +simplification</a>. +This is <em>not</em> a full-fledged graphics engine. Rather it +provides facilities which are useful in the majority of graphics +programs. + +</body> + +</html> diff --git a/debian/fireflies/fireflies-2.08/libgfx/doc/intvec.html b/debian/fireflies/fireflies-2.08/libgfx/doc/intvec.html new file mode 100644 index 00000000..9c13957d --- /dev/null +++ b/debian/fireflies/fireflies-2.08/libgfx/doc/intvec.html @@ -0,0 +1,95 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" + "http://www.w3.org/TR/REC-html40/loose.dtd"> +<!-- $Id: intvec.html 161 2000-09-05 20:29:15Z garland $ --> + +<html> + +<head> +<title>libgfx: Packed Integer Vectors</title> +<link rel=stylesheet href="cdoc.css" type="text/css"> +<meta name="Author" content="Michael Garland"> +</head> + +<body> + +<h2>Packed Integer Vectors</h2> + +<p>The <a href="vec.html">vector package</a> provides the standard way to +represent and manipulate vector quantities. +These vectors are primarily designed to represent real-valued vectors using +floating point numbers. +However, there are times when it is more convenient to use a packed integer +vector format. That is the purpose of this package, which you can use by +including the header file +<pre> + #include <intvec.h> +</pre> + +<p>A <em>packed integer vector</em> is an <i>n</i> element vector, each of whose +elements are <i>k</i>-bit integers. These <i>k</i>-bit integers are +interpreted as representing the range [0, 1] for unsigned types and [-1, 1] +for signed types. For example, suppose we have a vector whose elements are +unsigned 8-bit quantities (e.g., of type <tt>unsigned char</tt>). +Each value would have an integral value in the range [0, 255], but these +values would always be interpreted as real values ranging between [0, 1]. + +<h3>class IntVec</h3> +<p>Packed integer vectors are declared using the following template class +<pre> + template<class T, int T_MAX, int N> class IntVec; +</pre> +The type <tt>T</tt> is the type of the constituent elements (e.g., +<tt>unsigned char</tt>) and <tt>T_MAX</tt> is the maxium representable value +for this type (e.g., <tt>UCHAR_MAX</tt>). The number of elements in the +vector is determined by <tt>N</tt>. Note that ANSI C defines appropriate +maximum values of integer types in <limits.h>. + +<p>Classes created from the <tt>IntVec</tt> template provide a small set of +fundamental public methods: +<ul> +<li>A default constructor that initializes all elements of the vector to 0. + +<li>A C-style [] bracket accessor which returns, as a +<tt>double</tt> the appropriate element of the vector. + +<li>A vector assignment operator (<tt>v = w</tt>). + +<li>A scalar assignment operator (<tt>v = 3.14</tt>). +</ul> + +<h3>class IntVec3</h3> + +<p>Because 3-D vectors are particularly common in graphics applications, this +package provides explicit support for them. +<pre> + template <class T, int T_MAX> class IntVec3; +</pre> + +<p>In addition to the standard <tt>IntVec</tt> methods, <tt>IntVec3</tt> +provides the following additional constructors, all of which allow the values +of the vector to be explicitly initialized. +<pre> + IntVec3(double x, double y, double z); + IntVec3(const Vec3& v); + IntVec3(const float v[3]); + IntVec3(const double v[3]); +</pre> + +<p>It also provides the following methods for manipulating the elements of the +vector: +<pre> + Vec3 unpack() const; <i>// Return vector as Vec3</i> + void pack(const Vec3& v); <i>// Set vector from v</i> + void pack(double x, double y, double z); <i>// Set vector from x,y,z</i> +</pre> + +<p>A typical use of this class would be in defining a type for RGB colors +represented with 8 bits per channel. Such a type could be declared as +follows: +<pre> + typedef IntVec3<unsigned char, UCHAR_MAX> byteColor; +</pre> + +</body> + +</html> diff --git a/debian/fireflies/fireflies-2.08/libgfx/doc/license.html b/debian/fireflies/fireflies-2.08/libgfx/doc/license.html new file mode 100644 index 00000000..2e96b7d8 --- /dev/null +++ b/debian/fireflies/fireflies-2.08/libgfx/doc/license.html @@ -0,0 +1,54 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" + "http://www.w3.org/TR/REC-html40/loose.dtd"> +<!-- $Id: license.html 257 2001-07-26 19:20:44Z garland $ --> + +<html> + +<head> +<title>libgfx: License</title> +<link rel=stylesheet href="cdoc.css" type="text/css"> +<meta name="Author" content="Michael Garland"> +</head> + +<body> + +<h2>License</h2> + + +<p><strong>Copyright Notice</strong> +<blockquote> +Copyright © 1999–2001 Michael Garland. All rights reserved. +</blockquote> + +<p><strong>Terms and Conditions</strong> + +<p>Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, and/or sell copies of the Software, and to permit persons +to whom the Software is furnished to do so, provided that the above +copyright notice(s) and this permission notice appear in all copies of +the Software and that both the above copyright notice(s) and this +permission notice appear in supporting documentation. + +<p>THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR +HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL +INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING +FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, +NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION +WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +<p>Except as contained in this notice, the name of a copyright holder +shall not be used in advertising or otherwise to promote the sale, use +or other dealings in this Software without prior written authorization +of the copyright holder. + + + +</body> + +</html> diff --git a/debian/fireflies/fireflies-2.08/libgfx/doc/mat.html b/debian/fireflies/fireflies-2.08/libgfx/doc/mat.html new file mode 100644 index 00000000..4f43c019 --- /dev/null +++ b/debian/fireflies/fireflies-2.08/libgfx/doc/mat.html @@ -0,0 +1,119 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" + "http://www.w3.org/TR/REC-html40/loose.dtd"> +<!-- $Id: mat.html 159 2000-09-05 19:43:19Z garland $ --> + +<html> + +<head> +<title>libgfx: Matrix Math</title> +<link rel=stylesheet href="cdoc.css" type="text/css"> +<meta name="Author" content="Michael Garland"> +</head> + +<body> + +<h2>Matrix Math</h2> + +<p>The <tt>libgfx</tt> matrix math package is the companion to the +<a href="vec.html">vector package</a> and are intended to provide a convenient +way of writing vector/matrix equations. +Currently, only square matrices +of dimension 2x2 [<a href="mat2.html"><tt>Mat2</tt></a>], +3x3 [<a href="mat3.html"><tt>Mat3</tt></a>], +and 4x4 [<a href="mat4.html"><tt>Mat4</tt></a>]. + +<p>A matrix consists of <i>n*n</i> double precision floating point values. +Unlike the vector package, the matrix package is not yet template-based. +Matrix elements are accessed using 0-indexed (row, column) pairs. Thus, a 2x2 +identity matrix can be constructed as follows: +<pre> + Mat2 A; + + A(0, 0) = 1.0; + A(0, 1) = 0.0; + A(1, 0) = 0.0; + A(1, 1) = 1.0; +</pre> +The default constructors (as used above) initialize all elements to 0. All +matrix classes also provide constructors which accept a list of row vectors to +initialize their elements. Thus, the following example is equivalent to the +code above: +<pre> + Mat2 A(Vec2(1.0, 0.0), Vec2(1.0, 0.0)); +</pre> +Matrices can also be automatically case to <tt>double</tt> pointers. Since +matrices are stored in row-major order, the follow code would change element +(0, 1) of the matrix above: +<pre> + double *B = A; + B[1] = -1.0; +</pre> + +<p><strong>Warning:</strong> +For efficiency reasons, <em>accessors are not range checked</em>. +Thus you can legally write +<pre> + Mat2 v; + v(-10, 37) = 1.0; +</pre> +and generate an invalid memory access. + +<h3>Arithmetic Operators</h3> + +<p>Like the vector package, one of the primary goals of the matrix package is +to simplify the writing of vector/matrix equations. +To accomplish this, it makes use of C++ operator overloading. + +<p><strong>Assignment</strong> +Matrices can be assigned the values of other matrices or scalars. +A matrix assignment <tt>A = B</tt> copies the elements of <tt>B</tt> +into the corresponding elements of <tt>A</tt>. A scalar assignment +<tt>A = 1.0</tt> copies the given scalar, in this case <tt>1.0</tt>, +into each of the elements of <tt>A</tt>. + +<p><strong>Addition/Subtraction</strong> +Matrices can be added together either with the binary addition operator (<tt>C += A + B</tt>) or the additive assignment operator (<tt>A += B</tt>). +Subtraction operates similarly, using subtraction rather than addition +operators. + +<p><strong>Scalar Multiplication/Division</strong> +Matrices can be multiplied by scalar values using either the binary +operator (<tt>A * 2.0</tt>) or the accumulation operator (<tt>A *= +2.0</tt>). Scalar division operates similarly. + +<p><strong>Matrix/Vector Multiplication</strong> +Matrices can be multiplied together with a binary operator (<tt>A * +B</tt>). Matrices can also multiply vectors (<tt>A * v</tt>) which returns a +new vector. + +<h3>Standard Matrix Functions</h3> + +<p>All matrix classes support a standard set of functions for performing +common operations on matrices. The functions are: +<pre> +<i>// Constructs the outer product of the two vectors</i> +Mat_ outer_product(const Vec_ &u, const Vec_ &v); + +<i>// Returns the determinant of the matrix</i> +double det(const Mat_ &A); + +<i>// Returns the trace of the matrix (the sum of the diagonals)</i> +double trace(const Mat_ &A); + +<i>// Returns the transpose of A</i> +Mat_ transpose(const Mat_ &A); + +<i>// Returns the adjoint of A</i> +Mat_ adjoint(const Mat_ &A); + +<i>// Places the inverse of A in A_inv and returns det(A) +// The contents of A_inv are undefined if the inverse doesn't exist.</i> +double invert(Mat_ &A_inv, const Mat_ &A); +</pre> + +<p>Matrices can also be read from and written to C++ iostreams using the +standard <tt><<</tt> and <tt>>></tt> operators. + +</body> +</html> diff --git a/debian/fireflies/fireflies-2.08/libgfx/doc/mat2.html b/debian/fireflies/fireflies-2.08/libgfx/doc/mat2.html new file mode 100644 index 00000000..a41a0cb7 --- /dev/null +++ b/debian/fireflies/fireflies-2.08/libgfx/doc/mat2.html @@ -0,0 +1,46 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" + "http://www.w3.org/TR/REC-html40/loose.dtd"> +<!-- $Id: mat2.html 159 2000-09-05 19:43:19Z garland $ --> + +<html> + +<head> +<title>libgfx: Matrix Math</title> +<link rel=stylesheet href="cdoc.css" type="text/css"> +<meta name="Author" content="Michael Garland"> +</head> + +<body> + +<h2>Matrix Math</h2> + +<h3>class Mat2</h3> + +<p>This class implements a 2x2 real-valued matrix. +Individual elements are represented with <code>double</code> precision +floating point numbers. To use the <tt>Mat2</tt> class you must include the +header +<pre> + #include <gfx/mat2.h> +</pre> + +<h4>Constructor Methods</h4> + +<p>The <tt>Mat2</tt> class defines the following set of constructors: + +<pre> + <i>// Initialize all elements to 0</i> + Mat2(); + + <i>// Initialize row 0 to [a b] and row 1 to [c d]</i> + Mat2(double a, double b, double c, double d); + + <i>// Initialize rows with given vectors</i> + Mat2(const Vec2 &r0,const Vec2 &r1); + + <i>// Copy values from A</i> + Mat2(const Mat2 &A); +</pre> + +</body> +</html> diff --git a/debian/fireflies/fireflies-2.08/libgfx/doc/mat3.html b/debian/fireflies/fireflies-2.08/libgfx/doc/mat3.html new file mode 100644 index 00000000..d2c7a778 --- /dev/null +++ b/debian/fireflies/fireflies-2.08/libgfx/doc/mat3.html @@ -0,0 +1,44 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" + "http://www.w3.org/TR/REC-html40/loose.dtd"> +<!-- $Id: mat3.html 159 2000-09-05 19:43:19Z garland $ --> + +<html> + +<head> +<title>libgfx: Matrix Math</title> +<link rel=stylesheet href="cdoc.css" type="text/css"> +<meta name="Author" content="Michael Garland"> +</head> + +<body> + +<h2>Matrix Math</h2> + +<h3>class Mat3</h3> + +<p>This class implements a 3x3 real-valued matrix. +Individual elements are represented with <code>double</code> precision +floating point numbers. To use the <tt>Mat3</tt> class you must include the +header +<pre> + #include <gfx/mat3.h> +</pre> + +<h4>Constructor Methods</h4> + +<p>The <tt>Mat3</tt> class defines the following set of constructors: + +<pre> + <i>// Initialize all elements to 0</i> + Mat3(); + + <i>// Initialize rows with given vectors</i> + Mat3(const Vec3& r0,const Vec3& r1,const Vec3& r2); + + <i>// Copy values from A</i> + Mat3(const Mat3& A); +</pre> + + +</body> +</html> diff --git a/debian/fireflies/fireflies-2.08/libgfx/doc/mat4.html b/debian/fireflies/fireflies-2.08/libgfx/doc/mat4.html new file mode 100644 index 00000000..d180d210 --- /dev/null +++ b/debian/fireflies/fireflies-2.08/libgfx/doc/mat4.html @@ -0,0 +1,83 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" + "http://www.w3.org/TR/REC-html40/loose.dtd"> +<!-- $Id: mat4.html 220 2001-01-16 21:21:46Z garland $ --> + +<html> + +<head> +<title>libgfx: Matrix Math</title> +<link rel=stylesheet href="cdoc.css" type="text/css"> +<meta name="Author" content="Michael Garland"> +</head> + +<body> + +<h2>Matrix Math</h2> + +<h3>class Mat4</h3> + + +<p>This class implements a 4x4 real-valued matrix. +Individual elements are represented with <code>double</code> precision +floating point numbers. To use the <tt>Mat4</tt> class you must include the +header +<pre> + #include <gfx/mat4.h> +</pre> + +<h4>Constructor Methods</h4> + +<p>The <tt>Mat4</tt> class defines the following set of constructors: + +<pre> + <i>// Initialize all elements to 0</i> + Mat4(); + + <i>// Initialize rows with given vectors</i> + Mat4(const Vec4& r0,const Vec4& r1,const Vec4& r2,const Vec4& r3); + + <i>// Copy values from A</i> + Mat4(const Mat4& A); +</pre> + + +<h4>Transformation Functions</h4> + +<p>Because 4x4 matrices are commonly used to represent linear homogeneous +transformations in computer graphics, the matrix package provides several +functions to construct transformation matrices. The operation of these +functions is based directly on the definition of the corresponding +transformations as used in OpenGL. The resulting matrices should be +equivalent to those produced by OpenGL, to the extent allowed by limited +floating point accuracy. + +<pre> + <i>// Construct translation, scaling, and rotation matrices.</i> + Mat4 translation_matrix(const Vec3& delta); + Mat4 scaling_matrix(const Vec3& scale); + Mat4 rotation_matrix_deg(double theta, const Vec3& axis); + Mat4 rotation_matrix_rad(double theta, const Vec3& axis); + + <i>// Construct a perspective projection matrix. + // Direct analog of gluPerspective()</i> + Mat4 perspective_matrix(double fovy, double aspect, + double zmin=0.0, double zmax=0.0); + + <i>// Construct a viewing transformation. + // Direct analog of gluLookAt()</i> + Mat4 lookat_matrix(const Vec3& from, const Vec3& at, const Vec3& up); + + <i>// Construct a viewport mapping. + // Direct analog of glViewport().</i> + Mat4 viewport_matrix(double w, double h); +</pre> + +Note that the <tt>rotation_matrix()</tt> function comes in two forms, once +which expects an angle in <em>radians</em> and one which expects an angle in +<em>degrees</em>. The type of angle expected is made explicit in the function +name (i.e., <tt>_rad</tt> and <tt>_deg</tt> suffixes) in an attempt to avoid +confusion. + + +</body> +</html> diff --git a/debian/fireflies/fireflies-2.08/libgfx/doc/quat.html b/debian/fireflies/fireflies-2.08/libgfx/doc/quat.html new file mode 100644 index 00000000..781ed2ad --- /dev/null +++ b/debian/fireflies/fireflies-2.08/libgfx/doc/quat.html @@ -0,0 +1,113 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" + "http://www.w3.org/TR/REC-html40/loose.dtd"> +<!-- $Id: quat.html 308 2002-03-11 21:16:57Z garland $ --> + +<html> + +<head> +<title>libgfx: Quaternions</title> +<link rel=stylesheet href="cdoc.css" type="text/css"> +<meta name="Author" content="Michael Garland"> +</head> + +<body> + +<h2>Quaternions</h2> + +<p>This package provides the basic mathematical tools necessary for +manipulating quaternions. To begin using it, you must first include the +header file: +<pre> + #include <gfx/quat.h> +</pre> + +<p>For more information on the definition of quaternions and their +associated mathematics, you might try the informative Web pages provided +by +<a href="http://mathworld.wolfram.com/Quaternion.html">MathWorld</a>, +<a href="http://www.magic-software.com/Documentation/quat.pdf">David + Eberly</a>, or +<a + href="http://graphics.cs.ucdavis.edu/GraphicsNotes/Quaternions.pdf">UC + Davis</a>. + +<h3>class Quat</h3> + +<p>The interface presented by the <tt>Quat</tt> class treats quaternions +as consisting of a real scalar part and a complex 3-vector part. + +<h4>Constructor Methods</h4> + +<p>The <tt>Quat</tt> class defines the following set of constructors: + +<pre> + Quat(); <i>// Initializes to identity quaternion</i> + Quat(double x, double y, double z, double w); <i>// Specify vector & scalar part.</i> + Quat(const Vec3& a, double b); <i>// Specify vector & scalar part.</i> + Quat(const Quat& q); <i>// Copy values from q</i> +</pre> + +<pre> + Quat::ident(); <i>// Return the identity quaternion</i> +</pre> + +<h4>Arithmetic Methods</h4> + +<p>The quaternion class supports all the usual arithmetic methods, both +as in-place assignment operators: + +<pre> + Quat& operator=(const Quat& q); + Quat& operator+=(const Quat& q); + Quat& operator-=(const Quat& q); + Quat& operator=(double d); + Quat& operator*=(double d); + Quat& operator/=(double d); +</pre> + +and as normal binary operations: + +<pre> + Quat operator+(const Quat& q, const Quat& r); + Quat operator*(const Quat& q, const Quat& r); + Quat operator*(const Quat& q, double s); + Quat operator*(double s, const Quat& q); + Quat operator/(const Quat& q, double s); +</pre> + +<h4>Quaternion Operations</h4> + +<p>Using the fundamental arithmetic operations defined above, this +package also provides the following operations on quaternions: +<pre> + double norm(const Quat& q); <i>// Return the length of q</i> + Quat conjugate(const Quat& q); <i>// Return conjugate of q</i> + Quat inverse(const Quat& q); <i>// Return multiplicative inverse of q</i> + void unitize(Quat& q); <i>// Convert to unit quaternion</i> + Quat exp(const Quat& q); <i>// Exponential of a <b>unit</b> quaternion </i> + Quat log(const Quat& q); <i>// Natural logarithm of a <b>unit</b> quaternion </i> +</pre> + +<p>Quaternions can be constructed from an axis/angle rotation +specification using the function: +<pre> + Quat axis_to_quat(const Vec3& a, double phi); +</pre> +At is also generally useful to be able to convert a quaternion into a +rotation matrix: +<pre> + Mat4 quat_to_matrix(const Quat& q); + Mat4 unit_quat_to_matrix(const Quat& q); +</pre> + +<p> +<pre> + Quat slerp(const Quat& from, const Quat& to, double t); +</pre> + +<p>Quaternions can also be read from and written to C++ iostreams using the +standard <tt><<</tt> and <tt>>></tt> operators. + +</body> + +</html> diff --git a/debian/fireflies/fireflies-2.08/libgfx/doc/raster.html b/debian/fireflies/fireflies-2.08/libgfx/doc/raster.html new file mode 100644 index 00000000..544a30b6 --- /dev/null +++ b/debian/fireflies/fireflies-2.08/libgfx/doc/raster.html @@ -0,0 +1,143 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" + "http://www.w3.org/TR/REC-html40/loose.dtd"> +<!-- $Id: raster.html 157 2000-09-05 17:28:52Z garland $ --> + +<html> + +<head> +<title>libgfx: Raster Images</title> +<link rel=stylesheet href="cdoc.css" type="text/css"> +<meta name="Author" content="Michael Garland"> +</head> + +<body> + +<h2>Raster Images</h2> + +<p>The <tt>libgfx</tt> library provides very basic support for storing raster +image data. This is not really intended to provide the kind of support +necessary for advanced image processing, but rather the basic functionality +needed for saving screen snapshots, loading texture files, etc. To use this +package you will first need to include the header file +<pre> + #include <gfx/raster.h> +</pre> + +<h3>Image Representation</h3> + +<p>Images are implemented using the <tt>Raster<T></tt> template class. +The templated type <tt>T</tt> determines how individual pixel values are +stored. There are two standard image types: +<ul> +<li><tt>ByteRaster</tt>: +pixel components are represented with values of type <tt>unsigned +char</tt> + +<li><tt>FloatRaster</tt>: +pixel components are represented with values of type <tt>float</tt> +</ul> + +<h4>Allocating an Image</h4> + +<p>When allocating an image, you must specify its three dimensions: (1) width +in pixels, (2) height in pixels, and (3) number of channels. +<pre> + Raster<T>(int width, int height, int nchannels); +</pre> +Typically, the number of channels should by either 1 for grayscale images, 3 +for RGB color images, or 4 for RGB images with an alpha channel. + +<h4>Accessors</h4> + +<p>The dimensions of an image can be determined through a standard set of +accessor functions: +<pre> + int width(); <i>// Width of image (in pixels)</i> + int height(); <i>// Height of image (in pixels)</i> + int channels(); <i>// Number of channels in image</i> + int length(); <i>// Total number of pixel values</i> +</pre> +The width, height, and channel count values are merely those specified when +the image is allocated. The length of the image is the total number of pixel +elements (i.e., width*height*channels). + +<p>Pixel elements can be accessed in two different ways. First of all, you +can get a pointer to the single pixel at the image location (i,j) by calling +the method +<pre> + T *pixel(int i, int j); +</pre> +This is the standard way to access pixels. Alternatively, you can access +pixel elements using the standard C [] bracket notation. This method is +generally discouraged since it exposes the underlying layout of the image. +However, it can be useful if you want to visit every pixel element without +regard to its location. + + +<h4>Pixel Manipulation</h4> + +<p>The <tt>Raster</tt> template class provides some very simple methods for +manipulating the image which it stores. They are: +<pre> + void hflip(); <i>// Flip the image from left to right</i> + void vflip(); <i>// Flip the image from top to bottom</i> +</pre> + + +<h3>Input/Output of Image Files</h3> + +<p>In addition to internal image representation, this package provides a +simple set of functions for reading and writing external image files. +The library supports the following image types: +<ul> +<li>PNM (supported internally) +<li>TIFF (requires <a href="http://www.libtiff.org">libtiff</a>) +<li>JPEG (requires <a href="http://www.ijg.org">jpeglib</a>) +<li>PNG (requires <a href="http://www.libpng.org/pub/png/">libpng</a>) +</ul> + +<p>Images can be read from files using the following functions: +<pre> + ByteRaster *read_pnm_image(const char *filename); + ByteRaster *read_tiff_image(const char *filename); + ByteRaster *read_png_image(const char *filename); + ByteRaster *read_jpeg_image(const char *filename); +</pre> +These functions return <tt>NULL</tt> if the file could not be read. This +includes the case when the required external libraries are not available. +Similar functions can be used to write images to files: +<pre> + bool write_pnm_image(const char *filename, const ByteRaster&); + bool write_tiff_image(const char *filename, const ByteRaster&); + bool write_png_image(const char *filename, const ByteRaster&); + bool write_jpeg_image(const char *filename, const ByteRaster&); +</pre> +They return <tt>true</tt> or <tt>false</tt> indicating whether the output +operation succeeded or not. + +<p>The PNM output routines can output both raw (i.e., binary) and ASCII image +files. Which type of file they write is controlled by the global variable +<pre> + bool will_write_raw_pnm; +</pre> +Since JPEG is a lossy compression format, the behavior of the JPEG output +routines is dependent upon the global variable controlling image quality +<pre> + int jpeg_output_quality; +</pre> +These quality factors are integers ranging from 0-100 (with 100 being the +highest quality). See the <tt>jpeglib</tt> documentation for further details. + +<p>For convenience, you can read/write image files with the functions +<pre> + bool write_image(const char *filename, const ByteRaster&, int type=-1); + ByteRaster *read_image(const char *filename, int type=-1); +</pre> +The file format will be inferred from the filename, unless the optional +<tt>type</tt> argument is given. The image type should be one of +<tt>IMG_PNM</tt>, <tt>IMG_PNG</tt>, <tt>IMG_TIFF</tt>, or <tt>IMG_JPEG</tt>. + + +</body> + +</html> diff --git a/debian/fireflies/fireflies-2.08/libgfx/doc/rotate.html b/debian/fireflies/fireflies-2.08/libgfx/doc/rotate.html new file mode 100644 index 00000000..dc444409 --- /dev/null +++ b/debian/fireflies/fireflies-2.08/libgfx/doc/rotate.html @@ -0,0 +1,107 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" + "http://www.w3.org/TR/REC-html40/loose.dtd"> +<!-- $Id: rotate.html 309 2002-03-11 21:17:15Z garland $ --> + +<html> + +<head> +<title>libgfx: Interactive Rotation Control</title> +<link rel=stylesheet href="cdoc.css" type="text/css"> +<meta name="Author" content="Michael Garland"> +</head> + +<body> + +<h2>Interactive Rotation Control</h2> + +<p>The <tt>libgfx</tt> library provides a fairly simple facility for +interactive inspection of 3-D objects. The interface is designed +for applications where a user is inspecting an object by spinning it and +by translating the camera to provide a better view. All of the user +interaction is implemented through mouse motion: +<ul> + <li>Left mouse drag — rotate object about its centroid + <li>Right mouse drag — translate camera forward/backward + <li>Middle mouse drag — translate camera parallel to image plane +</ul> + +<p>The classes used to implement this functionality are based on a +fairly standard paradigm. Two subsequent mouse positions are projected +onto a notional surface "below" the window. The cross product of these +projected vectors defines an axis of rotation and the angle between them +defines the rotation angle. + +<h3>Ball Types</h3> + +<p>The library currently supports two control classes: + +<blockquote> + +<p><b>Arcball</b> The Arcball controller is based on the +article <i>Arcball Rotation Control</i> written by Ken Shoemake in +<i>Graphics Gems IV</i> published by Academic Press. +The underlying surface of projection is a hemisphere. + +<p><b>Trackball</b> Implements the mechanism used in the SGI +3-D demo programs. This approach was originally developed by Gavin +Bell. The underlying surface of projection is a hybrid of a hemisphere +and a hyperbolic sheet. +</blockquote> + +<h3>Public Interface</h3> + +<p>The two controller types both implement the same public interface, +and can be freely interchanged in the application program. The +interfaces for these controllers are defined in the following header +files: +<ul> + <li><tt>class Arcball</tt> — <tt><gfx/arcball.h></tt> + <li><tt>class Trackball</tt> — <tt><gfx/trackball.h></tt> +</ul> +To use one of the controllers, you need to include the appropriate +header and create an instance of the appropriate class. + +<h4>Initialization</h4> + +<p>Before using a rotation controller, you must initialize it by +providing the bounding sphere of the object to be controlled. This is +done using the templated method: +<pre> + template<class T> + void bounding_sphere(const TVec3<T>& center, T radius); +</pre> +The specified sphere <tt>center</tt> will be the point about which the +object will rotate. + +<h4>Interaction</h4> + +<p>Once initialized, the controller is meant to be interfaced directly +with the event handlers of an application built using the +<tt>libgfx</tt> <a href="gui.html">GUI framework</a>. +Each of the following controller methods should be called from the event +handlers of your application. +<pre> + virtual void update_animation(); + virtual bool mouse_down(int *where, int which); + virtual bool mouse_up(int *where, int which); + virtual bool mouse_drag(int *where, int *last, int which); +</pre> + +<h4>Applying Results</h4> + +<p>For the rotation to take effect, you must apply it in the rendering +loop of the application. Before drawing your scene, you should call the +method: +<pre> + virtual void apply_transform(); +</pre> +This will set up the appropriate transform on the <tt>ModelView</tt> +matrix stack. Similarly, when done drawing, you should call the method: +<pre> + virtual void unapply_transform(); +</pre> +which will clean up the <tt>ModelView</tt> matrix stack. + +</body> + +</html> diff --git a/debian/fireflies/fireflies-2.08/libgfx/doc/script.html b/debian/fireflies/fireflies-2.08/libgfx/doc/script.html new file mode 100644 index 00000000..1a457b2d --- /dev/null +++ b/debian/fireflies/fireflies-2.08/libgfx/doc/script.html @@ -0,0 +1,192 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" + "http://www.w3.org/TR/REC-html40/loose.dtd"> +<!-- $Id: script.html 269 2001-10-10 00:38:28Z garland $ --> + +<html> + +<head> +<title>libgfx: Simple File Format Scripting</title> +<link rel=stylesheet href="cdoc.css" type="text/css"> +<meta name="Author" content="Michael Garland"> +</head> + +<body> + +<h2>Simple File Format Scripting</h2> + +<p>The <tt>libgfx</tt> library provides a very simple scripting facility which +is primarily intended to support parsing of input files and control scripts. +To use this package, you must include the header file: +<pre> + #include <gfx/script.h> +</pre> + +<p>For more information about this package, you may want to examine the +sample <a href="ex-script.html">scripted application</a>. + +<h3>File Structure</h3> + +<p>Scripts processed by this package are assumed to be composed of a sequence +of lines. Each line is processed separately, in sequence, and falls into one +of the following categories: +<ol> +<li>Lines containing only whitespace are ignored +<li>Lines whose first non-whitespace character is a '#' (hash mark) are +treated as comments and are ignored +<li>All other lines are assumed to be a sequence of whitespace-separated +tokens where the first token is a command name and subsequent tokens are +arguments to this command. +</ol> + +<h3>Processing Scripts</h3> + +<p>In order to process scripts, you must (at minimum) perform the following +steps: +<ol> +<li>Instantiate a <i>scripting environment</i> of type <tt>CmdEnv</tt>. +<li>Register your command(s) with <tt>CmdEnv::register_command()</tt> +or <tt>CmdEnv::register_method()</tt>. +<li>Feed the text of the script to the parsing system. +</ol> +The specifics of these steps are detailed in the following sections. + +<h4>The Scripting Environment</h4> + +<p>The primary task of the scripting system is to map command name tokens into +command procedures. These procedures, also referred to as "handlers", are +responsible for actually performing the computation associated with a +particular command. +Handlers should conform to the following type definition: +<pre> + typedef int (*CmdHandler)(const CmdLine &cmd); +</pre> +The <tt>CmdLine</tt> type manages the text of a particular command line, and +provides various methods for parsing that information (see details below). + +<p>The <tt>CmdEnv</tt> class manages the mapping of command names to +handlers. In particular, handler names are mapped to pointers to +objects derived from the base class <tt>CmdObject</tt>. All derived +classes of <tt>CmdObject</tt> are required to override the +<tt>operator()</tt> invocation virtual method. By using this virtual +function, handler objects are allowed to encapsulate arbitrary data in +their definition (i.e., to create closures). The standard scripting +framework defines two kinds of <tt>CmdObject</tt> handlers: (1) the +<tt>CmdFunction</tt> class to encapsulate normal functions and static +methods and (2) and the <tt>CmdMethod</tt> template class to +encapsulate member functions. + + +<p>New handler procedures (non-member functions) +can be associated with names using +the method: +<pre> + void register_command(const std::string& name, CmdHandler proc); +</pre> +Member functions can be bound to names uses the templated member +function: +<pre> + template<class T> + void register_method(const std::string& name, + T *obj, + int (T::*fn)(const CmdLine&)); +</pre> +Note that in both cases, prior bindings of <tt>name</tt> associated +with another handler will be overwritten. +Existing handlers can be located by name +using the method: +<pre> + CmdObject *lookup_command(const std::string& name); +</pre> +which returns <tt>NULL</tt> if no handler is bound to the given name. + +<h4>Submitting Text for Execution</h4> + +<p>Several procedures are available for submitting script text to the parsing +system. All of them require a <tt>CmdEnv</tt> argument that will determine +the mapping of command names to handlers. + +<p>The underlying method for parsing text is: +<pre> + int script_do_line(std::string &line, CmdEnv &env); + int script_do_line(const char *line, CmdEnv &env); +</pre> +It assumes that its input is a string consisting of a single line — any +embedded newlines will be treated like any other whitespace. +It will +split this line it a series of whitespace-separated tokens, interpreting the +first such token as a command name. If <tt>env</tt> provides a binding for +this name, the appropriate handler will be called. + +<p>For convenience, the scripting package also provides the following methods: +<pre> + int script_do_stream(std::istream &in, CmdEnv &env); + int script_do_file(const char *name, CmdEnv &env); + int script_do_string(const char *str, CmdEnv &env); +</pre> +They operate by extracting a single line from the input source and processing +that line with <tt>script_do_line()</tt>. They repeat this line-by-line +process until the file/stream/string has been exhausted. +The first time the processing of a line fails with an error code, these +procedures return this error code immediately without completing the +processing of the rest of the input. + + +<h3>Writing Command Handlers</h3> + +<p>A command procedure is declared as follows: +<pre> + int proc(const CmdLine& cmd); +</pre> +The <tt>CmdLine</tt> structure contains all the necessary data about the line +being processed. It provides the following fundamental accessors: +<pre> + class CmdLine + { + public: + const std::string &line; // Raw text of the (complete) line + std::string opname() const; // Name of the command being invoked + std::string argline() const; // Argument string + int argcount() const; // Number of argument tokens + }; +</pre> +The argument string returned by <tt>argline()</tt> is unparsed except that +whitespace following the command name and trailing whitespace at the end of +the line have been removed. + + +<p>It is up to the handler to parse the command line in whatever way it likes. +However, the scripting system assumes that command will be given +whitespace-separated token lists. Therefore, it pre-computes the indices of +these tokens in the command line text before invoking the handler. To access +an individual token, you can use the <tt>CmdLine</tt> methods: +<pre> + std::string token_to_string(int i) const; + double token_to_double(int i) const; + float token_to_float(int i) const; + int token_to_int(int i) const; +</pre> +Tokens are numbered from <tt>[0 .. argcount()-1]</tt>. Note that, for +efficiency, these methods <em>do not perform range checking.</em> It is up to +the caller to verify that the given indices are valid. + +<p>In addition to accessing single argument tokens, you can collect all +argument tokens into lists with the following <tt>CmdLine</tt> methods: +<pre> + int collect_as_strings(std::vector<std::string> &v) const; + int collect_as_numbers(std::vector<double> &v) const; + int collect_as_numbers(std::vector<int> &v) const; + + int collect_as_numbers(double *v, int size) const; + int collect_as_numbers(float *v, int size) const; + int collect_as_numbers(int *v, int size) const; +</pre> +These methods always return the number of tokens collected. +The <tt>vector</tt>-based methods will always collect all available tokens. +In contrast, those which accept raw arrays will either collect <tt>size</tt> +or <tt>argcount()</tt> tokens, whichever is smaller. + +<p>See the accompanying <a href="ex-script.html">scripting example</a> for more +details on how to write command handlers. + +</body> +</html> diff --git a/debian/fireflies/fireflies-2.08/libgfx/doc/start.html b/debian/fireflies/fireflies-2.08/libgfx/doc/start.html new file mode 100644 index 00000000..75da67d6 --- /dev/null +++ b/debian/fireflies/fireflies-2.08/libgfx/doc/start.html @@ -0,0 +1,136 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" + "http://www.w3.org/TR/REC-html40/loose.dtd"> +<!-- $Id: start.html 111 2000-07-31 21:40:02Z garland $ --> + +<html> + +<head> +<title>libgfx: Getting Started</title> +<link rel=stylesheet href="cdoc.css" type="text/css"> +<meta name="Author" content="Michael Garland"> +</head> + +<body> + +<h2>Getting Started </h2> + +<p>The <tt>libgfx</tt> library can be used for writing both +console-oriented and GUI programs. All programs, whether console or +GUI, should begin by including the standard header: +<pre> + #include <gfx/gfx.h> +</pre> + +<h3>The Standard Header: gfx.h</h3> + +<p>The first task of the standard header file is to provide a consist +code environment. It begins by including a set of standard C++ +headers <tt><cstdlib></tt>, <tt><cmath></tt>, +<tt><climits></tt>, and <tt><iostream></tt>. +It then makes sure that various common symbols, such as <tt>bool</tt>, +<tt>M_PI</tt>, and <tt>HUGE</tt> are defined. + +<h4>Numerical Procedures</h4> + +<p>Graphics programs typically involve a substantial amount of +mathematical calculation. Indeed, much the the <tt>libgfx</tt> +library is devoted to supporting things such as matrix/vector +computations. Certain mathematical procedures are common enough, and +simple enough, that they are included in the standard header. + +<p>First, there are the procedures for generating random numbers: +<pre> + inline double random1(); <i>// Random number between 0 and 1</i> + inline char random_byte(); <i>// Random byte between 0 and 255</i> +</pre> +These functions use the internal <tt>random()</tt> procedure if it's +available, or <tt>rand()</tt> if not. + +<p>Next, are procedures for comparing floating point numbers: +<pre> + const double FEQ_EPS = 1e-6; + const double FEQ_EPS2 = 1e-12; + + inline bool FEQ(double a, double b, double eps=FEQ_EPS); + inline bool FEQ2(double a, double b, double eps=FEQ_EPS2); +</pre> +The <tt>FEQ()</tt> procedures return <tt>true</tt> if <tt>a</tt> and +<tt>b</tt> are within <tt>eps</tt> of each other. + +<h4>Timing Procedures</h4> + +<p>To characterize the performance of a program, it is often useful to +measure it's running time. For this reason, <tt>libgfx</tt> provides +some basic facilities for measuring time. + +<pre> + extern double get_cpu_time(); +</pre> + +The function returns the number of seconds on the CPU clock. Based on +the platform you're using, this function may use various system +services to compute this clock. Therefore, it does not use a +consistent measure across all systems; however, the returned quantity +will usually be the number of seconds since the system was turned on. + +<p>A more convenient way to measure running time is to use the +following macro: +<pre> + #define TIMING(t, cmd) { t=get_cpu_time(); cmd; t=get_cpu_time() - t; } +</pre> +Given a procedure <tt>test_proc()</tt> whose performance we want to +measure, we can use the following code: +<pre> + double running_time; + + TIME(running_time, test_proc()); + + cout << "The running time was: " << running_time << " seconds." << endl; +</pre> +This will print the running time of <tt>test_proc()</tt> on the console. + + +<h4>Configuration Definitions</h4> + +<p>The final task of the standard header is to include the +<tt>libgfx</tt> configuration header. This header is generated when +the library is compiled. On Unix-like platforms, the header is named +<tt><gfx/config.h></tt> and is generated automatically by the +configuration script. For Microsoft Visual Studio platforms, a +hand-coded header such as <tt><gfx/config-vc5.h></tt> is used +instead. The symbols defined in this header can be used to detect the +presence of various language features and external libraries. +The symbols of interest to external programs are summarized below: + +<br><br> +<table align=center width=85% border=0 cellpadding=5> +<tr valign=top><th align=left>Symbol</th><th align=left>Defined when ...</th></tr> + +<tr valign=top><td><tt>HAVE_LIBTIFF</tt></td> +<td>library supporting TIFF image I/O is available.</td></tr> + +<tr valign=top><td><tt>HAVE_LIBTIFF_LZW</tt></td> +<td><tt>libtiff</tt> supports patented LZW compression.</td></tr> + +<tr valign=top><td><tt>HAVE_LIBPNG</tt></td> +<td>library supporting PNG image I/O is available.</td></tr> + +<tr valign=top><td><tt>HAVE_LIBJPEG</tt></td> +<td>library supporting JPEG image I/O is available.</td></tr> + +<tr valign=top><td><tt>HAVE_OPENGL</tt></td> +<td>OpenGL is available. Value is name of implementation +(e.g., "OpenGL" or "Mesa").</td></tr> +</table> + +<p>These configuration symbols should be tested with <tt>#ifdef</tt> +directives, as in the following example: +<pre> + #ifdef HAVE_LIBTIFF + generate_tiff_output(); + #endif +</pre> + +</body> + +</html> diff --git a/debian/fireflies/fireflies-2.08/libgfx/doc/vec.html b/debian/fireflies/fireflies-2.08/libgfx/doc/vec.html new file mode 100644 index 00000000..f62aa29d --- /dev/null +++ b/debian/fireflies/fireflies-2.08/libgfx/doc/vec.html @@ -0,0 +1,125 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" + "http://www.w3.org/TR/REC-html40/loose.dtd"> +<!-- $Id: vec.html 289 2002-01-14 18:21:43Z garland $ --> + +<html> + +<head> +<title>libgfx: Vector Math</title> +<link rel=stylesheet href="cdoc.css" type="text/css"> +<meta name="Author" content="Michael Garland"> +</head> + +<body> + +<h2>Vector Math</h2> + +<p>The <tt>libgfx</tt> vector math package provides classes that +make it much more convenient to write vector equations. +Two dimensional [<a href="vec2.html">Vec2</a>], +three dimensional [<a href="vec3.html">Vec3</a>], +and four dimensional [<a href="vec4.html">Vec4</a>] +vector classes are provided. + +<p>A vector consists of <i>n</i> numeric values. These vector types are +actually implemented using template classes such as <tt>TVec3<class +T></tt> that allow the application to specify the type of value used to +represent the vector elements. The standard classes described in this +documentation (<tt>Vec2</tt>, <tt>Vec3</tt>, and <tt>Vec4</tt>) use double +precision floating point values. Corresponding classes using single precision +floating point values (<tt>Vec2f</tt>, <tt>Vec3f</tt>, and <tt>Vec4f</tt>) are +also provided. + +<p>The elements of a vector are accessed with the standard bracket notation +used for arrays. And like C++ arrays, vectors are indexed starting from 0. +Thus the elements of a 3-vector can be assigned as follows: + +<pre> + Vec3 v; + + v[0] = 1.0; + v[1] = 0.0; + v[2] = 2.0; +</pre> + +The default constructors (as used in the previous example) always +initialize the vector elements to 0. All vector classes also provide +constructors which accept the initial element values as arguments. +Thus the previous example could be more succinctly written as: + +<pre> + Vec3 v(1.0, 0.0, 2.0); +</pre> + +Vectors can also be automatically cast to <code>double</code> pointer +types. Continuing the preceding example, the following is perfectly legal: +<pre> + double *w = v; <i>// w points to the first element of v</i> + w[1] = 3.14; <i>// Exactly equivalent to v[1] = 3.14</i> +</pre> + +<p><strong>Warning:</strong> +For efficiency reasons, <em>accessors are not range checked</em>. +Thus you can legally write + +<pre> + Vec3 v; + v[42] = 3.14159; +</pre> + +and this will cause an invalid memory access beyond the bounds of the +vector. This may cause a memory fault or it may just silently +over-write other data. Therefore you must make sure that you only +access valid elements of arrays. + + +<h3>Arithmetic Operators</h3> + +<p>One of the primary goals of the vector package is to simplify the +coding of vector equations. To accomplish this, it makes use of +<em>operator overloading</em>. + + +<p><strong>Assignment</strong> +Vectors can be assigned the values of other vectors or scalars. +A vector assignment <tt>v = w</tt> copies the elements of <tt>w</tt> +into the corresponding elements of <tt>v</tt>. A scalar assignment +<tt>v = 1.0</tt> copies the given scalar, in this case <tt>1.0</tt>, +into each of the elements of <tt>v</tt>. + +<p><strong>Addition/Subtraction</strong> Vectors can be +added together either with the binary addition operator (<tt>u = v + +w</tt>) or the additive assignment operator (<tt>u += v</tt>). +Subtraction operates similarly, using subtraction rather than addition +operators. + +<p><strong>Scalar Multiplication/Division</strong> +Vectors can be multiplied by scalar values using either the binary +operator (<tt>v * 2.0</tt>) or the accumulation operator (<tt>v *= +2.0</tt>). Scalar division operates similarly. + +<p><strong>Inner Product</strong> +The inner product (or dot product) of two vectors is written with the +standard multiplication operator: <tt>v * w</tt>. + +<h3>Standard Vector Functions</h3> + +<p>All vector classes support a standard set of functions for +performing common operations on vectors. These functions are: +<pre> + <i>// Returns the squared length of the vector v</i> + inline double norm2(const Vec_& v); + + <i>// Returns the length of the vector v</i> + inline double norm(const Vec_& v); + + <i>// Adjusts v to have unit length. Mostly equivalent to v/=norm(v)</i> + inline void unitize(Vec_& v); +</pre> + +<p>Vector can also be read from and written to C++ iostreams using the +standard <tt><<</tt> and <tt>>></tt> operators. + +</body> + +</html> diff --git a/debian/fireflies/fireflies-2.08/libgfx/doc/vec2.html b/debian/fireflies/fireflies-2.08/libgfx/doc/vec2.html new file mode 100644 index 00000000..5faa016a --- /dev/null +++ b/debian/fireflies/fireflies-2.08/libgfx/doc/vec2.html @@ -0,0 +1,52 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" + "http://www.w3.org/TR/REC-html40/loose.dtd"> +<!-- $Id: vec2.html 153 2000-09-05 16:11:26Z garland $ --> + +<html> + +<head> +<title>libgfx: Vector Math</title> +<link rel=stylesheet href="cdoc.css" type="text/css"> +<meta name="Author" content="Michael Garland"> +</head> + +<body> + +<h2>Vector Math</h2> + +<h3>class Vec2</h3> + +<p> This class implements a 2-dimensional real-valued vector. +Individual elements are represent with <code>double</code> precision +floating point numbers. To use the <tt>Vec2</tt> class you must +include the header +<pre> + #include <gfx/vec2.h> +</pre> + +<h4>Constructor Methods</h4> + +<p>The <tt>Vec2</tt> class defines the following set of constructors: + +<pre> + Vec2(); <i>// Initializes vector to (0 0).</i> + Vec2(double x, double y); <i>// Initializes vector to (x y).</i> + Vec2(double s); <i>// Initializes vector to (s s)</i> + + Vec2(const Vec2& v); <i>// </i> + Vec2(const float v[2]); <i>// These copy values from v</i> + Vec2(const double v[2]); <i>// </i> +</pre> + +<h4>Specialized Functions</h4> + +<p>Beyond the standard functions supported by all vector classes, the +<tt>Vec2</tt> class provides the following additional function: +<pre> + Vec2 perp(const Vec2 &v); +</pre> +that returns a new vector which is perpendicular to the given vector. + +</body> + +</html> diff --git a/debian/fireflies/fireflies-2.08/libgfx/doc/vec3.html b/debian/fireflies/fireflies-2.08/libgfx/doc/vec3.html new file mode 100644 index 00000000..83e27c60 --- /dev/null +++ b/debian/fireflies/fireflies-2.08/libgfx/doc/vec3.html @@ -0,0 +1,70 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" + "http://www.w3.org/TR/REC-html40/loose.dtd"> +<!-- $Id: vec3.html 86 2000-06-13 18:59:13Z garland $ --> + +<html> + +<head> +<title>libgfx: Vector Math</title> +<link rel=stylesheet href="cdoc.css" type="text/css"> +<meta name="Author" content="Michael Garland"> +</head> + +<body> + +<h2>Vector Math</h2> + +<h3>class Vec3</h3> + +<p> This class implements a 3-dimensional real-valued vector. +Individual elements are represent with <code>double</code> precision +floating point numbers. To use the <tt>Vec3</tt> class you must +include the header +<pre> + #include <gfx/vec3.h> +</pre> + +<h4>Constructor Methods</h4> + +<p>The <tt>Vec3</tt> class defines the following set of constructors: + +<pre> + Vec3(); <i>// Initializes vector to (0 0 0).</i> + Vec3(double x, double y, double z); <i>// Initializes vector to (x y z).</i> + Vec3(double s); <i>// Initializes vector to (s s s)</i> + + Vec3(const Vec3& v); <i>// </i> + Vec3(const float v[3]); <i>// These copy values from v</i> + Vec3(const double v[3]); <i>// </i> + + Vec3(const Vec2& v, double z); <i>// Initializes vector to (v[0] v[1] z)</i> +</pre> + +<h4>Specialized Functions</h4> + +<p>In addition to the standard functions provided by all vector classes, +the <tt>Vec3</tt> class defines certain specialized functions which +operate only on 3-D vectors. + +<p>The <em>cross product</em> of two vectors <tt>v, w</tt> is a third +vector which is perpendicular to both <tt>v</tt> and <tt>w</tt>. +It can be computed with either a function call or an overloaded +operator + +<pre> + u = cross(v, w); <i>// Equivalent ways of computing</i> + u = v ^ w; <i>// the cross product of v and w.</i> +</pre> + +<p>Since 3-D vectors may be used to represent 2-D homogeneous +coordinates, a projection function is provided. +<pre> + Vec2 proj(const Vec3& v); +</pre> +This routine takes a homogeneous vector <i>(x y w)</i> and returns the +corresponding 2-D vector <i>(x/w y/w)</i>. If <i>w</i> is 0 then +the vector <i>(x y)</i> is returned. + +</body> + +</html> diff --git a/debian/fireflies/fireflies-2.08/libgfx/doc/vec4.html b/debian/fireflies/fireflies-2.08/libgfx/doc/vec4.html new file mode 100644 index 00000000..77e3e467 --- /dev/null +++ b/debian/fireflies/fireflies-2.08/libgfx/doc/vec4.html @@ -0,0 +1,65 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" + "http://www.w3.org/TR/REC-html40/loose.dtd"> +<!-- $Id: vec4.html 86 2000-06-13 18:59:13Z garland $ --> + +<html> + +<head> +<title>libgfx: Vector Math</title> +<link rel=stylesheet href="cdoc.css" type="text/css"> +<meta name="Author" content="Michael Garland"> +</head> + +<body> + +<h2>Vector Math</h2> + +<h3>class Vec4</h3> + +<p> This class implements a 4-dimensional real-valued vector. +Individual elements are represent with <code>double</code> precision +floating point numbers. To use the <tt>Vec4</tt> class you must +include the header +<pre> + #include <gfx/vec4.h> +</pre> + +<h4>Constructor Methods</h4> + +<p>The <tt>Vec4</tt> class defines the following set of constructors: + +<pre> + Vec4(); <i>// Initializes vector to (0 0 0 0).</i> + Vec4(double x, double y, double z, double w); <i>// Initializes vector to (x y z w).</i> + Vec3(double s); <i>// Initializes vector to (s s s s)</i> + + Vec4(const Vec4& v); <i>// </i> + Vec4(const float v[4]); <i>// These copy values from v</i> + Vec4(const double v[4]); <i>// </i> + + Vec4(const Vec3& v, double w); <i>// Initializes vector to (v[0] v[1] v[2] w)</i> +</pre> + +<h4>Specialized Functions</h4> + +<p>In addition to the standard functions provided by all vector classes, +the <tt>Vec4</tt> class defines certain specialized functions which +operate only on 4-D vectors. + +<p>The <em>cross product</em> of three 4-vectors <tt>u, v, w</tt> is a +fourth vector which is perpendicular to all of <tt>u, v, w</tt>. +It can be computed with the function call + +<pre> + t = cross(u, v, w); +</pre> + +<p>Since 4-D vectors are frequently +used to represent 3-D homogeneous +coordinates, a projection function is provided. +<pre> + Vec3 proj(const Vec4& v); +</pre> +This routine takes a homogeneous vector <i>(x y z w)</i> and returns the +corresponding 3-vector <i>(x/w y/w z/w)</i>. If <i>w</i> is 0 then +the vector <i>(x y z)</i> is returned. diff --git a/debian/fireflies/fireflies-2.08/libgfx/gfx-config.in b/debian/fireflies/fireflies-2.08/libgfx/gfx-config.in new file mode 100644 index 00000000..47ac58f0 --- /dev/null +++ b/debian/fireflies/fireflies-2.08/libgfx/gfx-config.in @@ -0,0 +1,38 @@ +# $Id: gfx-config.in 343 2002-06-13 18:34:59Z garland $ + +CC = @CC@ +CXX = @CXX@ +RANLIB = @RANLIB@ +RM = @RM@ +FLTKCONFIG = @FLTKCONFIG@ + +WIN_FLAGS = @X_CFLAGS@ +WIN_LFLAGS = @X_LIBS@ +CFLAGS = @CFLAGS@ $(WIN_FLAGS) +CXXFLAGS = @CXXFLAGS@ $(WIN_FLAGS) +LDFLAGS = @LDFLAGS@ $(WIN_LFLAGS) + +WIN_LIBS = @X_PRE_LIBS@ @X_CORE@ @X_EXTRA_LIBS@ +WIN_DLIBS = @X_PRE_LIBS@ @X_DCORE@ @X_EXTRA_LIBS@ +IMG_LIBS = @IMG_LIBS@ +GL_LIBS = @GL_LIBS@ +FLTK_LIBS = @FLTK_LIBS@ +GUI_LIBS = $(FLTK_LIBS) $(IMG_LIBS) $(GL_LIBS) $(WIN_LIBS) + +CC_DEPEND = @CC_DEPEND@ $(CFLAGS) +CXX_DEPEND = @CXX_DEPEND@ $(CXXFLAGS) + +.SUFFIXES: +.SUFFIXES: .fl .c .cc .cxx .o + +.c.o: + $(CC) -c $(CFLAGS) $< + +.cxx.o: + $(CXX) -c $(CXXFLAGS) $< + +.fl.cxx: + fluid -c $< + +.fl.h: + fluid -c $< diff --git a/debian/fireflies/fireflies-2.08/libgfx/include/gfx/arcball.h b/debian/fireflies/fireflies-2.08/libgfx/include/gfx/arcball.h new file mode 100644 index 00000000..3b1ff00e --- /dev/null +++ b/debian/fireflies/fireflies-2.08/libgfx/include/gfx/arcball.h @@ -0,0 +1,55 @@ +#ifndef GFXARCBALL_INCLUDED // -*- C++ -*- +#define GFXARCBALL_INCLUDED +#if !defined(__GNUC__) +# pragma once +#endif + +/************************************************************************ + + Arcball rotation control. + + $Id: arcball.h 427 2004-09-27 04:45:31Z garland $ + + ************************************************************************/ + +#include "baseball.h" + +namespace gfx +{ + +class Arcball : public Baseball +{ +private: + Vec2 ball_ctr; + double ball_radius; + + Quat q_now, q_down, q_drag; // Quaternions describing rotation + Vec3 v_from, v_to; // + + bool is_dragging; + +protected: + Vec3 proj_to_sphere(const Vec2&); + void update(); + + +public: + Arcball(); + + virtual void update_animation(); + virtual bool mouse_down(int *where, int which); + virtual bool mouse_up(int *where, int which); + virtual bool mouse_drag(int *where, int *last, int which); + + virtual void apply_transform(); + virtual void get_transform(Vec3 & c, Vec3 &t, Quat & q); + virtual void set_transform(const Vec3 & c, const Vec3 & t, const Quat & q); + + virtual void write(std::ostream&); + virtual void read(std::istream&); +}; + +} // namespace gfx + +// GFXARCBALL_INCLUDED +#endif diff --git a/debian/fireflies/fireflies-2.08/libgfx/include/gfx/array.h b/debian/fireflies/fireflies-2.08/libgfx/include/gfx/array.h new file mode 100644 index 00000000..66189e4b --- /dev/null +++ b/debian/fireflies/fireflies-2.08/libgfx/include/gfx/array.h @@ -0,0 +1,70 @@ +#ifndef GFXARRAY_INCLUDED // -*- C++ -*- +#define GFXARRAY_INCLUDED +#if !defined(__GNUC__) +# pragma once +#endif + +/************************************************************************ + + These array classes extend the STL vector<> template to provide + convenient 2-D and 3-D arrays. + + NOTE: This package used to provide array<T> and varray<T> templates + that were alternatives to the STL vector<T> template. Its purpose was + to support some legacy code written in the days when few compilers + understood STL. Now that STL support is common, that code has been + removed. + + $Id: array.h 427 2004-09-27 04:45:31Z garland $ + + ************************************************************************/ + +#include "gfx.h" +#include <vector> + +namespace gfx +{ + +template<class T> +class array2 : public std::vector<T> +{ +private: + int W, H; + +protected: + array2() { } + +public: + array2(int w, int h) : std::vector<T>(w*h), W(w), H(h) { } + + T& operator()(int i, int j) { return (*this)[j*W+i]; } + const T& operator()(int i, int j) const { return (*this)[j*W+i]; } + + int width() const { return W; } + int height() const { return H; } +}; + +template<class T> +class array3 : public std::vector<T> +{ +private: + int W, H, D; + +protected: + array3() { } + +public: + array3(int w, int h, int d) : std::vector<T>(w*h*d), W(w), H(h), D(d) { } + + T& operator()(int i, int j, int k) { return (*this)[k*W*H + j*W+i]; } + const T& operator()(int i,int j,int k) const {return (*this)[k*W*H+j*W+i];} + + int width() const { return W; } + int height() const { return H; } + int depth() const { return D; } +}; + +} // namespace gfx + +// GFXARRAY_INCLUDED +#endif diff --git a/debian/fireflies/fireflies-2.08/libgfx/include/gfx/baseball.h b/debian/fireflies/fireflies-2.08/libgfx/include/gfx/baseball.h new file mode 100644 index 00000000..6e10d647 --- /dev/null +++ b/debian/fireflies/fireflies-2.08/libgfx/include/gfx/baseball.h @@ -0,0 +1,55 @@ +#ifndef GFXBASEBALL_INCLUDED // -*- C++ -*- +#define GFXBASEBALL_INCLUDED +#if !defined(__GNUC__) +# pragma once +#endif + +/************************************************************************ + + Common base class for ball-based rotators (e.g., Trackball & Arcball). + + $Id: baseball.h 443 2005-06-14 00:53:40Z garland $ + + ************************************************************************/ + +#include "quat.h" + +namespace gfx +{ + +class Baseball +{ +public: + Vec3 ctr; // Describes bounding sphere of object + double radius; // + + Quat curquat; // Current rotation of object + Vec3 trans; // Current translation of object + +public: + Baseball(); + virtual ~Baseball() {} + + // Required initialization method + template<class T> + void bounding_sphere(const TVec3<T>& v, T r) { ctr=v; radius=r; } + + // Standard event interface provide by all Ball controllers + virtual void update_animation() = 0; + virtual bool mouse_down(int *where, int which) = 0; + virtual bool mouse_up(int *where, int which) = 0; + virtual bool mouse_drag(int *where, int *last, int which) = 0; + + // Interface for use during drawing to apply appropriate transformation + virtual void apply_transform(); + virtual void unapply_transform(); + + // Interface for reading/writing transform + virtual void write(std::ostream&); + virtual void read(std::istream&); +}; + +} // namespace gfx + +// GFXBASEBALL_INCLUDED +#endif diff --git a/debian/fireflies/fireflies-2.08/libgfx/include/gfx/color.h b/debian/fireflies/fireflies-2.08/libgfx/include/gfx/color.h new file mode 100644 index 00000000..6b86e6e6 --- /dev/null +++ b/debian/fireflies/fireflies-2.08/libgfx/include/gfx/color.h @@ -0,0 +1,48 @@ +#ifndef GFXCOLOR_INCLUDED // -*- C++ -*- +#define GFXCOLOR_INCLUDED +#if !defined(__GNUC__) +# pragma once +#endif + +/************************************************************************ + + Simple color manipulations + + $Id$ + + ************************************************************************/ + +#include "vec3.h" + +namespace gfx +{ + + // RGB colors have components R,G,B in [0,1] + typedef Vec3f rgbColor; + + // HSV colors should have components: + // H in [0,360] + // S in [0,1] + // V in [0,1] + typedef Vec3f hsvColor; + + typedef Vec3f yiqColor; + + typedef Vec3f xyzColor; + typedef Vec2f xyChromaticity; + + extern hsvColor RGBtoHSV(const rgbColor& rgb); + extern rgbColor HSVtoRGB(const hsvColor& hsv); + + extern float rgb_luminance_ntsc(const rgbColor& rgb); + extern float rgb_luminance_alt(const rgbColor& rgb); + + extern yiqColor RGBtoYIQ(const rgbColor& rgb); + + extern xyzColor RGBtoXYZ(const rgbColor& rgb); + extern rgbColor XYZtoRGB(const xyzColor& xyz); + extern xyChromaticity xyz_chromaticity(const xyzColor& xyz); +} + +// GFXCOLOR_INCLUDED +#endif diff --git a/debian/fireflies/fireflies-2.08/libgfx/include/gfx/config-osx.h b/debian/fireflies/fireflies-2.08/libgfx/include/gfx/config-osx.h new file mode 100644 index 00000000..b8081979 --- /dev/null +++ b/debian/fireflies/fireflies-2.08/libgfx/include/gfx/config-osx.h @@ -0,0 +1,86 @@ +/************************************************************************ + + Configuration header for Mac OS X. Manually derived from config.h + generated by autoconf on OS X Tiger (10.4). + + ************************************************************************/ + +/* Define this if your compiler doesn't support the new C++ 'bool' type */ +#define HAVE_BOOL 1 + +/* Define if your system supports rint() */ +#define HAVE_RINT 1 + +/* Define if your system supports getrusage() */ +#define HAVE_GETRUSAGE 1 + +/* Define if your system does not support getrusage() but supports times() */ +#define HAVE_TIMES 1 + +/* Define if your system supports random() as opposed to just rand() */ +/* #undef HAVE_RANDOM */ + +/* Define if the STL hash_map template is available */ +/* #undef HAVE_HASH_MAP */ + +/* Define if the STL hash_set template is available */ +/* #undef HAVE_HASH_SET */ + +/* GCC v3 puts hash_map and hash_set in an 'ext' directory */ +#define HAVE_EXT_HASH_MAP 1 +#define HAVE_EXT_HASH_SET 1 + +/* Define if the STL valarray template is available */ +#define HAVE_VALARRAY 1 + +/* Define if the ANSI standard <sstream> is available */ +#define HAVE_SSTREAM 1 + +/* Define if the pre-ANSI <strstream> is available */ +#define HAVE_STRSTREAM 1 + +/* Define if the gzstream library (a zlib wrapper) is available */ +/* #undef HAVE_GZSTREAM */ + +/* ***** GUI & Image configuration section ***** */ + +/* Define if the FLTK GUI toolkit is available */ +#define HAVE_FLTK 1 + +/* Define if FLTK OpenGL support is available */ +#define HAVE_FLTK_GL 1 + +/* Define if Sam Leffler's libtiff is available */ +#define HAVE_LIBTIFF 1 + +/* Define the libtiff LZW is available */ +/* #undef HAVE_LIBTIFF_LZW */ + +/* Define if libpng is available */ +#define HAVE_LIBPNG 1 + +/* Define if the Independent JPEG Group's libjpeg is available */ +#define HAVE_LIBJPEG 1 + +/* ***** OpenGL configuration section ***** */ + +/* Define to the name of OpenGL implementation (e.g., "OpenGL" or "Mesa") */ +#define HAVE_OPENGL "OpenGL" + +/* Define if glPolygonOffsetEXT is available */ +/* #undef HAVE_POLYOFFSET_EXT */ + +/* Define if glPolygonOffset is available */ +#define HAVE_POLYOFFSET 1 + +/* Define if <GL/glext.h> header is available */ +/* #undef HAVE_GL_GLEXT_H */ + +/* Define if <GL/glxext.h> header is available */ +/* #undef HAVE_GL_GLXEXT_H */ + +/* Define if <GL/wglext.h> header is available */ +/* #undef HAVE_GL_WGLEXT_H */ + +/* Define if <OpenGL/glext.h> header is available (for Apple) */ +#define HAVE_OPENGL_GLEXT_H 1 diff --git a/debian/fireflies/fireflies-2.08/libgfx/include/gfx/config-vc.h b/debian/fireflies/fireflies-2.08/libgfx/include/gfx/config-vc.h new file mode 100644 index 00000000..ed327937 --- /dev/null +++ b/debian/fireflies/fireflies-2.08/libgfx/include/gfx/config-vc.h @@ -0,0 +1,85 @@ +/************************************************************************ + + Visual C++ 5/6 configuration header. + Manually generated from config.h.in. + + ************************************************************************/ + +/* Define this if your compiler doesn't support the new C++ 'bool' type */ +#define HAVE_BOOL 1 + +/* Define if your system supports rint() */ +/* #define HAVE_RINT 1 */ + +/* Define if your system supports getrusage() */ +/* #undef HAVE_GETRUSAGE */ + +/* Define if your system does not support getrusage() but supports times() */ +/* #undef HAVE_TIMES */ + +/* Define if your system supports random() as opposed to just rand() */ +/* #undef HAVE_RANDOM */ + +/* Define if the STL hash_map template is available */ +/* #undef HAVE_HASH_MAP */ + +/* Define if the STL hash_set template is available */ +/*#undef HAVE_HASH_SET */ + +/* GCC v3 puts hash_map and hash_set in an 'ext' directory */ +/* #undef HAVE_EXT_HASH_MAP */ +/* #undef HAVE_EXT_HASH_SET */ + +/* Define if the STL valarray template is available */ +#define HAVE_VALARRAY 1 + +/* Define if the ANSI standard <sstream> is available */ +#define HAVE_SSTREAM 1 + +/* Define if the pre-ANSI <strstream> is available */ +/* #undef HAVE_STRSTREAM */ + +/* Define if the FLTK GUI toolkit is available */ +#define HAVE_FLTK 1 + +/* Define if FLTK OpenGL support is available */ +#define HAVE_FLTK_GL 1 + +/* Define if Sam Leffler's libtiff is available */ +#define HAVE_LIBTIFF 1 + +/* Define if libpng is available */ +#define HAVE_LIBPNG 1 + +/* Define if the Independent JPEG Group's libjpeg is available */ +#define HAVE_LIBJPEG 1 + +/* ***** OpenGL configuration section ***** */ + +/* Define to the name of OpenGL implementation (e.g., "OpenGL" or "Mesa") */ +#define HAVE_OPENGL "OpenGL" + +/* Define if glPolygonOffsetEXT is available */ +/* #undef HAVE_POLYOFFSET_EXT */ + +/* Define if glPolygonOffset is available */ +#define HAVE_POLYOFFSET 1 + +/* Define if <GL/glext.h> header is available */ +#define HAVE_GL_GLEXT_H 1 + +/* Define if <GL/glxext.h> header is available */ +/* #undef HAVE_GL_GLXEXT_H */ + +/* Define if <GL/wglext.h> header is available */ +#define HAVE_GL_WGLEXT_H 1 + +/* Visual C++ gets confused by too many casting and [] operators */ +#define HAVE_CASTING_LIMITS 1 + +#if defined(_DEBUG) && defined(_MSC_VER) +// STL makes Visual C++ complain about identifiers longer than 255 +// characters. Unfortunately, this may limit the debugability of +// code that uses STL. +#pragma warning (disable : 4786) +#endif diff --git a/debian/fireflies/fireflies-2.08/libgfx/include/gfx/config.h.in b/debian/fireflies/fireflies-2.08/libgfx/include/gfx/config.h.in new file mode 100644 index 00000000..0adb4ea7 --- /dev/null +++ b/debian/fireflies/fireflies-2.08/libgfx/include/gfx/config.h.in @@ -0,0 +1,81 @@ +/* This -*- C -*- file is meant to be processed by the configure script */ + +/* Define this if your compiler doesn't support the new C++ 'bool' type */ +#undef HAVE_BOOL + +/* Define if your system supports rint() */ +#undef HAVE_RINT + +/* Define if your system supports getrusage() */ +#undef HAVE_GETRUSAGE + +/* Define if your system does not support getrusage() but supports times() */ +#undef HAVE_TIMES + +/* Define if your system supports random() as opposed to just rand() */ +#undef HAVE_RANDOM + +/* Define if the STL hash_map template is available */ +#undef HAVE_HASH_MAP + +/* Define if the STL hash_set template is available */ +#undef HAVE_HASH_SET + +/* GCC v3 puts hash_map and hash_set in an 'ext' directory */ +#undef HAVE_EXT_HASH_MAP +#undef HAVE_EXT_HASH_SET + +/* Define if the STL valarray template is available */ +#undef HAVE_VALARRAY + +/* Define if the ANSI standard <sstream> is available */ +#undef HAVE_SSTREAM + +/* Define if the pre-ANSI <strstream> is available */ +#undef HAVE_STRSTREAM + +/* Define if the gzstream library (a zlib wrapper) is available */ +#undef HAVE_GZSTREAM + +/* ***** GUI & Image configuration section ***** */ + +/* Define if the FLTK GUI toolkit is available */ +#undef HAVE_FLTK + +/* Define if FLTK OpenGL support is available */ +#undef HAVE_FLTK_GL + +/* Define if Sam Leffler's libtiff is available */ +#undef HAVE_LIBTIFF + +/* Define the libtiff LZW is available */ +#undef HAVE_LIBTIFF_LZW + +/* Define if libpng is available */ +#undef HAVE_LIBPNG + +/* Define if the Independent JPEG Group's libjpeg is available */ +#undef HAVE_LIBJPEG + +/* ***** OpenGL configuration section ***** */ + +/* Define to the name of OpenGL implementation (e.g., "OpenGL" or "Mesa") */ +#undef HAVE_OPENGL + +/* Define if glPolygonOffsetEXT is available */ +#undef HAVE_POLYOFFSET_EXT + +/* Define if glPolygonOffset is available */ +#undef HAVE_POLYOFFSET + +/* Define if <GL/glext.h> header is available */ +#undef HAVE_GL_GLEXT_H + +/* Define if <GL/glxext.h> header is available */ +#undef HAVE_GL_GLXEXT_H + +/* Define if <GL/wglext.h> header is available */ +#undef HAVE_GL_WGLEXT_H + +/* Define if <OpenGL/glext.h> header is available (for Apple) */ +#undef HAVE_OPENGL_GLEXT_H diff --git a/debian/fireflies/fireflies-2.08/libgfx/include/gfx/geom3d.h b/debian/fireflies/fireflies-2.08/libgfx/include/gfx/geom3d.h new file mode 100644 index 00000000..817bb6f2 --- /dev/null +++ b/debian/fireflies/fireflies-2.08/libgfx/include/gfx/geom3d.h @@ -0,0 +1,133 @@ +#ifndef GFXGEOM3D_INCLUDED +#define GFXGEOM3D_INCLUDED +#if !defined(__GNUC__) +# pragma once +#endif + +/************************************************************************ + + Handy 3D geometrical primitives + + $Id: geom3d.h 432 2004-11-02 22:55:41Z garland $ + + ************************************************************************/ + +#include "vec3.h" + +namespace gfx +{ + +// +// Computing properties of triangles +// + +template<class Vec> +inline Vec triangle_raw_normal(const Vec& v1, const Vec& v2, const Vec& v3) +{ + return cross(v2-v1, v3-v1); +} + +template<class Vec> +inline typename Vec::value_type + triangle_area(const Vec& v1,const Vec& v2,const Vec& v3) +{ + return 0.5 * norm(triangle_raw_normal(v1, v2, v3)); +} + +template<class Vec> +inline Vec triangle_normal(const Vec& v1, const Vec& v2, const Vec& v3) +{ + Vec n = triangle_raw_normal(v1, v2, v3); + unitize(n); + return n; +} + +template<class Vec, class Plane> +inline Plane triangle_plane(const Vec& v1, const Vec& v2, const Vec& v3) +{ + Vec n = triangle_normal(v1, v2, v3); + return Plane(n, -(n*v1)); +} + +template<class Vec, class Plane> +inline Plane triangle_raw_plane(const Vec& v1, const Vec& v2, const Vec& v3) +{ + Vec n = triangle_raw_normal(v1, v2, v3); + return Plane(n, -(n*v1)); +} + +template< class Vec> +inline typename Vec::value_type + triangle_compactness(const Vec& v1, const Vec& v2, const Vec& v3) +{ + const double FOUR_ROOT3 = 6.928203230275509; + + return FOUR_ROOT3 * triangle_area(v1, v2, v3) / + ( norm2(v2 - v1) + norm2(v3 - v2) + norm2(v1 - v3) ); +} + +// +// Operations with axis-aligned bounding boxes +// + +template<class Vec, class List> +void update_bbox(Vec& min, Vec& max, const List& items) +{ + typedef typename List::const_iterator iterator; + + for(iterator i=items.begin(); i!=items.end(); i++) + { + const Vec& v = *i; + for(int j=0; j<Vec::dim(); j++) + { + if( v[j] < min[j] ) min[j] = v[j]; + if( v[j] > max[j] ) max[j] = v[j]; + } + } +} + +template<class Vec, class List> +void compute_bbox(Vec& min, Vec& max, const List& items) +{ + if( items.size()==0 ) min = max = 0; + else min = max = items[0]; + + update_bbox(min, max, items); +} + +template<class Vec> +bool is_inside_bbox(const Vec& p, const Vec& min, Vec& max) +{ + for(int i=0; i<Vec::dim(); i++) + if( p[i]<min[i] || p[i]>max[i] ) + return false; + + return true; +} + +template<class Vec> +Vec clamp_to_bbox(Vec p, const Vec& min, const Vec& max) +{ + for(int i=0; i<Vec::dim(); i++) + { + if (p[i]<min[i]) p[i]=min[i]; + else if (p[i]>max[i]) p[i]=max[i]; + } + + return p; +} + +// +// Computing properties of tetrahedra +// + +extern double tetrahedron_determinant(const Vec3& v0, const Vec3& v1, + const Vec3& v2, const Vec3& v3); + +extern double tetrahedron_volume(const Vec3& v0, const Vec3& v1, + const Vec3& v2, const Vec3& v3); + +} // namespace gfx + +// GFXGEOM3D_INCLUDED +#endif diff --git a/debian/fireflies/fireflies-2.08/libgfx/include/gfx/geom4d.h b/debian/fireflies/fireflies-2.08/libgfx/include/gfx/geom4d.h new file mode 100644 index 00000000..47007c02 --- /dev/null +++ b/debian/fireflies/fireflies-2.08/libgfx/include/gfx/geom4d.h @@ -0,0 +1,36 @@ +#ifndef GFXGEOM4D_INCLUDED +#define GFXGEOM4D_INCLUDED +#if !defined(__GNUC__) +# pragma once +#endif + +/************************************************************************ + + Handy 4D geometrical primitives + + $Id: geom4d.h 427 2004-09-27 04:45:31Z garland $ + + ************************************************************************/ + +namespace gfx +{ + +template<class Vec> +inline Vec tet_raw_normal(const Vec& v1, const Vec& v2, const Vec& v3, const Vec& v4) +{ + return cross(v2-v1, v3-v1, v4-v1); +} + + +template<class Vec> +inline Vec tet_normal(const Vec& v1, const Vec& v2, const Vec& v3, const Vec& v4) +{ + Vec n = tet_raw_normal(v1, v2, v3, v4); + unitize(n); + return n; +} + +} + +// GFXGEOM4D_INCLUDED +#endif diff --git a/debian/fireflies/fireflies-2.08/libgfx/include/gfx/gfx.h b/debian/fireflies/fireflies-2.08/libgfx/include/gfx/gfx.h new file mode 100644 index 00000000..69d5a0bd --- /dev/null +++ b/debian/fireflies/fireflies-2.08/libgfx/include/gfx/gfx.h @@ -0,0 +1,105 @@ +#ifndef GFX_INCLUDED // -*- C++ -*- +#define GFX_INCLUDED +#if !defined(__GNUC__) +# pragma once +#endif + +/************************************************************************ + + Main header file for the libgfx graphics library. + + $Id: gfx.h 455 2005-08-17 18:10:25Z garland $ + + ************************************************************************/ + +#if defined(HAVE_CONFIG_H) +# include "config.h" +#elif defined(_MSC_VER) +# include "config-vc.h" +#elif defined(__APPLE__) +# include "config-osx.h" +#endif + +#include <cstdlib> +#include <cmath> +#include <climits> +#include <iostream> + +//////////////////////////////////////////////////////////////////////// +// +// Standards notwithstanding, not all platforms define exactly the +// same things in their header files. We try to compensate here. +// + +#if !defined(HAVE_BOOL) +typedef int bool; +const bool false = 0; +const bool true = 1; +#endif + +// Microsoft doesn't define std::min() & std::max() because it conflicts with +// <windef.h>, and their _MIN/_MAX macro workarounds don't add the std:: +// namespace qualification. These macros provide a uniform way of getting +// around this problem. +// +#if defined(_MSC_VER) +# define MIN(a,b) std::_cpp_min(a,b) +# define MAX(a,b) std::_cpp_max(a,b) +#else +# if defined(__CYGWIN__) +# define NOMINMAX +# endif +# define MIN(a,b) std::min(a,b) +# define MAX(a,b) std::max(a,b) +#endif + +#ifndef M_PI +# define M_PI 3.14159265358979323846264338327950288419716939937510582097494459 +#endif + +#if !defined(HUGE) && defined(HUGE_VAL) +# define HUGE HUGE_VAL +#endif + +#if !defined(HAVE_RINT) +inline double rint(double x) { return floor(x + 0.5); } +#endif + +//////////////////////////////////////////////////////////////////////// +// +// +// +namespace gfx +{ + +#if defined(HAVE_RANDOM) + inline double random1() { return (double)random() / (double)LONG_MAX; } + inline char random_byte() { return (char)(random() & 0xff); } +#else + inline double random1() { return (double)rand() / (double)RAND_MAX; } + inline char random_byte() { return (char)(rand() & 0xff); } +#endif + +const double FEQ_EPS = 1e-6; +const double FEQ_EPS2 = 1e-12; + +inline bool FEQ(double a, double b, double e=FEQ_EPS) {return fabs(a-b)<e;} +inline bool FEQ2(double a, double b, double e=FEQ_EPS2) {return fabs(a-b)<e;} + + +//////////////////////////////////////////////////////////////////////// +// +// +// + +#define TIMING(t, cmd) { t=get_cpu_time(); cmd; t=get_cpu_time() - t; } +extern double get_cpu_time(); + +} // namespace gfx + +#ifndef GFX_NAMESPACE +using namespace gfx; +#endif + +// GFX_INCLUDED +#endif diff --git a/debian/fireflies/fireflies-2.08/libgfx/include/gfx/gl.h b/debian/fireflies/fireflies-2.08/libgfx/include/gfx/gl.h new file mode 100644 index 00000000..c8fe3bcb --- /dev/null +++ b/debian/fireflies/fireflies-2.08/libgfx/include/gfx/gl.h @@ -0,0 +1,32 @@ +#ifndef GFXGL_INCLUDED // -*- C++ -*- +#define GFXGL_INCLUDED +#if !defined(__GNUC__) +# pragma once +#endif + +/************************************************************************ + + Include standard OpenGL headers. This process is complicated by the + fact that the Win32 OpenGL headers require that <windows.h> be + included before they are. + + $Id: gl.h 292 2002-01-24 17:43:59Z garland $ + + ************************************************************************/ + +#include "gfx.h" + +#if defined(WIN32) +# include <windows.h> +#endif + +#if defined(__APPLE__) +# include <OpenGL/gl.h> +# include <OpenGL/glu.h> +#else +# include <GL/gl.h> +# include <GL/glu.h> +#endif + +// GFXGL_INCLUDED +#endif diff --git a/debian/fireflies/fireflies-2.08/libgfx/include/gfx/glext.h b/debian/fireflies/fireflies-2.08/libgfx/include/gfx/glext.h new file mode 100644 index 00000000..c5c99ca1 --- /dev/null +++ b/debian/fireflies/fireflies-2.08/libgfx/include/gfx/glext.h @@ -0,0 +1,30 @@ +#ifndef GFXGLEXT_INCLUDED // -*- C++ -*- +#define GFXGLEXT_INCLUDED +#if !defined(__GNUC__) +# pragma once +#endif + +/************************************************************************ + + Include the standard OpenGL Extension headers, if available. + + $Id: glext.h 273 2001-10-15 16:57:23Z garland $ + + ************************************************************************/ + +#include "gl.h" + +#if defined(HAVE_GL_GLEXT_H) +# include <GL/glext.h> +#endif + +#if defined(HAVE_GL_GLXEXT_H) +# include <GL/glxext.h> +#endif + +#if defined(HAVE_GL_WGLEXT_H) +# include <GL/wglext.h> +#endif + +// GFXGLEXT_INCLUDED +#endif diff --git a/debian/fireflies/fireflies-2.08/libgfx/include/gfx/gltools.h b/debian/fireflies/fireflies-2.08/libgfx/include/gfx/gltools.h new file mode 100644 index 00000000..a5422f9e --- /dev/null +++ b/debian/fireflies/fireflies-2.08/libgfx/include/gfx/gltools.h @@ -0,0 +1,37 @@ +#ifndef GFXGLTOOLS_INCLUDED // -*- C++ -*- +#define GFXGLTOOLS_INCLUDED +#if !defined(__GNUC__) +# pragma once +#endif + +/************************************************************************ + + Handy functions for common OpenGL tasks + + $Id: gltools.h 445 2005-06-18 02:40:45Z garland $ + + ************************************************************************/ + +#include "gl.h" +#include "vec3.h" + +namespace gfx +{ + +extern GLuint opengl_pick_nil; +extern GLuint opengl_pick_zmax; + +extern void begin_opengl_pick(int *ctr, double radius, GLuint *buf, int size); +extern GLuint complete_opengl_pick(GLuint *buffer); + +extern void check_opengl_errors(const char *msg=NULL); + +extern void camera_lookat(const Vec3& min, const Vec3& max, double aspect); +extern void ortho_camera_lookat(const Vec3& min, const Vec3& max,double aspect); + +extern int unproject_pixel(int *pixel, double *world, double z=0.0); + +} + +// GFXGLTOOLS_INCLUDED +#endif diff --git a/debian/fireflies/fireflies-2.08/libgfx/include/gfx/gui.h b/debian/fireflies/fireflies-2.08/libgfx/include/gfx/gui.h new file mode 100644 index 00000000..da8285ac --- /dev/null +++ b/debian/fireflies/fireflies-2.08/libgfx/include/gfx/gui.h @@ -0,0 +1,186 @@ +#ifndef GFXGUI_INCLUDED // -*- C++ -*- +#define GFXGUI_INCLUDED +#if !defined(__GNUC__) +# pragma once +#endif + +/************************************************************************ + + Minimalist GUI framework. + + This package implements a baseline GUI framework for use in + GFX-based applications. Only a very specific kind of interface is + supported: one where the application window consists primarily of an + OpenGL drawing canvas. + + $Id: gui.h 443 2005-06-14 00:53:40Z garland $ + + ************************************************************************/ + +#include "gl.h" + +#include <FL/Fl.H> +#include <FL/Fl_Window.H> +#include <FL/Fl_Menu_Bar.H> +#include <FL/Fl_Gl_Window.H> +#include <FL/Fl_Output.H> + +namespace gfx +{ + +class MxGUI; + +class MxGLCanvas : public Fl_Gl_Window +{ +private: + int last_click[2]; + MxGUI *app; + +public: + // Override selected FLTK window methods + // + virtual void draw(); + virtual int handle(int event); + virtual void resize(int x, int y, int w, int h); + +public: + MxGLCanvas(int x, int y, int w, int h, const char *label=NULL); + void attach_app(MxGUI *a); +}; + +class MxGUI +{ +private: + int w_offset, h_offset; + Fl_Window *create_window(int xw=640, int yw=480, int pad=5); + +public: + // This is the public interface of MxGUI available to the application. + // + Fl_Window *toplevel; + MxGLCanvas *canvas; + Fl_Output *status_line; + Fl_Menu_Bar *menu_bar; + Fl_Menu_Item *menu_layout; + float default_fps, target_fps; + + static MxGUI *current; // There should only be one. + + MxGUI(); + virtual ~MxGUI() {} + + virtual void initialize(int argc, char **argv, + Fl_Menu_Item *layout=NULL, + int xw=640, int yw=480); + virtual int run(); + + int status(const char *fmt, ...); + void animate(bool will); + bool snapshot_to_file(int format, const char *filenamep=NULL); + void resize_canvas(int width, int height); + void lock_size(); + void unlock_size(); + + void title(const char *l) { toplevel->label(l); } + + // Menu construction and standard callbacks + int add_menu(const std::string&, int key, Fl_Callback *cb, int flags=0); + int add_toggle_menu(const std::string&, int key, bool& val, int flags=0); + static void cb_toggle(Fl_Menu_ *m, bool *flag); + +public: + // + // Callback functions that get executed in response to menu commands. + virtual void cb_new(); + virtual void cb_exit(); + virtual void cb_snapshot(int); + virtual void cb_animate(Fl_Menu_ *m); + virtual void cb_fps(); + virtual void cb_vga_size(int width); // uses 4:3 aspect ratio + virtual void cb_hdtv_size(int width); // uses 16:9 aspect ratio + virtual void cb_dv_size(int width); // uses 3:2 aspect ratio + + virtual void cb_save_view_to_file(); + virtual void cb_load_view_from_file(); + virtual bool save_view_to_file(); + virtual bool load_view_from_file(); + +public: + // + // Applications are customized by overriding the following methods. + + // Override these methods to control the contents of the GL canvas + virtual void setup_for_drawing(); + virtual void draw_contents(); + virtual void update_animation(); + + // Override these methods to receive events from the GL canvas + virtual bool mouse_down(int *where, int which); + virtual bool mouse_up(int *where, int which); + virtual bool mouse_drag(int *where, int *last, int which); + virtual bool key_press(int key); + + // Override these methods to get command line arguments + virtual int cmdline_option(int argc, char **argv, int& index); + virtual void cmdline_file(const char *file); + + // Override these methods to add custom interface elements + virtual void add_upper_controls(int& yfill, const int pad) {} + virtual void add_lower_controls(int& yfill, const int pad) {} + + // Override this method to free memory, close files, etc. + virtual void cleanup_for_exit() {} +}; + +//////////////////////////////////////////////////////////////////////// +// +// This template makes it easier to create FLTK-compliant callbacks. +// In particular, its purpose is to construct static thunks for +// calling member functions of MxGUI-derived classes. +// + +template<class Gui> +struct MxBinder +{ + typedef void (Gui::*GuiCommand)(); + typedef void (Gui::*GuiCommand1)(int); + typedef void (Gui::*GuiCommand2)(Fl_Menu_ *); + + template<GuiCommand cmd> + static void to(Fl_Widget *, void *data) + { + Gui *gui = static_cast<Gui*>(data); + (gui->*cmd)(); + gui->canvas->redraw(); + } + + template<GuiCommand2 cmd> + static void to_menu(Fl_Widget *w, void *data) + { + Gui *gui = static_cast<Gui*>(data); + (gui->*cmd)(static_cast<Fl_Menu_ *>(w)); + gui->canvas->redraw(); + } + + template<GuiCommand1 cmd, int i> + static void to_arg(Fl_Widget *, void *data) + { + Gui *gui = static_cast<Gui*>(data); + (gui->*cmd)(i); + gui->canvas->redraw(); + } +}; + +//////////////////////////////////////////////////////////////////////// +// +// These macros make static FLTK menu definitions look a little nicer. +// + +#define MXGUI_BEGIN_MENU(name) {name, 0, 0, 0, FL_SUBMENU}, +#define MXGUI_END_MENU {0}, +#define MXGUI_FINISH_MENUBAR {0} + +} // namespace gfx + +// GFXGUI_INCLUDED +#endif diff --git a/debian/fireflies/fireflies-2.08/libgfx/include/gfx/intvec.h b/debian/fireflies/fireflies-2.08/libgfx/include/gfx/intvec.h new file mode 100644 index 00000000..f6cf4d05 --- /dev/null +++ b/debian/fireflies/fireflies-2.08/libgfx/include/gfx/intvec.h @@ -0,0 +1,97 @@ +#ifndef GFXINTVEC_INCLUDED // -*- C++ -*- +#define GFXINTVEC_INCLUDED +#if !defined(__GNUC__) +# pragma once +#endif + +/************************************************************************ + + Generic class for representing packed integer vectors. + + For signed types (e.g., short) the elements of the vector are + assumed to fall in the range [-1, 1]. For unsigned types the + elements of the vector are assumed to fall in the range [0, 1]. + + Note that ANSI C defines the maximum values of integer types in + <limits.h>. + + $Id: intvec.h 427 2004-09-27 04:45:31Z garland $ + + ************************************************************************/ + +#include "gfx.h" + +namespace gfx +{ + +template<class T, int T_MAX, int N> +class IntVec +{ +private: + T data[N]; + + // These are the routines used by all other methods to convert + // between the internal integral representation and the external + // floating point representation. + // + static inline T _fromflt(double x) + { return (T)rint((x>1.0f?1.0f:x)*(double)T_MAX); } + static inline double _toflt(T s) { return (double)s/(double)T_MAX; } + +protected: + operator T*() { return data; } + operator const T*() const { return data; } + +public: + IntVec() { *this = 0.0; } + + double operator[](int i) const { return _toflt(data[i]); } + void set(int i, double x) { data[i] = _fromflt(x); } + + IntVec<T, T_MAX, N>& operator=(const IntVec<T, T_MAX, N>& v) + { for(int i=0; i<N; i++) data[i]=v.data[i]; return *this; } + + double operator=(double x) + { T y = _fromflt(x); for(int i=0; i<N; i++) data[i] = y; return x; } + + const T *raw_data() const { return data; } +}; + + +//////////////////////////////////////////////////////////////////////// +// +// 3-D vectors are particularly common in graphics applications. +// RGB colors and normals are common examples of data types for which +// we might want to use packed integer representation. Therefore we +// make a special derived class to make it easy to define such types. +// +// Example: To define an RGB 3-vector represented as 3 components +// whose values range from [0 .. 255], we could use the +// declaration: +// +// typedef IntVec3<unsigned char, UCHAR_MAX> byteColor; +// + +#include "vec3.h" + +template<class T, int T_MAX> +class IntVec3 : public IntVec<T, T_MAX, 3> +{ +public: + IntVec3() { *this = 0.0; } + IntVec3(double x, double y, double z) { pack(Vec3(x, y, z)); } + template<class U> IntVec3(const TVec3<U>& v) { pack(v[0], v[1], v[2]); } + + Vec3 unpack() const { return Vec3((*this)[0],(*this)[1],(*this)[2]); } + void pack(const Vec3& v) + { this->set(0, v[0]); this->set(1, v[1]); this->set(2, v[2]); } + void pack(double x, double y, double z) + { this->set(0,x); this->set(1,y); this->set(2,z); } + + IntVec3<T,T_MAX>& operator=(const Vec3& v) { pack(v); return *this; } +}; + +} // namespace gfx + +// GFXINTVEC_INCLUDED +#endif diff --git a/debian/fireflies/fireflies-2.08/libgfx/include/gfx/mat2.h b/debian/fireflies/fireflies-2.08/libgfx/include/gfx/mat2.h new file mode 100644 index 00000000..d4331e89 --- /dev/null +++ b/debian/fireflies/fireflies-2.08/libgfx/include/gfx/mat2.h @@ -0,0 +1,158 @@ +#ifndef GFXMAT2_INCLUDED // -*- C++ -*- +#define GFXMAT2_INCLUDED +#if !defined(__GNUC__) +# pragma once +#endif + +/************************************************************************ + + 2x2 Matrix class + + $Id: mat2.h 427 2004-09-27 04:45:31Z garland $ + + ************************************************************************/ + +#include "vec2.h" + +namespace gfx +{ + +class Mat2 +{ +private: + Vec2 row[2]; + +public: + // Standard constructors + // + Mat2() { *this = 0.0; } + Mat2(double a, double b, double c, double d) + { row[0][0]=a; row[0][1]=b; row[1][0]=c; row[1][1]=d; } + Mat2(const Vec2 &r0,const Vec2 &r1) { row[0]=r0; row[1]=r1; } + Mat2(const Mat2 &m) { *this = m; } + + // Descriptive interface + // + typedef double value_type; + typedef Vec2 vector_type; + typedef Mat2 inverse_type; + static int dim() { return 2; } + + // Access methods note: A(i, j) == row i, col j + // + double& operator()(int i, int j) { return row[i][j]; } + double operator()(int i, int j) const { return row[i][j]; } + Vec2& operator[](int i) { return row[i]; } + const Vec2& operator[](int i) const { return row[i]; } + inline Vec2 col(int i) const {return Vec2(row[0][i],row[1][i]);} + + operator double*() { return row[0]; } + operator const double*() { return row[0]; } + operator const double*() const { return row[0]; } + + + // Assignment methods + // + inline Mat2& operator=(const Mat2& m); + inline Mat2& operator=(double s); + + inline Mat2& operator+=(const Mat2& m); + inline Mat2& operator-=(const Mat2& m); + inline Mat2& operator*=(double s); + inline Mat2& operator/=(double s); + + + // Construction of standard matrices + // + static Mat2 I(); + static Mat2 outer_product(const Vec2 &u, const Vec2 &v) + { return Mat2(u[0]*v[0], u[0]*v[1], u[1]*v[0], u[1]*v[1]); } + static Mat2 outer_product(const Vec2 &u) { return outer_product(u,u); } + + Mat2 &diag(double d); + Mat2 &ident() { return diag(1.0); } +}; + +//////////////////////////////////////////////////////////////////////// +// +// Method definitions +// + +inline Mat2& Mat2::operator=(const Mat2& m) + { row[0]=m[0]; row[1]=m[1]; return *this; } + +inline Mat2& Mat2::operator=(double s) + { row[0]=s; row[1]=s; return *this; } + +inline Mat2& Mat2::operator+=(const Mat2& m) + { row[0] += m.row[0]; row[1] += m.row[1]; return *this;} + +inline Mat2& Mat2::operator-=(const Mat2& m) + { row[0] -= m.row[0]; row[1] -= m.row[1]; return *this; } + +inline Mat2& Mat2::operator*=(double s) + { row[0] *= s; row[1] *= s; return *this; } + +inline Mat2& Mat2::operator/=(double s) + { row[0] /= s; row[1] /= s; return *this; } + +//////////////////////////////////////////////////////////////////////// +// +// Operator definitions +// + +inline Mat2 operator+(const Mat2 &n, const Mat2 &m) + { return Mat2(n[0]+m[0], n[1]+m[1]); } + +inline Mat2 operator-(const Mat2 &n, const Mat2 &m) + { return Mat2(n[0]-m[0], n[1]-m[1]); } + +inline Mat2 operator-(const Mat2 &m) + { return Mat2(-m[0], -m[1]); } + +inline Mat2 operator*(double s, const Mat2 &m) + { return Mat2(m[0]*s, m[1]*s); } +inline Mat2 operator*(const Mat2 &m, double s) + { return s*m; } + +inline Mat2 operator/(const Mat2 &m, double s) + { return Mat2(m[0]/s, m[1]/s); } + +inline Vec2 operator*(const Mat2 &m, const Vec2 &v) + { return Vec2(m[0]*v, m[1]*v); } + +extern Mat2 operator*(const Mat2 &n, const Mat2 &m); + +inline std::ostream &operator<<(std::ostream &out, const Mat2& M) + { return out << M[0] << std::endl << M[1]; } + +inline std::istream &operator>>(std::istream &in, Mat2& M) + { return in >> M[0] >> M[1]; } + +//////////////////////////////////////////////////////////////////////// +// +// Misc. function definitions +// + +inline double det(const Mat2 &m) + { return m(0,0)*m(1,1) - m(0,1)*m(1,0); } + +inline double trace(const Mat2 &m) + { return m(0,0) + m(1,1); } + +inline Mat2 transpose(const Mat2 &m) + { return Mat2(m.col(0), m.col(1)); } + +inline Mat2 adjoint(const Mat2 &m) + { return Mat2(perp(m[1]), -perp(m[0])); } + +extern double invert(Mat2 &m_inv, const Mat2 &m); + +extern bool eigenvalues(const Mat2&, Vec2& evals); +extern bool eigenvectors(const Mat2&, const Vec2& evals, Vec2 evecs[2]); +extern bool eigen(const Mat2&, Vec2& evals, Vec2 evecs[2]); + +} // namespace gfx + +// GFXMAT2_INCLUDED +#endif diff --git a/debian/fireflies/fireflies-2.08/libgfx/include/gfx/mat3.h b/debian/fireflies/fireflies-2.08/libgfx/include/gfx/mat3.h new file mode 100644 index 00000000..d898a964 --- /dev/null +++ b/debian/fireflies/fireflies-2.08/libgfx/include/gfx/mat3.h @@ -0,0 +1,157 @@ +#ifndef GFXMAT3_INCLUDED // -*- C++ -*- +#define GFXMAT3_INCLUDED +#if !defined(__GNUC__) +# pragma once +#endif + +/************************************************************************ + + 3x3 Matrix class + + $Id: mat3.h 427 2004-09-27 04:45:31Z garland $ + + ************************************************************************/ + +#include "vec3.h" + +namespace gfx +{ + +class Mat3 +{ +private: + Vec3 row[3]; + +public: + // Standard constructors + // + Mat3() { *this = 0.0; } + Mat3(const Vec3& r0,const Vec3& r1,const Vec3& r2) + { row[0]=r0; row[1]=r1; row[2]=r2; } + Mat3(const Mat3& m) { *this = m; } + + // Descriptive interface + // + typedef double value_type; + typedef Vec3 vector_type; + typedef Mat3 inverse_type; + static int dim() { return 3; } + + // Access methods + // + double& operator()(int i, int j) { return row[i][j]; } + double operator()(int i, int j) const { return row[i][j]; } + Vec3& operator[](int i) { return row[i]; } + const Vec3& operator[](int i) const { return row[i]; } + inline Vec3 col(int i) const {return Vec3(row[0][i],row[1][i],row[2][i]);} + + operator double*() { return row[0]; } + operator const double*() { return row[0]; } + operator const double*() const { return row[0]; } + + + // Assignment methods + // + inline Mat3& operator=(const Mat3& m); + inline Mat3& operator=(double s); + + inline Mat3& operator+=(const Mat3& m); + inline Mat3& operator-=(const Mat3& m); + inline Mat3& operator*=(double s); + inline Mat3& operator/=(double s); + + + // Construction of standard matrices + // + static Mat3 I(); + static Mat3 outer_product(const Vec3& u, const Vec3& v); + static Mat3 outer_product(const Vec3& v); + + Mat3 &diag(double d); + Mat3 &ident() { return diag(1.0); } + + +}; + +//////////////////////////////////////////////////////////////////////// +// +// Methods definitions +// + +inline Mat3& Mat3::operator=(const Mat3& m) + { row[0] = m[0]; row[1] = m[1]; row[2] = m[2]; return *this; } + +inline Mat3& Mat3::operator=(double s) + { row[0]=s; row[1]=s; row[2]=s; return *this; } + +inline Mat3& Mat3::operator+=(const Mat3& m) + { row[0] += m[0]; row[1] += m[1]; row[2] += m[2]; return *this; } + +inline Mat3& Mat3::operator-=(const Mat3& m) + { row[0] -= m[0]; row[1] -= m[1]; row[2] -= m[2]; return *this; } + +inline Mat3& Mat3::operator*=(double s) + { row[0] *= s; row[1] *= s; row[2] *= s; return *this; } + +inline Mat3& Mat3::operator/=(double s) + { row[0] /= s; row[1] /= s; row[2] /= s; return *this; } + +//////////////////////////////////////////////////////////////////////// +// +// Operator definitions +// + +inline Mat3 operator+(const Mat3& n, const Mat3& m) + { return Mat3(n[0]+m[0], n[1]+m[1], n[2]+m[2]); } + +inline Mat3 operator-(const Mat3& n, const Mat3& m) + { return Mat3(n[0]-m[0], n[1]-m[1], n[2]-m[2]); } + +inline Mat3 operator-(const Mat3& m) + { return Mat3(-m[0], -m[1], -m[2]); } + +inline Mat3 operator*(double s, const Mat3& m) + { return Mat3(m[0]*s, m[1]*s, m[2]*s); } +inline Mat3 operator*(const Mat3& m, double s) + { return s*m; } + +inline Mat3 operator/(const Mat3& m, double s) + { return Mat3(m[0]/s, m[1]/s, m[2]/s); } + +inline Vec3 operator*(const Mat3& m, const Vec3& v) + { return Vec3(m[0]*v, m[1]*v, m[2]*v); } + +extern Mat3 operator*(const Mat3& n, const Mat3& m); + +inline std::ostream &operator<<(std::ostream &out, const Mat3& M) + { return out << M[0] << std::endl << M[1] << std::endl << M[2]; } + +inline std::istream &operator>>(std::istream &in, Mat3& M) + { return in >> M[0] >> M[1] >> M[2]; } + +//////////////////////////////////////////////////////////////////////// +// +// Misc. function definitions +// + +inline double det(const Mat3& m) { return m[0] * (m[1] ^ m[2]); } + +inline double trace(const Mat3& m) { return m(0,0) + m(1,1) + m(2,2); } + +inline Mat3 transpose(const Mat3& m) + { return Mat3(m.col(0), m.col(1), m.col(2)); } + +extern Mat3 adjoint(const Mat3& m); + +extern double invert(Mat3& m_inv, const Mat3& m); + +inline Mat3 row_extend(const Vec3& v) { return Mat3(v, v, v); } + +extern Mat3 diag(const Vec3& v); + +extern bool eigen(const Mat3& m, Vec3& eig_vals, Vec3 eig_vecs[3]); + +} // namespace gfx + +// GFXMAT3_INCLUDED +#endif diff --git a/debian/fireflies/fireflies-2.08/libgfx/include/gfx/mat4.h b/debian/fireflies/fireflies-2.08/libgfx/include/gfx/mat4.h new file mode 100644 index 00000000..dfb36da4 --- /dev/null +++ b/debian/fireflies/fireflies-2.08/libgfx/include/gfx/mat4.h @@ -0,0 +1,194 @@ +#ifndef GFXMAT4_INCLUDED // -*- C++ -*- +#define GFXMAT4_INCLUDED +#if !defined(__GNUC__) +# pragma once +#endif + +/************************************************************************ + + 4x4 Matrix class + + $Id: mat4.h 427 2004-09-27 04:45:31Z garland $ + + ************************************************************************/ + +#include "vec4.h" + +namespace gfx +{ + +class Mat4 +{ +private: + Vec4 row[4]; + +public: + // Standard constructors + // + Mat4() { *this = 0.0; } + Mat4(const Vec4& r0,const Vec4& r1,const Vec4& r2,const Vec4& r3) + { row[0]=r0; row[1]=r1; row[2]=r2; row[3]=r3; } + Mat4(const Mat4& m) { *this = m; } + + // Descriptive interface + // + typedef double value_type; + typedef Vec4 vector_type; + typedef Mat4 inverse_type; + static int dim() { return 4; } + + // Access methods + // + double& operator()(int i, int j) { return row[i][j]; } + double operator()(int i, int j) const { return row[i][j]; } + Vec4& operator[](int i) { return row[i]; } + const Vec4& operator[](int i) const { return row[i]; } + inline Vec4 col(int i) const + { return Vec4(row[0][i],row[1][i],row[2][i],row[3][i]); } + + operator double*() { return row[0]; } + operator const double*() { return row[0]; } + operator const double*() const { return row[0]; } + + // Assignment methods + // + inline Mat4& operator=(const Mat4& m); + inline Mat4& operator=(double s); + + inline Mat4& operator+=(const Mat4& m); + inline Mat4& operator-=(const Mat4& m); + inline Mat4& operator*=(double s); + inline Mat4& operator/=(double s); + + static Mat4 I(); +}; + +//////////////////////////////////////////////////////////////////////// +// +// Method definitions +// + +inline Mat4& Mat4::operator=(const Mat4& m) +{ + row[0] = m[0]; row[1] = m[1]; row[2] = m[2]; row[3] = m[3]; + return *this; +} + +inline Mat4& Mat4::operator=(double s) +{ + row[0]=s; row[1]=s; row[2]=s; row[3]=s; + return *this; +} + +inline Mat4& Mat4::operator+=(const Mat4& m) +{ + row[0] += m[0]; row[1] += m[1]; row[2] += m[2]; row[3] += m[3]; + return *this; +} + +inline Mat4& Mat4::operator-=(const Mat4& m) +{ + row[0] -= m[0]; row[1] -= m[1]; row[2] -= m[2]; row[3] -= m[3]; + return *this; +} + +inline Mat4& Mat4::operator*=(double s) +{ + row[0] *= s; row[1] *= s; row[2] *= s; row[3] *= s; + return *this; +} + +inline Mat4& Mat4::operator/=(double s) +{ + row[0] /= s; row[1] /= s; row[2] /= s; row[3] /= s; + return *this; +} + +//////////////////////////////////////////////////////////////////////// +// +// Operator definitions +// + +inline Mat4 operator+(const Mat4& n, const Mat4& m) + { return Mat4(n[0]+m[0], n[1]+m[1], n[2]+m[2], n[3]+m[3]); } + +inline Mat4 operator-(const Mat4& n, const Mat4& m) + { return Mat4(n[0]-m[0], n[1]-m[1], n[2]-m[2], n[3]-m[3]); } + +inline Mat4 operator-(const Mat4& n) + { return Mat4(-n[0], -n[1], -n[2], -n[3]); } + +inline Mat4 operator*(double s, const Mat4& m) + { return Mat4(m[0]*s, m[1]*s, m[2]*s, m[3]*s); } +inline Mat4 operator*(const Mat4& m, double s) + { return s*m; } + +inline Mat4 operator/(const Mat4& m, double s) + { return Mat4(m[0]/s, m[1]/s, m[2]/s, m[3]/s); } + +inline Vec4 operator*(const Mat4& m, const Vec4& v) + { return Vec4(m[0]*v, m[1]*v, m[2]*v, m[3]*v); } + +extern Mat4 operator*(const Mat4& n, const Mat4& m); + +// +// Transform a homogeneous 3-vector and reproject into normal 3-space +// +inline Vec3 operator*(const Mat4& m, const Vec3& v) +{ + Vec4 u=Vec4(v,1); + double w=m[3]*u; + + if(w==0.0) return Vec3(m[0]*u, m[1]*u, m[2]*u); + else return Vec3(m[0]*u/w, m[1]*u/w, m[2]*u/w); +} + +inline std::ostream &operator<<(std::ostream &out, const Mat4& M) + { return out<<M[0]<<std::endl<<M[1]<<std::endl<<M[2]<<std::endl<<M[3]; } + +inline std::istream &operator>>(std::istream &in, Mat4& M) + { return in >> M[0] >> M[1] >> M[2] >> M[3]; } + +//////////////////////////////////////////////////////////////////////// +// +// Transformations +// + +extern Mat4 translation_matrix(const Vec3& delta); + +extern Mat4 scaling_matrix(const Vec3& scale); + +extern Mat4 rotation_matrix_rad(double theta, const Vec3& axis); + +inline Mat4 rotation_matrix_deg(double theta, const Vec3& axis) + { return rotation_matrix_rad(theta*M_PI/180.0, axis); } + +extern Mat4 perspective_matrix(double fovy, double aspect, + double zmin=0.0, double zmax=0.0); + +extern Mat4 lookat_matrix(const Vec3& from, const Vec3& at, const Vec3& up); + +extern Mat4 viewport_matrix(double w, double h); + +//////////////////////////////////////////////////////////////////////// +// +// Misc. function definitions +// + +inline double det(const Mat4& m) { return m[0] * cross(m[1], m[2], m[3]); } + +inline double trace(const Mat4& m) { return m(0,0)+m(1,1)+m(2,2)+m(3,3); } + +inline Mat4 transpose(const Mat4& m) + { return Mat4(m.col(0), m.col(1), m.col(2), m.col(3)); } + +extern Mat4 adjoint(const Mat4& m); +extern double invert(Mat4& m_inv, const Mat4& m); +extern double invert_cramer(Mat4& m_inv, const Mat4& m); + +extern bool eigen(const Mat4& m, Vec4& eig_vals, Vec4 eig_vecs[4]); + +} // namespace gfx + +// GFXMAT4_INCLUDED +#endif diff --git a/debian/fireflies/fireflies-2.08/libgfx/include/gfx/quat.h b/debian/fireflies/fireflies-2.08/libgfx/include/gfx/quat.h new file mode 100644 index 00000000..172a8b30 --- /dev/null +++ b/debian/fireflies/fireflies-2.08/libgfx/include/gfx/quat.h @@ -0,0 +1,118 @@ +#ifndef GFXQUAT_INCLUDED // -*- C++ -*- +#define GFXQUAT_INCLUDED +#if !defined(__GNUC__) +# pragma once +#endif + +/************************************************************************ + + Quaternion class + + $Id: quat.h 440 2005-02-23 05:14:13Z garland $ + + ************************************************************************/ + +#include "mat4.h" + +namespace gfx +{ + +class Quat +{ +private: + Vec3 v; // Vector component + double s; // Scalar component + +public: + Quat() { v=0.0; s=1.0; } + Quat(double x, double y, double z, double w) { v[0]=x;v[1]=y;v[2]=z; s=w; } + Quat(const Vec3& a, double b) { v=a; s=b; } + Quat(const Quat& q) { *this=q; } + + // Access methods + const Vec3& vector() const { return v; } + Vec3& vector() { return v; } + double scalar() const { return s; } + double& scalar() { return s; } + + // Assignment and in-place arithmetic methods + Quat& operator=(const Quat& q); + Quat& operator+=(const Quat& q); + Quat& operator-=(const Quat& q); + Quat& operator=(double d); + Quat& operator*=(double d); + Quat& operator/=(double d); + + // Construction of standard quaternions + static Quat ident(); +}; + +//////////////////////////////////////////////////////////////////////// +// +// Implementation of Quat methods +// + +inline Quat& Quat::operator=(const Quat& q) { v=q.v; s=q.s; return *this; } +inline Quat& Quat::operator+=(const Quat& q) { v+=q.v; s+=q.s; return *this; } +inline Quat& Quat::operator-=(const Quat& q) { v-=q.v; s-=q.s; return *this; } + +inline Quat& Quat::operator=(double d) { v=d; s=d; return *this; } +inline Quat& Quat::operator*=(double d) { v*=d; s*=d; return *this; } +inline Quat& Quat::operator/=(double d) { v/=d; s/=d; return *this; } + +inline Quat Quat::ident() { return Quat(0, 0, 0, 1); } + +//////////////////////////////////////////////////////////////////////// +// +// Standard arithmetic operators on quaternions +// + +inline Quat operator+(const Quat& q, const Quat& r) + { return Quat(q.vector()+r.vector(), q.scalar()+r.scalar()); } + +inline Quat operator*(const Quat& q, const Quat& r) +{ + return Quat(cross(q.vector(),r.vector()) + + r.scalar()*q.vector() + + q.scalar()*r.vector(), + q.scalar()*r.scalar() - q.vector()*r.vector()); +} + +inline Quat operator*(const Quat& q, double s) + { return Quat(q.vector()*s, q.scalar()*s); } +inline Quat operator*(double s, const Quat& q) + { return Quat(q.vector()*s, q.scalar()*s); } + +inline Quat operator/(const Quat& q, double s) + { return Quat(q.vector()/s, q.scalar()/s); } + +inline std::ostream &operator<<(std::ostream &out, const Quat& q) + { return out << q.vector() << " " << q.scalar(); } + +inline std::istream &operator>>(std::istream &in, Quat& q) + { return in >> q.vector() >> q.scalar(); } + + +//////////////////////////////////////////////////////////////////////// +// +// Standard functions on quaternions +// + +inline double norm(const Quat& q) + { return q.scalar()*q.scalar() + q.vector()*q.vector(); } + +inline Quat conjugate(const Quat& q) { return Quat(-q.vector(), q.scalar()); } +inline Quat inverse(const Quat& q) { return conjugate(q)/norm(q); } +inline Quat& unitize(Quat& q) { q /= sqrt(norm(q)); return q; } + +extern Quat exp(const Quat& q); +extern Quat log(const Quat& q); +extern Quat axis_to_quat(const Vec3& a, double phi); +extern Mat4 quat_to_matrix(const Quat& q); +extern Mat4 unit_quat_to_matrix(const Quat& q); +extern Quat slerp(const Quat& from, const Quat& to, double t); + +} // namespace gfx + +// GFXQUAT_INCLUDED +#endif diff --git a/debian/fireflies/fireflies-2.08/libgfx/include/gfx/raster.h b/debian/fireflies/fireflies-2.08/libgfx/include/gfx/raster.h new file mode 100644 index 00000000..4d4b2336 --- /dev/null +++ b/debian/fireflies/fireflies-2.08/libgfx/include/gfx/raster.h @@ -0,0 +1,171 @@ +#ifndef GFXRASTER_INCLUDED // -*- C++ -*- +#define GFXRASTER_INCLUDED +#if !defined(__GNUC__) +# pragma once +#endif + +/************************************************************************ + + Raster image support. + + $Id: raster.h 427 2004-09-27 04:45:31Z garland $ + + ************************************************************************/ + +#include "gfx.h" +#include "vec2.h" + +namespace gfx +{ + +typedef TVec2<short> PixelAddress; + +template<class T> +class Raster +{ +private: + T *data; + int W, H, nchan; + +public: + Raster(int w, int h, int c) + { + W=w; H=h; nchan=c; + data = new T[length()]; + } + virtual ~Raster() { delete[] data; } + + int width() const { return W; } + int height() const { return H; } + int channels() const { return nchan; } + int length() const { return W*H*nchan; } + + T& operator[](int i) { return data[i]; } + T operator[](int i) const { return data[i]; } + + virtual T *pixel(int i, int j) { return data + (j*W+i)*nchan; } + virtual const T *pixel(int i, int j) const { return data + (j*W+i)*nchan; } + T *pixel(const PixelAddress &a) { return pixel(a[0], a[1]); } + const T *pixel(const PixelAddress &a) const { return pixel(a[0], a[1]); } + + T *head() { return data; } + const T *head() const { return data; } + + void reverse(int start=0, int end=-1); + void hflip(); + void vflip(); + + bool is_valid_address(const PixelAddress& a) const + { + return is_valid_address(a[0], a[1]); + } + + virtual bool is_valid_address(int x, int y) const + { + return ( (x >= 0) && (x < W) && (y >= 0) && (y < H) ); + } +}; + + +class FloatRaster; +class ByteRaster : public Raster<unsigned char> +{ +public: + ByteRaster(int w, int h, int c) : Raster<unsigned char>(w,h,c) {} + ByteRaster(const ByteRaster& img); + ByteRaster(const FloatRaster& img); +}; + + +class FloatRaster : public Raster<float> +{ +public: + FloatRaster(int w, int h, int c) : Raster<float>(w,h,c) {} + FloatRaster(const FloatRaster &img); + FloatRaster(const ByteRaster &img); +}; + + +//////////////////////////////////////////////////////////////////////// +// +// Templated raster methods +// + +template<class T> +inline void Raster<T>::reverse(int start, int end) +{ + if(end<0 || end>=length()) end = length() - channels(); + + int i=start, j=end; + + while(i<j) + { + for(int k=0; k<channels(); k++) + { + T tmp = (*this)[i+k]; + (*this)[i+k] = (*this)[j+k]; + (*this)[j+k] = tmp; + } + i += channels(); + j -= channels(); + } +} + +template<class T> +inline void Raster<T>::hflip() +{ + int i = 0; + int j = channels()*(width()-1); + + while( i<length() ) + { + reverse(i, i+j); + i += j + channels(); + } +} + +template<class T> +inline void Raster<T>::vflip() +{ + reverse(); + hflip(); +} + + +//////////////////////////////////////////////////////////////////////// +// +// Supported external image file formats. +// + +enum { IMG_PNM=0, IMG_PNG=1, IMG_TIFF=2, IMG_JPEG=3, IMG_LIMIT=4 }; + +extern const char *image_type_name(int type); +extern const char *image_type_ext(int type); +extern int infer_image_type(const char *filename); + +// Image I/O based on filename extensions +extern bool write_image(const char *filename, const ByteRaster&, int type=-1); +extern ByteRaster *read_image(const char *filename, int type=-1); + +// PNM support provided by libgfx (always available) +extern bool will_write_raw_pnm; +extern bool write_pnm_image(const char *filename, const ByteRaster&); +extern ByteRaster *read_pnm_image(const char *filename); + +// TIFF support provided through libtiff (if available). +extern bool write_tiff_image(const char *filename, const ByteRaster&); +extern ByteRaster *read_tiff_image(const char *filename); + +// PNG support provided through libpng (if available). +extern bool write_png_image(const char *filename, const ByteRaster&); +extern ByteRaster *read_png_image(const char *filename); + +// JPEG support provided through libjpeg (if available) +extern int jpeg_output_quality; +extern bool write_jpeg_image(const char *filename, const ByteRaster&); +extern ByteRaster *read_jpeg_image(const char *filename); + +} // namespace gfx + +// GFXRASTER_INCLUDED +#endif diff --git a/debian/fireflies/fireflies-2.08/libgfx/include/gfx/script.h b/debian/fireflies/fireflies-2.08/libgfx/include/gfx/script.h new file mode 100644 index 00000000..c38cba1a --- /dev/null +++ b/debian/fireflies/fireflies-2.08/libgfx/include/gfx/script.h @@ -0,0 +1,182 @@ +#ifndef GFXSCRIPT_INCLUDED // -*- C++ -*- +#define GFXSCRIPT_INCLUDED +#if !defined(__GNUC__) +# pragma once +#endif + +/************************************************************************ + + Simple low-level file format scripting support. + + This is the THIRD major revision of this code. It represents a + significant departure from the previous scripting structure. + + $Id: script.h 443 2005-06-14 00:53:40Z garland $ + + ************************************************************************/ + +#include "gfx.h" +#include <vector> +#include <string> +#include <map> +//#include <hash_map> + +namespace gfx +{ + +// Define a set of exceptions that can occur during script parsing +// + namespace script + { + struct Error + { + std::string msg; + Error(const std::string& m) : msg(m) {} + }; + + struct SyntaxError : public Error + { SyntaxError(const std::string& m) : Error(m) {} }; + + struct NameError : public Error + { NameError(const std::string& m) : Error(m) {} }; + + struct IOError : public Error + { IOError(const std::string& m) : Error(m) {} }; + } + + +// These return codes are deprecated and will be going away in the near +// future. Start using the exceptions defined above instead. +enum { + SCRIPT_OK = 0, + SCRIPT_ERR_UNDEF, + SCRIPT_ERR_SYNTAX, + SCRIPT_ERR_UNSUPPORTED, + SCRIPT_ERR_NOFILE, + SCRIPT_END +}; + +class CmdLine +{ +public: + typedef std::string::size_type index_type; + typedef std::pair<index_type, index_type> range_type; + + const std::string &line; + range_type op; + std::vector<range_type> tokens; + + std::string substr(const range_type& r) const + { return line.substr(r.first, r.second-r.first);} + + std::string token_to_string(int i) const; + double token_to_double(int i) const; + float token_to_float(int i) const; + int token_to_int(int i) const; + std::string rest_to_string(int i) const; + + + CmdLine(const std::string &l) : line(l) { } + + std::string opname() const { return substr(op); } + int argcount() const { return tokens.size(); } + std::string argline() const; + + int collect_as_strings(std::vector<std::string> &v, int offset=0) const; + int collect_as_numbers(std::vector<double> &v, int offset=0) const; + int collect_as_numbers(std::vector<int> &v, int offset=0) const; + + int collect_as_numbers(double *v, int size, int offset=0) const; + int collect_as_numbers(float *v, int size, int offset=0) const; + int collect_as_numbers(int *v, int size, int offset=0) const; +}; + +typedef int (*CmdHandler)(const CmdLine&); + +struct CmdObject +{ + virtual ~CmdObject() {} + virtual int operator()(const CmdLine& cmd) = 0; +}; + +struct CmdFunction : public CmdObject +{ + CmdHandler fn; + CmdFunction(CmdHandler f) { fn=f; } + virtual int operator()(const CmdLine& cmd) { return (*fn)(cmd); } +}; + +template<class T> struct CmdMethod : public CmdObject +{ + typedef int (T::*member_handler)(const CmdLine&); + T *self; + member_handler fn; + + CmdMethod(T &obj, member_handler p) { self=&obj; fn=p; } + virtual int operator()(const CmdLine& cmd) { return (self->*fn)(cmd); } +}; + +template<class T> struct CmdMethod2 : public CmdObject +{ + typedef void (T::*member_handler)(const CmdLine&); + T *self; + member_handler fn; + + CmdMethod2(T &obj, member_handler p) { self=&obj; fn=p; } + virtual int operator()(const CmdLine& cmd) + { + (self->*fn)(cmd); + return SCRIPT_OK; + } +}; + +//typedef std::hash_map< std::string, CmdHandler > CmdTable; +typedef std::map< std::string, CmdObject* > CmdTable; + +class CmdEnv +{ +private: + CmdTable script_commands; + + int script_include(const CmdLine&); + int script_ignore(const CmdLine&); + int script_end(const CmdLine&); + int script_eval(const CmdLine&); + + std::vector<CmdEnv*> scopes; + +public: + CmdEnv(); + virtual ~CmdEnv(); + + void register_command(const std::string& name, CmdObject *fn); + CmdObject *lookup_command(const std::string& name); + + void register_command(const std::string& name, CmdHandler proc); + + template<class T> inline void register_method(const std::string& name, + T *obj, + int (T::*fn)(const CmdLine&)) + { register_command(name, new CmdMethod<T>(*obj, fn)); } + + template<class T> inline void register_method(const std::string& name, + T *obj, + void (T::*fn)(const CmdLine&)) + { register_command(name, new CmdMethod2<T>(*obj, fn)); } + + void ignore_command(const std::string& name); + + void register_vocabulary(const std::string& name, CmdEnv *env); + void begin_scope(CmdEnv *subenv); + void end_scope(); + + int do_line(const std::string& line); + int do_stream(std::istream& in); + int do_file(const std::string& filename); + int do_string(const std::string& line); +}; + +} // namespace gfx + +// GFXSCRIPT_INCLUDED +#endif diff --git a/debian/fireflies/fireflies-2.08/libgfx/include/gfx/symmat2.h b/debian/fireflies/fireflies-2.08/libgfx/include/gfx/symmat2.h new file mode 100644 index 00000000..db58c19c --- /dev/null +++ b/debian/fireflies/fireflies-2.08/libgfx/include/gfx/symmat2.h @@ -0,0 +1,134 @@ +#ifndef GFXSYMMAT2_INCLUDED // -*- C++ -*- +#define GFXSYMMAT2_INCLUDED +#if !defined(__GNUC__) +# pragma once +#endif + +/************************************************************************ + + Symmetric 2x2 Matrix class + + ************************************************************************/ + +#include "mat2.h" + +namespace gfx +{ + +class SymMat2 +{ +private: + double elt[3]; + + inline int index(int i, int j) const + { + // if n=dim(), and if i<=j: + // index = ( n*(n+1)/2 - (n-i)*(n-i+1)/2 ) + (j-i) + // + if( i<=j ) return 3 - (2-i)*(3-i)/2 + (j-i); + else return 3 - (2-j)*(3-j)/2 + (i-j); + } + +public: + // Standard constructors + // + SymMat2(double s=0.0) { *this = s; } + SymMat2(const SymMat2& m) { *this = m; } + + double& operator()(int i, int j) { return elt[index(i,j)]; } + double operator()(int i, int j) const { return elt[index(i,j)]; } + + static int size() { return 3; } + static int dim() { return 2; } + typedef Vec2 vector_type; + typedef Mat2 inverse_type; + typedef double value_type; + + operator double*() { return elt; } + operator const double*() { return elt; } + operator const double*() const { return elt; } + + inline Vec2 row(int i) const; + inline Vec2 col(int j) const; + Mat2 fullmatrix() const; + + inline SymMat2& operator=(const SymMat2& m); + inline SymMat2& operator=(double s); + + inline SymMat2& operator+=(const SymMat2& m); + inline SymMat2& operator-=(const SymMat2& m); + inline SymMat2& operator*=(double s); + inline SymMat2& operator/=(double s); + + static SymMat2 I(); + static SymMat2 outer_product(const Vec2& v); +}; + +//////////////////////////////////////////////////////////////////////// +// +// Methods definitions +// + +inline Vec2 SymMat2::row(int i) const + { return Vec2((*this)(i, 0), (*this)(i, 1)); } + +inline Vec2 SymMat2::col(int j) const + { return Vec2((*this)(0, j), (*this)(1, j)); } + +inline SymMat2& SymMat2::operator=(const SymMat2& m) + { for(int i=0; i<size(); i++) elt[i]=m.elt[i]; return *this; } + +inline SymMat2& SymMat2::operator=(double s) + { for(int i=0; i<size(); i++) elt[i]=s; return *this; } + +inline SymMat2& SymMat2::operator+=(const SymMat2& m) + { for(int i=0; i<size(); i++) elt[i]+=m.elt[i]; return *this; } + +inline SymMat2& SymMat2::operator-=(const SymMat2& m) + { for(int i=0; i<size(); i++) elt[i]-=m.elt[i]; return *this; } + +inline SymMat2& SymMat2::operator*=(double s) + { for(int i=0; i<size(); i++) elt[i]*=s; return *this; } + +inline SymMat2& SymMat2::operator/=(double s) + { for(int i=0; i<size(); i++) elt[i]/=s; return *this; } + +//////////////////////////////////////////////////////////////////////// +// +// Operator definitions +// + +inline SymMat2 operator+(SymMat2 n, const SymMat2& m) { n += m; return n; } +inline SymMat2 operator-(SymMat2 n, const SymMat2& m) { n -= m; return n; } + +inline SymMat2 operator*(double s, SymMat2 m) { m*=s; return m; } +inline SymMat2 operator*(SymMat2 m, double s) { m*=s; return m; } +inline SymMat2 operator/(SymMat2 m, double s) { m/=s; return m; } + +inline Vec2 operator*(const SymMat2& m, const Vec2& v) + { return Vec2(m.row(0)*v, m.row(1)*v); } + +extern SymMat2 operator*(const SymMat2& n, const SymMat2& m); + +extern std::ostream &operator<<(std::ostream &out, const SymMat2& M); + + +//////////////////////////////////////////////////////////////////////// +// +// Misc. function definitions +// + +inline double det(const SymMat2& m) { return m(0,0)*m(1,1) - 2*m(0,1); } + +inline double trace(const SymMat2& m) { return m(0,0) + m(1,1); } + +inline SymMat2 transpose(const SymMat2& m) { return m; } + +extern double invert(Mat2& m_inv, const SymMat2& m); + +extern bool eigen(const SymMat2& m, Vec2& eig_vals, Vec2 eig_vecs[2]); + +} // namespace gfx + +// GFXSYMMAT2_INCLUDED +#endif diff --git a/debian/fireflies/fireflies-2.08/libgfx/include/gfx/symmat3.h b/debian/fireflies/fireflies-2.08/libgfx/include/gfx/symmat3.h new file mode 100644 index 00000000..ec5e181f --- /dev/null +++ b/debian/fireflies/fireflies-2.08/libgfx/include/gfx/symmat3.h @@ -0,0 +1,136 @@ +#ifndef GFXSYMMAT3_INCLUDED // -*- C++ -*- +#define GFXSYMMAT3_INCLUDED +#if !defined(__GNUC__) +# pragma once +#endif + +/************************************************************************ + + Symmetric 3x3 Matrix class + + $Id: symmat3.h 427 2004-09-27 04:45:31Z garland $ + + ************************************************************************/ + +#include "mat3.h" + +namespace gfx +{ + +class SymMat3 +{ +private: + double elt[6]; + + inline int index(int i, int j) const + { + // if n=dim(), and if i<=j: + // index = ( n*(n+1)/2 - (n-i)*(n-i+1)/2 ) + (j-i) + // + if( i<=j ) return 6 - (3-i)*(4-i)/2 + (j-i); + else return 6 - (3-j)*(4-j)/2 + (i-j); + } + +public: + // Standard constructors + // + SymMat3(double s=0.0) { *this = s; } + SymMat3(const SymMat3& m) { *this = m; } + + double& operator()(int i, int j) { return elt[index(i,j)]; } + double operator()(int i, int j) const { return elt[index(i,j)]; } + + static int size() { return 6; } + static int dim() { return 3; } + typedef Vec3 vector_type; + typedef Mat3 inverse_type; + typedef double value_type; + + operator double*() { return elt; } + operator const double*() { return elt; } + operator const double*() const { return elt; } + + inline Vec3 row(int i) const; + inline Vec3 col(int j) const; + Mat3 fullmatrix() const; + + inline SymMat3& operator=(const SymMat3& m); + inline SymMat3& operator=(double s); + + inline SymMat3& operator+=(const SymMat3& m); + inline SymMat3& operator-=(const SymMat3& m); + inline SymMat3& operator*=(double s); + inline SymMat3& operator/=(double s); + + static SymMat3 I(); + static SymMat3 outer_product(const Vec3& v); +}; + +//////////////////////////////////////////////////////////////////////// +// +// Methods definitions +// + +inline Vec3 SymMat3::row(int i) const + { return Vec3((*this)(i, 0), (*this)(i, 1), (*this)(i, 2)); } + +inline Vec3 SymMat3::col(int j) const + { return Vec3((*this)(0, j), (*this)(1, j), (*this)(2, j)); } + +inline SymMat3& SymMat3::operator=(const SymMat3& m) + { for(int i=0; i<size(); i++) elt[i]=m.elt[i]; return *this; } + +inline SymMat3& SymMat3::operator=(double s) + { for(int i=0; i<size(); i++) elt[i]=s; return *this; } + +inline SymMat3& SymMat3::operator+=(const SymMat3& m) + { for(int i=0; i<size(); i++) elt[i]+=m.elt[i]; return *this; } + +inline SymMat3& SymMat3::operator-=(const SymMat3& m) + { for(int i=0; i<size(); i++) elt[i]-=m.elt[i]; return *this; } + +inline SymMat3& SymMat3::operator*=(double s) + { for(int i=0; i<size(); i++) elt[i]*=s; return *this; } + +inline SymMat3& SymMat3::operator/=(double s) + { for(int i=0; i<size(); i++) elt[i]/=s; return *this; } + +//////////////////////////////////////////////////////////////////////// +// +// Operator definitions +// + +inline SymMat3 operator+(SymMat3 n, const SymMat3& m) { n += m; return n; } +inline SymMat3 operator-(SymMat3 n, const SymMat3& m) { n -= m; return n; } + +inline SymMat3 operator*(double s, SymMat3 m) { m*=s; return m; } +inline SymMat3 operator*(SymMat3 m, double s) { m*=s; return m; } +inline SymMat3 operator/(SymMat3 m, double s) { m/=s; return m; } + +inline Vec3 operator*(const SymMat3& m, const Vec3& v) + { return Vec3(m.row(0)*v, m.row(1)*v, m.row(2)*v); } + +extern SymMat3 operator*(const SymMat3& n, const SymMat3& m); + +extern std::ostream &operator<<(std::ostream &out, const SymMat3& M); + + +//////////////////////////////////////////////////////////////////////// +// +// Misc. function definitions +// + +inline double det(const SymMat3& m) { return m.row(0) * (m.row(1)^m.row(2)); } + +inline double trace(const SymMat3& m) { return m(0,0) + m(1,1) + m(2,2); } + +inline SymMat3 transpose(const SymMat3& m) { return m; } + +extern double invert(Mat3& m_inv, const SymMat3& m); + +extern bool eigen(const SymMat3& m, Vec3& eig_vals, Vec3 eig_vecs[3]); + +} // namespace gfx + +// GFXSYMMAT3_INCLUDED +#endif diff --git a/debian/fireflies/fireflies-2.08/libgfx/include/gfx/symmat4.h b/debian/fireflies/fireflies-2.08/libgfx/include/gfx/symmat4.h new file mode 100644 index 00000000..e33ac14d --- /dev/null +++ b/debian/fireflies/fireflies-2.08/libgfx/include/gfx/symmat4.h @@ -0,0 +1,145 @@ +#ifndef GFXSYMMAT4_INCLUDED // C++ +#define GFXSYMMAT4_INCLUDED +#if !defined(__GNUC__) +# pragma once +#endif +/************************************************************************ + + 4X4 Symmetric Matrix class + + $Id: symmat4.h 441 2005-05-03 18:05:36Z garland $ + + ************************************************************************/ + +#include "mat4.h" + +namespace gfx +{ + +class SymMat4 +{ +public: + double elt[10]; + + inline int index(int i, int j) const + { + // if n=dim(), and if i<=j: + // index = ( n*(n+1)/2 - (n-i)*(n-i+1)/2 ) + (j-i) + // + if (i<=j) return (10 - (4-i)*(5-i)/2 + (j-i)); + else return (10 - (4-j)*(5-j)/2 + (i-j)); + } + +public: + // Standard constructors + // + SymMat4(double s=0.0) { *this = 0.0; } + SymMat4(const SymMat4 &m) {*this=m;} + + + // Descriptive interface + // + typedef double value_type; + typedef Vec4 vector_type; + typedef Mat4 inverse_type; + static int dim() { return 4; } + static int size() {return 10;} + + + // Access methods + // + double& operator()(int i, int j) { return elt[index(i,j)]; } + double operator()(int i, int j) const { return elt[index(i,j)]; } + + inline Vec4 row(int i) const; + inline Vec4 col(int i) const; + Mat4 fullmatrix() const; + + operator double*() { return elt; } + operator const double*() { return elt; } + operator const double*() const { return elt; } + + // Assignment methods + // + inline SymMat4& operator=(const SymMat4& m); + inline SymMat4& operator=(double s); + + inline SymMat4& operator+=(const SymMat4& m); + inline SymMat4& operator-=(const SymMat4& m); + inline SymMat4& operator*=(double s); + inline SymMat4& operator/=(double s); + + static SymMat4 I(); + static SymMat4 outer_product(const Vec4& v); +}; + +//////////////////////////////////////////////////////////////////////// +// +// Method definitions +// +inline Vec4 SymMat4::row(int i) const + { return Vec4((*this)(i,0), (*this)(i,1), (*this)(i,2), (*this)(i,3)); } + +inline Vec4 SymMat4::col(int j) const + { return Vec4((*this)(0,j), (*this)(1,j), (*this)(2,j), (*this)(3,j)); } + +inline SymMat4& SymMat4::operator=(const SymMat4& m) + { for(int i=0; i<size(); i++) elt[i] = m.elt[i]; return *this; } + +inline SymMat4& SymMat4::operator=(double s) + { for(int i=0; i<size(); i++) elt[i] = s; return *this; } + +inline SymMat4& SymMat4::operator+=(const SymMat4& m) + { for(int i=0; i<size(); i++) elt[i]+=m.elt[i]; return *this; } + +inline SymMat4& SymMat4::operator-=(const SymMat4& m) + { for(int i=0; i<size(); i++) elt[i]-=m.elt[i]; return *this; } + +inline SymMat4& SymMat4::operator*=(double s) + { for(int i=0; i<size(); i++) elt[i] *= s; return *this; } + +inline SymMat4& SymMat4::operator/=(double s) + { for(int i=0; i<size(); i++) elt[i] /= s; return *this; } + +//////////////////////////////////////////////////////////////////////// +// +// Operator definitions +// + +inline SymMat4 operator+(SymMat4 n, const SymMat4& m) { n += m; return n; } +inline SymMat4 operator-(SymMat4 n, const SymMat4& m) { n -= m; return n; } + +inline SymMat4 operator*(double s, SymMat4 m) { m*=s; return m; } +inline SymMat4 operator*(SymMat4 m, double s) { m*=s; return m; } +inline SymMat4 operator/(SymMat4 m, double s) { m/=s; return m; } + +inline SymMat4 operator-(const SymMat4& m) +{ + SymMat4 temp; + for(int i=0; i<m.size(); i++) temp.elt[i]= -m.elt[i]; + return temp; +} + +inline Vec4 operator*(const SymMat4& m, const Vec4& v) + { return Vec4(m.row(0)*v, m.row(1)*v, m.row(2)*v, m.row(3)*v); } + +extern SymMat4 operator*(const SymMat4& n, const SymMat4& m); + + +//////////////////////////////////////////////////////////////////////// +// +// Misc. function definitions +// + +inline double trace(const SymMat4& m) { return m(0,0)+m(1,1)+m(2,2)+m(3,3); } + +inline SymMat4 transpose(const SymMat4& m) { return m; } + +extern double invert(Mat4& m_inv, const SymMat4& m); + +extern bool eigen(const SymMat4& m, Vec4& eig_vals, Vec4 eig_vecs[4]); + +} // namespace gfx + +// GFXSYMMAT4_INCLUDED +#endif diff --git a/debian/fireflies/fireflies-2.08/libgfx/include/gfx/trackball.h b/debian/fireflies/fireflies-2.08/libgfx/include/gfx/trackball.h new file mode 100644 index 00000000..1432ed71 --- /dev/null +++ b/debian/fireflies/fireflies-2.08/libgfx/include/gfx/trackball.h @@ -0,0 +1,39 @@ +#ifndef GFXTRACKBALL_INCLUDED // -*- C++ -*- +#define GFXTRACKBALL_INCLUDED +#if !defined(__GNUC__) +# pragma once +#endif + +/************************************************************************ + + Virtual trackball rotation control. + + $Id: trackball.h 427 2004-09-27 04:45:31Z garland $ + + ************************************************************************/ + +#include "baseball.h" + +namespace gfx +{ + +extern void trackball(Quat& q, float p1x, float p1y, float p2x, float p2y); + +class Trackball : public Baseball +{ +public: + Quat lastquat; + +public: + Trackball(); + + virtual void update_animation(); + virtual bool mouse_down(int *where, int which); + virtual bool mouse_up(int *where, int which); + virtual bool mouse_drag(int *where, int *last, int which); +}; + +} // namespace gfx + +// GFXTRACKBALL_INCLUDED +#endif diff --git a/debian/fireflies/fireflies-2.08/libgfx/include/gfx/vec2.h b/debian/fireflies/fireflies-2.08/libgfx/include/gfx/vec2.h new file mode 100644 index 00000000..11b7ac7f --- /dev/null +++ b/debian/fireflies/fireflies-2.08/libgfx/include/gfx/vec2.h @@ -0,0 +1,158 @@ +#ifndef GFXVEC2_INCLUDED // -*- C++ -*- +#define GFXVEC2_INCLUDED +#if !defined(__GNUC__) +# pragma once +#endif + +/************************************************************************ + + 2D Vector class + + $Id: vec2.h 427 2004-09-27 04:45:31Z garland $ + + ************************************************************************/ + +#include "gfx.h" + +namespace gfx +{ + +template<class T> +class TVec2 { +private: + T elt[2]; + +public: + // Standard constructors + // + TVec2(T s=0) { *this = s; } + TVec2(T x, T y) { elt[0]=x; elt[1]=y; } + + // Copy constructors & assignment operators + template<class U> TVec2(const TVec2<U>& v) { *this = v; } + template<class U> TVec2(const U v[2]) { elt[0]=v[0]; elt[1]=v[1]; } + template<class U> TVec2& operator=(const TVec2<U>& v) + { elt[0]=v[0]; elt[1]=v[1]; return *this; } + TVec2& operator=(T s) { elt[0]=elt[1]=s; return *this; } + + + // Descriptive interface + // + typedef T value_type; + static int dim() { return 2; } + + + // Access methods + // + operator T*() { return elt; } + operator const T*() const { return elt; } + +#ifndef HAVE_CASTING_LIMITS + T& operator[](int i) { return elt[i]; } + T operator[](int i) const { return elt[i]; } + operator const T*() { return elt; } +#endif + + // In-place arithmetic methods + // + inline TVec2& operator+=(const TVec2& v); + inline TVec2& operator-=(const TVec2& v); + inline TVec2& operator*=(T s); + inline TVec2& operator/=(T s); +}; + +//////////////////////////////////////////////////////////////////////// +// +// Method definitions +// +template<class T> inline TVec2<T>& TVec2<T>::operator+=(const TVec2<T>& v) + { elt[0] += v[0]; elt[1] += v[1]; return *this; } + +template<class T> inline TVec2<T>& TVec2<T>::operator-=(const TVec2<T>& v) + { elt[0] -= v[0]; elt[1] -= v[1]; return *this; } + +template<class T> inline TVec2<T>& TVec2<T>::operator*=(T s) + { elt[0] *= s; elt[1] *= s; return *this; } + +template<class T> inline TVec2<T>& TVec2<T>::operator/=(T s) + { elt[0] /= s; elt[1] /= s; return *this; } + +//////////////////////////////////////////////////////////////////////// +// +// Operator defintions +// + +template<class T> +inline TVec2<T> operator+(const TVec2<T> &u, const TVec2<T> &v) + { return TVec2<T>(u[0]+v[0], u[1]+v[1]); } + +template<class T> +inline TVec2<T> operator-(const TVec2<T> &u, const TVec2<T> &v) + { return TVec2<T>(u[0]-v[0], u[1]-v[1]); } + +template<class T> inline TVec2<T> operator-(const TVec2<T> &v) + { return TVec2<T>(-v[0], -v[1]); } + +#if _MSC_VER>=1200 +// Normally, we use the <class T, class N> construct below to allow the scalar +// argument to be different than the template type. This, for example, allows +// the user to write things like v/2. Unfortunately, Microsoft VC6.0 (aka +// v1200) gets confused by this. We used to include explicit versions for the +// case of int's, but this was causing silent (and incorrect) coercion of +// floats to ints. +// + + template<class T> inline TVec2<T> operator*(T s, const TVec2<T> &v) + { return TVec2<T>(v[0]*s, v[1]*s); } + template<class T> inline TVec2<T> operator*(const TVec2<T> &v, T s) + { return s*v; } + + template<class T> inline TVec2<T> operator/(const TVec2<T> &v, T s) + { return TVec2<T>(v[0]/s, v[1]/s); } + +#else + template<class T, class N> inline TVec2<T> operator*(N s, const TVec2<T> &v) + { return TVec2<T>(v[0]*s, v[1]*s); } + template<class T, class N> inline TVec2<T> operator*(const TVec2<T> &v, N s) + { return s*v; } + + template<class T, class N> inline TVec2<T> operator/(const TVec2<T> &v, N s) + { return TVec2<T>(v[0]/s, v[1]/s); } +#endif + +template<class T> inline T operator*(const TVec2<T> &u, const TVec2<T>& v) + { return u[0]*v[0] + u[1]*v[1]; } + +template<class T> inline TVec2<T> perp(const TVec2<T> &v) + { return TVec2<T>(v[1], -v[0]); } + +template<class T> +inline std::ostream &operator<<(std::ostream &out, const TVec2<T> &v) + { return out << v[0] << " " << v[1]; } + +template<class T> +inline std::istream &operator>>(std::istream &in, TVec2<T>& v) + { return in >> v[0] >> v[1]; } + + +//////////////////////////////////////////////////////////////////////// +// +// Misc. function definitions +// + +template<class T> inline T norm2(const TVec2<T>& v) { return v*v; } +template<class T> inline T norm(const TVec2<T>& v) { return sqrt(norm2(v)); } + +template<class T> inline void unitize(TVec2<T>& v) +{ + T l = norm2(v); + if( l!=1.0 && l!=0.0 ) v /= sqrt(l); +} + +typedef TVec2<double> Vec2; +typedef TVec2<float> Vec2f; + +} // namespace gfx + +// GFXVEC2_INCLUDED +#endif diff --git a/debian/fireflies/fireflies-2.08/libgfx/include/gfx/vec3.h b/debian/fireflies/fireflies-2.08/libgfx/include/gfx/vec3.h new file mode 100644 index 00000000..22d37394 --- /dev/null +++ b/debian/fireflies/fireflies-2.08/libgfx/include/gfx/vec3.h @@ -0,0 +1,184 @@ +#ifndef GFXVEC3_INCLUDED // -*- C++ -*- +#define GFXVEC3_INCLUDED +#if !defined(__GNUC__) +# pragma once +#endif + +/************************************************************************ + + 3D Vector class + + $Id: vec3.h 427 2004-09-27 04:45:31Z garland $ + + ************************************************************************/ + +#include "vec2.h" + +namespace gfx +{ + +template<class T> +class TVec3 { +private: + T elt[3]; + +public: + // Standard constructors + // + TVec3(T s=0) { *this = s; } + TVec3(T x, T y, T z) { elt[0]=x; elt[1]=y; elt[2]=z; } + + // Copy constructors & assignment operators + template<class U> TVec3(const TVec3<U>& v) { *this = v; } +#ifndef STDMIX_INCLUDED + // This is now a standard constructor, except when compiling legacy MixKit + // code. + template<class U> TVec3(const U v[3]) + { elt[0]=v[0]; elt[1]=v[1]; elt[2]=v[2]; } +#else + // For MixKit code, we need these constructors instead. + // They SHOULD NOT be used in new code. + TVec3(const float *v) { elt[0]=v[0]; elt[1]=v[1]; elt[2]=v[2]; } + TVec3(const double *v) { elt[0]=v[0]; elt[1]=v[1]; elt[2]=v[2]; } +#endif + template<class U> TVec3& operator=(const TVec3<U>& v) + { elt[0]=v[0]; elt[1]=v[1]; elt[2]=v[2]; return *this; } + TVec3& operator=(T s) { elt[0]=elt[1]=elt[2]=s; return *this; } + + // Descriptive interface + // + typedef T value_type; + static int dim() { return 3; } + + + // Access methods + // + operator T*() { return elt; } + operator const T*() const { return elt; } + +#ifndef HAVE_CASTING_LIMITS + T& operator[](int i) { return elt[i]; } + T operator[](int i) const { return elt[i]; } + operator const T*() { return elt; } +#endif + + + // Assignment and in-place arithmetic methods + // + inline TVec3& operator+=(const TVec3& v); + inline TVec3& operator-=(const TVec3& v); + inline TVec3& operator*=(T s); + inline TVec3& operator/=(T s); +}; + +//////////////////////////////////////////////////////////////////////// +// +// Method definitions +// + +template<class T> inline TVec3<T>& TVec3<T>::operator+=(const TVec3<T>& v) + { elt[0] += v[0]; elt[1] += v[1]; elt[2] += v[2]; return *this; } + +template<class T> inline TVec3<T>& TVec3<T>::operator-=(const TVec3<T>& v) + { elt[0] -= v[0]; elt[1] -= v[1]; elt[2] -= v[2]; return *this; } + +template<class T> inline TVec3<T>& TVec3<T>::operator*=(T s) + { elt[0] *= s; elt[1] *= s; elt[2] *= s; return *this; } + +template<class T> inline TVec3<T>& TVec3<T>::operator/=(T s) + { elt[0] /= s; elt[1] /= s; elt[2] /= s; return *this; } + + +//////////////////////////////////////////////////////////////////////// +// +// Operator definitions +// + +template<class T> +inline TVec3<T> operator+(const TVec3<T> &u, const TVec3<T>& v) + { return TVec3<T>(u[0]+v[0], u[1]+v[1], u[2]+v[2]); } + +template<class T> +inline TVec3<T> operator-(const TVec3<T> &u, const TVec3<T>& v) + { return TVec3<T>(u[0]-v[0], u[1]-v[1], u[2]-v[2]); } + +template<class T> inline TVec3<T> operator-(const TVec3<T> &v) + { return TVec3<T>(-v[0], -v[1], -v[2]); } + +#if _MSC_VER>=1200 +// Normally, we use the <class T, class N> construct below to allow the scalar +// argument to be different than the template type. This, for example, allows +// the user to write things like v/2. Unfortunately, Microsoft VC6.0 (aka +// v1200) gets confused by this. We used to include explicit versions for the +// case of int's, but this was causing silent (and incorrect) coercion of +// floats to ints. +// + template<class T> inline TVec3<T> operator*(T s, const TVec3<T> &v) + { return TVec3<T>(v[0]*s, v[1]*s, v[2]*s); } + template<class T> inline TVec3<T> operator*(const TVec3<T> &v, T s) + { return s*v; } + + template<class T> inline TVec3<T> operator/(const TVec3<T> &v, T s) + { return TVec3<T>(v[0]/s, v[1]/s, v[2]/s); } +#else + template<class T, class N> inline TVec3<T> operator*(N s, const TVec3<T> &v) + { return TVec3<T>(v[0]*s, v[1]*s, v[2]*s); } + template<class T, class N> inline TVec3<T> operator*(const TVec3<T> &v, N s) + { return s*v; } + + template<class T, class N> inline TVec3<T> operator/(const TVec3<T> &v, N s) + { return TVec3<T>(v[0]/s, v[1]/s, v[2]/s); } +#endif + +template<class T> inline T operator*(const TVec3<T> &u, const TVec3<T>& v) + { return u[0]*v[0] + u[1]*v[1] + u[2]*v[2]; } + +template<class T> inline TVec3<T> cross(const TVec3<T>& u, const TVec3<T>& v) +{ + return TVec3<T>( u[1]*v[2] - v[1]*u[2], + -u[0]*v[2] + v[0]*u[2], + u[0]*v[1] - v[0]*u[1] ); +} + +template<class T> +inline TVec3<T> operator^(const TVec3<T>& u, const TVec3<T>& v) + { return cross(u, v); } + + +template<class T> +inline std::ostream &operator<<(std::ostream &out, const TVec3<T>& v) + { return out << v[0] << " " << v[1] << " " << v[2]; } + +template<class T> +inline std::istream &operator>>(std::istream &in, TVec3<T>& v) + { return in >> v[0] >> v[1] >> v[2]; } + +//////////////////////////////////////////////////////////////////////// +// +// Misc. function definitions +// + +template<class T> inline T norm2(const TVec3<T>& v) { return v*v; } +template<class T> inline T norm(const TVec3<T>& v) { return sqrt(norm2(v)); } + +template<class T> inline void unitize(TVec3<T>& v) +{ + T l = norm2(v); + if( l!=1.0 && l!=0.0 ) v /= sqrt(l); +} + +template<class T> inline TVec2<T> proj(const TVec3<T>& v) +{ + TVec2<T> u(v[0], v[1]); + if( v[2]!=1.0 && v[2]!=0.0 ) + u /= v[2]; + return u; +} + +typedef TVec3<double> Vec3; +typedef TVec3<float> Vec3f; + +} // namespace gfx + +// GFXVEC3_INCLUDED +#endif diff --git a/debian/fireflies/fireflies-2.08/libgfx/include/gfx/vec4.h b/debian/fireflies/fireflies-2.08/libgfx/include/gfx/vec4.h new file mode 100644 index 00000000..8875074e --- /dev/null +++ b/debian/fireflies/fireflies-2.08/libgfx/include/gfx/vec4.h @@ -0,0 +1,183 @@ +#ifndef GFXVEC4_INCLUDED // -*- C++ -*- +#define GFXVEC4_INCLUDED +#if !defined(__GNUC__) +# pragma once +#endif + +/************************************************************************ + + 4D Vector class + + $Id: vec4.h 427 2004-09-27 04:45:31Z garland $ + + ************************************************************************/ + +#include "vec3.h" + +namespace gfx +{ + +template<class T> +class TVec4 { +private: + T elt[4]; + +public: + // Standard constructors + // + TVec4(T s=0) { *this = s; } + TVec4(T x, T y, T z, T w) { elt[0]=x; elt[1]=y; elt[2]=z; elt[3]=w; } + + // Copy constructors & assignment operators + template<class U> TVec4(const TVec4<U>& v) { *this = v; } + template<class U> TVec4(const TVec3<U>& v,T w) + { elt[0]=v[0]; elt[1]=v[1]; elt[2]=v[2]; elt[3]=w; } + template<class U> TVec4(const U v[4]) + { elt[0]=v[0]; elt[1]=v[1]; elt[2]=v[2]; elt[3]=v[3]; } + template<class U> TVec4& operator=(const TVec4<U>& v) + { elt[0]=v[0]; elt[1]=v[1]; elt[2]=v[2]; elt[3]=v[3]; return *this; } + TVec4& operator=(T s) { elt[0]=elt[1]=elt[2]=elt[3]=s; return *this; } + + + // Descriptive interface + // + typedef T value_type; + static int dim() { return 4; } + + + // Access methods + // + operator T*() { return elt; } + operator const T*() const { return elt; } + +#ifndef HAVE_CASTING_LIMITS + T& operator[](int i) { return elt[i]; } + T operator[](int i) const { return elt[i]; } + operator const T*() { return elt; } +#endif + + // Assignment and in-place arithmetic methods + // + inline TVec4& operator+=(const TVec4& v); + inline TVec4& operator-=(const TVec4& v); + inline TVec4& operator*=(T s); + inline TVec4& operator/=(T s); +}; + +//////////////////////////////////////////////////////////////////////// +// +// Method definitions +// + +template<class T> inline TVec4<T>& TVec4<T>::operator+=(const TVec4<T>& v) + { elt[0]+=v[0]; elt[1]+=v[1]; elt[2]+=v[2]; elt[3]+=v[3]; return *this;} + +template<class T> inline TVec4<T>& TVec4<T>::operator-=(const TVec4<T>& v) + { elt[0]-=v[0]; elt[1]-=v[1]; elt[2]-=v[2]; elt[3]-=v[3]; return *this;} + +template<class T> inline TVec4<T>& TVec4<T>::operator*=(T s) + { elt[0] *= s; elt[1] *= s; elt[2] *= s; elt[3] *= s; return *this; } + +template<class T> inline TVec4<T>& TVec4<T>::operator/=(T s) + { elt[0] /= s; elt[1] /= s; elt[2] /= s; elt[3] /= s; return *this; } + + +//////////////////////////////////////////////////////////////////////// +// +// Operator definitions +// + +template<class T> +inline TVec4<T> operator+(const TVec4<T> &u, const TVec4<T> &v) + { return TVec4<T>(u[0]+v[0], u[1]+v[1], u[2]+v[2], u[3]+v[3]); } + +template<class T> +inline TVec4<T> operator-(const TVec4<T> &u, const TVec4<T>& v) + { return TVec4<T>(u[0]-v[0], u[1]-v[1], u[2]-v[2], u[3]-v[3]); } + +template<class T> inline TVec4<T> operator-(const TVec4<T> &u) + { return TVec4<T>(-u[0], -u[1], -u[2], -u[3]); } + +#if _MSC_VER>=1200 +// Normally, we use the <class T, class N> construct below to allow the scalar +// argument to be different than the template type. This, for example, allows +// the user to write things like v/2. Unfortunately, Microsoft VC6.0 (aka +// v1200) gets confused by this. We used to include explicit versions for the +// case of int's, but this was causing silent (and incorrect) coercion of +// floats to ints. +// + template<class T> inline TVec4<T> operator*(T s, const TVec4<T> &v) + { return TVec4<T>(v[0]*s, v[1]*s, v[2]*s, v[3]*s); } + template<class T> inline TVec4<T> operator*(const TVec4<T> &v, T s) + { return s*v; } + + template<class T> inline TVec4<T> operator/(const TVec4<T> &v, T s) + { return TVec4<T>(v[0]/s, v[1]/s, v[2]/s, v[3]/s); } +#else + template<class T, class N> inline TVec4<T> operator*(N s, const TVec4<T> &v) + { return TVec4<T>(v[0]*s, v[1]*s, v[2]*s, v[3]*s); } + template<class T, class N> inline TVec4<T> operator*(const TVec4<T> &v, N s) + { return s*v; } + + template<class T, class N> inline TVec4<T> operator/(const TVec4<T> &v, N s) + { return TVec4<T>(v[0]/s, v[1]/s, v[2]/s, v[3]/s); } +#endif + +template<class T> inline T operator*(const TVec4<T> &u, const TVec4<T> &v) + { return u[0]*v[0] + u[1]*v[1] + u[2]*v[2] + u[3]*v[3]; } + +template<class T> +inline std::ostream &operator<<(std::ostream &out, const TVec4<T>& v) + { return out <<v[0] <<" " <<v[1] <<" " <<v[2] <<" " <<v[3]; } + +template<class T> +inline std::istream &operator>>(std::istream &in, TVec4<T>& v) + { return in >> v[0] >> v[1] >> v[2] >> v[3]; } + +//////////////////////////////////////////////////////////////////////// +// +// Misc. function definitions +// + +template<class T> +inline TVec4<T> cross(const TVec4<T>& a, const TVec4<T>& b, const TVec4<T>& c) +{ + // Code adapted from VecLib4d.c in Graphics Gems V + + T d1 = (b[2] * c[3]) - (b[3] * c[2]); + T d2 = (b[1] * c[3]) - (b[3] * c[1]); + T d3 = (b[1] * c[2]) - (b[2] * c[1]); + T d4 = (b[0] * c[3]) - (b[3] * c[0]); + T d5 = (b[0] * c[2]) - (b[2] * c[0]); + T d6 = (b[0] * c[1]) - (b[1] * c[0]); + + return TVec4<T>(- a[1] * d1 + a[2] * d2 - a[3] * d3, + a[0] * d1 - a[2] * d4 + a[3] * d5, + - a[0] * d2 + a[1] * d4 - a[3] * d6, + a[0] * d3 - a[1] * d5 + a[2] * d6); +} + +template<class T> inline T norm2(const TVec4<T>& v) { return v*v; } +template<class T> inline T norm(const TVec4<T>& v) { return sqrt(norm2(v)); } + +template<class T> inline void unitize(TVec4<T>& v) +{ + T l = norm2(v); + if( l!=1.0 && l!=0.0 ) v /= sqrt(l); +} + +template<class T> inline TVec3<T> proj(const TVec4<T>& v) +{ + TVec3<T> u(v[0], v[1], v[2]); + if( v[3]!=1.0 && v[3]!=0.0 ) + u /= v[3]; + return u; +} + +typedef TVec4<double> Vec4; +typedef TVec4<float> Vec4f; + +} // namespace gfx + +// GFXVEC4_INCLUDED +#endif diff --git a/debian/fireflies/fireflies-2.08/libgfx/include/gfx/win/gui-mfc.h b/debian/fireflies/fireflies-2.08/libgfx/include/gfx/win/gui-mfc.h new file mode 100644 index 00000000..134916bd --- /dev/null +++ b/debian/fireflies/fireflies-2.08/libgfx/include/gfx/win/gui-mfc.h @@ -0,0 +1,120 @@ +#ifndef GFXGUIMFC_INCLUDED // -*- C++ -*- +#define GFXGUIMFC_INCLUDED +#if !defined(__GNUC__) +# pragma once +#endif + +/************************************************************************ + + Minimalist GUI framework built using MFC. + + This package mimics the baseline GUI framework originally implemented + on top of FLTK in <gui.h>. It remains incomplete, and does not + support all the features provided by the FLTK-based version. + + At this point, the two GUI implementations are close to + source-compatible, but not quite. The main difference is in the + startup issues -- main() vs. InitInstance(). + + $Id: gui-mfc.h 427 2004-09-27 04:45:31Z garland $ + + ************************************************************************/ + +#include "mfc.h" +#include "../gl.h" + +namespace gfx +{ + + +class Canvas : public CFrameWnd +{ +private: + int last_click[2]; + +public: + Canvas(); + + CStatusBar *status_line; + +private: + int pixfmt; + HGLRC glcontext; + +protected: + inline void make_current(HDC dc) { wglMakeCurrent(dc, glcontext); } + inline void finish(HDC dc) { SwapBuffers(dc); } + + void immediate_redraw(); + + int decode_mouse_button(UINT flags, int which=0); + void do_mouse_down(int which, UINT flags, CPoint where); + void do_mouse_up(int which, UINT flags, CPoint where); + void do_mouse_move(UINT flags, CPoint where); + +public: + void post_redraw(); + +protected: + // + // Override selected MFC virtual functions + // + BOOL PreCreateWindow(CREATESTRUCT &cs); + +protected: + // + // Define MFC event handlers + // + afx_msg int OnCreate(LPCREATESTRUCT lpcs); + afx_msg void OnDestroy(); + afx_msg void OnSize(UINT type, int width, int height); + + afx_msg void OnActivate(UINT state, CWnd *other, BOOL is_minimized); + afx_msg void OnPaint(); + afx_msg BOOL OnEraseBkgnd(CDC *dc); + + afx_msg void OnLButtonDown(UINT flags, CPoint point); + afx_msg void OnLButtonUp(UINT flags, CPoint point); + afx_msg void OnRButtonDown(UINT flags, CPoint point); + afx_msg void OnRButtonUp(UINT flags, CPoint point); + afx_msg void OnMButtonDown(UINT flags, CPoint point); + afx_msg void OnMButtonUp(UINT flags, CPoint point); + afx_msg void OnMouseMove(UINT flags, CPoint point); + afx_msg void OnChar(UINT ch, UINT repcount, UINT flags); + + DECLARE_MESSAGE_MAP() +}; + + +class MfcGUI : public CWinApp +{ +private: + UINT timer_id; + +public: + MfcGUI(); + + virtual BOOL InitInstance(); + + Canvas *canvas; + float default_fps, target_fps; + + void status(const char *format, ...); + + void animate(bool will=true); + +public: + + virtual void update_animation(); + virtual void setup_for_drawing(); + virtual void draw_contents(); + virtual bool mouse_down(int *where, int which); + virtual bool mouse_up(int *where, int which); + virtual bool mouse_drag(int *where, int *last, int which); + virtual bool key_press(int key); +}; + +} // namespace gfx + +// GFXGUIMFC_INCLUDED +#endif diff --git a/debian/fireflies/fireflies-2.08/libgfx/include/gfx/win/mfc.h b/debian/fireflies/fireflies-2.08/libgfx/include/gfx/win/mfc.h new file mode 100644 index 00000000..9feb045f --- /dev/null +++ b/debian/fireflies/fireflies-2.08/libgfx/include/gfx/win/mfc.h @@ -0,0 +1,30 @@ +#ifndef GFXMFC_INCLUDED // -*- C++ -*- +#define GFXMFC_INCLUDED +#if !defined(__GNUC__) +# pragma once +#endif + +/************************************************************************ + + Support code for using MFC. At the moment, this just makes sure that + we include the right headers. + + $Id: mfc.h 425 2004-09-27 03:40:06Z garland $ + + ************************************************************************/ + +#ifndef _MBCS +#define _MBCS +#endif + +#ifndef _AFXDLL +#define _AFXDLL +#endif + +#include <afxwin.h> +#include <afxext.h> + +#include "wintools.h" + +// GFXMFC_INCLUDED +#endif diff --git a/debian/fireflies/fireflies-2.08/libgfx/include/gfx/win/wintools.h b/debian/fireflies/fireflies-2.08/libgfx/include/gfx/win/wintools.h new file mode 100644 index 00000000..2fd683ed --- /dev/null +++ b/debian/fireflies/fireflies-2.08/libgfx/include/gfx/win/wintools.h @@ -0,0 +1,26 @@ +#ifndef GFXWINTOOLS_INCLUDED // -*- C++ -*- +#define GFXWINTOOLS_INCLUDED +#if !defined(__GNUC__) +# pragma once +#endif + +/************************************************************************ + + Support code for handling various tasks under Win32 + + $Id: wintools.h 427 2004-09-27 04:45:31Z garland $ + + ************************************************************************/ + +#include <windows.h> + +namespace gfx +{ + +extern HGLRC create_glcontext(HDC dc); +extern int set_pixel_format(HDC dc); + +} // namespace gfx + +// GFXWINTOOLS_INCLUDED +#endif diff --git a/debian/fireflies/fireflies-2.08/libgfx/macos/libgfx.xcodeproj/project.pbxproj b/debian/fireflies/fireflies-2.08/libgfx/macos/libgfx.xcodeproj/project.pbxproj new file mode 100644 index 00000000..f5dd6d5d --- /dev/null +++ b/debian/fireflies/fireflies-2.08/libgfx/macos/libgfx.xcodeproj/project.pbxproj @@ -0,0 +1,799 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 42; + objects = { + +/* Begin PBXBuildFile section */ + 1D5D8DBB08B3A109009C84F9 /* t-gui.cxx in Sources */ = {isa = PBXBuildFile; fileRef = 1D5D8DBA08B3A109009C84F9 /* t-gui.cxx */; }; + 1D5D8DD508B3A20A009C84F9 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1D5D8DC208B3A20A009C84F9 /* OpenGL.framework */; }; + 1D5D8E5808B3A251009C84F9 /* libgfx.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D2AAC046055464E500DB518D /* libgfx.a */; }; + 1D5D8E6608B3A6CF009C84F9 /* AGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1D5D8E5908B3A6CF009C84F9 /* AGL.framework */; }; + 1D5D8E8F08B3A831009C84F9 /* libgfx.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D2AAC046055464E500DB518D /* libgfx.a */; }; + 1D5D8E9708B3A849009C84F9 /* t-vec.cxx in Sources */ = {isa = PBXBuildFile; fileRef = 1D5D8E9608B3A849009C84F9 /* t-vec.cxx */; }; + 1D5F0B9708B399390048C9A2 /* trackball.cxx in Sources */ = {isa = PBXBuildFile; fileRef = 1D5F0B8108B399390048C9A2 /* trackball.cxx */; }; + 1D5F0B9808B399390048C9A2 /* time.cxx in Sources */ = {isa = PBXBuildFile; fileRef = 1D5F0B8208B399390048C9A2 /* time.cxx */; }; + 1D5F0B9908B399390048C9A2 /* symmat4.cxx in Sources */ = {isa = PBXBuildFile; fileRef = 1D5F0B8308B399390048C9A2 /* symmat4.cxx */; }; + 1D5F0B9A08B399390048C9A2 /* symmat3.cxx in Sources */ = {isa = PBXBuildFile; fileRef = 1D5F0B8408B399390048C9A2 /* symmat3.cxx */; }; + 1D5F0B9B08B399390048C9A2 /* symmat2.cxx in Sources */ = {isa = PBXBuildFile; fileRef = 1D5F0B8508B399390048C9A2 /* symmat2.cxx */; }; + 1D5F0B9C08B399390048C9A2 /* script.cxx in Sources */ = {isa = PBXBuildFile; fileRef = 1D5F0B8608B399390048C9A2 /* script.cxx */; }; + 1D5F0B9D08B399390048C9A2 /* raster.cxx in Sources */ = {isa = PBXBuildFile; fileRef = 1D5F0B8708B399390048C9A2 /* raster.cxx */; }; + 1D5F0B9E08B399390048C9A2 /* raster-tiff.cxx in Sources */ = {isa = PBXBuildFile; fileRef = 1D5F0B8808B399390048C9A2 /* raster-tiff.cxx */; }; + 1D5F0B9F08B399390048C9A2 /* raster-pnm.cxx in Sources */ = {isa = PBXBuildFile; fileRef = 1D5F0B8908B399390048C9A2 /* raster-pnm.cxx */; }; + 1D5F0BA008B399390048C9A2 /* raster-png.cxx in Sources */ = {isa = PBXBuildFile; fileRef = 1D5F0B8A08B399390048C9A2 /* raster-png.cxx */; }; + 1D5F0BA108B399390048C9A2 /* raster-jpeg.cxx in Sources */ = {isa = PBXBuildFile; fileRef = 1D5F0B8B08B399390048C9A2 /* raster-jpeg.cxx */; }; + 1D5F0BA208B399390048C9A2 /* quat.cxx in Sources */ = {isa = PBXBuildFile; fileRef = 1D5F0B8C08B399390048C9A2 /* quat.cxx */; }; + 1D5F0BA308B399390048C9A2 /* mat4.cxx in Sources */ = {isa = PBXBuildFile; fileRef = 1D5F0B8D08B399390048C9A2 /* mat4.cxx */; }; + 1D5F0BA408B399390048C9A2 /* mat3.cxx in Sources */ = {isa = PBXBuildFile; fileRef = 1D5F0B8E08B399390048C9A2 /* mat3.cxx */; }; + 1D5F0BA508B399390048C9A2 /* mat2.cxx in Sources */ = {isa = PBXBuildFile; fileRef = 1D5F0B8F08B399390048C9A2 /* mat2.cxx */; }; + 1D5F0BA608B399390048C9A2 /* gui.cxx in Sources */ = {isa = PBXBuildFile; fileRef = 1D5F0B9008B399390048C9A2 /* gui.cxx */; }; + 1D5F0BA708B399390048C9A2 /* gltools.cxx in Sources */ = {isa = PBXBuildFile; fileRef = 1D5F0B9108B399390048C9A2 /* gltools.cxx */; }; + 1D5F0BA808B399390048C9A2 /* geom4d.cxx in Sources */ = {isa = PBXBuildFile; fileRef = 1D5F0B9208B399390048C9A2 /* geom4d.cxx */; }; + 1D5F0BA908B399390048C9A2 /* geom3d.cxx in Sources */ = {isa = PBXBuildFile; fileRef = 1D5F0B9308B399390048C9A2 /* geom3d.cxx */; }; + 1D5F0BAA08B399390048C9A2 /* color.cxx in Sources */ = {isa = PBXBuildFile; fileRef = 1D5F0B9408B399390048C9A2 /* color.cxx */; }; + 1D5F0BAB08B399390048C9A2 /* baseball.cxx in Sources */ = {isa = PBXBuildFile; fileRef = 1D5F0B9508B399390048C9A2 /* baseball.cxx */; }; + 1D5F0BAC08B399390048C9A2 /* arcball.cxx in Sources */ = {isa = PBXBuildFile; fileRef = 1D5F0B9608B399390048C9A2 /* arcball.cxx */; }; +/* End PBXBuildFile section */ + +/* Begin PBXBuildStyle section */ + 014CEA520018CE5811CA2923 /* Debug */ = { + isa = PBXBuildStyle; + buildSettings = { + COPY_PHASE_STRIP = NO; + GCC_DYNAMIC_NO_PIC = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_GENERATE_DEBUGGING_SYMBOLS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + ZERO_LINK = YES; + }; + name = Debug; + }; + 014CEA530018CE5811CA2923 /* Release */ = { + isa = PBXBuildStyle; + buildSettings = { + COPY_PHASE_STRIP = YES; + GCC_ENABLE_FIX_AND_CONTINUE = NO; + ZERO_LINK = NO; + }; + name = Release; + }; +/* End PBXBuildStyle section */ + +/* Begin PBXContainerItemProxy section */ + 1D5D8DB408B3A0D9009C84F9 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = D2AAC045055464E500DB518D /* libgfx */; + remoteInfo = libgfx; + }; + 1D5D8E8B08B3A81A009C84F9 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = D2AAC045055464E500DB518D /* libgfx */; + remoteInfo = libgfx; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 1D5D8DAD08B3A0CF009C84F9 /* t-gui.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "t-gui.app"; sourceTree = BUILT_PRODUCTS_DIR; }; + 1D5D8DAF08B3A0CF009C84F9 /* t-gui-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = "t-gui-Info.plist"; sourceTree = "<group>"; }; + 1D5D8DBA08B3A109009C84F9 /* t-gui.cxx */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = "t-gui.cxx"; path = "../tests/t-gui.cxx"; sourceTree = SOURCE_ROOT; }; + 1D5D8DC208B3A20A009C84F9 /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGL.framework; path = /System/Library/Frameworks/OpenGL.framework; sourceTree = "<absolute>"; }; + 1D5D8E5908B3A6CF009C84F9 /* AGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AGL.framework; path = /System/Library/Frameworks/AGL.framework; sourceTree = "<absolute>"; }; + 1D5D8E8908B3A813009C84F9 /* t-vec */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = "t-vec"; sourceTree = BUILT_PRODUCTS_DIR; }; + 1D5D8E9608B3A849009C84F9 /* t-vec.cxx */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = "t-vec.cxx"; path = "../tests/t-vec.cxx"; sourceTree = SOURCE_ROOT; }; + 1D5F0B8108B399390048C9A2 /* trackball.cxx */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = trackball.cxx; path = ../src/trackball.cxx; sourceTree = SOURCE_ROOT; }; + 1D5F0B8208B399390048C9A2 /* time.cxx */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = time.cxx; path = ../src/time.cxx; sourceTree = SOURCE_ROOT; }; + 1D5F0B8308B399390048C9A2 /* symmat4.cxx */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = symmat4.cxx; path = ../src/symmat4.cxx; sourceTree = SOURCE_ROOT; }; + 1D5F0B8408B399390048C9A2 /* symmat3.cxx */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = symmat3.cxx; path = ../src/symmat3.cxx; sourceTree = SOURCE_ROOT; }; + 1D5F0B8508B399390048C9A2 /* symmat2.cxx */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = symmat2.cxx; path = ../src/symmat2.cxx; sourceTree = SOURCE_ROOT; }; + 1D5F0B8608B399390048C9A2 /* script.cxx */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = script.cxx; path = ../src/script.cxx; sourceTree = SOURCE_ROOT; }; + 1D5F0B8708B399390048C9A2 /* raster.cxx */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = raster.cxx; path = ../src/raster.cxx; sourceTree = SOURCE_ROOT; }; + 1D5F0B8808B399390048C9A2 /* raster-tiff.cxx */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = "raster-tiff.cxx"; path = "../src/raster-tiff.cxx"; sourceTree = SOURCE_ROOT; }; + 1D5F0B8908B399390048C9A2 /* raster-pnm.cxx */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = "raster-pnm.cxx"; path = "../src/raster-pnm.cxx"; sourceTree = SOURCE_ROOT; }; + 1D5F0B8A08B399390048C9A2 /* raster-png.cxx */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = "raster-png.cxx"; path = "../src/raster-png.cxx"; sourceTree = SOURCE_ROOT; }; + 1D5F0B8B08B399390048C9A2 /* raster-jpeg.cxx */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = "raster-jpeg.cxx"; path = "../src/raster-jpeg.cxx"; sourceTree = SOURCE_ROOT; }; + 1D5F0B8C08B399390048C9A2 /* quat.cxx */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = quat.cxx; path = ../src/quat.cxx; sourceTree = SOURCE_ROOT; }; + 1D5F0B8D08B399390048C9A2 /* mat4.cxx */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = mat4.cxx; path = ../src/mat4.cxx; sourceTree = SOURCE_ROOT; }; + 1D5F0B8E08B399390048C9A2 /* mat3.cxx */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = mat3.cxx; path = ../src/mat3.cxx; sourceTree = SOURCE_ROOT; }; + 1D5F0B8F08B399390048C9A2 /* mat2.cxx */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = mat2.cxx; path = ../src/mat2.cxx; sourceTree = SOURCE_ROOT; }; + 1D5F0B9008B399390048C9A2 /* gui.cxx */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = gui.cxx; path = ../src/gui.cxx; sourceTree = SOURCE_ROOT; }; + 1D5F0B9108B399390048C9A2 /* gltools.cxx */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = gltools.cxx; path = ../src/gltools.cxx; sourceTree = SOURCE_ROOT; }; + 1D5F0B9208B399390048C9A2 /* geom4d.cxx */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = geom4d.cxx; path = ../src/geom4d.cxx; sourceTree = SOURCE_ROOT; }; + 1D5F0B9308B399390048C9A2 /* geom3d.cxx */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = geom3d.cxx; path = ../src/geom3d.cxx; sourceTree = SOURCE_ROOT; }; + 1D5F0B9408B399390048C9A2 /* color.cxx */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = color.cxx; path = ../src/color.cxx; sourceTree = SOURCE_ROOT; }; + 1D5F0B9508B399390048C9A2 /* baseball.cxx */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = baseball.cxx; path = ../src/baseball.cxx; sourceTree = SOURCE_ROOT; }; + 1D5F0B9608B399390048C9A2 /* arcball.cxx */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = arcball.cxx; path = ../src/arcball.cxx; sourceTree = SOURCE_ROOT; }; + 1D5F0BBE08B39AD90048C9A2 /* vec4.html */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.html; name = vec4.html; path = ../doc/vec4.html; sourceTree = SOURCE_ROOT; }; + 1D5F0BBF08B39AD90048C9A2 /* vec3.html */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.html; name = vec3.html; path = ../doc/vec3.html; sourceTree = SOURCE_ROOT; }; + 1D5F0BC008B39AD90048C9A2 /* vec2.html */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.html; name = vec2.html; path = ../doc/vec2.html; sourceTree = SOURCE_ROOT; }; + 1D5F0BC108B39AD90048C9A2 /* vec.html */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.html; name = vec.html; path = ../doc/vec.html; sourceTree = SOURCE_ROOT; }; + 1D5F0BC208B39AD90048C9A2 /* start.html */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.html; name = start.html; path = ../doc/start.html; sourceTree = SOURCE_ROOT; }; + 1D5F0BC308B39AD90048C9A2 /* script.html */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.html; name = script.html; path = ../doc/script.html; sourceTree = SOURCE_ROOT; }; + 1D5F0BC408B39AD90048C9A2 /* rotate.html */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.html; name = rotate.html; path = ../doc/rotate.html; sourceTree = SOURCE_ROOT; }; + 1D5F0BC508B39AD90048C9A2 /* raster.html */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.html; name = raster.html; path = ../doc/raster.html; sourceTree = SOURCE_ROOT; }; + 1D5F0BC608B39AD90048C9A2 /* quat.html */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.html; name = quat.html; path = ../doc/quat.html; sourceTree = SOURCE_ROOT; }; + 1D5F0BC708B39AD90048C9A2 /* mat4.html */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.html; name = mat4.html; path = ../doc/mat4.html; sourceTree = SOURCE_ROOT; }; + 1D5F0BC808B39AD90048C9A2 /* mat3.html */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.html; name = mat3.html; path = ../doc/mat3.html; sourceTree = SOURCE_ROOT; }; + 1D5F0BC908B39AD90048C9A2 /* mat2.html */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.html; name = mat2.html; path = ../doc/mat2.html; sourceTree = SOURCE_ROOT; }; + 1D5F0BCA08B39AD90048C9A2 /* mat.html */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.html; name = mat.html; path = ../doc/mat.html; sourceTree = SOURCE_ROOT; }; + 1D5F0BCB08B39AD90048C9A2 /* license.html */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.html; name = license.html; path = ../doc/license.html; sourceTree = SOURCE_ROOT; }; + 1D5F0BCC08B39AD90048C9A2 /* intvec.html */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.html; name = intvec.html; path = ../doc/intvec.html; sourceTree = SOURCE_ROOT; }; + 1D5F0BCD08B39AD90048C9A2 /* index.html */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.html; name = index.html; path = ../doc/index.html; sourceTree = SOURCE_ROOT; }; + 1D5F0BCE08B39AD90048C9A2 /* gui.html */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.html; name = gui.html; path = ../doc/gui.html; sourceTree = SOURCE_ROOT; }; + 1D5F0BCF08B39AD90048C9A2 /* gl.html */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.html; name = gl.html; path = ../doc/gl.html; sourceTree = SOURCE_ROOT; }; + 1D5F0BD008B39AD90048C9A2 /* geom3d.html */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.html; name = geom3d.html; path = ../doc/geom3d.html; sourceTree = SOURCE_ROOT; }; + 1D5F0BD108B39AD90048C9A2 /* ex-script.html */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.html; name = "ex-script.html"; path = "../doc/ex-script.html"; sourceTree = SOURCE_ROOT; }; + 1D5F0BD208B39AD90048C9A2 /* ex-gui.html */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.html; name = "ex-gui.html"; path = "../doc/ex-gui.html"; sourceTree = SOURCE_ROOT; }; + 1D5F0BD308B39AD90048C9A2 /* cdoc.css */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; name = cdoc.css; path = ../doc/cdoc.css; sourceTree = SOURCE_ROOT; }; + 1D5F0BD408B39AD90048C9A2 /* build.html */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.html; name = build.html; path = ../doc/build.html; sourceTree = SOURCE_ROOT; }; + D2AAC046055464E500DB518D /* libgfx.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libgfx.a; sourceTree = BUILT_PRODUCTS_DIR; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 1D5D8DAB08B3A0CF009C84F9 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 1D5D8E5808B3A251009C84F9 /* libgfx.a in Frameworks */, + 1D5D8DD508B3A20A009C84F9 /* OpenGL.framework in Frameworks */, + 1D5D8E6608B3A6CF009C84F9 /* AGL.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 1D5D8E8708B3A813009C84F9 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 1D5D8E8F08B3A831009C84F9 /* libgfx.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + D289987405E68DCB004EDB86 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 08FB7794FE84155DC02AAC07 /* libgfx */ = { + isa = PBXGroup; + children = ( + 08FB7795FE84155DC02AAC07 /* Library Source */, + C6A0FF2B0290797F04C91782 /* Library Documentation */, + 1D5D8E7408B3A743009C84F9 /* Test Applications */, + 1AB674ADFE9D54B511CA2CBB /* Products */, + 1D5D8E6D08B3A728009C84F9 /* External Frameworks */, + ); + name = libgfx; + sourceTree = "<group>"; + }; + 08FB7795FE84155DC02AAC07 /* Library Source */ = { + isa = PBXGroup; + children = ( + 1D5F0B8108B399390048C9A2 /* trackball.cxx */, + 1D5F0B8208B399390048C9A2 /* time.cxx */, + 1D5F0B8308B399390048C9A2 /* symmat4.cxx */, + 1D5F0B8408B399390048C9A2 /* symmat3.cxx */, + 1D5F0B8508B399390048C9A2 /* symmat2.cxx */, + 1D5F0B8608B399390048C9A2 /* script.cxx */, + 1D5F0B8708B399390048C9A2 /* raster.cxx */, + 1D5F0B8808B399390048C9A2 /* raster-tiff.cxx */, + 1D5F0B8908B399390048C9A2 /* raster-pnm.cxx */, + 1D5F0B8A08B399390048C9A2 /* raster-png.cxx */, + 1D5F0B8B08B399390048C9A2 /* raster-jpeg.cxx */, + 1D5F0B8C08B399390048C9A2 /* quat.cxx */, + 1D5F0B8D08B399390048C9A2 /* mat4.cxx */, + 1D5F0B8E08B399390048C9A2 /* mat3.cxx */, + 1D5F0B8F08B399390048C9A2 /* mat2.cxx */, + 1D5F0B9008B399390048C9A2 /* gui.cxx */, + 1D5F0B9108B399390048C9A2 /* gltools.cxx */, + 1D5F0B9208B399390048C9A2 /* geom4d.cxx */, + 1D5F0B9308B399390048C9A2 /* geom3d.cxx */, + 1D5F0B9408B399390048C9A2 /* color.cxx */, + 1D5F0B9508B399390048C9A2 /* baseball.cxx */, + 1D5F0B9608B399390048C9A2 /* arcball.cxx */, + ); + name = "Library Source"; + sourceTree = "<group>"; + }; + 1AB674ADFE9D54B511CA2CBB /* Products */ = { + isa = PBXGroup; + children = ( + D2AAC046055464E500DB518D /* libgfx.a */, + 1D5D8DAD08B3A0CF009C84F9 /* t-gui.app */, + 1D5D8E8908B3A813009C84F9 /* t-vec */, + ); + name = Products; + sourceTree = "<group>"; + }; + 1D5D8E6D08B3A728009C84F9 /* External Frameworks */ = { + isa = PBXGroup; + children = ( + 1D5D8E5908B3A6CF009C84F9 /* AGL.framework */, + 1D5D8DC208B3A20A009C84F9 /* OpenGL.framework */, + ); + name = "External Frameworks"; + sourceTree = "<group>"; + }; + 1D5D8E7408B3A743009C84F9 /* Test Applications */ = { + isa = PBXGroup; + children = ( + 1D5D8DAF08B3A0CF009C84F9 /* t-gui-Info.plist */, + 1D5D8DBA08B3A109009C84F9 /* t-gui.cxx */, + 1D5D8E9608B3A849009C84F9 /* t-vec.cxx */, + ); + name = "Test Applications"; + sourceTree = "<group>"; + }; + C6A0FF2B0290797F04C91782 /* Library Documentation */ = { + isa = PBXGroup; + children = ( + 1D5F0BBE08B39AD90048C9A2 /* vec4.html */, + 1D5F0BBF08B39AD90048C9A2 /* vec3.html */, + 1D5F0BC008B39AD90048C9A2 /* vec2.html */, + 1D5F0BC108B39AD90048C9A2 /* vec.html */, + 1D5F0BC208B39AD90048C9A2 /* start.html */, + 1D5F0BC308B39AD90048C9A2 /* script.html */, + 1D5F0BC408B39AD90048C9A2 /* rotate.html */, + 1D5F0BC508B39AD90048C9A2 /* raster.html */, + 1D5F0BC608B39AD90048C9A2 /* quat.html */, + 1D5F0BC708B39AD90048C9A2 /* mat4.html */, + 1D5F0BC808B39AD90048C9A2 /* mat3.html */, + 1D5F0BC908B39AD90048C9A2 /* mat2.html */, + 1D5F0BCA08B39AD90048C9A2 /* mat.html */, + 1D5F0BCB08B39AD90048C9A2 /* license.html */, + 1D5F0BCC08B39AD90048C9A2 /* intvec.html */, + 1D5F0BCD08B39AD90048C9A2 /* index.html */, + 1D5F0BCE08B39AD90048C9A2 /* gui.html */, + 1D5F0BCF08B39AD90048C9A2 /* gl.html */, + 1D5F0BD008B39AD90048C9A2 /* geom3d.html */, + 1D5F0BD108B39AD90048C9A2 /* ex-script.html */, + 1D5F0BD208B39AD90048C9A2 /* ex-gui.html */, + 1D5F0BD308B39AD90048C9A2 /* cdoc.css */, + 1D5F0BD408B39AD90048C9A2 /* build.html */, + ); + name = "Library Documentation"; + sourceTree = "<group>"; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + D2AAC043055464E500DB518D /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + 1D5D8DAC08B3A0CF009C84F9 /* t-gui */ = { + isa = PBXNativeTarget; + buildConfigurationList = 1D5D8DB008B3A0D0009C84F9 /* Build configuration list for PBXNativeTarget "t-gui" */; + buildPhases = ( + 1D5D8DA908B3A0CF009C84F9 /* Resources */, + 1D5D8DAA08B3A0CF009C84F9 /* Sources */, + 1D5D8DAB08B3A0CF009C84F9 /* Frameworks */, + ); + buildRules = ( + ); + buildSettings = { + GCC_GENERATE_DEBUGGING_SYMBOLS = NO; + GCC_MODEL_TUNING = G5; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "$(SYSTEM_LIBRARY_DIR)/Frameworks/Carbon.framework/Headers/Carbon.h"; + INFOPLIST_FILE = "t-gui-Info.plist"; + INSTALL_PATH = "$(USER_APPS_DIR)"; + OPTIMIZATION_CFLAGS = ""; + OTHER_CFLAGS = ""; + OTHER_LDFLAGS = ( + "-framework", + Carbon, + ); + OTHER_REZFLAGS = ""; + PREBINDING = NO; + PRODUCT_NAME = "t-gui"; + SECTORDER_FLAGS = ""; + WARNING_CFLAGS = ( + "-Wmost", + "-Wno-four-char-constants", + "-Wno-unknown-pragmas", + ); + }; + dependencies = ( + 1D5D8DB508B3A0D9009C84F9 /* PBXTargetDependency */, + ); + name = "t-gui"; + productName = "t-gui"; + productReference = 1D5D8DAD08B3A0CF009C84F9 /* t-gui.app */; + productSettingsXML = "<?xml version=\"1.0\" encoding=\"UTF-8\"?> +<!DOCTYPE plist PUBLIC \"-//Apple Computer//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\"> +<plist version=\"1.0\"> +<dict> + <key>CFBundleDevelopmentRegion</key> + <string>English</string> + <key>CFBundleExecutable</key> + <string>t-gui</string> + <key>CFBundleIdentifier</key> + <string>com.yourcompany.t_gui</string> + <key>CFBundleInfoDictionaryVersion</key> + <string>6.0</string> + <key>CFBundlePackageType</key> + <string>APPL</string> + <key>CFBundleSignature</key> + <string>????</string> + <key>CFBundleVersion</key> + <string>1.0</string> +</dict> +</plist> +"; + productType = "com.apple.product-type.application"; + }; + 1D5D8E8808B3A813009C84F9 /* t-vec */ = { + isa = PBXNativeTarget; + buildConfigurationList = 1D5D8E9208B3A839009C84F9 /* Build configuration list for PBXNativeTarget "t-vec" */; + buildPhases = ( + 1D5D8E8608B3A813009C84F9 /* Sources */, + 1D5D8E8708B3A813009C84F9 /* Frameworks */, + ); + buildRules = ( + ); + buildSettings = { + GCC_GENERATE_DEBUGGING_SYMBOLS = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = "$(HOME)/bin"; + OPTIMIZATION_CFLAGS = ""; + OTHER_CFLAGS = ""; + OTHER_LDFLAGS = ""; + OTHER_REZFLAGS = ""; + PREBINDING = NO; + PRODUCT_NAME = "t-vec"; + SECTORDER_FLAGS = ""; + WARNING_CFLAGS = ( + "-Wmost", + "-Wno-four-char-constants", + "-Wno-unknown-pragmas", + ); + }; + dependencies = ( + 1D5D8E8C08B3A81A009C84F9 /* PBXTargetDependency */, + ); + name = "t-vec"; + productName = "t-vec"; + productReference = 1D5D8E8908B3A813009C84F9 /* t-vec */; + productType = "com.apple.product-type.tool"; + }; + D2AAC045055464E500DB518D /* libgfx */ = { + isa = PBXNativeTarget; + buildConfigurationList = 1D5F0B7208B398A90048C9A2 /* Build configuration list for PBXNativeTarget "libgfx" */; + buildPhases = ( + D2AAC043055464E500DB518D /* Headers */, + D2AAC044055464E500DB518D /* Sources */, + D289987405E68DCB004EDB86 /* Frameworks */, + ); + buildRules = ( + ); + buildSettings = { + GCC_GENERATE_DEBUGGING_SYMBOLS = NO; + GCC_MODEL_TUNING = G5; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + INSTALL_PATH = /usr/local/lib; + LIBRARY_STYLE = STATIC; + PREBINDING = NO; + PRODUCT_NAME = libgfx; + }; + dependencies = ( + ); + name = libgfx; + productName = libgfx; + productReference = D2AAC046055464E500DB518D /* libgfx.a */; + productType = "com.apple.product-type.library.static"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 08FB7793FE84155DC02AAC07 /* Project object */ = { + isa = PBXProject; + buildConfigurationList = 1D5F0B7608B398A90048C9A2 /* Build configuration list for PBXProject "libgfx" */; + buildSettings = { + }; + buildStyles = ( + 014CEA520018CE5811CA2923 /* Debug */, + 014CEA530018CE5811CA2923 /* Release */, + ); + hasScannedForEncodings = 1; + mainGroup = 08FB7794FE84155DC02AAC07 /* libgfx */; + projectDirPath = ""; + targets = ( + D2AAC045055464E500DB518D /* libgfx */, + 1D5D8DAC08B3A0CF009C84F9 /* t-gui */, + 1D5D8E8808B3A813009C84F9 /* t-vec */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 1D5D8DA908B3A0CF009C84F9 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 1D5D8DAA08B3A0CF009C84F9 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 1D5D8DBB08B3A109009C84F9 /* t-gui.cxx in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 1D5D8E8608B3A813009C84F9 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 1D5D8E9708B3A849009C84F9 /* t-vec.cxx in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + D2AAC044055464E500DB518D /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 1D5F0B9708B399390048C9A2 /* trackball.cxx in Sources */, + 1D5F0B9808B399390048C9A2 /* time.cxx in Sources */, + 1D5F0B9908B399390048C9A2 /* symmat4.cxx in Sources */, + 1D5F0B9A08B399390048C9A2 /* symmat3.cxx in Sources */, + 1D5F0B9B08B399390048C9A2 /* symmat2.cxx in Sources */, + 1D5F0B9C08B399390048C9A2 /* script.cxx in Sources */, + 1D5F0B9D08B399390048C9A2 /* raster.cxx in Sources */, + 1D5F0B9E08B399390048C9A2 /* raster-tiff.cxx in Sources */, + 1D5F0B9F08B399390048C9A2 /* raster-pnm.cxx in Sources */, + 1D5F0BA008B399390048C9A2 /* raster-png.cxx in Sources */, + 1D5F0BA108B399390048C9A2 /* raster-jpeg.cxx in Sources */, + 1D5F0BA208B399390048C9A2 /* quat.cxx in Sources */, + 1D5F0BA308B399390048C9A2 /* mat4.cxx in Sources */, + 1D5F0BA408B399390048C9A2 /* mat3.cxx in Sources */, + 1D5F0BA508B399390048C9A2 /* mat2.cxx in Sources */, + 1D5F0BA608B399390048C9A2 /* gui.cxx in Sources */, + 1D5F0BA708B399390048C9A2 /* gltools.cxx in Sources */, + 1D5F0BA808B399390048C9A2 /* geom4d.cxx in Sources */, + 1D5F0BA908B399390048C9A2 /* geom3d.cxx in Sources */, + 1D5F0BAA08B399390048C9A2 /* color.cxx in Sources */, + 1D5F0BAB08B399390048C9A2 /* baseball.cxx in Sources */, + 1D5F0BAC08B399390048C9A2 /* arcball.cxx in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 1D5D8DB508B3A0D9009C84F9 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = D2AAC045055464E500DB518D /* libgfx */; + targetProxy = 1D5D8DB408B3A0D9009C84F9 /* PBXContainerItemProxy */; + }; + 1D5D8E8C08B3A81A009C84F9 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = D2AAC045055464E500DB518D /* libgfx */; + targetProxy = 1D5D8E8B08B3A81A009C84F9 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 1D5D8DB108B3A0D0009C84F9 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + COPY_PHASE_STRIP = NO; + GCC_GENERATE_DEBUGGING_SYMBOLS = YES; + GCC_MODEL_TUNING = G5; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "$(SYSTEM_LIBRARY_DIR)/Frameworks/Carbon.framework/Headers/Carbon.h"; + INFOPLIST_FILE = "t-gui-Info.plist"; + INSTALL_PATH = "$(USER_APPS_DIR)"; + OPTIMIZATION_CFLAGS = ""; + OTHER_CFLAGS = ""; + OTHER_LDFLAGS = ( + "-framework", + Carbon, + "-framework", + ApplicationServices, + "-lfltk_gl", + "-lfltk", + "-ljpeg", + "-lpng", + "-ltiff", + "-lz", + ); + OTHER_REZFLAGS = ""; + PREBINDING = NO; + PRODUCT_NAME = "t-gui"; + SECTORDER_FLAGS = ""; + WARNING_CFLAGS = ( + "-Wmost", + "-Wno-four-char-constants", + "-Wno-unknown-pragmas", + ); + }; + name = Debug; + }; + 1D5D8DB208B3A0D0009C84F9 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + COPY_PHASE_STRIP = YES; + GCC_GENERATE_DEBUGGING_SYMBOLS = NO; + GCC_MODEL_TUNING = G5; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "$(SYSTEM_LIBRARY_DIR)/Frameworks/Carbon.framework/Headers/Carbon.h"; + INFOPLIST_FILE = "t-gui-Info.plist"; + INSTALL_PATH = "$(USER_APPS_DIR)"; + OPTIMIZATION_CFLAGS = ""; + OTHER_CFLAGS = ""; + OTHER_LDFLAGS = ( + "-framework", + Carbon, + "-framework", + ApplicationServices, + "-lfltk_gl", + "-lfltk", + "-ljpeg", + "-lpng", + "-ltiff", + "-lz", + ); + OTHER_REZFLAGS = ""; + PREBINDING = NO; + PRODUCT_NAME = "t-gui"; + SECTORDER_FLAGS = ""; + WARNING_CFLAGS = ( + "-Wmost", + "-Wno-four-char-constants", + "-Wno-unknown-pragmas", + ); + }; + name = Release; + }; + 1D5D8DB308B3A0D0009C84F9 /* Default */ = { + isa = XCBuildConfiguration; + buildSettings = { + GCC_GENERATE_DEBUGGING_SYMBOLS = NO; + GCC_MODEL_TUNING = G5; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "$(SYSTEM_LIBRARY_DIR)/Frameworks/Carbon.framework/Headers/Carbon.h"; + INFOPLIST_FILE = "t-gui-Info.plist"; + INSTALL_PATH = "$(USER_APPS_DIR)"; + OPTIMIZATION_CFLAGS = ""; + OTHER_CFLAGS = ""; + OTHER_LDFLAGS = ( + "-framework", + Carbon, + "-framework", + ApplicationServices, + "-lfltk_gl", + "-lfltk", + "-ljpeg", + "-lpng", + "-ltiff", + "-lz", + ); + OTHER_REZFLAGS = ""; + PREBINDING = NO; + PRODUCT_NAME = "t-gui"; + SECTORDER_FLAGS = ""; + WARNING_CFLAGS = ( + "-Wmost", + "-Wno-four-char-constants", + "-Wno-unknown-pragmas", + ); + }; + name = Default; + }; + 1D5D8E9308B3A839009C84F9 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + COPY_PHASE_STRIP = NO; + GCC_GENERATE_DEBUGGING_SYMBOLS = YES; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = "$(HOME)/bin"; + OPTIMIZATION_CFLAGS = ""; + OTHER_CFLAGS = ""; + OTHER_LDFLAGS = ""; + OTHER_REZFLAGS = ""; + PREBINDING = NO; + PRODUCT_NAME = "t-vec"; + SECTORDER_FLAGS = ""; + WARNING_CFLAGS = ( + "-Wmost", + "-Wno-four-char-constants", + "-Wno-unknown-pragmas", + ); + }; + name = Debug; + }; + 1D5D8E9408B3A839009C84F9 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + COPY_PHASE_STRIP = YES; + GCC_GENERATE_DEBUGGING_SYMBOLS = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = "$(HOME)/bin"; + OPTIMIZATION_CFLAGS = ""; + OTHER_CFLAGS = ""; + OTHER_LDFLAGS = ""; + OTHER_REZFLAGS = ""; + PREBINDING = NO; + PRODUCT_NAME = "t-vec"; + SECTORDER_FLAGS = ""; + WARNING_CFLAGS = ( + "-Wmost", + "-Wno-four-char-constants", + "-Wno-unknown-pragmas", + ); + }; + name = Release; + }; + 1D5D8E9508B3A839009C84F9 /* Default */ = { + isa = XCBuildConfiguration; + buildSettings = { + GCC_GENERATE_DEBUGGING_SYMBOLS = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = "$(HOME)/bin"; + OPTIMIZATION_CFLAGS = ""; + OTHER_CFLAGS = ""; + OTHER_LDFLAGS = ""; + OTHER_REZFLAGS = ""; + PREBINDING = NO; + PRODUCT_NAME = "t-vec"; + SECTORDER_FLAGS = ""; + WARNING_CFLAGS = ( + "-Wmost", + "-Wno-four-char-constants", + "-Wno-unknown-pragmas", + ); + }; + name = Default; + }; + 1D5F0B7308B398A90048C9A2 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + COPY_PHASE_STRIP = NO; + EXECUTABLE_PREFIX = ""; + GCC_DYNAMIC_NO_PIC = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_GENERATE_DEBUGGING_SYMBOLS = YES; + GCC_MODEL_TUNING = G5; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + INSTALL_PATH = /usr/local/lib; + LIBRARY_STYLE = STATIC; + PREBINDING = NO; + PRODUCT_NAME = libgfx; + ZERO_LINK = YES; + }; + name = Debug; + }; + 1D5F0B7408B398A90048C9A2 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + COPY_PHASE_STRIP = YES; + EXECUTABLE_PREFIX = ""; + GCC_ENABLE_FIX_AND_CONTINUE = NO; + GCC_GENERATE_DEBUGGING_SYMBOLS = NO; + GCC_MODEL_TUNING = G5; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + INSTALL_PATH = /usr/local/lib; + LIBRARY_STYLE = STATIC; + PREBINDING = NO; + PRODUCT_NAME = libgfx; + ZERO_LINK = NO; + }; + name = Release; + }; + 1D5F0B7508B398A90048C9A2 /* Default */ = { + isa = XCBuildConfiguration; + buildSettings = { + EXECUTABLE_PREFIX = ""; + GCC_GENERATE_DEBUGGING_SYMBOLS = NO; + GCC_MODEL_TUNING = G5; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + INSTALL_PATH = /usr/local/lib; + LIBRARY_STYLE = STATIC; + PREBINDING = NO; + PRODUCT_NAME = libgfx; + }; + name = Default; + }; + 1D5F0B7708B398A90048C9A2 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + GCC_PREPROCESSOR_DEFINITIONS = ( + HAVE_CONFIG_H, + GFX_NAMESPACE, + ); + HEADER_SEARCH_PATHS = ../include/; + }; + name = Debug; + }; + 1D5F0B7808B398A90048C9A2 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + GCC_PREPROCESSOR_DEFINITIONS = ( + HAVE_CONFIG_H, + GFX_NAMESPACE, + ); + HEADER_SEARCH_PATHS = ../include/; + }; + name = Release; + }; + 1D5F0B7908B398A90048C9A2 /* Default */ = { + isa = XCBuildConfiguration; + buildSettings = { + GCC_PREPROCESSOR_DEFINITIONS = ( + HAVE_CONFIG_H, + GFX_NAMESPACE, + ); + HEADER_SEARCH_PATHS = ../include/; + }; + name = Default; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 1D5D8DB008B3A0D0009C84F9 /* Build configuration list for PBXNativeTarget "t-gui" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 1D5D8DB108B3A0D0009C84F9 /* Debug */, + 1D5D8DB208B3A0D0009C84F9 /* Release */, + 1D5D8DB308B3A0D0009C84F9 /* Default */, + ); + defaultConfigurationIsVisible = 0; + }; + 1D5D8E9208B3A839009C84F9 /* Build configuration list for PBXNativeTarget "t-vec" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 1D5D8E9308B3A839009C84F9 /* Debug */, + 1D5D8E9408B3A839009C84F9 /* Release */, + 1D5D8E9508B3A839009C84F9 /* Default */, + ); + defaultConfigurationIsVisible = 0; + }; + 1D5F0B7208B398A90048C9A2 /* Build configuration list for PBXNativeTarget "libgfx" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 1D5F0B7308B398A90048C9A2 /* Debug */, + 1D5F0B7408B398A90048C9A2 /* Release */, + 1D5F0B7508B398A90048C9A2 /* Default */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Default; + }; + 1D5F0B7608B398A90048C9A2 /* Build configuration list for PBXProject "libgfx" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 1D5F0B7708B398A90048C9A2 /* Debug */, + 1D5F0B7808B398A90048C9A2 /* Release */, + 1D5F0B7908B398A90048C9A2 /* Default */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Default; + }; +/* End XCConfigurationList section */ + }; + rootObject = 08FB7793FE84155DC02AAC07 /* Project object */; +} diff --git a/debian/fireflies/fireflies-2.08/libgfx/macos/t-gui-Info.plist b/debian/fireflies/fireflies-2.08/libgfx/macos/t-gui-Info.plist new file mode 100644 index 00000000..9e05eeda --- /dev/null +++ b/debian/fireflies/fireflies-2.08/libgfx/macos/t-gui-Info.plist @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> +<plist version="1.0"> +<dict> + <key>CFBundleDevelopmentRegion</key> + <string>English</string> + <key>CFBundleExecutable</key> + <string>t-gui</string> + <key>CFBundleIdentifier</key> + <string>com.yourcompany.t_gui</string> + <key>CFBundleInfoDictionaryVersion</key> + <string>6.0</string> + <key>CFBundlePackageType</key> + <string>APPL</string> + <key>CFBundleSignature</key> + <string>????</string> + <key>CFBundleVersion</key> + <string>1.0</string> +</dict> +</plist> diff --git a/debian/fireflies/fireflies-2.08/libgfx/src/Makefile b/debian/fireflies/fireflies-2.08/libgfx/src/Makefile new file mode 100644 index 00000000..7993f971 --- /dev/null +++ b/debian/fireflies/fireflies-2.08/libgfx/src/Makefile @@ -0,0 +1,29 @@ +include ../gfx-config + +CXXFLAGS += -DGFX_NAMESPACE + +VEC_SRCS = mat2.cxx mat3.cxx mat4.cxx quat.cxx \ + symmat2.cxx symmat3.cxx symmat4.cxx +GEO_SRCS = geom3d.cxx +IMG_SRCS = raster.cxx raster-pnm.cxx raster-tiff.cxx raster-jpeg.cxx \ + raster-png.cxx +MISC_SRCS = time.cxx script.cxx color.cxx +GUI_SRCS = gui.cxx gltools.cxx baseball.cxx trackball.cxx arcball.cxx + +SRCS = $(VEC_SRCS) $(GEO_SRCS) $(IMG_SRCS) $(MISC_SRCS) $(GUI_SRCS) +OBJS = $(SRCS:.cxx=.o) + +libgfx.a: $(OBJS) + $(AR) cru libgfx.a $(OBJS) + $(RANLIB) libgfx.a + +tags: $(SRCS) ../include/gfx/*.h + ctags $(SRCS) ../include/gfx/*.h + +clean: + -$(RM) $(OBJS) libgfx.a + +depend: + $(CXX_DEPEND) $(SRCS) > Makefile.dep + +-include Makefile.dep diff --git a/debian/fireflies/fireflies-2.08/libgfx/src/arcball.cxx b/debian/fireflies/fireflies-2.08/libgfx/src/arcball.cxx new file mode 100644 index 00000000..3eab9a29 --- /dev/null +++ b/debian/fireflies/fireflies-2.08/libgfx/src/arcball.cxx @@ -0,0 +1,192 @@ +/************************************************************************ + + Arcball rotation control. See the original article + + "Arcball Rotation Control" + by Ken Shoemake <[email protected]> + in "Graphics Gems IV", Academic Press, 1994. + + for more details. + + $Id: arcball.cxx 427 2004-09-27 04:45:31Z garland $ + + ************************************************************************/ + +#include <gfx/arcball.h> +#include <gfx/gl.h> +#include <sstream> + +namespace gfx +{ + +// Converts a unit quaternion to two points on the unit sphere +static void quat_to_sphere(const Quat& q, Vec3& from, Vec3& to) +{ + const Vec3& v = q.vector(); + + double s = sqrt(v[0]*v[0] + v[1]*v[1]); + if( s==0.0 ) + from = Vec3(0.0, 1.0, 0.0); + else + from = Vec3(-v[1]/s, v[0]/s, 0.0); + + to[0] = q.scalar()*from[0] - v[2]*from[1]; + to[1] = q.scalar()*from[1] + v[2]*from[2]; + to[2] = v[0]*from[1] - v[1]*from[0]; + + if(q.scalar() < 0.0) from = -from; +} + +// Converts to points on unit sphere into a unit quaternion +static Quat quat_from_sphere(const Vec3& from, const Vec3& to) +{ + Vec3 v; + v[0] = from[1]*to[2] - from[2]*to[1]; + v[1] = from[2]*to[0] - from[0]*to[2]; + v[2] = from[0]*to[1] - from[1]*to[0]; + + double s = from*to; + + return Quat(v, s); +} + + +Vec3 Arcball::proj_to_sphere(const Vec2& mouse) +{ + Vec2 p = (mouse - ball_ctr) / ball_radius; + double mag = p*p; + + if( mag > 1.0 ) + { + double s = sqrt(mag); + return Vec3(p[0]/s, p[1]/s, 0.0); + } + else + { + return Vec3(p[0], p[1], sqrt(1-mag)); + } +} + +void Arcball::update() +{ + // constrain v_from & v_to to axes here, if necessary + + if( is_dragging ) + { + q_drag = quat_from_sphere(v_from, v_to); + q_now = q_drag * q_down; + } +} + +Arcball::Arcball() +{ + ball_ctr = Vec2(0, 0); + ball_radius = 1.0; + + q_now = Quat::ident(); + q_down = Quat::ident(); + q_drag = Quat::ident(); + + is_dragging = false; +} + +bool Arcball::mouse_down(int *where, int which) +{ + float vp[4]; + glGetFloatv(GL_VIEWPORT, vp); + float W=vp[2], H=vp[3]; + + if( which==1 ) + { + is_dragging = true; + Vec2 v( (2.0 * where[0] - W)/W, (H - 2.0 * where[1])/H ); + v_from = proj_to_sphere(v); + v_to = v_from; + } + + return true; +} + +bool Arcball::mouse_up(int *where, int which) +{ + is_dragging = false; + q_down = q_now; + q_drag = Quat::ident(); + + return false; +} + +bool Arcball::mouse_drag(int *where, int *last, int which) +{ + float vp[4]; + glGetFloatv(GL_VIEWPORT, vp); + float W=vp[2], H=vp[3]; + + float diam = 2*radius; + + if( which==1 ) + { + Vec2 v( (2.0 * where[0] - W)/W, (H - 2.0 * where[1])/H ); + v_to = proj_to_sphere(v); + } + else if( which==2 ) + { + trans[0] += diam * (where[0] - last[0]) / W; + trans[1] += diam * (last[1] - where[1]) / H; + } + else if( which==3 ) + { + trans[2] += 0.02*diam*(where[1] - last[1]); + } + else + return false; + + return true; +} + +void Arcball::apply_transform() +{ + update(); + curquat = conjugate(q_now); + Baseball::apply_transform(); +} + + +void Arcball::update_animation() +{ +} + +void Arcball::get_transform(Vec3 & c, Vec3 &t, Quat & q) +{ + c = ctr; + t = trans; + q = q_now; +} + +void Arcball::set_transform(const Vec3 & c, const Vec3 &t, const Quat & q) +{ + ctr = c; + trans = t; + q_now = q; + q_down = q; + q_drag = q; +} + +void Arcball::write(std::ostream& out) +{ + out << "arcball "; + out << ball_ctr << " " << ball_radius << " "; + out << q_now << " " << q_down << " " << q_drag << std::endl; + Baseball::write(out); +} + +void Arcball::read(std::istream& in) +{ + std::string name; + in >> name; + in >> ball_ctr >> ball_radius; + in >> q_now >> q_down >> q_drag; + Baseball::read(in); +} + +} // namespace gfx diff --git a/debian/fireflies/fireflies-2.08/libgfx/src/baseball.cxx b/debian/fireflies/fireflies-2.08/libgfx/src/baseball.cxx new file mode 100644 index 00000000..8a94cd3c --- /dev/null +++ b/debian/fireflies/fireflies-2.08/libgfx/src/baseball.cxx @@ -0,0 +1,59 @@ +/************************************************************************ + + Common code for ball-based rotation controllers. + + $Id: baseball.cxx 427 2004-09-27 04:45:31Z garland $ + + ************************************************************************/ + +#include <gfx/gfx.h> +#include <gfx/gl.h> +#include <gfx/baseball.h> +#include <sstream> + +namespace gfx +{ + +Baseball::Baseball() +{ + curquat = Quat::ident(); + + trans=0.0; + ctr=0.0; + radius=1; +} + +void Baseball::apply_transform() +{ + glMatrixMode(GL_MODELVIEW); + glPushMatrix(); + glTranslated(trans[0], trans[1], trans[2]); + glTranslated(ctr[0], ctr[1], ctr[2]); + + const Mat4 M=unit_quat_to_matrix(curquat); + glMultMatrixd(M); + + glTranslated(-ctr[0], -ctr[1], -ctr[2]); +} + +void Baseball::unapply_transform() +{ + glMatrixMode(GL_MODELVIEW); + glPopMatrix(); +} + +void Baseball::write(std::ostream& out) +{ + out << "baseball "; + out << curquat << " " << trans << " " << ctr << " " << radius << std::endl; +} + +void Baseball::read(std::istream& in) +{ + std::string name; + + in >> name; + in >> curquat >> trans >> ctr >> radius; +} + +} // namespace gfx diff --git a/debian/fireflies/fireflies-2.08/libgfx/src/color.cxx b/debian/fireflies/fireflies-2.08/libgfx/src/color.cxx new file mode 100644 index 00000000..96fdba72 --- /dev/null +++ b/debian/fireflies/fireflies-2.08/libgfx/src/color.cxx @@ -0,0 +1,128 @@ +#include <gfx/color.h> +#include <gfx/mat3.h> + +namespace gfx +{ + // + // HSV conversion code based on Foley et al (2nd ed. in C, pp. 592-593) + // + + static double max3(double x, double y, double z) + { + if( x>=y && x>=z ) return x; + else if( y>=x && y>=z ) return y; + else return z; + } + + static double min3(double x, double y, double z) + { + if( x<=y && x<=z ) return x; + else if( y<=x && y<=z ) return y; + else return z; + } + + hsvColor RGBtoHSV(const rgbColor& rgb) + { + double r=rgb[0], g=rgb[1], b=rgb[2]; + + double max = max3(r,g,b); + double min = min3(r,g,b); + double delta = max - min; + + double h = -1; // undefined value for case where v outside [0,360] + double v = max; + double s = (max!=0) ? (delta/max) : 0; + + if( s != 0 ) + { + if( r==max ) h = (g-b)/delta; + else if( g==max ) h = 2 + (b-r)/delta; + else if( b==max ) h = 4 + (r-g)/delta; + + h *= 60; + if( h<0 ) h+=360; + } + + return hsvColor(h, s, v); + } + + rgbColor HSVtoRGB(const hsvColor& hsv) + { + double h = hsv[0], s=hsv[1], v=hsv[2]; + + // Unsaturated means pure gray + if(s == 0) return rgbColor(v, v, v); + + if( h==360.0 ) h=0.0; // these are equivalent hues + h /= 60.0; // convert to sector [0, 6) + int i = (int)floor( h ); // integral part of h + float f = h - i; // fractional part of h + + // Compute RGB components + float p = v * ( 1 - s ); + float q = v * ( 1 - s * f ); + float t = v * ( 1 - s * ( 1 - f ) ); + + // Map PQT to RGB based on sector of the color cone + switch( i ) + { + case 0: return rgbColor(v, t, p); break; + case 1: return rgbColor(q, v, p); break; + case 2: return rgbColor(p, v, t); break; + case 3: return rgbColor(p, q, v); break; + case 4: return rgbColor(t, p, v); break; + default: return rgbColor(v, p, q); break; + } + } + + // Paul Haeberli's comments on luminance coefficients: + // + // Where rwgt is 0.3086, gwgt is 0.6094, and bwgt is 0.0820. This + // is the luminance vector. Notice here that we do not use the + // standard NTSC weights of 0.299, 0.587, and 0.114. The NTSC + // weights are only applicable to RGB colors in a gamma 2.2 color + // space. For linear RGB colors the values above are better. + // + // Grafica Obscura -- Matrix Operations for Image Processing + // http://www.sgi.com/misc/grafica/matrix/index.html + // + const rgbColor haeberli_factor(0.3086, 0.6094, 0.0820); + const rgbColor ntsc_factor(0.299, 0.587, 0.114); + + float rgb_luminance_ntsc(const rgbColor& rgb) { return rgb*ntsc_factor; } + float rgb_luminance_alt(const rgbColor& rgb) { return rgb*haeberli_factor; } + + + const Mat3 M_yiq(ntsc_factor, + Vec3(0.596, -0.275, -0.321), + Vec3(0.212, -0.523, 0.311)); + + yiqColor RGBtoYIQ(const rgbColor& rgb) + { + return yiqColor(M_yiq * Vec3(rgb)); + } + + // Matrix conversions taken from the ColorFAQ by Charles Poynton + const Mat3 M_rgb(Vec3( 3.240479, -1.537150, -0.498535), + Vec3(-0.969256, 1.875992, 0.041556), + Vec3( 0.055648, -0.204043, 1.057311)); + + const Mat3 M_xyz(Vec3(0.412453, 0.357580, 0.180423), + Vec3(0.212671, 0.715160, 0.072169), + Vec3(0.019334, 0.119193, 0.950227)); + + // Derived from equations provided by EasyRGB: + // http://www.easyrgb.com/math.php + // + xyzColor RGBtoXYZ(const rgbColor& rgb) + { return xyzColor(M_xyz * Vec3(rgb)); } + + rgbColor XYZtoRGB(const xyzColor& xyz) + { return rgbColor(M_rgb * Vec3(xyz)); } + + xyChromaticity xyz_chromaticity(const xyzColor& xyz) + { + float w = xyz[0] + xyz[1] + xyz[2]; + return xyChromaticity(xyz[0]/w, xyz[1]/w); + } +} diff --git a/debian/fireflies/fireflies-2.08/libgfx/src/geom3d.cxx b/debian/fireflies/fireflies-2.08/libgfx/src/geom3d.cxx new file mode 100644 index 00000000..ff9e8e44 --- /dev/null +++ b/debian/fireflies/fireflies-2.08/libgfx/src/geom3d.cxx @@ -0,0 +1,33 @@ +/************************************************************************ + + Handy 3D geometrical primitives + + $Id: geom3d.cxx 427 2004-09-27 04:45:31Z garland $ + + ************************************************************************/ + +#include <gfx/gfx.h> +#include <gfx/geom3d.h> +#include <gfx/mat4.h> + +namespace gfx +{ + +double tetrahedron_determinant(const Vec3& v0, const Vec3& v1, + const Vec3& v2, const Vec3& v3) +{ + Mat4 A( Vec4(v0, 1), + Vec4(v1, 1), + Vec4(v2, 1), + Vec4(v3, 1)); + + return det(A); +} + +double tetrahedron_volume(const Vec3& v0, const Vec3& v1, + const Vec3& v2, const Vec3& v3) +{ + return fabs(tetrahedron_determinant(v0,v1,v2,v3)/6); +} + +} diff --git a/debian/fireflies/fireflies-2.08/libgfx/src/geom4d.cxx b/debian/fireflies/fireflies-2.08/libgfx/src/geom4d.cxx new file mode 100644 index 00000000..2973f966 --- /dev/null +++ b/debian/fireflies/fireflies-2.08/libgfx/src/geom4d.cxx @@ -0,0 +1,14 @@ +/************************************************************************ + + Handy 4D geometrical primitives + + $Id: geom4d.cxx 427 2004-09-27 04:45:31Z garland $ + + ************************************************************************/ + +#include <gfx/gfx.h> +#include <gfx/geom4d.h> + +namespace gfx +{ +} diff --git a/debian/fireflies/fireflies-2.08/libgfx/src/gltools.cxx b/debian/fireflies/fireflies-2.08/libgfx/src/gltools.cxx new file mode 100644 index 00000000..565a382e --- /dev/null +++ b/debian/fireflies/fireflies-2.08/libgfx/src/gltools.cxx @@ -0,0 +1,192 @@ +/************************************************************************ + + Handy functions for common OpenGL tasks + + $Id: gltools.cxx 446 2005-06-18 13:58:15Z garland $ + + ************************************************************************/ + + +#include <gfx/gfx.h> + +#ifdef HAVE_OPENGL + +#include <gfx/gltools.h> + +#include <cassert> + +namespace gfx +{ + +using std::cerr; +using std::endl; + +GLuint opengl_pick_nil = (~0); +GLuint opengl_pick_zmax = (~0); + +void begin_opengl_pick(int *where, double radius, GLuint *buffer, int size) +{ + GLint vp[4]; + glGetIntegerv(GL_VIEWPORT, vp); + + glSelectBuffer(size, buffer); + glRenderMode(GL_SELECT); + glInitNames(); + glPushName(opengl_pick_nil); + + glMatrixMode(GL_PROJECTION); + glPushMatrix(); // Save the current transformation + glLoadIdentity(); + gluPickMatrix(where[0], vp[3] - where[1], radius, radius, vp); +} + +GLuint complete_opengl_pick(GLuint *buffer) +{ + glMatrixMode(GL_PROJECTION); + glPopMatrix(); // get rid of the pick matrix + glFlush(); + + GLint nhits = glRenderMode(GL_RENDER); + GLuint *hit = NULL; + GLuint hit_nnames = 0; + GLuint zmin = opengl_pick_zmax; + GLuint *ptr = buffer; + + for(int i=0; i<nhits; i++) + { + GLuint nnames = *ptr++; + GLuint cur_zmin = *ptr++; + /* GLuint cur_zmax = */ *ptr++; + + if( cur_zmin < zmin ) + { + zmin = cur_zmin; + hit = ptr; + hit_nnames = nnames; + } + ptr+=nnames; + } + + + buffer[0] = hit_nnames; + if( hit ) + { + for(int k=0; k<hit_nnames; k++) + buffer[k+1] = hit[k]; + + return *hit; + } + else + return opengl_pick_nil; +} + +void report_opengl_stacks() +{ + GLint depth; + + glGetIntegerv(GL_PROJECTION_STACK_DEPTH, &depth); + cerr << " Projection stack depth = " << depth; + glGetIntegerv(GL_MAX_PROJECTION_STACK_DEPTH, &depth); + cerr << " (" << depth << " max)" << endl; + + glGetIntegerv(GL_MODELVIEW_STACK_DEPTH, &depth); + cerr << " ModelView stack depth = " << depth; + glGetIntegerv(GL_MAX_MODELVIEW_STACK_DEPTH, &depth); + cerr << " (" << depth << " max)" << endl; + + glGetIntegerv(GL_TEXTURE_STACK_DEPTH, &depth); + cerr << " Texture stack depth = " << depth; + glGetIntegerv(GL_MAX_TEXTURE_STACK_DEPTH, &depth); + cerr << " (" << depth << " max)" << endl; +} + +void check_opengl_errors(const char *msg) +{ + bool stack_error = false; + + for(GLenum err=glGetError(); err!=GL_NO_ERROR; err=glGetError()) + { + cerr << "GL ERROR "; + if( msg ) cerr << msg; + cerr << ": " << (const char *)gluErrorString(err) << endl; + + if( err==GL_STACK_OVERFLOW || err==GL_STACK_UNDERFLOW ) + stack_error = true; + } + + if( stack_error ) report_opengl_stacks(); +} + +void camera_lookat(const Vec3& min, const Vec3& max, double aspect) +{ + Vec3 up(0, 1, 0); + double fovy = 60.0; + + Vec3 at = (max + min)/2.0; // look at the center of the bbox + double radius = norm(max - at); // radius of a bounding sphere + double d = 3*radius / tan(fovy * M_PI/180.0); + + Vec3 from = at; + from[2] += d; + + double znear = d/20; + double zfar = 10*d; + + glMatrixMode(GL_PROJECTION); + gluPerspective(fovy, aspect, znear, zfar); + + + glMatrixMode(GL_MODELVIEW); + gluLookAt(from[0], from[1], from[2], + at[0], at[1], at[2], + up[0], up[1], up[2]); +} + +void ortho_camera_lookat(const Vec3& min, const Vec3& max, double aspect) +{ + Vec3 up(0, 1, 0); + double fovy = 60.0; + + Vec3 at = (max + min)/2.0; // look at the center of the bbox + double radius = norm(max - at); // radius of a bounding sphere + double d = 3*radius / tan(fovy * M_PI/180.0); + + Vec3 from = at; + from[2] += d; + + Vec3 diag = max-min; + double width = MAX(diag[0], diag[1]); width=MAX(width, diag[2]); + width *= 1.1; + + double znear = d/20; + double zfar = 10*d; + glMatrixMode(GL_PROJECTION); + glOrtho(-aspect/2*width, aspect/2*width, -0.5*width, 0.5*width, znear, zfar); + + glMatrixMode(GL_MODELVIEW); + gluLookAt(from[0], from[1], from[2], + at[0], at[1], at[2], + up[0], up[1], up[2]); +} + +int unproject_pixel(int *pixel, double *world, double z) +{ + GLdouble modelMatrix[16]; + GLdouble projMatrix[16]; + GLint viewport[4]; + + glGetDoublev(GL_PROJECTION_MATRIX, projMatrix); + glGetDoublev(GL_MODELVIEW_MATRIX, modelMatrix); + glGetIntegerv(GL_VIEWPORT, viewport); + + // Notice that we have to correct the y pixel coordinate. GL + // assigns the origin to the lower left corner, while FLTK assigns + // the origin to the upper left corner. + return gluUnProject(pixel[0], viewport[3]-pixel[1], z, + modelMatrix, projMatrix, viewport, + world, world+1, world+2); +} + +} // namespace gfx + +#endif /* HAVE_OPENGL */ diff --git a/debian/fireflies/fireflies-2.08/libgfx/src/gui-mfc.cxx b/debian/fireflies/fireflies-2.08/libgfx/src/gui-mfc.cxx new file mode 100644 index 00000000..a9ab22e5 --- /dev/null +++ b/debian/fireflies/fireflies-2.08/libgfx/src/gui-mfc.cxx @@ -0,0 +1,297 @@ +/************************************************************************ + + MxGUI-like emulation in MFC. + + $Id: gui-mfc.cxx 427 2004-09-27 04:45:31Z garland $ + + ************************************************************************/ + +#include <gfx/win/gui-mfc.h> + +namespace gfx +{ + +static inline MfcGUI *GuiGetApp() { return (MfcGUI *)AfxGetApp(); } + +MfcGUI::MfcGUI() +{ + canvas = NULL; + timer_id = 0; + default_fps = 24.0f; + target_fps = 0.0f; +} + +void MfcGUI::status(const char *fmt, ...) +{ + va_list args; + + va_start(args, fmt); + CString str; + str.FormatV(fmt, args); + va_end(args); + + if( canvas && canvas->status_line ) + canvas->status_line->SetPaneText(0, str); +} + +static VOID CALLBACK cb_timeout(HWND w, UINT msg, UINT id, DWORD system_time) +{ + GuiGetApp()->update_animation(); + GuiGetApp()->canvas->post_redraw(); +} + +void MfcGUI::animate(bool will) +{ + if( will ) + { + target_fps = default_fps; + + float millisecs = 1000 / target_fps; + timer_id = ::SetTimer(NULL, 0, (UINT)millisecs, cb_timeout); + } + else + { + target_fps = 0; + if( timer_id ) ::KillTimer(NULL, timer_id); + timer_id = 0; + } +} + +BOOL MfcGUI::InitInstance() +{ + m_pMainWnd = canvas = new Canvas; + m_pMainWnd->ShowWindow(m_nCmdShow); + m_pMainWnd->UpdateWindow(); + return TRUE; +} + + + +BEGIN_MESSAGE_MAP(Canvas, CFrameWnd) + ON_WM_CREATE() + ON_WM_DESTROY() + ON_WM_SIZE() + + //ON_WM_ACTIVATE() + ON_WM_PAINT() + ON_WM_ERASEBKGND() + + ON_WM_LBUTTONDOWN() + ON_WM_LBUTTONUP() + ON_WM_RBUTTONDOWN() + ON_WM_RBUTTONUP() + ON_WM_MBUTTONDOWN() + ON_WM_MBUTTONUP() + ON_WM_MOUSEMOVE() + ON_WM_CHAR() +END_MESSAGE_MAP() + +Canvas::Canvas() +{ + last_click[0] = last_click[1] = -1; + glcontext = NULL; + pixfmt = 0; + + + Create(NULL, "Sample Application"); + + CMenu menu; + menu.CreateMenu(); + + CMenu popup; + popup.CreatePopupMenu(); + popup.AppendMenu(MF_STRING, 0, "&New\tCtrl+N"); + menu.AppendMenu(MF_POPUP, (UINT)popup.Detach(), "&File"); + + SetMenu(&menu); + menu.Detach(); + + status_line = new CStatusBar(); + status_line->Create(this); + UINT indicator = ID_SEPARATOR; + status_line->SetIndicators(&indicator, 1); +} + +BOOL Canvas::PreCreateWindow(CREATESTRUCT &cs) +{ + // Need to set special style requirements for OpenGL windows + cs.style |= WS_CLIPSIBLINGS | WS_CLIPCHILDREN; + return CFrameWnd::PreCreateWindow(cs); +} + + +int Canvas::OnCreate(LPCREATESTRUCT lpcs) +{ + if( CFrameWnd::OnCreate(lpcs) == -1 ) return -1; + + HWND wnd = GetSafeHwnd(); + HDC dc = ::GetDC(wnd); + + pixfmt = set_pixel_format(dc); + if( !pixfmt ) + MessageBox("Failed to set up proper pixel format."); + + glcontext = create_glcontext(dc); + if( !glcontext ) + MessageBox("Failed to create GL context."); + + return 0; +} + +void Canvas::OnPaint() +{ + CPaintDC dc(this); + + HDC hdc = dc.GetSafeHdc(); + make_current(hdc); + + GuiGetApp()->draw_contents(); + + finish(hdc); +} + +void Canvas::OnDestroy() +{ + if( wglGetCurrentContext() ) + wglMakeCurrent(NULL, NULL); + + if( glcontext ) + { + wglDeleteContext(glcontext); + glcontext = NULL; + } + + CFrameWnd::OnDestroy(); +} + +void Canvas::OnSize(UINT type, int width, int height) +{ + CFrameWnd::OnSize(type, width, height); + glViewport(0, 0, width, height); + GuiGetApp()->setup_for_drawing(); +} + +BOOL Canvas::OnEraseBkgnd(CDC *dc) +{ + return FALSE; // Don't want background to be erased thank you +} + +void Canvas::immediate_redraw() +{ + SendMessage(WM_PAINT); +} + +void Canvas::post_redraw() +{ + InvalidateRect(NULL, FALSE); +} + +int Canvas::decode_mouse_button(UINT flags, int which) +{ + if( which==0 ) + { + if( flags&MK_MBUTTON ) which = 2; + else if( flags&MK_LBUTTON ) which = 1; + else if( flags&MK_RBUTTON ) which = 3; + } + + // Emulate middle button by double click + if( flags&MK_LBUTTON && flags&MK_RBUTTON ) which = 2; + + return which; +} + +void Canvas::do_mouse_down(int which, UINT flags, CPoint point) +{ + which = decode_mouse_button(flags, which); + + int where[2]; where[0]=point.x; where[1]=point.y; + last_click[0]=point.x; last_click[1]=point.y; + + SetCapture(); + if( GuiGetApp()->mouse_down(where, which) ) + post_redraw(); +} + +void Canvas::do_mouse_up(int which, UINT flags, CPoint point) +{ + which = decode_mouse_button(flags, which); + + int where[2]; where[0]=point.x; where[1]=point.y; + + ReleaseCapture(); + if( GuiGetApp()->mouse_up(where, which) ) + post_redraw(); +} + +void Canvas::do_mouse_move(UINT flags, CPoint point) +{ + int which = decode_mouse_button(flags); + + int where[2]; where[0]=point.x; where[1]=point.y; + + if( GuiGetApp()->mouse_drag(where, last_click, which) ) + post_redraw(); + + last_click[0]=point.x; last_click[1]=point.y; +} + +// Each mouse handler is given a set of flags 'f' and a position 'p' +void Canvas::OnLButtonDown(UINT f, CPoint p) { do_mouse_down(1, f, p); } +void Canvas::OnRButtonDown(UINT f, CPoint p) { do_mouse_down(3, f, p); } +void Canvas::OnMButtonDown(UINT f, CPoint p) { do_mouse_down(2, f, p); } +void Canvas::OnLButtonUp(UINT f, CPoint p) { do_mouse_up(1, f, p); } +void Canvas::OnRButtonUp(UINT f, CPoint p) { do_mouse_up(3, f, p); } +void Canvas::OnMButtonUp(UINT f, CPoint p) { do_mouse_up(2, f, p); } +void Canvas::OnMouseMove(UINT f, CPoint p) { do_mouse_move(f, p); } + +void Canvas::OnChar(UINT ch, UINT repcount, UINT flags) +{ + GuiGetApp()->key_press(ch); +} + +#if 0 +void Canvas::OnActivate(UINT state, CWnd *other, BOOL is_minimized) +{ + if( state==WA_ACTIVE || state==WA_CLICKACTIVE ) + { + wglMakeCurrent(dc, glcontext); + } +} +#endif + + + +/***************************************** + +NOTES: + + AfxGetApp() returns a CWinApp* to the current application + AfxGetAppName() returns a const char* to application name + + + ****************************************/ + +void MfcGUI::setup_for_drawing() +{ + status("Hello There"); +} + +void MfcGUI::draw_contents() +{ + glClearColor(0.8f, 0.2f, 0.2f, 0.0f); + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); +} + +bool MfcGUI::mouse_down(int *where, int which) { return false; } + +bool MfcGUI::mouse_up(int *where, int which) { return false; } + +bool MfcGUI::mouse_drag(int *where, int *last, int which) { return false; } + +bool MfcGUI::key_press(int key) { return false; } + +void MfcGUI::update_animation() { } + + +} // namespace gfx diff --git a/debian/fireflies/fireflies-2.08/libgfx/src/gui.cxx b/debian/fireflies/fireflies-2.08/libgfx/src/gui.cxx new file mode 100644 index 00000000..7102aed2 --- /dev/null +++ b/debian/fireflies/fireflies-2.08/libgfx/src/gui.cxx @@ -0,0 +1,509 @@ +/************************************************************************ + + MxGUI + + $Id: gui.cxx 447 2005-06-18 14:01:16Z garland $ + + ************************************************************************/ + +#include <gfx/gfx.h> + +#ifdef HAVE_FLTK + +#include <gfx/gui.h> +#include <gfx/raster.h> + +#include <FL/Fl_File_Chooser.H> +#include <FL/fl_ask.H> + +#include <cstdio> +#include <cstdarg> +#include <fstream> + +namespace gfx +{ + +MxGUI *MxGUI::current = NULL; + +MxGLCanvas::MxGLCanvas(int x, int y, int w, int h, const char *l) + : Fl_Gl_Window(x, y, w, h, l) +{ + last_click[0] = last_click[1] = -1; + app = NULL; +} + +void MxGLCanvas::attach_app(MxGUI *a) +{ + if( !app ) + app = a; +} + +void MxGLCanvas::resize(int x, int y, int w, int h) +{ + Fl_Gl_Window::resize(x, y, w, h); + + if( shown() ) + { + make_current(); + glViewport(0, 0, w, h); + invalidate(); + } +} + +void MxGLCanvas::draw() +{ + if( !valid() ) + { + valid(1); + if(app) app->setup_for_drawing(); + } + + if(app) app->draw_contents(); +} + +int MxGLCanvas::handle(int event) +{ + bool need_redraw = false; + + int where[2]; where[0] = Fl::event_x(); where[1] = Fl::event_y(); + + // NOTE: Normally, we examine event_state() rather than + // event_button() because it is valid no matter what the generating + // event whereas event_button() is only valid for PUSH and RELEASE + // events. However, since event_state() only tells us what buttons + // are *pressed*, we need to revert to event_button() on RELEASE + // events. + // + int which = Fl::event_button(); + + if( event != FL_RELEASE ) + { + if( Fl::event_state(FL_BUTTON1) ) + { + // emulate middle button by combination of left & right buttons + if( Fl::event_state(FL_BUTTON3) ) which = 2; + else which = 1; + } + else if( Fl::event_state(FL_BUTTON2) ) which = 2; + else if( Fl::event_state(FL_BUTTON3) ) which = 3; + } + + switch( event ) + { + case FL_PUSH: + need_redraw = app && app->mouse_down(where, which); + last_click[0]=where[0]; last_click[1]=where[1]; + break; + + case FL_RELEASE: + need_redraw = app && app->mouse_up(where, which); + break; + + case FL_DRAG: + need_redraw = app && app->mouse_drag(where, last_click, which); + last_click[0]=where[0]; last_click[1]=where[1]; + break; + + case FL_FOCUS: + case FL_UNFOCUS: + // Do nothing special + break; + + case FL_KEYBOARD: + if( !app || !app->key_press(Fl::event_key()) ) + return 0; + break; + + default: + return Fl_Gl_Window::handle(event); + } + + if( need_redraw ) + redraw(); + + return 1; +} + +//////////////////////////////////////////////////////////////////////// +// +// Default menu system. Although the application can completely +// override this, it's expected that most programs will just add their +// own additional entries. +// + +void MxGUI::cb_new() { } + +void MxGUI::cb_exit() { cleanup_for_exit(); exit(0); } + +void MxGUI::cb_animate(Fl_Menu_ *m) + { animate(m->mvalue()->value()!=0); } + +void MxGUI::cb_fps() +{ + // Convert default_fps to a string + static char fps[64]; sprintf(fps, "%.1f", default_fps); + + const char *result = fl_input("Number of frames per second to draw", fps); + if( result ) + { + default_fps = atof(result); + if( target_fps>0 ) target_fps=default_fps; + } +} + +void MxGUI::cb_snapshot(int format) +{ + canvas->redraw(); // don't want to snap menu + snapshot_to_file(format); // snapshot what's drawn +} + +void MxGUI::cb_vga_size(int xw) +{ + if( toplevel->resizable() ) + resize_canvas(xw, (3*xw)/4); +} + +void MxGUI::cb_hdtv_size(int xw) +{ + if( toplevel->resizable() ) + MxGUI::current->resize_canvas(xw, (9*xw)/16); +} + +void MxGUI::cb_dv_size(int xw) +{ + if( toplevel->resizable() ) + MxGUI::current->resize_canvas(xw, (2*xw)/3); +} + +void MxGUI::cb_toggle(Fl_Menu_ *m, bool *flag) +{ + *flag = m->mvalue()->value()!=0; + current->canvas->redraw(); +} + +void MxGUI::cb_save_view_to_file() { save_view_to_file(); } +void MxGUI::cb_load_view_from_file() { load_view_from_file(); } + +bool MxGUI::save_view_to_file() +{ + fl_alert("This application has not defined a scheme for saving the view."); + return false; +} + +bool MxGUI::load_view_from_file() +{ + fl_alert("This application has not defined a scheme for loading the view."); + return false; +} + +int MxGUI::add_menu(const std::string& s, int key, Fl_Callback *cb, int flags) +{ + return menu_bar->add(s.c_str(), key, cb, this, flags); +} + +int MxGUI::add_toggle_menu(const std::string& s, int key, bool& val, int flags) +{ + return menu_bar->add(s.c_str(), key, (Fl_Callback *)cb_toggle, &val, + FL_MENU_TOGGLE|(val?FL_MENU_VALUE:0)|flags); +} + +//////////////////////////////////////////////////////////////////////// + +#ifdef __CYGWIN__ +extern "C"{ + extern int mainCRTStartup(); + int WinMainCRTStartup() { mainCRTStartup(); return 1; } +} +#endif + +MxGUI::MxGUI() +{ + canvas = NULL; + status_line = NULL; + default_fps = 24.0f; + target_fps = 0.0f; + MxGUI::current = this; +} + +Fl_Window *MxGUI::create_window(int xw, int yw, int pad) +{ + int yfill = 0; + + Fl_Window *w = new Fl_Window(xw+2*pad, 0); + toplevel = w; + w->box(FL_UP_BOX); + + menu_bar = new Fl_Menu_Bar(0, yfill, w->w(), 30); + menu_bar->menu(menu_layout); + yfill += menu_bar->h(); + + add_upper_controls(yfill, pad); + + yfill += pad; + canvas = new MxGLCanvas(pad, yfill, xw, yw); + canvas->box(FL_DOWN_FRAME); + canvas->attach_app(this); + + int glmode = 0; + if(canvas->can_do(FL_RGB8)) glmode|=FL_RGB8; + if(canvas->can_do(FL_DOUBLE)) glmode|=FL_DOUBLE; + if(canvas->can_do(FL_DEPTH)) glmode|=FL_DEPTH; + if(canvas->can_do(FL_ALPHA)) glmode|=FL_ALPHA; + if(glmode) canvas->mode(glmode); + + yfill += canvas->h(); + + add_lower_controls(yfill, pad); + + yfill += pad; + status_line = new Fl_Output(pad, yfill, xw, 25); + status_line->color(48); + status_line->labeltype(FL_NO_LABEL); + yfill += status_line->h(); + + w->end(); + + w->size(w->w(), yfill+pad); // adjust window height + w->resizable(*canvas); // resize canvas with window + + // These are used by resize_canvas() to resize the window based on + // the target size of the canvas. + w_offset = w->w() - xw; + h_offset = w->h() - yw; + + return w; +} + +static +int arg_redirect(int argc, char **argv, int& index) +{ + MxGUI *app = MxGUI::current; + return app?app->cmdline_option(argc, argv, index):0; +} + +void MxGUI::initialize(int argc, char **argv, Fl_Menu_Item *m, int xw, int yw) +{ + Fl::visual(FL_RGB8); + menu_layout = m?m:NULL; + + int index = 0; + if( argv ) + Fl::args(argc, argv, index, arg_redirect); + + create_window(xw, yw); + toplevel->label("Graphics Program"); + + // Add dynamic entries + typedef MxBinder<MxGUI> CB; + std::string snap = "&File/Snapshot to/"; + std::string view = "&View/"; + std::string size = "&View/Display &size/"; + + add_menu("&File/&New", FL_CTRL+'n', CB::to<&MxGUI::cb_new>); + +#if defined(HAVE_LIBPNG) + add_menu(snap+"&PNG", + FL_CTRL+'p', CB::to_arg<&MxGUI::cb_snapshot, IMG_PNG>); +#endif +#if defined(HAVE_LIBTIFF) + add_menu("&File/Snapshot to/&TIFF", + FL_CTRL+'P', CB::to_arg<&MxGUI::cb_snapshot, IMG_TIFF>); +#endif +#if defined(HAVE_LIBJPEG) + add_menu("&File/Snapshot to/&JPEG", 0, CB::to_arg<&MxGUI::cb_snapshot, IMG_JPEG>); +#endif + add_menu("&File/Snapshot to/PP&M", 0, CB::to_arg<&MxGUI::cb_snapshot, IMG_PNM>); + + add_menu("&File/E&xit", FL_CTRL+'q', CB::to<&MxGUI::cb_exit>); + + add_menu(view+"Animation speed ...", FL_CTRL+'r', CB::to<&MxGUI::cb_fps>); + add_menu(view+"&Animate", FL_CTRL+'a', CB::to_menu<&MxGUI::cb_animate>, FL_MENU_TOGGLE); + + add_menu(view+"Save view ...", 0, CB::to<&MxGUI::cb_save_view_to_file>); + add_menu(view+"Load view ...", 0, CB::to<&MxGUI::cb_load_view_from_file>); + + add_menu(size+"320x240",0, CB::to_arg<&MxGUI::cb_vga_size, 320>); + add_menu(size+"640x480",0, CB::to_arg<&MxGUI::cb_vga_size, 640>); + add_menu(size+"800x600",0, CB::to_arg<&MxGUI::cb_vga_size, 800>); + add_menu(size+"1024x768",0,CB::to_arg<&MxGUI::cb_vga_size, 1024>,FL_MENU_DIVIDER); + add_menu(size+"720x480",0, CB::to_arg<&MxGUI::cb_dv_size, 720>,FL_MENU_DIVIDER); + + add_menu(size+"480x270",0, CB::to_arg<&MxGUI::cb_hdtv_size, 480>); + add_menu(size+"960x540",0, CB::to_arg<&MxGUI::cb_hdtv_size, 960>); + add_menu(size+"1920x1080",0, CB::to_arg<&MxGUI::cb_hdtv_size, 1920>); + + if( argv ) + { + if( index==argc ) + cmdline_file(NULL); + else + for(; index<argc; index++) + cmdline_file(argv[index]); + } +} + +int MxGUI::run() +{ + toplevel->show(); + return Fl::run(); +} + +static +void cb_timeout(void *) +{ + MxGUI *app = MxGUI::current; + + if(!app || app->target_fps==0.0f) return; + + app->update_animation(); + app->canvas->redraw(); + Fl::repeat_timeout(1/app->target_fps, cb_timeout); +} + +void MxGUI::animate(bool will) +{ + if( will ) + { + target_fps = default_fps; + Fl::add_timeout(1/target_fps, cb_timeout); + } + else + target_fps = 0; +} + +int MxGUI::status(const char *fmt, ...) +{ + static char strbuf[1000]; + + va_list args; + va_start(args, fmt); + int n = vsprintf(strbuf, fmt, args); + + status_line->value(strbuf); + return n; +} + +bool MxGUI::snapshot_to_file(int format, const char *filenamep) +{ + canvas->make_current(); + Fl::flush(); + + GLint vp[4]; glGetIntegerv(GL_VIEWPORT, vp); + + glPushAttrib(GL_PIXEL_MODE_BIT); + glReadBuffer(GL_FRONT); + glPixelStorei(GL_PACK_ALIGNMENT, 1); + + int nchan = 3; + if( format==IMG_PNG || format==IMG_TIFF ) + // Currently, only TIFF and PNG writers support the alpha channel + nchan = 4; + + ByteRaster img(vp[2]-vp[0], vp[3]-vp[1], nchan); + glReadPixels(vp[0],vp[1],vp[2],vp[3], + nchan==4 ? GL_RGBA : GL_RGB, + GL_UNSIGNED_BYTE,img.head()); + + glPopAttrib(); + img.vflip(); + + if ( filenamep == NULL ) + { + char msg[80], pat[8], name[16]; + sprintf(msg, "Save %s Snapshot", image_type_name(format)); + sprintf(pat, "*.%s", image_type_ext(format)); + sprintf(name, "snap.%s", image_type_ext(format)); + + filenamep = fl_file_chooser(msg, pat, name); + } + + if( filenamep ) + return write_image(filenamep, img, format); + else + return false; +} + +void MxGUI::lock_size() +{ + toplevel->size_range(toplevel->w(), toplevel->h(), + toplevel->w(), toplevel->h()); + toplevel->resizable(NULL); +} + +void MxGUI::unlock_size() +{ + toplevel->resizable(*canvas); + toplevel->size_range(100, 100, 0, 0); +} + + +void MxGUI::resize_canvas(int width, int height) +{ + toplevel->size(width+w_offset, height+h_offset); + toplevel->redraw(); +} + +//////////////////////////////////////////////////////////////////////// + +void MxGUI::setup_for_drawing() +{ + glClearColor(0.65f, 0.65f, 0.65f, 0.0f); + + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + gluOrtho2D(-1.0, 1.0, -1.0, 1.0); +} + +void MxGUI::draw_contents() +{ + glClear(GL_COLOR_BUFFER_BIT); + + glMatrixMode(GL_MODELVIEW); + glPushMatrix(); + glLoadIdentity(); + + glColor3f(0.0, 0.0, 0.0); + glBegin(GL_LINES); + glVertex2f(-1.0, 0.0); glVertex2f(1.0, 0.0); + glVertex2f(0.0, -1.0); glVertex2f(0.0, 1.0); + glEnd(); + + glPopMatrix(); +} + +void MxGUI::update_animation() +{ +} + +bool MxGUI::mouse_down(int *where, int which) +{ + return false; +} + +bool MxGUI::mouse_up(int *where, int which) +{ + return false; +} + +bool MxGUI::mouse_drag(int *where, int *last, int which) +{ + return false; +} + +bool MxGUI::key_press(int key) +{ + return false; +} + +int MxGUI::cmdline_option(int argc, char **argv, int& index) +{ + return 0; +} + +void MxGUI::cmdline_file(const char *file) +{ +} + +} // namespace gfx + +#endif /* HAVE_FLTK */ diff --git a/debian/fireflies/fireflies-2.08/libgfx/src/mat2.cxx b/debian/fireflies/fireflies-2.08/libgfx/src/mat2.cxx new file mode 100644 index 00000000..42ed3e1a --- /dev/null +++ b/debian/fireflies/fireflies-2.08/libgfx/src/mat2.cxx @@ -0,0 +1,89 @@ +/************************************************************************ + + 2x2 Matrix class + + $Id: mat2.cxx 427 2004-09-27 04:45:31Z garland $ + + ************************************************************************/ + +#include <gfx/gfx.h> +#include <gfx/mat2.h> + +namespace gfx +{ + +Mat2 Mat2::I() { return Mat2(1,0, 0,1); } + +Mat2 &Mat2::diag(double d) +{ + row[0][0] = d; row[0][1] = 0; + row[1][0] = 0; row[1][1] = d; + + return *this; +} + +Mat2 operator*(const Mat2 &n, const Mat2& m) +{ + Mat2 A; + int i,j; + + for(i=0;i<2;i++) + for(j=0;j<2;j++) + A(i,j) = n[i]*m.col(j); + + return A; +} + +double invert(Mat2 &inv, const Mat2 &m) +{ + double d = det(m); + + if( d==0.0 ) + return 0.0; + + inv(0, 0) = m(1,1)/d; + inv(0, 1) = -m(0,1)/d; + inv(1, 0) = -m(1,0)/d; + inv(1, 1) = m(0,0)/d; + + return d; +} + +bool eigenvalues(const Mat2& M, Vec2& evals) +{ + double B = -M(0,0)-M(1,1); + double C = det(M); + + double dis = B*B - 4.0*C; + if( dis<FEQ_EPS ) + return false; + else + { + double s = sqrt(dis); + + evals[0] = 0.5*(-B + s); + evals[1] = 0.5*(-B - s); + return true; + } +} + +bool eigenvectors(const Mat2& M, const Vec2& evals, Vec2 evecs[2]) +{ + evecs[0] = Vec2(-M(0,1), M(0,0)-evals[0]); + evecs[1] = Vec2(-M(0,1), M(0,0)-evals[1]); + + unitize(evecs[0]); + unitize(evecs[1]); + + return true; +} + +bool eigen(const Mat2& M, Vec2& evals, Vec2 evecs[2]) +{ + bool result = eigenvalues(M, evals); + if( result ) + eigenvectors(M, evals, evecs); + return result; +} + +} // namespace gfx diff --git a/debian/fireflies/fireflies-2.08/libgfx/src/mat3.cxx b/debian/fireflies/fireflies-2.08/libgfx/src/mat3.cxx new file mode 100644 index 00000000..eda9fe3c --- /dev/null +++ b/debian/fireflies/fireflies-2.08/libgfx/src/mat3.cxx @@ -0,0 +1,82 @@ +/************************************************************************ + + 3x3 Matrix class + + $Id: mat3.cxx 427 2004-09-27 04:45:31Z garland $ + + ************************************************************************/ + +#include <gfx/gfx.h> +#include <gfx/mat3.h> + +namespace gfx +{ + +Mat3 Mat3::I() { return Mat3(Vec3(1,0,0), Vec3(0,1,0), Vec3(0,0,1)); } + +Mat3 &Mat3::diag(double d) +{ + *this = 0.0; + row[0][0] = row[1][1] = row[2][2] = d; + return *this; +} + +Mat3 diag(const Vec3& v) +{ + return Mat3(Vec3(v[0],0,0), Vec3(0,v[1],0), Vec3(0,0,v[2])); +} + +Mat3 Mat3::outer_product(const Vec3& v) +{ + Mat3 A; + double x=v[0], y=v[1], z=v[2]; + + A(0,0) = x*x; A(0,1) = x*y; A(0,2) = x*z; + A(1,0)=A(0,1); A(1,1) = y*y; A(1,2) = y*z; + A(2,0)=A(0,2); A(2,1)=A(1,2); A(2,2) = z*z; + + return A; +} + +Mat3 Mat3::outer_product(const Vec3& u, const Vec3& v) +{ + Mat3 A; + + for(int i=0; i<3; i++) + for(int j=0; j<3; j++) + A(i, j) = u[i]*v[j]; + + return A; +} + +Mat3 operator*(const Mat3& n, const Mat3& m) +{ + Mat3 A; + + for(int i=0;i<3;i++) + for(int j=0;j<3;j++) + A(i,j) = n[i]*m.col(j); + + return A; +} + +Mat3 adjoint(const Mat3& m) +{ + return Mat3(m[1]^m[2], + m[2]^m[0], + m[0]^m[1]); +} + +double invert(Mat3& inv, const Mat3& m) +{ + Mat3 A = adjoint(m); + double d = A[0] * m[0]; + + if( d==0.0 ) + return 0.0; + + inv = transpose(A) / d; + return d; +} + +} // namespace gfx diff --git a/debian/fireflies/fireflies-2.08/libgfx/src/mat4.cxx b/debian/fireflies/fireflies-2.08/libgfx/src/mat4.cxx new file mode 100644 index 00000000..0ad2a271 --- /dev/null +++ b/debian/fireflies/fireflies-2.08/libgfx/src/mat4.cxx @@ -0,0 +1,206 @@ +/************************************************************************ + + 4x4 Matrix class + + $Id: mat4.cxx 427 2004-09-27 04:45:31Z garland $ + + ************************************************************************/ + +#include <gfx/gfx.h> +#include <gfx/mat4.h> + +namespace gfx +{ + +Mat4 Mat4::I() +{ + return Mat4(Vec4(1,0,0,0),Vec4(0,1,0,0),Vec4(0,0,1,0),Vec4(0,0,0,1)); +} + +Mat4 translation_matrix(const Vec3& d) +{ + return Mat4(Vec4(1, 0, 0, d[0]), + Vec4(0, 1, 0, d[1]), + Vec4(0, 0, 1, d[2]), + Vec4(0, 0, 0, 1)); +} + +Mat4 scaling_matrix(const Vec3& s) +{ + return Mat4(Vec4(s[0], 0, 0, 0), + Vec4(0, s[1], 0, 0), + Vec4(0, 0, s[2], 0), + Vec4(0, 0, 0, 1)); +} + +Mat4 rotation_matrix_rad(double theta, const Vec3& axis) +{ + double c=cos(theta), s=sin(theta), + xx=axis[0]*axis[0], yy=axis[1]*axis[1], zz=axis[2]*axis[2], + xy=axis[0]*axis[1], yz=axis[1]*axis[2], xz=axis[0]*axis[2]; + + double xs=axis[0]*s, ys=axis[1]*s, zs=axis[2]*s; + + Mat4 M; + M(0,0)=xx*(1-c)+c; M(0,1)=xy*(1-c)-zs; M(0,2)=xz*(1-c)+ys; M(0,3) = 0; + M(1,0)=xy*(1-c)+zs; M(1,1)=yy*(1-c)+c; M(1,2)=yz*(1-c)-xs; M(1,3)=0; + M(2,0)=xz*(1-c)-ys; M(2,1)=yz*(1-c)+xs; M(2,2)=zz*(1-c)+c; M(2,3)=0; + M(3,0)=0; M(3,1)=0; M(3,2)=0; M(3,3)=1; + + return M; +} + +Mat4 perspective_matrix(double fovy, double aspect, double zmin, double zmax) +{ + double A, B; + Mat4 M; + + if( zmax==0.0 ) + { + A = B = 1.0; + } + else + { + A = (zmax+zmin)/(zmin-zmax); + B = (2*zmax*zmin)/(zmin-zmax); + } + + double f = 1.0/tan(fovy*M_PI/180.0/2.0); + M(0,0) = f/aspect; + M(1,1) = f; + M(2,2) = A; + M(2,3) = B; + M(3,2) = -1; + M(3,3) = 0; + + return M; +} + +Mat4 lookat_matrix(const Vec3& from, const Vec3& at, const Vec3& v_up) +{ + Vec3 up = v_up; unitize(up); + Vec3 f = at - from; unitize(f); + + Vec3 s=f^up; + Vec3 u=s^f; + + // NOTE: These steps are left out of the GL man page!! + unitize(s); + unitize(u); + + Mat4 M(Vec4(s, 0), Vec4(u, 0), Vec4(-f, 0), Vec4(0, 0, 0, 1)); + + return M * translation_matrix(-from); +} + +Mat4 viewport_matrix(double w, double h) +{ + return scaling_matrix(Vec3(w/2.0, -h/2.0, 1)) * + translation_matrix(Vec3(1, -1, 0)); +} + +Mat4 operator*(const Mat4& n, const Mat4& m) +{ + Mat4 A; + int i,j; + + for(i=0;i<4;i++) + for(j=0;j<4;j++) + A(i,j) = n[i]*m.col(j); + + return A; +} + +Mat4 adjoint(const Mat4& m) +{ + Mat4 A; + + A[0] = cross( m[1], m[2], m[3]); + A[1] = cross(-m[0], m[2], m[3]); + A[2] = cross( m[0], m[1], m[3]); + A[3] = cross(-m[0], m[1], m[2]); + + return A; +} + +double invert_cramer(Mat4& inv, const Mat4& m) +{ + Mat4 A = adjoint(m); + double d = A[0] * m[0]; + + if( d==0.0 ) + return 0.0; + + inv = transpose(A) / d; + return d; +} + + + +// Matrix inversion code for 4x4 matrices using Gaussian elimination +// with partial pivoting. This is a specialized version of a +// procedure originally due to Paul Heckbert <[email protected]>. +// +// Returns determinant of A, and B=inverse(A) +// If matrix A is singular, returns 0 and leaves trash in B. +// +#define SWAP(a, b, t) {t = a; a = b; b = t;} +double invert(Mat4& B, const Mat4& m) +{ + Mat4 A = m; + int i, j, k; + double max, t, det, pivot; + + /*---------- forward elimination ----------*/ + + for (i=0; i<4; i++) /* put identity matrix in B */ + for (j=0; j<4; j++) + B(i, j) = (double)(i==j); + + det = 1.0; + for (i=0; i<4; i++) { /* eliminate in column i, below diag */ + max = -1.; + for (k=i; k<4; k++) /* find pivot for column i */ + if (fabs(A(k, i)) > max) { + max = fabs(A(k, i)); + j = k; + } + if (max<=0.) return 0.; /* if no nonzero pivot, PUNT */ + if (j!=i) { /* swap rows i and j */ + for (k=i; k<4; k++) + SWAP(A(i, k), A(j, k), t); + for (k=0; k<4; k++) + SWAP(B(i, k), B(j, k), t); + det = -det; + } + pivot = A(i, i); + det *= pivot; + for (k=i+1; k<4; k++) /* only do elems to right of pivot */ + A(i, k) /= pivot; + for (k=0; k<4; k++) + B(i, k) /= pivot; + /* we know that A(i, i) will be set to 1, so don't bother to do it */ + + for (j=i+1; j<4; j++) { /* eliminate in rows below i */ + t = A(j, i); /* we're gonna zero this guy */ + for (k=i+1; k<4; k++) /* subtract scaled row i from row j */ + A(j, k) -= A(i, k)*t; /* (ignore k<=i, we know they're 0) */ + for (k=0; k<4; k++) + B(j, k) -= B(i, k)*t; + } + } + + /*---------- backward elimination ----------*/ + + for (i=4-1; i>0; i--) { /* eliminate in column i, above diag */ + for (j=0; j<i; j++) { /* eliminate in rows above i */ + t = A(j, i); /* we're gonna zero this guy */ + for (k=0; k<4; k++) /* subtract scaled row i from row j */ + B(j, k) -= B(i, k)*t; + } + } + + return det; +} + +} // namespace gfx diff --git a/debian/fireflies/fireflies-2.08/libgfx/src/quat.cxx b/debian/fireflies/fireflies-2.08/libgfx/src/quat.cxx new file mode 100644 index 00000000..a3db2a68 --- /dev/null +++ b/debian/fireflies/fireflies-2.08/libgfx/src/quat.cxx @@ -0,0 +1,136 @@ +/************************************************************************ + + Quaternion class + + $Id: quat.cxx 427 2004-09-27 04:45:31Z garland $ + + ************************************************************************/ + +#include <gfx/quat.h> + +namespace gfx +{ + +// Based on code from the Appendix of +// Quaternion Calculus for Computer Graphics, by Ken Shoemake +// Computes the exponential of a quaternion, assuming scalar part w=0 +Quat exp(const Quat& q) +{ + double theta = norm(q.vector()); + double c = cos(theta); + + if( theta > FEQ_EPS ) + { + double s = sin(theta) / theta; + return Quat( s*q.vector(), c); + } + else + return Quat(q.vector(), c); +} + +// Based on code from the Appendix of +// Quaternion Calculus for Computer Graphics, by Ken Shoemake +// Computes the natural logarithm of a UNIT quaternion +Quat log(const Quat& q) +{ + double scale = norm(q.vector()); + double theta = atan2(scale, q.scalar()); + + if( scale > 0.0 ) scale=theta/scale; + + return Quat(scale*q.vector(), 0.0); +} + +Quat axis_to_quat(const Vec3& a, double phi) +{ + Vec3 u = a; + unitize(u); + + double s = sin(phi/2.0); + return Quat(u[0]*s, u[1]*s, u[2]*s, cos(phi/2.0)); +} + +Mat4 quat_to_matrix(const Quat& q) +{ + Mat4 M; + + const double x = q.vector()[0]; + const double y = q.vector()[1]; + const double z = q.vector()[2]; + const double w = q.scalar(); + const double s = 2/norm(q); + + M(0,0)=1-s*(y*y+z*z); M(0,1)=s*(x*y-w*z); M(0,2)=s*(x*z+w*y); M(0,3)=0; + M(1,0)=s*(x*y+w*z); M(1,1)=1-s*(x*x+z*z); M(1,2)=s*(y*z-w*x); M(1,3)=0; + M(2,0)=s*(x*z-w*y); M(2,1)=s*(y*z+w*x); M(2,2)=1-s*(x*x+y*y); M(2,3)=0; + M(3,0)=0; M(3,1)=0; M(3,2)=0; M(3,3)=1; + + return M; +} + +Mat4 unit_quat_to_matrix(const Quat& q) +{ + Mat4 M; + + const double x = q.vector()[0]; + const double y = q.vector()[1]; + const double z = q.vector()[2]; + const double w = q.scalar(); + + M(0,0)=1-2*(y*y+z*z); M(0,1)=2*(x*y-w*z); M(0,2)=2*(x*z+w*y); M(0,3)=0; + M(1,0)=2*(x*y+w*z); M(1,1)=1-2*(x*x+z*z); M(1,2)=2*(y*z-w*x); M(1,3)=0; + M(2,0)=2*(x*z-w*y); M(2,1)=2*(y*z+w*x); M(2,2)=1-2*(x*x+y*y); M(2,3)=0; + M(3,0)=0; M(3,1)=0; M(3,2)=0; M(3,3)=1; + + return M; +} + +Quat slerp(const Quat& from, const Quat& to, double t) +{ + const Vec3& v_from = from.vector(); + const Vec3& v_to = to.vector(); + const double s_from = from.scalar(); + const double s_to = to.scalar(); + + double cosine = v_from*v_to + s_from*s_to; + + if( (1+cosine) < FEQ_EPS ) + { + // The quaternions are (nearly) diametrically opposed. We + // treat this specially (based on suggestion in Watt & Watt). + // + double A = sin( (1-t)*M_PI/2.0 ); + double B = sin( t*M_PI/2.0 ); + + return Quat( A*v_from[0] + B*(-v_from[1]), + A*v_from[1] + B*(v_from[0]), + A*v_from[2] + B*(-s_from), + A*s_from + B*(v_from[2]) ); + } + + double A, B; + if( (1-cosine) < FEQ_EPS ) + { + // The quaternions are very close. Approximate with normal + // linear interpolation. This is cheaper and avoids division + // by very small numbers. + // + A = 1.0 - t; + B = t; + } + else + { + // This is the normal case. Perform SLERP. + // + double theta = acos(cosine); + double sine = sqrt(1 - cosine*cosine); + + A = sin( (1-t)*theta ) / sine; + B = sin( t*theta ) / sine; + + } + + return Quat( A*v_from + B*v_to, A*s_from + B*s_to); +} + +} // namespace gfx diff --git a/debian/fireflies/fireflies-2.08/libgfx/src/raster-jpeg.cxx b/debian/fireflies/fireflies-2.08/libgfx/src/raster-jpeg.cxx new file mode 100644 index 00000000..d6612ed4 --- /dev/null +++ b/debian/fireflies/fireflies-2.08/libgfx/src/raster-jpeg.cxx @@ -0,0 +1,113 @@ +/************************************************************************ + + JPEG image file format support. + + The I/O code in this file was originally based on the example.c + skeleton code distributed with the JPEG library (release 6b). + + $Id: raster-jpeg.cxx 427 2004-09-27 04:45:31Z garland $ + + ************************************************************************/ + +#include <gfx/gfx.h> +#include <gfx/raster.h> + +namespace gfx { +// Quality factors are expressed on a 0--100 scale +int jpeg_output_quality = 100; +} + +#ifdef HAVE_LIBJPEG + +#include <stdio.h> +extern "C" { +#include <jpeglib.h> +} + +namespace gfx +{ + +bool write_jpeg_image(const char *filename, const ByteRaster& img) +{ + FILE *outfile = fopen(filename, "wb"); + if( !outfile ) return false; + + struct jpeg_compress_struct cinfo; + struct jpeg_error_mgr jerr; + + cinfo.err = jpeg_std_error(&jerr); + jpeg_create_compress(&cinfo); + jpeg_stdio_dest(&cinfo, outfile); + + cinfo.image_width = img.width(); + cinfo.image_height = img.height(); + cinfo.input_components = img.channels(); + + if(img.channels()==1) cinfo.in_color_space = JCS_GRAYSCALE; + else if(img.channels()==3) cinfo.in_color_space = JCS_RGB; + else cinfo.in_color_space = JCS_UNKNOWN; + + jpeg_set_defaults(&cinfo); + jpeg_set_quality(&cinfo, jpeg_output_quality, TRUE); + + jpeg_start_compress(&cinfo, TRUE); + + int row_stride = img.width() * img.channels(); + const unsigned char *scanline = img.head(); + while( cinfo.next_scanline < cinfo.image_height ) + { + (void) jpeg_write_scanlines(&cinfo, (JSAMPLE **)&scanline, 1); + scanline += row_stride; + } + + jpeg_finish_compress(&cinfo); + jpeg_destroy_compress(&cinfo); + fclose(outfile); + + return true; +} + +ByteRaster *read_jpeg_image(const char *filename) +{ + FILE *infile = fopen(filename, "rb"); + if( !infile ) return NULL; + + struct jpeg_decompress_struct cinfo; + struct jpeg_error_mgr jerr; + cinfo.err = jpeg_std_error(&jerr); + + jpeg_create_decompress(&cinfo); + jpeg_stdio_src(&cinfo, infile); + + (void) jpeg_read_header(&cinfo, TRUE); + (void) jpeg_start_decompress(&cinfo); + + ByteRaster *img = new ByteRaster(cinfo.output_width, + cinfo.output_height, + cinfo.output_components); + + int row_stride = cinfo.output_width * cinfo.output_components; + unsigned char *scanline = img->head(); + while( cinfo.output_scanline < cinfo.output_height) + { + (void) jpeg_read_scanlines(&cinfo, (JSAMPLE **)&scanline, 1); + scanline += row_stride; + } + + (void) jpeg_finish_decompress(&cinfo); + jpeg_destroy_decompress(&cinfo); + fclose(infile); + return img; +} + +} // namespace gfx + +#else + +namespace gfx +{ +bool write_jpeg_image(const char *, const ByteRaster&) { return false; } +ByteRaster *read_jpeg_image(const char *) { return NULL; } +} + +#endif diff --git a/debian/fireflies/fireflies-2.08/libgfx/src/raster-png.cxx b/debian/fireflies/fireflies-2.08/libgfx/src/raster-png.cxx new file mode 100644 index 00000000..c98da9b1 --- /dev/null +++ b/debian/fireflies/fireflies-2.08/libgfx/src/raster-png.cxx @@ -0,0 +1,180 @@ +/************************************************************************ + + PNG image file format support. + + The I/O code in this file was originally based on the example.c + skeleton code distributed with the PNG library. + + $Id: raster-png.cxx 427 2004-09-27 04:45:31Z garland $ + + ************************************************************************/ + +#include <vector> +#include <gfx/gfx.h> +#include <gfx/raster.h> + +#ifdef HAVE_LIBPNG + +#include <png.h> + +namespace gfx +{ + +ByteRaster *read_png_image(const char *file_name) +{ + FILE *fp = fopen(file_name, "rb"); + if( !fp ) return NULL; + + // The last three arguments can be used to set up error handling callbacks. + png_structp png_ptr = + png_create_read_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL); + if( !png_ptr ) { fclose(fp); return NULL; } + + // Allocate required structure to hold memory information. + png_infop info_ptr = png_create_info_struct(png_ptr); + if( !info_ptr ) + { + fclose(fp); + png_destroy_read_struct(&png_ptr, NULL, NULL); + return NULL; + } + + // Because we didn't set up any error handlers, we need to be + // prepared to handle longjmps out of the library on error + // conditions. + if( setjmp(png_ptr->jmpbuf) ) + { + png_destroy_read_struct(&png_ptr, &info_ptr, NULL); + fclose(fp); + return NULL; + } + + png_init_io(png_ptr, fp); + + // Read in all the image information + png_read_info(png_ptr, info_ptr); + + // Get the header for the first image chunk + png_uint_32 width, height; + int bit_depth, color_type, interlace_type; + + png_get_IHDR(png_ptr, info_ptr, &width, &height, &bit_depth, &color_type, + &interlace_type, NULL, NULL); + + + //////////////////////////////////////////////////////////////// + // the following tell the PNG library how to transform the image + // during input + + if( bit_depth == 16 ) + // truncate 16 bits/pixel to 8 bits/pixel + png_set_strip_16(png_ptr); + + if( color_type == PNG_COLOR_TYPE_PALETTE ) + // expand paletted colors into RGB color values + png_set_expand(png_ptr); + else if( color_type == PNG_COLOR_TYPE_GRAY && bit_depth < 8 ) + // expand grayscale images to full 8 bits/pixel + png_set_expand(png_ptr); + + // Expand paletted or RGB images with transparency to full alpha + // channels so the data will be available as RGBA quartets. + if( png_get_valid(png_ptr, info_ptr, PNG_INFO_tRNS) ) + png_set_expand(png_ptr); + + // update the palette and info structure + png_read_update_info(png_ptr, info_ptr); + + + // read the image data + std::vector<png_bytep> row_pointers(height); + int row; + int nchan = png_get_channels(png_ptr, info_ptr); + int nbytes = png_get_rowbytes(png_ptr, info_ptr); + + for (row = 0; row < height; row++) + row_pointers[row] = (png_bytep)malloc(nbytes); + + png_read_image(png_ptr, &row_pointers.front()); + png_read_end(png_ptr, info_ptr); + + // Read it into a ByteRaster structure + ByteRaster *img = new ByteRaster(width, height, nchan); + + unsigned char *pixel = img->pixel(0,0); + for(row=0; row<height; row++) + { + memcpy(pixel, row_pointers[row], nbytes); + pixel += nbytes; + } + + png_destroy_read_struct(&png_ptr, &info_ptr, NULL); + for(row=0; row<height; row++) free(row_pointers[row]); + + fclose(fp); + return img; +} + +bool write_png_image(const char *file_name, const ByteRaster& img) +{ + FILE *fp = fopen(file_name, "wb"); + if( !fp ) return false; + + png_structp png_ptr = + png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL); + if( !png_ptr ) { fclose(fp); return false; } + + png_infop info_ptr = png_create_info_struct(png_ptr); + if( !info_ptr ) + { + fclose(fp); + png_destroy_write_struct(&png_ptr, (png_infopp)NULL); + return false; + } + + if( setjmp(png_ptr->jmpbuf) ) + { + fclose(fp); + png_destroy_write_struct(&png_ptr, (png_infopp)NULL); + return false; + } + + png_init_io(png_ptr, fp); + + int img_type = PNG_COLOR_TYPE_RGB; + switch( img.channels() ) + { + case 1: img_type=PNG_COLOR_TYPE_GRAY; break; + case 2: img_type=PNG_COLOR_TYPE_GRAY_ALPHA; break; + case 4: img_type=PNG_COLOR_TYPE_RGB_ALPHA; break; + } + + png_set_IHDR(png_ptr, info_ptr, + img.width(), img.height(), 8, img_type, PNG_INTERLACE_NONE, + PNG_COMPRESSION_TYPE_BASE, PNG_FILTER_TYPE_BASE); + + png_write_info(png_ptr, info_ptr); + + std::vector<png_bytep> row_pointers(img.height()); + for(int k=0; k<img.height(); k++) + row_pointers[k] = (png_bytep)img.head() +k*img.width()*img.channels(); + + png_write_image(png_ptr, &row_pointers.front()); + png_write_end(png_ptr, info_ptr); + + png_destroy_write_struct(&png_ptr, (png_infopp)NULL); + fclose(fp); + return true; +} + +} // namespace gfx + +#else + +namespace gfx +{ +bool write_png_image(const char *, const ByteRaster&) { return false; } +ByteRaster *read_png_image(const char *) { return NULL; } +} // namespace gfx + +#endif diff --git a/debian/fireflies/fireflies-2.08/libgfx/src/raster-pnm.cxx b/debian/fireflies/fireflies-2.08/libgfx/src/raster-pnm.cxx new file mode 100644 index 00000000..75a88990 --- /dev/null +++ b/debian/fireflies/fireflies-2.08/libgfx/src/raster-pnm.cxx @@ -0,0 +1,174 @@ +/************************************************************************ + + PNM image file format support + + $Id: raster-pnm.cxx 427 2004-09-27 04:45:31Z garland $ + + ************************************************************************/ + +#include <gfx/gfx.h> +#include <gfx/raster.h> + +#include <fstream> + +namespace gfx +{ + +using namespace std; + +bool will_write_raw_pnm = true; + +//////////////////////////////////////////////////////////////////////// +// +// PNM output routine +// + +bool write_pnm_image(const char *filename, const ByteRaster& img) +{ + ofstream out(filename, ios::out|ios::binary); + if( !out.good() ) return false; + + bool is_raw = will_write_raw_pnm; + + // + // First, write the PNM header. + // + char magic; + if(img.channels() == 1) magic = is_raw ? '5':'2'; // PGM + else if(img.channels() < 3) return false; // unsupported + else magic = is_raw ? '6':'3'; // truncate to PPM + + out << "P" << magic << " " + << img.width() << " " << img.height() << " 255" << endl; + + // + // Now, write the PNM data. If there are more than 3 channels, + // we'll just write out the first 3 as RGB and ignore the rest. + // + if( is_raw ) + { + if( img.channels() > 3 ) + for(int i=0; i<img.length(); i+=img.channels()) + out.write((const char *)img.pixel(0,0)+i, 3); + else + out.write((const char *)img.pixel(0,0), img.length()); + } + else + { + for(int i=0; i<img.length(); i+=img.channels()) + { + out << (int)(img[i]) << " " + << (int)(img[i+1]) << " " + << (int)(img[i+2]) << endl; + } + } + + return true; +} + +//////////////////////////////////////////////////////////////////////// +// +// PNM input routines +// + +static +istream& pnm_skip(istream& in) +{ + for(;;) + { + in >> ws; + if( in.peek() == '#' ) + in.ignore(65535, '\n'); + else + return in; + } +} + +static +void pnm_read_ascii(istream& in, ByteRaster& img) +{ + unsigned char *current = img.head(); + int val; + + for(int j=0; j<img.height(); j++) for(int i=0; i<img.width(); i++) + for(int k=0; k<img.channels(); k++) + { + pnm_skip(in) >> val; + *current++ = (unsigned char)val; + } +} + +static +void pnm_read_ascii(istream& in, ByteRaster& img, float scale) +{ + unsigned char *current = img.head(); + float val; + + for(int j=0; j<img.height(); j++) for(int i=0; i<img.width(); i++) + for(int k=0; k<img.channels(); k++) + { + pnm_skip(in) >> val; + *current++ = (unsigned char)(val*scale); + } +} + +static +void pnm_read_raw(istream& in, ByteRaster& img) +{ + char c; in.get(c); // extract 1 whitespace character + + // + // Is this guaranteed to read all the requested bytes? + // + in.read((char *)img.head(), img.length()); +} + +ByteRaster *read_pnm_image(const char *filename) +{ + ifstream in(filename, ios::in|ios::binary); + if( !in.good() ) return NULL; + + // + // Read the PNM header and allocate and appropriate raster. + // + + unsigned char P, N; + in >> P >> N; + + if( P!='P' ) return NULL; + + int width, height, maxval; + pnm_skip(in) >> width; + pnm_skip(in) >> height; + pnm_skip(in) >> maxval; + + int magic = N - '0'; + bool is_raw = magic > 3; + + int channels = 1; + if( magic==3 || magic==6 ) + channels = 3; + + ByteRaster *img = new ByteRaster(width, height, channels); + + // + // Read the image data into the raster + // + + if( is_raw ) + { + if( maxval>255 ) return NULL; + + // BUG: We ignore the scaling implied by maxval<255 + + pnm_read_raw(in, *img); + } + else if( maxval==255 ) + pnm_read_ascii(in, *img); + else + pnm_read_ascii(in, *img, 255.0f/(float)maxval); + + return img; +} + +} // namespace gfx diff --git a/debian/fireflies/fireflies-2.08/libgfx/src/raster-tiff.cxx b/debian/fireflies/fireflies-2.08/libgfx/src/raster-tiff.cxx new file mode 100644 index 00000000..a0005849 --- /dev/null +++ b/debian/fireflies/fireflies-2.08/libgfx/src/raster-tiff.cxx @@ -0,0 +1,158 @@ +/************************************************************************ + + TIFF image file format support. + + $Id: raster-tiff.cxx 427 2004-09-27 04:45:31Z garland $ + + ************************************************************************/ + +#include <gfx/gfx.h> +#include <gfx/raster.h> +#include <cstring> + +#ifdef HAVE_LIBTIFF +#include <tiffio.h> + +namespace gfx +{ + +//////////////////////////////////////////////////////////////////////// +// +// TIFF output +// +static +bool __tiff_write(TIFF *tif, const ByteRaster& img) +{ + TIFFSetField(tif, TIFFTAG_IMAGEWIDTH, img.width()); + TIFFSetField(tif, TIFFTAG_IMAGELENGTH, img.height()); + + TIFFSetField(tif, TIFFTAG_ORIENTATION, ORIENTATION_TOPLEFT); + TIFFSetField(tif, TIFFTAG_SAMPLESPERPIXEL, img.channels()); + TIFFSetField(tif, TIFFTAG_BITSPERSAMPLE, 8); + TIFFSetField(tif, TIFFTAG_PLANARCONFIG, PLANARCONFIG_CONTIG); + TIFFSetField(tif, TIFFTAG_PHOTOMETRIC, + img.channels()==1 ? PHOTOMETRIC_MINISBLACK : PHOTOMETRIC_RGB); + +#ifdef HAVE_LIBTIFF_LZW + // + // LZW compression is problematic because it is patented by Unisys. + TIFFSetField(tif, TIFFTAG_COMPRESSION, COMPRESSION_LZW); + // + // Predictors: + // 1 (default) -- No predictor + // 2 -- Horizontal differencing + TIFFSetField(tif, TIFFTAG_PREDICTOR, 2); +#endif + + uint32 scanline_size = img.channels() * img.width(); + if( TIFFScanlineSize(tif) != scanline_size ) + // ??BUG: Can this mismatch of scanline sizes every occur? + return false; + + + TIFFSetField(tif, TIFFTAG_ROWSPERSTRIP, TIFFDefaultStripSize(tif, 0)); + + char *scanline_buf = new char[scanline_size]; + + const unsigned char *scanline = img.head(); + for(int y=0; y<img.height(); y++) + { + memcpy(scanline_buf, scanline, scanline_size); + // NOTE: TIFFWriteScanline modifies the buffer you pass it. + // Thus, we need to copy stuff out of the raster first. + TIFFWriteScanline(tif, scanline_buf, y, 0); + scanline += scanline_size; + } + delete[] scanline_buf; + + return true; +} + +bool write_tiff_image(const char *filename, const ByteRaster& img) +{ + TIFF *tif = TIFFOpen(filename, "w"); + if( !tif ) return false; + + bool result = __tiff_write(tif, img); + + TIFFClose(tif); + + return result; +} + +//////////////////////////////////////////////////////////////////////// +// +// TIFF input +// +static +void unpack_tiff_raster(uint32 *raster, ByteRaster *img, int npixels) +{ + unsigned char *pix = img->head(); + + for(int i=0; i<npixels; i++) + { + *pix++ = TIFFGetR(raster[i]); + if( img->channels() >= 3 ) + { + *pix++ = TIFFGetG(raster[i]); + *pix++ = TIFFGetB(raster[i]); + if( img->channels() == 4 ) + *pix++ = TIFFGetA(raster[i]); + } + } +} + +static +ByteRaster *__tiff_read(TIFF *tif) +{ + uint32 w, h; + uint16 nchan; + TIFFGetField(tif, TIFFTAG_IMAGEWIDTH, &w); + TIFFGetField(tif, TIFFTAG_IMAGELENGTH, &h); + TIFFGetField(tif, TIFFTAG_SAMPLESPERPIXEL, &nchan); + + int npixels = w*h; + + uint32 *raster = (uint32 *)_TIFFmalloc(npixels * sizeof(uint32)); + if( !raster ) return NULL; + + TIFFReadRGBAImage(tif, w, h, raster, true); + + ByteRaster *img = new ByteRaster(w, h, nchan); + unpack_tiff_raster(raster, img, npixels); + // + // libtiff returned the pixels with the origin in the lower left + // rather than the upper left corner. We fix that by flipping the + // pixels. + // + img->vflip(); + + + _TIFFfree(raster); + + return img; +} + +ByteRaster *read_tiff_image(const char *filename) +{ + TIFF *tif = TIFFOpen(filename, "r"); + if( !tif ) return NULL; + + ByteRaster *img = __tiff_read(tif); + + TIFFClose(tif); + + return img; +} + +} // namespace gfx + +#else + +namespace gfx +{ +bool write_tiff_image(const char *, const ByteRaster&) { return false; } +ByteRaster *read_tiff_image(const char *) { return NULL; } +} + +#endif diff --git a/debian/fireflies/fireflies-2.08/libgfx/src/raster.cxx b/debian/fireflies/fireflies-2.08/libgfx/src/raster.cxx new file mode 100644 index 00000000..e5a15228 --- /dev/null +++ b/debian/fireflies/fireflies-2.08/libgfx/src/raster.cxx @@ -0,0 +1,113 @@ +/************************************************************************ + + Raster image support. + + $Id: raster.cxx 427 2004-09-27 04:45:31Z garland $ + + ************************************************************************/ + +#include <gfx/gfx.h> +#include <gfx/raster.h> + +#include <string> +#include <cctype> +#include <cstring> + +namespace gfx +{ + +ByteRaster::ByteRaster(const ByteRaster &img) + : Raster<unsigned char>(img.width(), img.height(), img.channels()) +{ + memcpy(head(), img.head(), img.length()*sizeof(unsigned char)); +} + +ByteRaster::ByteRaster(const FloatRaster &img) + : Raster<unsigned char>(img.width(), img.height(), img.channels()) +{ + for(int i=0; i<length(); i++ ) + (*this)[i] = (unsigned char) (255.0f * img[i]); +} + +FloatRaster::FloatRaster(const ByteRaster &img) + : Raster<float>(img.width(), img.height(), img.channels()) +{ + for(int i=0; i<length(); i++) + (*this)[i] = (float)img[i] / 255.0f; +} + +FloatRaster::FloatRaster(const FloatRaster &img) + : Raster<float>(img.width(), img.height(), img.channels()) +{ + memcpy(head(), img.head(), img.length()*sizeof(float)); +} + +//////////////////////////////////////////////////////////////////////// +// +// Table of supported formats +// + + + +static char *img_names[] = {"PPM", "PNG", "TIFF", "JPEG"}; +static char *img_ext[] = {"ppm", "png", "tif", "jpg"}; + +const char *image_type_name(int type) + { return type>=IMG_LIMIT ? NULL : img_names[type]; } + +const char *image_type_ext(int type) + { return type>=IMG_LIMIT ? NULL : img_ext[type]; } + + +int infer_image_type(const char *filename) +{ + const char *ext = strrchr(filename, '.'); + if( !ext ) return -1; + + // Make sure extension is lower case + std::string lo(ext+1); + for(int i=0; i<lo.length(); i++) lo[i] = tolower(lo[i]); + + // Search for extension in the table + for(int typ=0; typ<IMG_LIMIT; typ++) + if(lo == img_ext[typ]) return typ; + + // Test for alternatives + if(lo=="tiff") return IMG_TIFF; + + // Unknown type + return -1; +} + + +bool write_image(const char *filename, const ByteRaster& img, int type) +{ + if( type<0 ) + type = infer_image_type(filename); + + switch( type ) + { + case IMG_PNM: return write_pnm_image(filename, img); + case IMG_PNG: return write_png_image(filename, img); + case IMG_TIFF: return write_tiff_image(filename, img); + case IMG_JPEG: return write_jpeg_image(filename, img); + default: return false; + } +} + +ByteRaster *read_image(const char *filename, int type) +{ + if( type<0 ) + type = infer_image_type(filename); + + switch( type ) + { + case IMG_PNM: return read_pnm_image(filename); + case IMG_PNG: return read_png_image(filename); + case IMG_TIFF: return read_tiff_image(filename); + case IMG_JPEG: return read_jpeg_image(filename); + default: return NULL; + } +} + +} // namespace gfx diff --git a/debian/fireflies/fireflies-2.08/libgfx/src/script.cxx b/debian/fireflies/fireflies-2.08/libgfx/src/script.cxx new file mode 100644 index 00000000..5f1bdff2 --- /dev/null +++ b/debian/fireflies/fireflies-2.08/libgfx/src/script.cxx @@ -0,0 +1,295 @@ +#include <gfx/script.h> +#include <fstream> + +#if !defined(HAVE_SSTREAM) && defined(HAVE_STRSTREAM) +# include <strstream> +typedef istrstream istringstream; +#else +# include <sstream> +#endif + +#ifdef HAVE_GZSTREAM +# include <gzstream.h> +#endif + +namespace gfx +{ + +using namespace std; + + +//////////////////////////////////////////////////////////////////////// +// +// CmdLine methods -- These implement all the basic line manipulations +// + +string CmdLine::token_to_string(int i) const { return substr(tokens[i]); } + +string CmdLine::rest_to_string(int i) const +{ + return line.substr(tokens[i].first); +} + +double CmdLine::token_to_double(int i) const + { string str = substr(tokens[i]); return atof(str.c_str()); } + +float CmdLine::token_to_float(int i) const + { string str = substr(tokens[i]); return atof(str.c_str()); } + +int CmdLine::token_to_int(int i) const + { string str = substr(tokens[i]); return atoi(str.c_str()); } + +string CmdLine::argline() const +{ + if( argcount() == 0 ) return ""; + + index_type start = tokens.front().first; + index_type end = tokens.back().second; + return substr(range_type(start, end)); +} + +int CmdLine::collect_as_strings(vector<string> &v, int offset) const +{ + for(int i=offset; i<tokens.size(); i++) + v.push_back( substr(tokens[i]) ); + return tokens.size(); +} + +int CmdLine::collect_as_numbers(vector<double> &v, int offset) const +{ + for(int i=offset; i<tokens.size(); i++) + v.push_back(token_to_double(i)); + return tokens.size(); +} + +int CmdLine::collect_as_numbers(vector<int> &v, int offset) const +{ + for(int i=offset; i<tokens.size(); i++) + v.push_back(token_to_int(i)); + return tokens.size(); +} + +int CmdLine::collect_as_numbers(double *v, int size, int offset) const +{ + int i; + for(i=0; (i+offset)<tokens.size() && i<size; i++) + v[i] = token_to_double(i+offset); + return i; +} + +int CmdLine::collect_as_numbers(float *v, int size, int offset) const +{ + int i; + for(i=0; (i+offset)<tokens.size() && i<size; i++) + v[i] = token_to_float(i+offset); + return i; +} + +int CmdLine::collect_as_numbers(int *v, int size, int offset) const +{ + int i; + for(i=0; (i+offset)<tokens.size() && i<size; i++) + v[i] = token_to_int(i+offset); + return i; +} + +//////////////////////////////////////////////////////////////////////// +// +// CmdEnv methods -- Minimal interface supported by all environments +// + +void CmdEnv::register_command(const std::string& name, CmdObject *fn) +{ + script_commands[name] = fn; +} + +void CmdEnv::register_command(const std::string& name, CmdHandler proc) +{ + register_command(name, new CmdFunction(proc)); +} + +CmdObject *CmdEnv::lookup_command(const std::string& name) +{ + CmdTable::const_iterator iter = script_commands.find(name); + + return iter!=script_commands.end() ? iter->second : NULL; +} + +static int ignored(const CmdLine& line) { return SCRIPT_OK; } + +void CmdEnv::ignore_command(const std::string& name) +{ + register_command(name, ignored); +} + +void CmdEnv::register_vocabulary(const std::string& name, CmdEnv *env) +{ + register_method(name, env, &CmdEnv::script_eval); +} + +CmdEnv::CmdEnv() +{ + register_method("include", this, &CmdEnv::script_include); + register_method("ignore", this, &CmdEnv::script_ignore); + register_method("end", this, &CmdEnv::script_end); +} + +CmdEnv::~CmdEnv() +{ + // Free all the CmdObject's held by script_commands + // + for(CmdTable::iterator i = script_commands.begin(); + i != script_commands.end(); ++i) + { + CmdObject *obj = i->second; + delete obj; + } +} + +int CmdEnv::script_include(const CmdLine& cmd) +{ + if( cmd.argcount() != 1 ) return SCRIPT_ERR_SYNTAX; + + string filename = cmd.token_to_string(0); + return do_file(cmd.token_to_string(0)); +} + +int CmdEnv::script_ignore(const CmdLine& cmd) +{ + for(int i=0; i<cmd.argcount(); ++i) + { + string name = cmd.token_to_string(i); + ignore_command(name); + } + + return SCRIPT_OK; +} + +int CmdEnv::script_end(const CmdLine& cmd) +{ + return SCRIPT_END; +} + +int CmdEnv::script_eval(const CmdLine& cmd) +{ + return do_line(cmd.argline()); +} + +void CmdEnv::begin_scope(CmdEnv *sub) { scopes.push_back(sub); } + +void CmdEnv::end_scope() +{ + if( scopes.size() > 0 ) + { + CmdEnv *sub = scopes.back(); + scopes.pop_back(); + delete sub; + } +} + +//////////////////////////////////////////////////////////////////////// +// +// Toplevel functions -- extract and execute scripting commands +// + +int CmdEnv::do_line(const string &line) +{ + CmdEnv& env = *this; + + // Pass this line off to the sub-scope (if any) + if( scopes.size() > 0 && scopes.back() ) + { + int rc = scopes.back()->do_line(line); + if( rc==SCRIPT_END ) + { + end_scope(); + rc = SCRIPT_OK; + } + return rc; + } + + const char *ws = " \t\n\r"; + string::size_type start, end; + + // First, process the initial (command) token + start = line.find_first_not_of(ws); + + // Only continue processing if line is a non-empty, non-comment line + if( start!=string::npos && line[start]!='#' ) + { + end = line.find_first_of(ws, start); + string op = line.substr(start, end-start); + + CmdObject *fn = env.lookup_command(op); + if( !fn ) return SCRIPT_ERR_UNDEF; + + CmdLine argv(line); + argv.op = CmdLine::range_type(start, end); + + while(1) + { + start = line.find_first_not_of(ws, end); + if( start==string::npos ) break; + end = line.find_first_of(ws, start); + + argv.tokens.push_back( CmdLine::range_type(start, end) ); + } + + return (*fn)(argv); + } + + return SCRIPT_OK; +} + +int CmdEnv::do_stream(istream &in) +{ + string line; + + while( !in.eof() ) + { + getline(in, line); + if( in.fail() ) break; + + int rc = do_line(line); + if( rc != SCRIPT_OK ) + { + cerr << "Script Error: " << line << endl; + return rc; + } + } + + return SCRIPT_OK; +} + +int CmdEnv::do_file(const std::string& filename) +{ +#ifdef HAVE_GZSTREAM + if( !filename.compare(filename.size()-3, 3, ".gz") || + !filename.compare(filename.size()-2, 2, ".z") || + !filename.compare(filename.size()-2, 2, ".Z") ) + { + igzstream in(filename.c_str()); + if( in.good() ) return do_stream(in); + else return SCRIPT_ERR_NOFILE; + } + else + { + ifstream in(filename.c_str()); + if( in.good() ) return do_stream(in); + else return SCRIPT_ERR_NOFILE; + } +#else + ifstream in(filename.c_str()); + if( in.good() ) return do_stream(in); + else return SCRIPT_ERR_NOFILE; +#endif +} + +int CmdEnv::do_string(const std::string& str) +{ + istringstream in(str.c_str()); + if( in.good() ) return CmdEnv::do_stream(in); + else return SCRIPT_ERR_NOFILE; +} + +} // namespace gfx diff --git a/debian/fireflies/fireflies-2.08/libgfx/src/symmat2.cxx b/debian/fireflies/fireflies-2.08/libgfx/src/symmat2.cxx new file mode 100644 index 00000000..df923f33 --- /dev/null +++ b/debian/fireflies/fireflies-2.08/libgfx/src/symmat2.cxx @@ -0,0 +1,61 @@ +#include <gfx/gfx.h> +#include <gfx/symmat2.h> + +namespace gfx +{ + +SymMat2 SymMat2::I() +{ + SymMat2 A; + A(0,0) = A(1,1) = 1; + return A; +} + +Mat2 SymMat2::fullmatrix() const +{ + Mat2 A; + + for(int i=0; i<A.dim(); i++) + for(int j=0; j<A.dim(); j++) + A(i, j) = (*this)(i,j); + + return A; +} + +SymMat2 operator*(const SymMat2& n, const SymMat2& m) +{ + SymMat2 A; + for(int i=0; i<2; i++) for(int j=i; j<2; j++) + A(i,j) = n.row(i)*m.col(j); + return A; +} + +std::ostream &operator<<(std::ostream &out, const SymMat2& M) +{ + for(int i=0; i<M.dim(); i++) + { + for(int j=0; j<M.dim(); j++) + out << M(i, j) << " "; + out << std::endl; + } + + return out; +} + +SymMat2 SymMat2::outer_product(const Vec2& v) +{ + SymMat2 A; + + for(int i=0; i<A.dim(); i++) + for(int j=i; j<A.dim(); j++) + A(i, j) = v[i]*v[j]; + + return A; +} + +double invert(Mat2& m_inv, const SymMat2& m) +{ + return invert(m_inv, m.fullmatrix()); +} + +} // namespace gfx diff --git a/debian/fireflies/fireflies-2.08/libgfx/src/symmat3.cxx b/debian/fireflies/fireflies-2.08/libgfx/src/symmat3.cxx new file mode 100644 index 00000000..36c684e3 --- /dev/null +++ b/debian/fireflies/fireflies-2.08/libgfx/src/symmat3.cxx @@ -0,0 +1,61 @@ +#include <gfx/gfx.h> +#include <gfx/symmat3.h> + +namespace gfx +{ + +SymMat3 SymMat3::I() +{ + SymMat3 A; + A(0,0) = A(1,1) = A(2,2) = 1; + return A; +} + +Mat3 SymMat3::fullmatrix() const +{ + Mat3 A; + + for(int i=0; i<A.dim(); i++) + for(int j=0; j<A.dim(); j++) + A(i, j) = (*this)(i,j); + + return A; +} + +SymMat3 operator*(const SymMat3& n, const SymMat3& m) +{ + SymMat3 A; + for(int i=0; i<3; i++) for(int j=i; j<3; j++) + A(i,j) = n.row(i)*m.col(j); + return A; +} + +std::ostream &operator<<(std::ostream &out, const SymMat3& M) +{ + for(int i=0; i<M.dim(); i++) + { + for(int j=0; j<M.dim(); j++) + out << M(i, j) << " "; + out << std::endl; + } + + return out; +} + +SymMat3 SymMat3::outer_product(const Vec3& v) +{ + SymMat3 A; + + for(int i=0; i<A.dim(); i++) + for(int j=i; j<A.dim(); j++) + A(i, j) = v[i]*v[j]; + + return A; +} + +double invert(Mat3& m_inv, const SymMat3& m) +{ + return invert(m_inv, m.fullmatrix()); +} + +} // namespace gfx diff --git a/debian/fireflies/fireflies-2.08/libgfx/src/symmat4.cxx b/debian/fireflies/fireflies-2.08/libgfx/src/symmat4.cxx new file mode 100644 index 00000000..d8483017 --- /dev/null +++ b/debian/fireflies/fireflies-2.08/libgfx/src/symmat4.cxx @@ -0,0 +1,52 @@ +/************************************************************************ + + 4X4 Symmetric Matrix class + + $Id: symmat4.cxx 427 2004-09-27 04:45:31Z garland $ + + ************************************************************************/ +#include <gfx/symmat4.h> + +namespace gfx +{ + +SymMat4 SymMat4::I() +{ + SymMat4 A; + A(0,0) = A(1,1) = A(2,2) = A(3,3) = 1; + return A; +} + +Mat4 SymMat4::fullmatrix() const +{ + Mat4 temp; + for (int i=0; i<4; i++) + for (int j=0; j<4; j++) + temp(i,j) = (*this) (i,j); + return temp; +} + +SymMat4 SymMat4::outer_product(const Vec4& v) +{ + SymMat4 tmp; + for(int i=0; i<4; i++) + for(int j=0; j<4; j++) + tmp(i,j)=v[i]*v[j]; + return tmp; +} + +SymMat4 operator* (const SymMat4& n, const SymMat4& m) +{ + SymMat4 temp; + for (int i=0; i<4; i++) + for(int j=0; j<4; j++) + temp(i,j)=n.row(i) * m.col(j); + return temp; +} + +double invert(Mat4& m_inv, const SymMat4& m) +{ + return invert(m_inv, m.fullmatrix()); +} + +} // namespace gfx diff --git a/debian/fireflies/fireflies-2.08/libgfx/src/time.cxx b/debian/fireflies/fireflies-2.08/libgfx/src/time.cxx new file mode 100644 index 00000000..cbbea1c5 --- /dev/null +++ b/debian/fireflies/fireflies-2.08/libgfx/src/time.cxx @@ -0,0 +1,86 @@ +/************************************************************************ + + Routines for measuring time. + + $Id: time.cxx 427 2004-09-27 04:45:31Z garland $ + + ************************************************************************/ + +#include <gfx/gfx.h> + +#if defined(WIN32) +#define WIN32_LEAN_AND_MEAN +#include <windows.h> + +namespace gfx +{ +// Only Windows NT supports getting proper time usage information. +// In Windows 95, we have to settle for measuring real time. +double get_cpu_time() +{ + FILETIME start, end, kernel, user; + + if( !GetThreadTimes(GetCurrentThread(), &start, &end, &kernel, &user) ) + { + // We're running under Windows 95 instead of NT. + // Just get the current time and be done with it. + SYSTEMTIME now; + GetSystemTime(&now); + SystemTimeToFileTime(&now, &user); + } + + // Convert into something we can do math on + LARGE_INTEGER i; + i.LowPart = user.dwLowDateTime; + i.HighPart = user.dwHighDateTime; + +#ifdef __GNUC__ + + // The Win32 headers shipped with GCC don't define the QuadPart + // accessor for the LARGE_INTEGER type. So we have to build it + // directly. + long long quad = i.HighPart; + quad = (quad << 32) + i.LowPart; + return (double)quad / 1e7; +#else + // Convert to seconds and return + return (double)(i.QuadPart) / 1e7; +#endif +} +} + +#elif defined(HAVE_GETRUSAGE) +#include <sys/time.h> +#include <sys/resource.h> + +namespace gfx +{ +double get_cpu_time() +{ + struct rusage t; + + getrusage(RUSAGE_SELF, &t); + + return (double)t.ru_utime.tv_sec + (double)t.ru_utime.tv_usec/1000000; +} +} + +#elif defined(HAVE_TIMES) + +namespace gfx +{ +double get_cpu_time() +{ + struct tms t; + + times(&t); + + return (double)(t.tms_utime) / (double)CLK_TCK; +} +} + +#else + +#error "No supported timing mechanism available." + +#endif diff --git a/debian/fireflies/fireflies-2.08/libgfx/src/trackball.cxx b/debian/fireflies/fireflies-2.08/libgfx/src/trackball.cxx new file mode 100644 index 00000000..40615660 --- /dev/null +++ b/debian/fireflies/fireflies-2.08/libgfx/src/trackball.cxx @@ -0,0 +1,153 @@ +/************************************************************************ + + Virtual Trackball for manipulating objects on the screen. + + This code is based on the virtual trackball mechanism developed by + Gavin Bell of Silicon Graphics. + + $Id: trackball.cxx 427 2004-09-27 04:45:31Z garland $ + + ************************************************************************/ + +#include <gfx/gfx.h> +#include <gfx/gl.h> +#include <gfx/trackball.h> + +namespace gfx +{ + +static +float proj_to_sphere(float r, float x, float y) +{ + // This is a magic number taken from the SGI trackball. + // + const float MAGIC_RLIMIT = 0.70710678118654752440f; + + // Project (x,y) onto a sphere of radius r or a hyperbolic sheet + // if the point is far enough away from the origin. + // + float d = sqrt(x*x + y*y); + if (d < r * MAGIC_RLIMIT ) + { + // Inside sphere + return sqrt(r*r - d*d); + } + else + { + // On hyperbola + float t = r * MAGIC_RLIMIT; + return t*t / d; + } +} + +// +// This is the core routine that actually simulates the action of the +// trackball. It projects the given coordinates onto the trackball +// surface, and computes an appropriate rotation. +// +// NOTE: This uses the combined spherical/hyperbolic trackball surface +// used in the SGI trackball. +// +void trackball(Quat& q, float p1x, float p1y, float p2x, float p2y) +{ + if (p1x == p2x && p1y == p2y) + { + q = Quat::ident(); + return; + } + + // This is a magic number taken from the SGI trackball source. + // Here is the original explanation of this constant: + // + // This size should really be based on the distance from the + // center of rotation to the point on the object underneath + // the mouse. That point would then track the mouse as + // closely as possible. This is a simple example, though, so + // that is left as an Exercise for the Programmer. + // + const float TRACKBALLSIZE = 0.8f; + + // Project the window coordinates onto the trackball surface. + // + Vec3 p1(p1x,p1y,proj_to_sphere(TRACKBALLSIZE,p1x,p1y)); + Vec3 p2(p2x,p2y,proj_to_sphere(TRACKBALLSIZE,p2x,p2y)); + + // And how much do we rotate? + // + float t = norm(p1-p2) / (2.0*TRACKBALLSIZE); + if (t > 1.0) t = 1.0; + if (t < -1.0) t = -1.0; + + // Convert this axis/angle rotation to a quaternion. + // + q = axis_to_quat(p2^p1, 2.0*asin(t)); +} + +static +void add_quats(const Quat& q1, const Quat& q2, Quat& dest) +{ + dest = q2*q1; + unitize(dest); +} + +//////////////////////////////////////////////////////////////////////// +// +// Encapsulate the standard interface of the trackball to simplify +// its use in most applications. +// + +Trackball::Trackball() +{ +} + +void Trackball::update_animation() +{ + add_quats(lastquat, curquat, curquat); +} + +bool Trackball::mouse_up(int *where, int which) +{ + return false; +} + +bool Trackball::mouse_down(int *where, int which) +{ + if( which==1 ) + lastquat = Quat::ident(); + + return false; +} + +bool Trackball::mouse_drag(int *where, int *last, int which) +{ + float vp[4]; + glGetFloatv(GL_VIEWPORT, vp); + float W=vp[2], H=vp[3]; + + float diam = 2*radius; + + if( which==1 ) + { + trackball(lastquat, + (2.0 * last[0] - W)/W, + (H - 2.0 * last[1])/H, + (2.0 * where[0] - W)/W, + (H - 2.0 * where[1])/H); + add_quats(lastquat, curquat, curquat); + } + else if( which==2 ) + { + trans[0] += diam * (where[0] - last[0]) / W; + trans[1] += diam * (last[1] - where[1]) / H; + } + else if( which==3 ) + { + trans[2] += 0.02*diam*(where[1] - last[1]); + } + else + return false; + + return true; +} + +} // namespace gfx diff --git a/debian/fireflies/fireflies-2.08/libgfx/src/wintools.cxx b/debian/fireflies/fireflies-2.08/libgfx/src/wintools.cxx new file mode 100644 index 00000000..dc4fae15 --- /dev/null +++ b/debian/fireflies/fireflies-2.08/libgfx/src/wintools.cxx @@ -0,0 +1,88 @@ +/************************************************************************ + + Support code for handling various tasks under Win32 + + $Id: wintools.cxx 427 2004-09-27 04:45:31Z garland $ + + ************************************************************************/ + +#include <gfx/win/wintools.h> + +namespace gfx +{ + +HGLRC create_glcontext(HDC dc) +{ + HGLRC context = wglCreateContext(dc); + if( context ) + { + if( !wglMakeCurrent(dc, context) ) + { + // Destroy context if it fails to bind + wglDeleteContext(context); + context = NULL; + } + } + + return context; +} + +int set_pixel_format(HDC dc) +{ + PIXELFORMATDESCRIPTOR pixelDesc; + + // + // These are the important fields of the PFD + // + pixelDesc.nSize = sizeof(PIXELFORMATDESCRIPTOR); + pixelDesc.nVersion = 1; + + pixelDesc.dwFlags = + PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL | + PFD_DOUBLEBUFFER | PFD_STEREO_DONTCARE; + pixelDesc.iPixelType = PFD_TYPE_RGBA; + pixelDesc.cColorBits = 24; + pixelDesc.iLayerType = PFD_MAIN_PLANE; + + // + // According to the docs, these can be/are ignored. + // + pixelDesc.cRedBits = 8; + pixelDesc.cRedShift = 16; + pixelDesc.cGreenBits = 8; + pixelDesc.cGreenShift = 8; + pixelDesc.cBlueBits = 8; + pixelDesc.cBlueShift = 0; + pixelDesc.cAlphaBits = 0; + pixelDesc.cAlphaShift = 0; + pixelDesc.cAccumBits = 0; + pixelDesc.cAccumRedBits = 0; + pixelDesc.cAccumGreenBits = 0; + pixelDesc.cAccumBlueBits = 0; + pixelDesc.cAccumAlphaBits = 0; + pixelDesc.cDepthBits = 32; + pixelDesc.cStencilBits = 0; + pixelDesc.cAuxBuffers = 0; + pixelDesc.bReserved = 0; + pixelDesc.dwLayerMask = 0; + pixelDesc.dwVisibleMask = 0; + pixelDesc.dwDamageMask = 0; + + + int pixel_format = ChoosePixelFormat(dc, &pixelDesc); + if( !pixel_format ) + { + // Try and guess a decent default pixel format + pixel_format = 1; + if( !DescribePixelFormat(dc, pixel_format, + sizeof(PIXELFORMATDESCRIPTOR), &pixelDesc) ) + return NULL; + } + + if( !SetPixelFormat(dc, pixel_format, &pixelDesc) ) + return NULL; + + return pixel_format; +} + +} // namespace gfx diff --git a/debian/fireflies/fireflies-2.08/libgfx/tests/Makefile b/debian/fireflies/fireflies-2.08/libgfx/tests/Makefile new file mode 100644 index 00000000..f3386fab --- /dev/null +++ b/debian/fireflies/fireflies-2.08/libgfx/tests/Makefile @@ -0,0 +1,42 @@ +# Include the 'gfx-config' file to get all the correct build settings +include ../gfx-config + +SRCS = t-vec.cxx t-img.cxx t-gui.cxx t-glimg.cxx t-script.cxx t-glext.cxx +ALL = $(SRCS:.cxx=) + +all: $(ALL) + +t-vec: t-vec.cxx + $(CXX) -o $@ $^ $(CXXFLAGS) $(LDFLAGS) -lgfx -lm + +t-script: t-script.cxx + $(CXX) -o $@ $^ $(CXXFLAGS) $(LDFLAGS) -lgfx -lm + +t-img: t-img.cxx + $(CXX) -o $@ $^ $(CXXFLAGS) $(LDFLAGS) -lgfx $(IMG_LIBS) -lm + +# +# GUI programs should make the appropriate post-build call to +# $(FLTKCONFIG). On most platforms, this does nothing, but under +# Mac OS X, it is essential to make GUI programs launch correctly. +# + +t-gui: t-gui.cxx + $(CXX) -o $@ $^ $(CXXFLAGS) $(LDFLAGS) -lgfx $(GUI_LIBS) -lm + $(FLTKCONFIG) --post $@ + +t-glext: t-glext.cxx + $(CXX) -o $@ $^ $(CXXFLAGS) $(LDFLAGS) -lgfx $(GUI_LIBS) -lm + $(FLTKCONFIG) --post $@ + +t-glimg: t-glimg.cxx + $(CXX) -o $@ $^ $(CXXFLAGS) $(LDFLAGS) -lgfx $(GUI_LIBS) -lm + $(FLTKCONFIG) --post $@ + +# This is just a standard mechanism to correctly track the dependencies +# of the source files. +# +depend: + $(CXX_DEPEND) $(SRCS) > Makefile.dep + +-include Makefile.dep diff --git a/debian/fireflies/fireflies-2.08/libgfx/tests/t-glext.cxx b/debian/fireflies/fireflies-2.08/libgfx/tests/t-glext.cxx new file mode 100644 index 00000000..82b40000 --- /dev/null +++ b/debian/fireflies/fireflies-2.08/libgfx/tests/t-glext.cxx @@ -0,0 +1,82 @@ +/************************************************************************ + + Test the availability of various OpenGL extensions + + by Michael Garland, 2001. + + $Id: t-glext.cxx 426 2004-09-27 04:34:55Z garland $ + + ************************************************************************/ + +#include <gfx/gui.h> +#include <gfx/glext.h> +#include <string> +#include <fstream> + +using namespace std; + +class GUI : public MxGUI +{ +public: + + virtual void setup_for_drawing(); +}; + +GUI gui; + +static void dump_string(ostream &out, const string& str) +{ + const char *ws = " \t\n\r"; + string::size_type start, end; + + start = 0; + end = str.find_first_of(ws, start); + + while( end!=string::npos ) + { + out << " " << str.substr(start, end-start) << endl; + start = str.find_first_not_of(ws, end); + end = str.find_first_of(ws, start); + } +} + +void GUI::setup_for_drawing() +{ + ofstream log("glext.txt"); + + string gl_extensions = (char *)glGetString(GL_EXTENSIONS); + + log << "OpenGL extensions" << endl + << "-----------------" << endl; + dump_string(log, gl_extensions); + log << endl << endl; + + +#ifdef HAVE_GL_WGLEXT_H + PFNWGLGETEXTENSIONSSTRINGARBPROC wglGetExtensionsStringARB = + (PFNWGLGETEXTENSIONSSTRINGARBPROC) + wglGetProcAddress("wglGetExtensionsStringARB"); + + if( !wglGetExtensionsStringARB ) + { + log << "Couldn't find wglGetExtensionsStringARB." << endl; + exit(-1); + } + else + { + string wgl_extensions = wglGetExtensionsStringARB(wglGetCurrentDC()); + + log << "WGL extensions" << endl + << "--------------" << endl; + dump_string(log, wgl_extensions); + } +#endif + + exit(0); +} + +int main(int argc, char **argv) +{ + gui.initialize(argc, argv); + return gui.run(); +} diff --git a/debian/fireflies/fireflies-2.08/libgfx/tests/t-glimg.cxx b/debian/fireflies/fireflies-2.08/libgfx/tests/t-glimg.cxx new file mode 100644 index 00000000..706441c2 --- /dev/null +++ b/debian/fireflies/fireflies-2.08/libgfx/tests/t-glimg.cxx @@ -0,0 +1,149 @@ +/************************************************************************ + + This is a very simplistic image viewer. It uses libgfx routines to + read a set of image files specified on the command line. These images + are then displayed in a window using OpenGL image operations. + + by Michael Garland, 2000. + + $Id: t-glimg.cxx 426 2004-09-27 04:34:55Z garland $ + + ************************************************************************/ + +#include <gfx/gfx.h> +#include <gfx/gui.h> +#include <gfx/raster.h> + +#include <string> +#include <vector> +#include <FL/filename.H> + +class GUI : public MxGUI +{ +public: + std::vector<ByteRaster *> images; + std::vector<std::string> image_names; + int current_image; + + virtual ~GUI(); + + virtual void update_animation(); + virtual void cmdline_file(const char *file); + virtual void setup_for_drawing(); + virtual void draw_contents(); + + void set_image(int i); +}; + +GUI gui; + +GUI::~GUI() +{ + for(int i=0; i<images.size(); i++) + if( images[i] ) + delete images[i]; +} + +static void cb_image(Fl_Widget *, long i) + { gui.set_image(i); gui.canvas->redraw(); } + +void GUI::set_image(int i) +{ + current_image = i; + + if(current_image<0 || current_image>=images.size()) return; + ByteRaster *img = images[current_image]; + + int width = img->width(); + int height = img->height(); + + gui.status(image_names[current_image].c_str()); + + if( width!=canvas->w() || height!=canvas->h() ) + { + unlock_size(); + resize_canvas(width, height); + lock_size(); + } +} + +void GUI::cmdline_file(const char *namestring) +{ + if(!namestring) return; // Don't support reading from stdin + + static std::string img_menu("&Images/"); + std::string filename(fl_filename_name(namestring)); // Strip directories + + ByteRaster *img = read_image(namestring); + if( img ) + { + int id = images.size(); + images.push_back(img); + image_names.push_back(namestring); + + int key = id<9 ? FL_CTRL+'1'+id : 0; + + + gui.menu_bar->add((img_menu+filename).c_str(), key, + (Fl_Callback *)cb_image, (void *)id, FL_MENU_RADIO); + } +} + +void GUI::update_animation() +{ + set_image((current_image+1) % images.size()); +} + +void GUI::setup_for_drawing() +{ + glClearColor(0.9f, 0.0f, 0.0f, 0.0f); + glDisable(GL_DEPTH_TEST); + glDisable(GL_LIGHTING); + glPixelZoom(1.0f, -1.0f); + + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); +} + +static void draw_image(const ByteRaster *img) +{ + GLenum format; + if(img->channels()==1) format = GL_LUMINANCE; + else if(img->channels()==3) format = GL_RGB; + else if(img->channels()==4) format = GL_RGBA; + else return; // Don't draw unsupported formats + + glPushAttrib(GL_PIXEL_MODE_BIT); + glRasterPos2f(0, img->height()); + glDrawPixels(img->width(), img->height(), + format, GL_UNSIGNED_BYTE, img->head()); + glPopAttrib(); + +} + +void GUI::draw_contents() +{ + glClear(GL_COLOR_BUFFER_BIT); + + if(current_image<0 || current_image>=images.size()) return; + ByteRaster *img = images[current_image]; + + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + gluOrtho2D(0, img->width(), 0, img->height()); + + draw_image(img); +} + +int main(int argc, char **argv) +{ + gui.initialize(argc, argv); + if(gui.images.size() == 0) return 0; // Exit if no images read + + gui.title("OpenGL Image Viewer"); + + gui.default_fps = 1.0f; + gui.set_image(0); + + return gui.run(); +} diff --git a/debian/fireflies/fireflies-2.08/libgfx/tests/t-gui.cxx b/debian/fireflies/fireflies-2.08/libgfx/tests/t-gui.cxx new file mode 100644 index 00000000..296fe3b2 --- /dev/null +++ b/debian/fireflies/fireflies-2.08/libgfx/tests/t-gui.cxx @@ -0,0 +1,130 @@ +/************************************************************************ + + This is a simple program which demonstrates the use of the MxGUI + minimalist GUI framework. The application presents a window with a + rotating square that can be moved around with the mouse. + + by Michael Garland, 1999. + + $Id: t-gui.cxx 400 2004-02-16 16:31:35Z garland $ + + ************************************************************************/ + +#include <gfx/gfx.h> +#include <gfx/gui.h> +#include <gfx/gltools.h> + +class GUI : public MxGUI +{ +public: + float angle, opt_theta, center[2]; + bool dragging; + +public: + virtual void setup_for_drawing(); + virtual void draw_contents(); + virtual void update_animation(); + + virtual bool mouse_down(int *where, int which); + virtual bool mouse_up(int *where, int which); + virtual bool mouse_drag(int *where, int *last, int which); +}; + +GUI gui; + +void GUI::setup_for_drawing() +{ + glClearColor(0.65f, 0.65f, 0.65f, 0.0f); + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + + glMatrixMode(GL_PROJECTION); + gluOrtho2D(-1.0, 1.0, -1.0, 1.0); +} + +void GUI::draw_contents() +{ + glClear(GL_COLOR_BUFFER_BIT); + + glMatrixMode(GL_MODELVIEW); + glPushMatrix(); + glLoadIdentity(); + + glColor3f(0.0, 0.0, 0.0); + glBegin(GL_LINES); + glVertex2f(-1.0, 0.0); + glVertex2f(1.0, 0.0); + glVertex2f(0.0, -1.0); + glVertex2f(0.0, 1.0); + glEnd(); + + glTranslatef(center[0], center[1], 0); + glRotatef(angle, 0, 0, 1); + + glEnable(GL_BLEND); + glColor4d(0.8, 0.15, 0.15, 0.85); + glBegin(dragging?GL_LINE_LOOP:GL_POLYGON); + glBegin(GL_POLYGON); + glVertex2f(-0.5, -0.5); + glVertex2f(-0.5, 0.5); + glVertex2f(0.5, 0.5); + glVertex2f(0.5, -0.5); + glEnd(); + glDisable(GL_BLEND); + + glPopMatrix(); +} + +void GUI::update_animation() +{ + angle += opt_theta; +} + +static +bool center_on_click(float *ctr, int *where) +{ + double world[3]; + + unproject_pixel(where, world); + ctr[0] = (float)world[0]; + ctr[1] = (float)world[1]; + + return true; +} + +bool GUI::mouse_down(int *where, int which) +{ + status("Clicked mouse %d at %d,%d", which, where[0], where[1]); + if( which==1 ) + { + dragging = true; + return center_on_click(center, where); + } + else return false; +} + +bool GUI::mouse_up(int *where, int which) +{ + status("Released mouse %d at %d,%d", which, where[0], where[1]); + dragging = false; + return (which==1); +} + +bool GUI::mouse_drag(int *where, int *last, int which) +{ + if( which==1 ) + return center_on_click(center, where); + else + return false; +} + +int main(int argc, char **argv) +{ + gui.opt_theta = 10.0f; + gui.angle = 0.0f; + gui.dragging = false; + gui.center[0] = gui.center[1] = 0.0f; + + gui.initialize(argc, argv); + gui.toplevel->label("Simple GUI Example"); + return gui.run(); +} diff --git a/debian/fireflies/fireflies-2.08/libgfx/tests/t-img.cxx b/debian/fireflies/fireflies-2.08/libgfx/tests/t-img.cxx new file mode 100644 index 00000000..113cea8c --- /dev/null +++ b/debian/fireflies/fireflies-2.08/libgfx/tests/t-img.cxx @@ -0,0 +1,82 @@ +/************************************************************************ + + The images produced by this test are checkboard gradients. They + ramp from black in the upper left corner to full color in the lower + right corner. + + by Michael Garland, 1999. + + $Id: t-img.cxx 426 2004-09-27 04:34:55Z garland $ + + ************************************************************************/ + +#include <gfx/gfx.h> +#include <gfx/raster.h> + +static +void grayscale_test() +{ + ByteRaster img(256, 256, 1); + + int i, j, c; + + for(i=0; i<img.height(); i++) for(j=0; j<img.width(); j++) + { + c = ((((i&0x8)==0)^((j&0x8))==0))*(i+j)/2; + img.pixel(j,i)[0] = c; + } + + write_pnm_image("chex1.pgm", img); + write_tiff_image("chex1.tif", img); + write_png_image("chex1.png", img); + write_jpeg_image("chex1.jpg", img); + + ByteRaster *pgm = read_pnm_image("chex1.pgm"); + ByteRaster *tif = read_tiff_image("chex1.tif"); + ByteRaster *png = read_png_image("chex1.png"); + ByteRaster *jpg = read_jpeg_image("chex1.jpg"); + + if( pgm ) write_pnm_image("chex1-dup.pgm", *pgm); + if( tif ) write_tiff_image("chex1-dup.tif", *tif); + if( png ) write_png_image("chex1-dup.png", *png); + if( jpg ) write_jpeg_image("chex1-dup.jpg", *jpg); +} + +static +void rgb_test() +{ + ByteRaster img(256, 256, 3); + + int i, j, c; + + for(i=0; i<img.height(); i++) for(j=0; j<img.width(); j++) + { + c = ((((i&0x8)==0)^((j&0x8))==0))*(i+j)/2; + img.pixel(j,i)[0] = c; + img.pixel(j,i)[1] = c/2; + img.pixel(j,i)[2] = c/4; + } + + write_pnm_image("chex3.ppm", img); + write_tiff_image("chex3.tif", img); + write_png_image("chex3.png", img); + write_jpeg_image("chex3.jpg", img); + + ByteRaster *ppm = read_pnm_image("chex3.ppm"); + ByteRaster *tif = read_tiff_image("chex3.tif"); + ByteRaster *png = read_png_image("chex3.png"); + ByteRaster *jpg = read_jpeg_image("chex3.jpg"); + + if( ppm ) write_pnm_image("chex3-dup.ppm", *ppm); + if( tif ) write_tiff_image("chex3-dup.tif", *tif); + if( png ) write_png_image("chex3-dup.png", *png); + if( jpg ) write_jpeg_image("chex3-dup.jpg", *jpg); +} + +int main() +{ + grayscale_test(); + rgb_test(); + + return 0; +} diff --git a/debian/fireflies/fireflies-2.08/libgfx/tests/t-script.cxx b/debian/fireflies/fireflies-2.08/libgfx/tests/t-script.cxx new file mode 100644 index 00000000..42b9ad83 --- /dev/null +++ b/debian/fireflies/fireflies-2.08/libgfx/tests/t-script.cxx @@ -0,0 +1,74 @@ +/************************************************************************ + + Test the libgfx scripting facility. + + by Michael Garland, 2000. + + $Id: t-script.cxx 426 2004-09-27 04:34:55Z garland $ + + ************************************************************************/ + +#include <gfx/gfx.h> +#include <gfx/script.h> +#include <gfx/vec3.h> + +using namespace std; + +// usage: add <x>* +// Adds all numbers listed on the line and prints the result +// +// usage: avg <x>* +// Averages all numbers listed on the line and prints the result +// +int proc_add(const CmdLine &cmd) +{ + std::vector<double> values; + double sum = 0.0; + + cmd.collect_as_numbers(values); + std::vector<double>::size_type count; + for(count=0; count<values.size(); count++) + sum += values[count]; + + if( cmd.opname() == "avg" && count>0 ) + sum /= (double)count; + + cout << sum << endl; + return SCRIPT_OK; +} + +// usage: vec3 <x> <y> <z> +// Constructs a 3-vector and prints the result +int proc_vec3(const CmdLine &cmd) +{ + if( cmd.argcount() != 3 ) return SCRIPT_ERR_SYNTAX; + + Vec3 v; + cmd.collect_as_numbers(v, 3); + + cout << v << endl; + return SCRIPT_OK; +} + +// usage: echo <msg> +// Prints all the text following the command name verbatim +int proc_echo(const CmdLine &cmd) +{ + cout << cmd.argline() << endl; + return SCRIPT_OK; +} + +int main(int argc, char *argv[]) +{ + CmdEnv env; + + env.register_command("add", proc_add); + env.register_command("avg", proc_add); + env.register_command("echo", proc_echo); + env.register_command("vec3", proc_vec3); + + for(int i=1; i<argc; i++) + env.do_file(argv[i]); + + return 0; +} diff --git a/debian/fireflies/fireflies-2.08/libgfx/tests/t-vec.cxx b/debian/fireflies/fireflies-2.08/libgfx/tests/t-vec.cxx new file mode 100644 index 00000000..434c97d3 --- /dev/null +++ b/debian/fireflies/fireflies-2.08/libgfx/tests/t-vec.cxx @@ -0,0 +1,78 @@ +/************************************************************************ + + Test various vector math facilities provided by libgfx. + + by Michael Garland, 2000. + + $Id: t-vec.cxx 426 2004-09-27 04:34:55Z garland $ + + ************************************************************************/ + +#include <gfx/gfx.h> + +#include <gfx/vec2.h> +#include <gfx/vec3.h> +#include <gfx/vec4.h> +#include <gfx/intvec.h> + +using namespace std; + +void test_intvec() +{ + cout << "Testing IntVec types" << endl; + + class Normal : public IntVec<short, SHRT_MAX, 3> + { + public: + Normal(const Vec3& v) { (*this) = v; } + + Vec3 unpack() const { return Vec3((*this)[0],(*this)[1],(*this)[2]); } + void pack(const Vec3& v) + { set(0, v[0]); set(1, v[1]); set(2, v[2]); } + + Normal& operator=(const Vec3& v) { pack(v); return *this; } + }; + + Normal n = Vec3(1.0, 0.4, -1.0); + cout << " n = " << n.unpack() << endl; + + n.set(0, -1.0); n.set(1, 0.4); n.set(2, 1); + cout << " n = " << n[0] << " " << n[1] << " " << n[2] << endl; + + + typedef IntVec3<unsigned char, UCHAR_MAX> byteColor; + byteColor rgb(0.8, 0.2, 0.2); + cout << " rgb = " << rgb.unpack() << endl; +} + +template<class Vec> +void test_vector() +{ + Vec u = 0; + Vec v = 0; + + u[0] = 1; + v[1] = 1; + + Vec x = u * 2.0; + Vec y = v / 2.0; + + cout << " x = " << x << endl; + cout << " y = " << y << endl; +} + +int main() +{ + cout << "+ Testing class Vec2" << endl; + test_vector<Vec2>(); + + cout << "+ Testing class Vec3" << endl; + test_vector<Vec3>(); + + cout << "+ Testing class Vec4" << endl; + test_vector<Vec4>(); + + test_intvec(); + + return 0; +} diff --git a/debian/fireflies/fireflies-2.08/libgfx/tests/test1.sc b/debian/fireflies/fireflies-2.08/libgfx/tests/test1.sc new file mode 100644 index 00000000..489f8cb5 --- /dev/null +++ b/debian/fireflies/fireflies-2.08/libgfx/tests/test1.sc @@ -0,0 +1,17 @@ +# This is a test script meant to be fed to t-script. It is not meant as an +# exhaustive test, but mainly as a demonstration. +# +# $Id: test1.sc 170 2000-09-06 21:43:25Z garland $ +# + +echo The following sum should be 15 +add 1 2 3 4 5 + +echo +echo The following average should be 3.5 +avg 3 8 2 1 + +echo +echo The following is the vector [1 0 0] +vec3 1 0 0 + diff --git a/debian/fireflies/fireflies-2.08/libgfx/vc6/libgfx.dsw b/debian/fireflies/fireflies-2.08/libgfx/vc6/libgfx.dsw new file mode 100644 index 00000000..3e8d4588 --- /dev/null +++ b/debian/fireflies/fireflies-2.08/libgfx/vc6/libgfx.dsw @@ -0,0 +1,89 @@ +Microsoft Developer Studio Workspace File, Format Version 6.00
+# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
+
+###############################################################################
+
+Project: "libgfx"=.\libgfx\libgfx.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Project: "tglimg"=.\tglimg\tglimg.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+ Begin Project Dependency
+ Project_Dep_Name libgfx
+ End Project Dependency
+}}}
+
+###############################################################################
+
+Project: "tgui"=.\tgui\tgui.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+ Begin Project Dependency
+ Project_Dep_Name libgfx
+ End Project Dependency
+}}}
+
+###############################################################################
+
+Project: "tscript"=.\tscript\tscript.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+ Begin Project Dependency
+ Project_Dep_Name libgfx
+ End Project Dependency
+}}}
+
+###############################################################################
+
+Project: "tvec"=.\tvec\tvec.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+ Begin Project Dependency
+ Project_Dep_Name libgfx
+ End Project Dependency
+}}}
+
+###############################################################################
+
+Global:
+
+Package=<5>
+{{{
+}}}
+
+Package=<3>
+{{{
+}}}
+
+###############################################################################
+
diff --git a/debian/fireflies/fireflies-2.08/libgfx/vc6/libgfx/libgfx.dsp b/debian/fireflies/fireflies-2.08/libgfx/vc6/libgfx/libgfx.dsp new file mode 100644 index 00000000..d2200d55 --- /dev/null +++ b/debian/fireflies/fireflies-2.08/libgfx/vc6/libgfx/libgfx.dsp @@ -0,0 +1,236 @@ +# Microsoft Developer Studio Project File - Name="libgfx" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Static Library" 0x0104
+
+CFG=libgfx - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "libgfx.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "libgfx.mak" CFG="libgfx - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "libgfx - Win32 Release" (based on "Win32 (x86) Static Library")
+!MESSAGE "libgfx - Win32 Debug" (based on "Win32 (x86) Static Library")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "libgfx - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release"
+# PROP Intermediate_Dir "Release"
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
+# ADD CPP /nologo /W3 /GX /O2 /I "../../include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
+# ADD BASE RSC /l 0x409
+# ADD RSC /l 0x409
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo
+
+!ELSEIF "$(CFG)" == "libgfx - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug"
+# PROP Intermediate_Dir "Debug"
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /GX /Z7 /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c
+# ADD CPP /nologo /W3 /GX /Z7 /Od /I "../../include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c
+# ADD BASE RSC /l 0x409
+# ADD RSC /l 0x409
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo
+
+!ENDIF
+
+# Begin Target
+
+# Name "libgfx - Win32 Release"
+# Name "libgfx - Win32 Debug"
+# Begin Group "Header Files"
+
+# PROP Default_Filter "*.h"
+# Begin Source File
+
+SOURCE=..\..\include\gfx\arcball.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\include\gfx\array.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\include\gfx\baseball.h
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\include\gfx\config-vc.h"
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\include\gfx\geom3d.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\include\gfx\gfx.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\include\gfx\gl.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\include\gfx\gltools.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\include\gfx\gui.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\include\gfx\intvec.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\include\gfx\mat2.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\include\gfx\mat3.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\include\gfx\mat4.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\include\gfx\quat.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\include\gfx\raster.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\include\gfx\script.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\include\gfx\trackball.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\include\gfx\vec2.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\include\gfx\vec3.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\include\gfx\vec4.h
+# End Source File
+# End Group
+# Begin Source File
+
+SOURCE=..\..\src\arcball.cxx
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\src\baseball.cxx
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\src\geom3d.cxx
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\src\gltools.cxx
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\src\gui.cxx
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\src\mat2.cxx
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\src\mat3.cxx
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\src\mat4.cxx
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\src\quat.cxx
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\src\raster-jpeg.cxx"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\src\raster-png.cxx"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\src\raster-pnm.cxx"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\src\raster-tiff.cxx"
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\src\raster.cxx
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\src\script.cxx
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\src\time.cxx
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\src\trackball.cxx
+# End Source File
+# End Target
+# End Project
diff --git a/debian/fireflies/fireflies-2.08/libgfx/vc6/libgfxmfc/libgfx.dsp b/debian/fireflies/fireflies-2.08/libgfx/vc6/libgfxmfc/libgfx.dsp new file mode 100644 index 00000000..ac91f0c3 --- /dev/null +++ b/debian/fireflies/fireflies-2.08/libgfx/vc6/libgfxmfc/libgfx.dsp @@ -0,0 +1,252 @@ +# Microsoft Developer Studio Project File - Name="libgfxmfc" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Static Library" 0x0104
+
+CFG=libgfxmfc - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "libgfx.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "libgfx.mak" CFG="libgfxmfc - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "libgfxmfc - Win32 Release" (based on "Win32 (x86) Static Library")
+!MESSAGE "libgfxmfc - Win32 Debug" (based on "Win32 (x86) Static Library")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "libgfxmfc - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release"
+# PROP Intermediate_Dir "Release"
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
+# ADD CPP /nologo /MD /W3 /GX /O2 /I "../../include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
+# ADD BASE RSC /l 0x409
+# ADD RSC /l 0x409
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo
+
+!ELSEIF "$(CFG)" == "libgfxmfc - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug"
+# PROP Intermediate_Dir "Debug"
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /GX /Z7 /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c
+# ADD CPP /nologo /MDd /W3 /GX /Z7 /Od /I "../../include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c
+# ADD BASE RSC /l 0x409
+# ADD RSC /l 0x409
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo
+
+!ENDIF
+
+# Begin Target
+
+# Name "libgfxmfc - Win32 Release"
+# Name "libgfxmfc - Win32 Debug"
+# Begin Group "Header Files"
+
+# PROP Default_Filter "*.h"
+# Begin Source File
+
+SOURCE=..\..\include\gfx\arcball.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\include\gfx\array.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\include\gfx\baseball.h
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\include\gfx\config-vc.h"
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\include\gfx\geom3d.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\include\gfx\gfx.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\include\gfx\gl.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\include\gfx\gltools.h
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\include\gfx\gui-mfc.h"
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\include\gfx\gui.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\include\gfx\intvec.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\include\gfx\mat2.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\include\gfx\mat3.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\include\gfx\mat4.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\include\gfx\mfc.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\include\gfx\quat.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\include\gfx\raster.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\include\gfx\script.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\include\gfx\trackball.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\include\gfx\vec2.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\include\gfx\vec3.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\include\gfx\vec4.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\include\gfx\wintools.h
+# End Source File
+# End Group
+# Begin Source File
+
+SOURCE=..\..\src\arcball.cxx
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\src\baseball.cxx
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\src\geom3d.cxx
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\src\gltools.cxx
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\src\gui-mfc.cxx"
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\src\mat2.cxx
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\src\mat3.cxx
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\src\mat4.cxx
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\src\quat.cxx
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\src\raster-jpeg.cxx"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\src\raster-png.cxx"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\src\raster-pnm.cxx"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\src\raster-tiff.cxx"
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\src\raster.cxx
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\src\script.cxx
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\src\time.cxx
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\src\trackball.cxx
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\src\wintools.cxx
+# End Source File
+# End Target
+# End Project
diff --git a/debian/fireflies/fireflies-2.08/libgfx/vc6/tglimg/tglimg.dsp b/debian/fireflies/fireflies-2.08/libgfx/vc6/tglimg/tglimg.dsp new file mode 100644 index 00000000..e656e067 --- /dev/null +++ b/debian/fireflies/fireflies-2.08/libgfx/vc6/tglimg/tglimg.dsp @@ -0,0 +1,95 @@ +# Microsoft Developer Studio Project File - Name="tglimg" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Application" 0x0101
+
+CFG=tglimg - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "tglimg.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "tglimg.mak" CFG="tglimg - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "tglimg - Win32 Release" (based on "Win32 (x86) Application")
+!MESSAGE "tglimg - Win32 Debug" (based on "Win32 (x86) Application")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+MTL=midl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "tglimg - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release"
+# PROP Intermediate_Dir "Release"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
+# ADD CPP /nologo /W3 /GX /O2 /I "../../include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /machine:I386
+# ADD LINK32 fltk.lib fltkgl.lib libtiff.lib libjpeg.lib libpng.lib zlib.lib opengl32.lib glu32.lib wsock32.lib comctl32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /machine:I386
+
+!ELSEIF "$(CFG)" == "tglimg - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug"
+# PROP Intermediate_Dir "Debug"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c
+# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 fltk_d.lib fltkgl_d.lib libtiff_d.lib libjpeg_d.lib libpng_d.lib zlib_d.lib opengl32.lib glu32.lib wsock32.lib comctl32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept
+
+!ENDIF
+
+# Begin Target
+
+# Name "tglimg - Win32 Release"
+# Name "tglimg - Win32 Debug"
+# Begin Source File
+
+SOURCE="..\..\tests\t-glimg.cxx"
+# End Source File
+# End Target
+# End Project
diff --git a/debian/fireflies/fireflies-2.08/libgfx/vc6/tgui/tgui.dsp b/debian/fireflies/fireflies-2.08/libgfx/vc6/tgui/tgui.dsp new file mode 100644 index 00000000..9998e23d --- /dev/null +++ b/debian/fireflies/fireflies-2.08/libgfx/vc6/tgui/tgui.dsp @@ -0,0 +1,95 @@ +# Microsoft Developer Studio Project File - Name="tgui" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Application" 0x0101
+
+CFG=tgui - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "tgui.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "tgui.mak" CFG="tgui - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "tgui - Win32 Release" (based on "Win32 (x86) Application")
+!MESSAGE "tgui - Win32 Debug" (based on "Win32 (x86) Application")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+MTL=midl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "tgui - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release"
+# PROP Intermediate_Dir "Release"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
+# ADD CPP /nologo /W3 /GX /O2 /I "../../include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /machine:I386
+# ADD LINK32 fltk.lib fltkgl.lib libtiff.lib libjpeg.lib libpng.lib zlib.lib opengl32.lib glu32.lib wsock32.lib comctl32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /machine:I386
+
+!ELSEIF "$(CFG)" == "tgui - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug"
+# PROP Intermediate_Dir "Debug"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c
+# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 fltk_d.lib fltkgl_d.lib libtiff_d.lib libjpeg_d.lib libpng_d.lib zlib_d.lib opengl32.lib glu32.lib wsock32.lib comctl32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept
+
+!ENDIF
+
+# Begin Target
+
+# Name "tgui - Win32 Release"
+# Name "tgui - Win32 Debug"
+# Begin Source File
+
+SOURCE="..\..\tests\t-gui.cxx"
+# End Source File
+# End Target
+# End Project
diff --git a/debian/fireflies/fireflies-2.08/libgfx/vc6/tmfc/tmfc.dsp b/debian/fireflies/fireflies-2.08/libgfx/vc6/tmfc/tmfc.dsp new file mode 100644 index 00000000..5be064ef --- /dev/null +++ b/debian/fireflies/fireflies-2.08/libgfx/vc6/tmfc/tmfc.dsp @@ -0,0 +1,116 @@ +# Microsoft Developer Studio Project File - Name="tmfc" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Application" 0x0101
+
+CFG=tmfc - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "tmfc.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "tmfc.mak" CFG="tmfc - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "tmfc - Win32 Release" (based on "Win32 (x86) Application")
+!MESSAGE "tmfc - Win32 Debug" (based on "Win32 (x86) Application")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+MTL=midl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "tmfc - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 2
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release"
+# PROP Intermediate_Dir "Release"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /c
+# ADD CPP /nologo /MD /W3 /GX /O2 /I "../../include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_AFXDLL" /YX /FD /c
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG" /d "_AFXDLL"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /machine:I386
+# ADD LINK32 opengl32.lib glu32.lib /nologo /subsystem:windows /machine:I386
+
+!ELSEIF "$(CFG)" == "tmfc - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 2
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug"
+# PROP Intermediate_Dir "Debug"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /GZ /c
+# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "../../include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_AFXDLL" /YX /FD /GZ /c
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG" /d "_AFXDLL"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 opengl32.lib glu32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept
+
+!ENDIF
+
+# Begin Target
+
+# Name "tmfc - Win32 Release"
+# Name "tmfc - Win32 Debug"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cxx;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE="..\..\tests\t-mfc.cxx"
+
+!IF "$(CFG)" == "tmfc - Win32 Release"
+
+!ELSEIF "$(CFG)" == "tmfc - Win32 Debug"
+
+# ADD CPP /MLd
+
+!ENDIF
+
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# End Group
+# Begin Group "Resource Files"
+
+# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
+# End Group
+# End Target
+# End Project
diff --git a/debian/fireflies/fireflies-2.08/libgfx/vc6/tscript/tscript.dsp b/debian/fireflies/fireflies-2.08/libgfx/vc6/tscript/tscript.dsp new file mode 100644 index 00000000..7cd3d363 --- /dev/null +++ b/debian/fireflies/fireflies-2.08/libgfx/vc6/tscript/tscript.dsp @@ -0,0 +1,88 @@ +# Microsoft Developer Studio Project File - Name="tscript" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Console Application" 0x0103
+
+CFG=tscript - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "tscript.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "tscript.mak" CFG="tscript - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "tscript - Win32 Release" (based on "Win32 (x86) Console Application")
+!MESSAGE "tscript - Win32 Debug" (based on "Win32 (x86) Console Application")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "tscript - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release"
+# PROP Intermediate_Dir "Release"
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD CPP /nologo /W3 /GX /O2 /I "../../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
+
+!ELSEIF "$(CFG)" == "tscript - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug"
+# PROP Intermediate_Dir "Debug"
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
+# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
+
+!ENDIF
+
+# Begin Target
+
+# Name "tscript - Win32 Release"
+# Name "tscript - Win32 Debug"
+# Begin Source File
+
+SOURCE="..\..\tests\t-script.cxx"
+# End Source File
+# End Target
+# End Project
diff --git a/debian/fireflies/fireflies-2.08/libgfx/vc6/tvec/tvec.dsp b/debian/fireflies/fireflies-2.08/libgfx/vc6/tvec/tvec.dsp new file mode 100644 index 00000000..81c3cd1c --- /dev/null +++ b/debian/fireflies/fireflies-2.08/libgfx/vc6/tvec/tvec.dsp @@ -0,0 +1,88 @@ +# Microsoft Developer Studio Project File - Name="tvec" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Console Application" 0x0103
+
+CFG=tvec - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "tvec.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "tvec.mak" CFG="tvec - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "tvec - Win32 Release" (based on "Win32 (x86) Console Application")
+!MESSAGE "tvec - Win32 Debug" (based on "Win32 (x86) Console Application")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "tvec - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release"
+# PROP Intermediate_Dir "Release"
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD CPP /nologo /W3 /GX /O2 /I "../../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
+
+!ELSEIF "$(CFG)" == "tvec - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug"
+# PROP Intermediate_Dir "Debug"
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
+# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
+
+!ENDIF
+
+# Begin Target
+
+# Name "tvec - Win32 Release"
+# Name "tvec - Win32 Debug"
+# Begin Source File
+
+SOURCE="..\..\tests\t-vec.cxx"
+# End Source File
+# End Target
+# End Project
diff --git a/debian/fireflies/fireflies-2.08/libgfx/vc7/libgfx.sln b/debian/fireflies/fireflies-2.08/libgfx/vc7/libgfx.sln new file mode 100644 index 00000000..e9c0bf09 --- /dev/null +++ b/debian/fireflies/fireflies-2.08/libgfx/vc7/libgfx.sln @@ -0,0 +1,57 @@ +Microsoft Visual Studio Solution File, Format Version 8.00
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libgfx", "libgfx\libgfx.vcproj", "{81A1BD6D-E2F6-4CCB-90C6-B4DCED78E38B}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tglimg", "tglimg\tglimg.vcproj", "{EC337A90-E000-4154-A535-43E385E3332E}"
+ ProjectSection(ProjectDependencies) = postProject
+ {81A1BD6D-E2F6-4CCB-90C6-B4DCED78E38B} = {81A1BD6D-E2F6-4CCB-90C6-B4DCED78E38B}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tgui", "tgui\tgui.vcproj", "{213DD15E-5BC0-401D-B213-9EDBBD632EE0}"
+ ProjectSection(ProjectDependencies) = postProject
+ {81A1BD6D-E2F6-4CCB-90C6-B4DCED78E38B} = {81A1BD6D-E2F6-4CCB-90C6-B4DCED78E38B}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tscript", "tscript\tscript.vcproj", "{16EBB0D5-45C6-4E81-AFD1-29F73C5CB877}"
+ ProjectSection(ProjectDependencies) = postProject
+ {81A1BD6D-E2F6-4CCB-90C6-B4DCED78E38B} = {81A1BD6D-E2F6-4CCB-90C6-B4DCED78E38B}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tvec", "tvec\tvec.vcproj", "{8AC9018F-D751-490B-84E0-118E30F50058}"
+ ProjectSection(ProjectDependencies) = postProject
+ {81A1BD6D-E2F6-4CCB-90C6-B4DCED78E38B} = {81A1BD6D-E2F6-4CCB-90C6-B4DCED78E38B}
+ EndProjectSection
+EndProject
+Global
+ GlobalSection(SolutionConfiguration) = preSolution
+ Debug = Debug
+ Release = Release
+ EndGlobalSection
+ GlobalSection(ProjectConfiguration) = postSolution
+ {81A1BD6D-E2F6-4CCB-90C6-B4DCED78E38B}.Debug.ActiveCfg = Debug|Win32
+ {81A1BD6D-E2F6-4CCB-90C6-B4DCED78E38B}.Debug.Build.0 = Debug|Win32
+ {81A1BD6D-E2F6-4CCB-90C6-B4DCED78E38B}.Release.ActiveCfg = Release|Win32
+ {81A1BD6D-E2F6-4CCB-90C6-B4DCED78E38B}.Release.Build.0 = Release|Win32
+ {EC337A90-E000-4154-A535-43E385E3332E}.Debug.ActiveCfg = Debug|Win32
+ {EC337A90-E000-4154-A535-43E385E3332E}.Debug.Build.0 = Debug|Win32
+ {EC337A90-E000-4154-A535-43E385E3332E}.Release.ActiveCfg = Release|Win32
+ {EC337A90-E000-4154-A535-43E385E3332E}.Release.Build.0 = Release|Win32
+ {213DD15E-5BC0-401D-B213-9EDBBD632EE0}.Debug.ActiveCfg = Debug|Win32
+ {213DD15E-5BC0-401D-B213-9EDBBD632EE0}.Debug.Build.0 = Debug|Win32
+ {213DD15E-5BC0-401D-B213-9EDBBD632EE0}.Release.ActiveCfg = Release|Win32
+ {213DD15E-5BC0-401D-B213-9EDBBD632EE0}.Release.Build.0 = Release|Win32
+ {16EBB0D5-45C6-4E81-AFD1-29F73C5CB877}.Debug.ActiveCfg = Debug|Win32
+ {16EBB0D5-45C6-4E81-AFD1-29F73C5CB877}.Debug.Build.0 = Debug|Win32
+ {16EBB0D5-45C6-4E81-AFD1-29F73C5CB877}.Release.ActiveCfg = Release|Win32
+ {16EBB0D5-45C6-4E81-AFD1-29F73C5CB877}.Release.Build.0 = Release|Win32
+ {8AC9018F-D751-490B-84E0-118E30F50058}.Debug.ActiveCfg = Debug|Win32
+ {8AC9018F-D751-490B-84E0-118E30F50058}.Debug.Build.0 = Debug|Win32
+ {8AC9018F-D751-490B-84E0-118E30F50058}.Release.ActiveCfg = Release|Win32
+ {8AC9018F-D751-490B-84E0-118E30F50058}.Release.Build.0 = Release|Win32
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ EndGlobalSection
+ GlobalSection(ExtensibilityAddIns) = postSolution
+ EndGlobalSection
+EndGlobal
diff --git a/debian/fireflies/fireflies-2.08/libgfx/vc7/libgfx/libgfx.vcproj b/debian/fireflies/fireflies-2.08/libgfx/vc7/libgfx/libgfx.vcproj new file mode 100644 index 00000000..54e73131 --- /dev/null +++ b/debian/fireflies/fireflies-2.08/libgfx/vc7/libgfx/libgfx.vcproj @@ -0,0 +1,505 @@ +<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="7.10"
+ Name="libgfx"
+ SccProjectName=""
+ SccLocalPath="">
+ <Platforms>
+ <Platform
+ Name="Win32"/>
+ </Platforms>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory=".\Debug"
+ IntermediateDirectory=".\Debug"
+ ConfigurationType="4"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="../../include"
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="2"
+ PrecompiledHeaderFile=".\Debug/libgfx.pch"
+ AssemblerListingLocation=".\Debug/"
+ ObjectFile=".\Debug/"
+ ProgramDataBaseFileName=".\Debug/"
+ WarningLevel="3"
+ SuppressStartupBanner="TRUE"
+ DebugInformationFormat="1"
+ CompileAs="0"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLibrarianTool"
+ OutputFile=".\Debug\libgfx.lib"
+ SuppressStartupBanner="TRUE"/>
+ <Tool
+ Name="VCMIDLTool"/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"
+ Culture="1033"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory=".\Release"
+ IntermediateDirectory=".\Release"
+ ConfigurationType="4"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ InlineFunctionExpansion="1"
+ AdditionalIncludeDirectories="../../include"
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS"
+ StringPooling="TRUE"
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="TRUE"
+ UsePrecompiledHeader="2"
+ PrecompiledHeaderFile=".\Release/libgfx.pch"
+ AssemblerListingLocation=".\Release/"
+ ObjectFile=".\Release/"
+ ProgramDataBaseFileName=".\Release/"
+ WarningLevel="3"
+ SuppressStartupBanner="TRUE"
+ CompileAs="0"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLibrarianTool"
+ OutputFile=".\Release\libgfx.lib"
+ SuppressStartupBanner="TRUE"/>
+ <Tool
+ Name="VCMIDLTool"/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"
+ Culture="1033"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Header Files"
+ Filter="*.h">
+ <File
+ RelativePath="..\..\include\gfx\arcball.h">
+ </File>
+ <File
+ RelativePath="..\..\include\gfx\array.h">
+ </File>
+ <File
+ RelativePath="..\..\include\gfx\baseball.h">
+ </File>
+ <File
+ RelativePath="..\..\include\gfx\config-vc.h">
+ </File>
+ <File
+ RelativePath="..\..\include\gfx\geom3d.h">
+ </File>
+ <File
+ RelativePath="..\..\include\gfx\gfx.h">
+ </File>
+ <File
+ RelativePath="..\..\include\gfx\gl.h">
+ </File>
+ <File
+ RelativePath="..\..\include\gfx\gltools.h">
+ </File>
+ <File
+ RelativePath="..\..\include\gfx\gui.h">
+ </File>
+ <File
+ RelativePath="..\..\include\gfx\intvec.h">
+ </File>
+ <File
+ RelativePath="..\..\include\gfx\mat2.h">
+ </File>
+ <File
+ RelativePath="..\..\include\gfx\mat3.h">
+ </File>
+ <File
+ RelativePath="..\..\include\gfx\mat4.h">
+ </File>
+ <File
+ RelativePath="..\..\include\gfx\quat.h">
+ </File>
+ <File
+ RelativePath="..\..\include\gfx\raster.h">
+ </File>
+ <File
+ RelativePath="..\..\include\gfx\script.h">
+ </File>
+ <File
+ RelativePath="..\..\include\gfx\trackball.h">
+ </File>
+ <File
+ RelativePath="..\..\include\gfx\vec2.h">
+ </File>
+ <File
+ RelativePath="..\..\include\gfx\vec3.h">
+ </File>
+ <File
+ RelativePath="..\..\include\gfx\vec4.h">
+ </File>
+ </Filter>
+ <File
+ RelativePath="..\..\src\arcball.cxx">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions=""/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions=""/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\..\src\baseball.cxx">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions=""/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions=""/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\..\src\geom3d.cxx">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions=""/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions=""/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\..\src\gltools.cxx">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions=""/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions=""/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\..\src\gui.cxx">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions=""/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions=""/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\..\src\mat2.cxx">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions=""/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions=""/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\..\src\mat3.cxx">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions=""/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions=""/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\..\src\mat4.cxx">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions=""/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions=""/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\..\src\quat.cxx">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions=""/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions=""/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\..\src\raster-jpeg.cxx">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions=""/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions=""/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\..\src\raster-png.cxx">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions=""/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions=""/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\..\src\raster-pnm.cxx">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions=""/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions=""/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\..\src\raster-tiff.cxx">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions=""/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions=""/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\..\src\raster.cxx">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions=""/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions=""/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\..\src\script.cxx">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions=""/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions=""/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\..\src\time.cxx">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions=""/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions=""/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\..\src\trackball.cxx">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions=""/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions=""/>
+ </FileConfiguration>
+ </File>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/debian/fireflies/fireflies-2.08/libgfx/vc7/tglimg/tglimg.vcproj b/debian/fireflies/fireflies-2.08/libgfx/vc7/tglimg/tglimg.vcproj new file mode 100644 index 00000000..d826f12d --- /dev/null +++ b/debian/fireflies/fireflies-2.08/libgfx/vc7/tglimg/tglimg.vcproj @@ -0,0 +1,166 @@ +<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="7.10"
+ Name="tglimg"
+ SccProjectName=""
+ SccLocalPath="">
+ <Platforms>
+ <Platform
+ Name="Win32"/>
+ </Platforms>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory=".\Debug"
+ IntermediateDirectory=".\Debug"
+ ConfigurationType="1"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="../../include"
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="2"
+ PrecompiledHeaderFile=".\Debug/tglimg.pch"
+ AssemblerListingLocation=".\Debug/"
+ ObjectFile=".\Debug/"
+ ProgramDataBaseFileName=".\Debug/"
+ WarningLevel="3"
+ SuppressStartupBanner="TRUE"
+ DebugInformationFormat="4"
+ CompileAs="0"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="fltk_d.lib fltkgl_d.lib libtiff_d.lib libjpeg_d.lib libpng_d.lib zlib_d.lib opengl32.lib glu32.lib wsock32.lib comctl32.lib odbc32.lib odbccp32.lib"
+ OutputFile=".\Debug/tglimg.exe"
+ LinkIncremental="1"
+ SuppressStartupBanner="TRUE"
+ GenerateDebugInformation="TRUE"
+ ProgramDatabaseFile=".\Debug/tglimg.pdb"
+ SubSystem="2"
+ TargetMachine="1"/>
+ <Tool
+ Name="VCMIDLTool"
+ PreprocessorDefinitions="_DEBUG"
+ MkTypLibCompatible="TRUE"
+ SuppressStartupBanner="TRUE"
+ TargetEnvironment="1"
+ TypeLibraryName=".\Debug/tglimg.tlb"
+ HeaderFileName=""/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="_DEBUG"
+ Culture="1033"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory=".\Release"
+ IntermediateDirectory=".\Release"
+ ConfigurationType="1"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ InlineFunctionExpansion="1"
+ AdditionalIncludeDirectories="../../include"
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS"
+ StringPooling="TRUE"
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="TRUE"
+ UsePrecompiledHeader="2"
+ PrecompiledHeaderFile=".\Release/tglimg.pch"
+ AssemblerListingLocation=".\Release/"
+ ObjectFile=".\Release/"
+ ProgramDataBaseFileName=".\Release/"
+ WarningLevel="3"
+ SuppressStartupBanner="TRUE"
+ CompileAs="0"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="fltk.lib fltkgl.lib libtiff.lib libjpeg.lib libpng.lib zlib.lib opengl32.lib glu32.lib wsock32.lib comctl32.lib odbc32.lib odbccp32.lib"
+ OutputFile=".\Release/tglimg.exe"
+ LinkIncremental="1"
+ SuppressStartupBanner="TRUE"
+ ProgramDatabaseFile=".\Release/tglimg.pdb"
+ SubSystem="2"
+ TargetMachine="1"/>
+ <Tool
+ Name="VCMIDLTool"
+ PreprocessorDefinitions="NDEBUG"
+ MkTypLibCompatible="TRUE"
+ SuppressStartupBanner="TRUE"
+ TargetEnvironment="1"
+ TypeLibraryName=".\Release/tglimg.tlb"
+ HeaderFileName=""/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="NDEBUG"
+ Culture="1033"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <File
+ RelativePath="..\..\tests\t-glimg.cxx">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions=""/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions=""/>
+ </FileConfiguration>
+ </File>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/debian/fireflies/fireflies-2.08/libgfx/vc7/tgui/tgui.vcproj b/debian/fireflies/fireflies-2.08/libgfx/vc7/tgui/tgui.vcproj new file mode 100644 index 00000000..9fe715b4 --- /dev/null +++ b/debian/fireflies/fireflies-2.08/libgfx/vc7/tgui/tgui.vcproj @@ -0,0 +1,166 @@ +<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="7.10"
+ Name="tgui"
+ SccProjectName=""
+ SccLocalPath="">
+ <Platforms>
+ <Platform
+ Name="Win32"/>
+ </Platforms>
+ <Configurations>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory=".\Release"
+ IntermediateDirectory=".\Release"
+ ConfigurationType="1"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ InlineFunctionExpansion="1"
+ AdditionalIncludeDirectories="../../include"
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS"
+ StringPooling="TRUE"
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="TRUE"
+ UsePrecompiledHeader="2"
+ PrecompiledHeaderFile=".\Release/tgui.pch"
+ AssemblerListingLocation=".\Release/"
+ ObjectFile=".\Release/"
+ ProgramDataBaseFileName=".\Release/"
+ WarningLevel="3"
+ SuppressStartupBanner="TRUE"
+ CompileAs="0"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="fltk.lib fltkgl.lib libtiff.lib libjpeg.lib libpng.lib zlib.lib opengl32.lib glu32.lib wsock32.lib comctl32.lib odbc32.lib odbccp32.lib"
+ OutputFile=".\Release/tgui.exe"
+ LinkIncremental="1"
+ SuppressStartupBanner="TRUE"
+ ProgramDatabaseFile=".\Release/tgui.pdb"
+ SubSystem="2"
+ TargetMachine="1"/>
+ <Tool
+ Name="VCMIDLTool"
+ PreprocessorDefinitions="NDEBUG"
+ MkTypLibCompatible="TRUE"
+ SuppressStartupBanner="TRUE"
+ TargetEnvironment="1"
+ TypeLibraryName=".\Release/tgui.tlb"
+ HeaderFileName=""/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="NDEBUG"
+ Culture="1033"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory=".\Debug"
+ IntermediateDirectory=".\Debug"
+ ConfigurationType="1"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="../../include"
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="2"
+ PrecompiledHeaderFile=".\Debug/tgui.pch"
+ AssemblerListingLocation=".\Debug/"
+ ObjectFile=".\Debug/"
+ ProgramDataBaseFileName=".\Debug/"
+ WarningLevel="3"
+ SuppressStartupBanner="TRUE"
+ DebugInformationFormat="4"
+ CompileAs="0"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="fltk_d.lib fltkgl_d.lib libtiff_d.lib libjpeg_d.lib libpng_d.lib zlib_d.lib opengl32.lib glu32.lib wsock32.lib comctl32.lib odbc32.lib odbccp32.lib"
+ OutputFile=".\Debug/tgui.exe"
+ LinkIncremental="1"
+ SuppressStartupBanner="TRUE"
+ GenerateDebugInformation="TRUE"
+ ProgramDatabaseFile=".\Debug/tgui.pdb"
+ SubSystem="2"
+ TargetMachine="1"/>
+ <Tool
+ Name="VCMIDLTool"
+ PreprocessorDefinitions="_DEBUG"
+ MkTypLibCompatible="TRUE"
+ SuppressStartupBanner="TRUE"
+ TargetEnvironment="1"
+ TypeLibraryName=".\Debug/tgui.tlb"
+ HeaderFileName=""/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="_DEBUG"
+ Culture="1033"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <File
+ RelativePath="..\..\tests\t-gui.cxx">
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions=""/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions=""/>
+ </FileConfiguration>
+ </File>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/debian/fireflies/fireflies-2.08/libgfx/vc7/tscript/tscript.vcproj b/debian/fireflies/fireflies-2.08/libgfx/vc7/tscript/tscript.vcproj new file mode 100644 index 00000000..2b918e7d --- /dev/null +++ b/debian/fireflies/fireflies-2.08/libgfx/vc7/tscript/tscript.vcproj @@ -0,0 +1,160 @@ +<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="7.10"
+ Name="tscript"
+ SccProjectName=""
+ SccLocalPath="">
+ <Platforms>
+ <Platform
+ Name="Win32"/>
+ </Platforms>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory=".\Debug"
+ IntermediateDirectory=".\Debug"
+ ConfigurationType="1"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE"
+ CharacterSet="2">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="../../include"
+ PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="2"
+ PrecompiledHeaderFile=".\Debug/tscript.pch"
+ AssemblerListingLocation=".\Debug/"
+ ObjectFile=".\Debug/"
+ ProgramDataBaseFileName=".\Debug/"
+ WarningLevel="3"
+ SuppressStartupBanner="TRUE"
+ DebugInformationFormat="4"
+ CompileAs="0"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile=".\Debug/tscript.exe"
+ LinkIncremental="1"
+ SuppressStartupBanner="TRUE"
+ GenerateDebugInformation="TRUE"
+ ProgramDatabaseFile=".\Debug/tscript.pdb"
+ SubSystem="1"
+ TargetMachine="1"/>
+ <Tool
+ Name="VCMIDLTool"
+ TypeLibraryName=".\Debug/tscript.tlb"
+ HeaderFileName=""/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="_DEBUG"
+ Culture="1033"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory=".\Release"
+ IntermediateDirectory=".\Release"
+ ConfigurationType="1"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE"
+ CharacterSet="2">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ InlineFunctionExpansion="1"
+ AdditionalIncludeDirectories="../../include"
+ PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
+ StringPooling="TRUE"
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="TRUE"
+ UsePrecompiledHeader="2"
+ PrecompiledHeaderFile=".\Release/tscript.pch"
+ AssemblerListingLocation=".\Release/"
+ ObjectFile=".\Release/"
+ ProgramDataBaseFileName=".\Release/"
+ WarningLevel="3"
+ SuppressStartupBanner="TRUE"
+ CompileAs="0"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile=".\Release/tscript.exe"
+ LinkIncremental="1"
+ SuppressStartupBanner="TRUE"
+ ProgramDatabaseFile=".\Release/tscript.pdb"
+ SubSystem="1"
+ TargetMachine="1"/>
+ <Tool
+ Name="VCMIDLTool"
+ TypeLibraryName=".\Release/tscript.tlb"
+ HeaderFileName=""/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="NDEBUG"
+ Culture="1033"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <File
+ RelativePath="..\..\tests\t-script.cxx">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions=""
+ BasicRuntimeChecks="3"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions=""/>
+ </FileConfiguration>
+ </File>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/debian/fireflies/fireflies-2.08/libgfx/vc7/tvec/tvec.vcproj b/debian/fireflies/fireflies-2.08/libgfx/vc7/tvec/tvec.vcproj new file mode 100644 index 00000000..26818d2f --- /dev/null +++ b/debian/fireflies/fireflies-2.08/libgfx/vc7/tvec/tvec.vcproj @@ -0,0 +1,160 @@ +<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="7.10"
+ Name="tvec"
+ SccProjectName=""
+ SccLocalPath="">
+ <Platforms>
+ <Platform
+ Name="Win32"/>
+ </Platforms>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory=".\Debug"
+ IntermediateDirectory=".\Debug"
+ ConfigurationType="1"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE"
+ CharacterSet="2">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="../../include"
+ PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="2"
+ PrecompiledHeaderFile=".\Debug/tvec.pch"
+ AssemblerListingLocation=".\Debug/"
+ ObjectFile=".\Debug/"
+ ProgramDataBaseFileName=".\Debug/"
+ WarningLevel="3"
+ SuppressStartupBanner="TRUE"
+ DebugInformationFormat="4"
+ CompileAs="0"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile=".\Debug/tvec.exe"
+ LinkIncremental="1"
+ SuppressStartupBanner="TRUE"
+ GenerateDebugInformation="TRUE"
+ ProgramDatabaseFile=".\Debug/tvec.pdb"
+ SubSystem="1"
+ TargetMachine="1"/>
+ <Tool
+ Name="VCMIDLTool"
+ TypeLibraryName=".\Debug/tvec.tlb"
+ HeaderFileName=""/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="_DEBUG"
+ Culture="1033"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory=".\Release"
+ IntermediateDirectory=".\Release"
+ ConfigurationType="1"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE"
+ CharacterSet="2">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ InlineFunctionExpansion="1"
+ AdditionalIncludeDirectories="../../include"
+ PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
+ StringPooling="TRUE"
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="TRUE"
+ UsePrecompiledHeader="2"
+ PrecompiledHeaderFile=".\Release/tvec.pch"
+ AssemblerListingLocation=".\Release/"
+ ObjectFile=".\Release/"
+ ProgramDataBaseFileName=".\Release/"
+ WarningLevel="3"
+ SuppressStartupBanner="TRUE"
+ CompileAs="0"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile=".\Release/tvec.exe"
+ LinkIncremental="1"
+ SuppressStartupBanner="TRUE"
+ ProgramDatabaseFile=".\Release/tvec.pdb"
+ SubSystem="1"
+ TargetMachine="1"/>
+ <Tool
+ Name="VCMIDLTool"
+ TypeLibraryName=".\Release/tvec.tlb"
+ HeaderFileName=""/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="NDEBUG"
+ Culture="1033"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <File
+ RelativePath="..\..\tests\t-vec.cxx">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions=""
+ BasicRuntimeChecks="3"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions=""/>
+ </FileConfiguration>
+ </File>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
|