Remove libGLU
authorMatt Turner <mattst88@gmail.com>
Thu, 23 Aug 2012 23:39:20 +0000 (16:39 -0700)
committerMatt Turner <mattst88@gmail.com>
Fri, 31 Aug 2012 17:58:15 +0000 (10:58 -0700)
It's been moved to its own repository, found at
http://cgit.freedesktop.org/mesa/glu/

Acked-by: Kenneth Graunke <kenneth@whitecape.org>
217 files changed:
configs/default
configure.ac
docs/autoconf.html
docs/contents.html
docs/download.html
docs/faq.html
docs/glu.html [deleted file]
docs/install.html
docs/license.html
docs/relnotes-9.0.html
docs/sourcetree.html
include/GL/glu.h [deleted file]
include/GL/glu_mangle.h [deleted file]
src/SConscript
src/glu/.gitignore [deleted file]
src/glu/Makefile [deleted file]
src/glu/glu.pc.in [deleted file]
src/glu/sgi/.gitignore [deleted file]
src/glu/sgi/Makefile [deleted file]
src/glu/sgi/SConscript [deleted file]
src/glu/sgi/dummy.cc [deleted file]
src/glu/sgi/glu.def [deleted file]
src/glu/sgi/glu.exports [deleted file]
src/glu/sgi/glu.exports.darwin [deleted file]
src/glu/sgi/include/gluos.h [deleted file]
src/glu/sgi/libnurbs/interface/bezierEval.cc [deleted file]
src/glu/sgi/libnurbs/interface/bezierEval.h [deleted file]
src/glu/sgi/libnurbs/interface/bezierPatch.cc [deleted file]
src/glu/sgi/libnurbs/interface/bezierPatch.h [deleted file]
src/glu/sgi/libnurbs/interface/bezierPatchMesh.cc [deleted file]
src/glu/sgi/libnurbs/interface/bezierPatchMesh.h [deleted file]
src/glu/sgi/libnurbs/interface/glcurveval.cc [deleted file]
src/glu/sgi/libnurbs/interface/glcurveval.h [deleted file]
src/glu/sgi/libnurbs/interface/glimports.h [deleted file]
src/glu/sgi/libnurbs/interface/glinterface.cc [deleted file]
src/glu/sgi/libnurbs/interface/glrenderer.cc [deleted file]
src/glu/sgi/libnurbs/interface/glrenderer.h [deleted file]
src/glu/sgi/libnurbs/interface/glsurfeval.cc [deleted file]
src/glu/sgi/libnurbs/interface/glsurfeval.h [deleted file]
src/glu/sgi/libnurbs/interface/incurveeval.cc [deleted file]
src/glu/sgi/libnurbs/interface/insurfeval.cc [deleted file]
src/glu/sgi/libnurbs/interface/mystdio.h [deleted file]
src/glu/sgi/libnurbs/interface/mystdlib.h [deleted file]
src/glu/sgi/libnurbs/internals/arc.cc [deleted file]
src/glu/sgi/libnurbs/internals/arc.h [deleted file]
src/glu/sgi/libnurbs/internals/arcsorter.cc [deleted file]
src/glu/sgi/libnurbs/internals/arcsorter.h [deleted file]
src/glu/sgi/libnurbs/internals/arctess.cc [deleted file]
src/glu/sgi/libnurbs/internals/arctess.h [deleted file]
src/glu/sgi/libnurbs/internals/backend.cc [deleted file]
src/glu/sgi/libnurbs/internals/backend.h [deleted file]
src/glu/sgi/libnurbs/internals/basiccrveval.cc [deleted file]
src/glu/sgi/libnurbs/internals/basiccrveval.h [deleted file]
src/glu/sgi/libnurbs/internals/basicsurfeval.cc [deleted file]
src/glu/sgi/libnurbs/internals/basicsurfeval.h [deleted file]
src/glu/sgi/libnurbs/internals/bezierarc.h [deleted file]
src/glu/sgi/libnurbs/internals/bin.cc [deleted file]
src/glu/sgi/libnurbs/internals/bin.h [deleted file]
src/glu/sgi/libnurbs/internals/bufpool.cc [deleted file]
src/glu/sgi/libnurbs/internals/bufpool.h [deleted file]
src/glu/sgi/libnurbs/internals/cachingeval.cc [deleted file]
src/glu/sgi/libnurbs/internals/cachingeval.h [deleted file]
src/glu/sgi/libnurbs/internals/ccw.cc [deleted file]
src/glu/sgi/libnurbs/internals/coveandtiler.cc [deleted file]
src/glu/sgi/libnurbs/internals/coveandtiler.h [deleted file]
src/glu/sgi/libnurbs/internals/curve.cc [deleted file]
src/glu/sgi/libnurbs/internals/curve.h [deleted file]
src/glu/sgi/libnurbs/internals/curvelist.cc [deleted file]
src/glu/sgi/libnurbs/internals/curvelist.h [deleted file]
src/glu/sgi/libnurbs/internals/curvesub.cc [deleted file]
src/glu/sgi/libnurbs/internals/dataTransform.cc [deleted file]
src/glu/sgi/libnurbs/internals/dataTransform.h [deleted file]
src/glu/sgi/libnurbs/internals/defines.h [deleted file]
src/glu/sgi/libnurbs/internals/displaylist.cc [deleted file]
src/glu/sgi/libnurbs/internals/displaylist.h [deleted file]
src/glu/sgi/libnurbs/internals/displaymode.h [deleted file]
src/glu/sgi/libnurbs/internals/flist.cc [deleted file]
src/glu/sgi/libnurbs/internals/flist.h [deleted file]
src/glu/sgi/libnurbs/internals/flistsorter.cc [deleted file]
src/glu/sgi/libnurbs/internals/flistsorter.h [deleted file]
src/glu/sgi/libnurbs/internals/gridline.h [deleted file]
src/glu/sgi/libnurbs/internals/gridtrimvertex.h [deleted file]
src/glu/sgi/libnurbs/internals/gridvertex.h [deleted file]
src/glu/sgi/libnurbs/internals/hull.cc [deleted file]
src/glu/sgi/libnurbs/internals/hull.h [deleted file]
src/glu/sgi/libnurbs/internals/intersect.cc [deleted file]
src/glu/sgi/libnurbs/internals/jarcloc.h [deleted file]
src/glu/sgi/libnurbs/internals/knotvector.cc [deleted file]
src/glu/sgi/libnurbs/internals/knotvector.h [deleted file]
src/glu/sgi/libnurbs/internals/mapdesc.cc [deleted file]
src/glu/sgi/libnurbs/internals/mapdesc.h [deleted file]
src/glu/sgi/libnurbs/internals/mapdescv.cc [deleted file]
src/glu/sgi/libnurbs/internals/maplist.cc [deleted file]
src/glu/sgi/libnurbs/internals/maplist.h [deleted file]
src/glu/sgi/libnurbs/internals/mesher.cc [deleted file]
src/glu/sgi/libnurbs/internals/mesher.h [deleted file]
src/glu/sgi/libnurbs/internals/monoTriangulationBackend.cc [deleted file]
src/glu/sgi/libnurbs/internals/monotonizer.cc [deleted file]
src/glu/sgi/libnurbs/internals/monotonizer.h [deleted file]
src/glu/sgi/libnurbs/internals/myassert.h [deleted file]
src/glu/sgi/libnurbs/internals/mycode.cc [deleted file]
src/glu/sgi/libnurbs/internals/mymath.h [deleted file]
src/glu/sgi/libnurbs/internals/mysetjmp.h [deleted file]
src/glu/sgi/libnurbs/internals/mystring.h [deleted file]
src/glu/sgi/libnurbs/internals/nurbsconsts.h [deleted file]
src/glu/sgi/libnurbs/internals/nurbsinterfac.cc [deleted file]
src/glu/sgi/libnurbs/internals/nurbstess.cc [deleted file]
src/glu/sgi/libnurbs/internals/nurbstess.h [deleted file]
src/glu/sgi/libnurbs/internals/patch.cc [deleted file]
src/glu/sgi/libnurbs/internals/patch.h [deleted file]
src/glu/sgi/libnurbs/internals/patchlist.cc [deleted file]
src/glu/sgi/libnurbs/internals/patchlist.h [deleted file]
src/glu/sgi/libnurbs/internals/pwlarc.h [deleted file]
src/glu/sgi/libnurbs/internals/quilt.cc [deleted file]
src/glu/sgi/libnurbs/internals/quilt.h [deleted file]
src/glu/sgi/libnurbs/internals/reader.cc [deleted file]
src/glu/sgi/libnurbs/internals/reader.h [deleted file]
src/glu/sgi/libnurbs/internals/renderhints.cc [deleted file]
src/glu/sgi/libnurbs/internals/renderhints.h [deleted file]
src/glu/sgi/libnurbs/internals/simplemath.h [deleted file]
src/glu/sgi/libnurbs/internals/slicer.cc [deleted file]
src/glu/sgi/libnurbs/internals/slicer.h [deleted file]
src/glu/sgi/libnurbs/internals/sorter.cc [deleted file]
src/glu/sgi/libnurbs/internals/sorter.h [deleted file]
src/glu/sgi/libnurbs/internals/splitarcs.cc [deleted file]
src/glu/sgi/libnurbs/internals/subdivider.cc [deleted file]
src/glu/sgi/libnurbs/internals/subdivider.h [deleted file]
src/glu/sgi/libnurbs/internals/tobezier.cc [deleted file]
src/glu/sgi/libnurbs/internals/trimline.cc [deleted file]
src/glu/sgi/libnurbs/internals/trimline.h [deleted file]
src/glu/sgi/libnurbs/internals/trimregion.cc [deleted file]
src/glu/sgi/libnurbs/internals/trimregion.h [deleted file]
src/glu/sgi/libnurbs/internals/trimvertex.h [deleted file]
src/glu/sgi/libnurbs/internals/trimvertpool.cc [deleted file]
src/glu/sgi/libnurbs/internals/trimvertpool.h [deleted file]
src/glu/sgi/libnurbs/internals/types.h [deleted file]
src/glu/sgi/libnurbs/internals/uarray.cc [deleted file]
src/glu/sgi/libnurbs/internals/uarray.h [deleted file]
src/glu/sgi/libnurbs/internals/varray.cc [deleted file]
src/glu/sgi/libnurbs/internals/varray.h [deleted file]
src/glu/sgi/libnurbs/nurbtess/definitions.h [deleted file]
src/glu/sgi/libnurbs/nurbtess/directedLine.cc [deleted file]
src/glu/sgi/libnurbs/nurbtess/directedLine.h [deleted file]
src/glu/sgi/libnurbs/nurbtess/glimports.h [deleted file]
src/glu/sgi/libnurbs/nurbtess/gridWrap.cc [deleted file]
src/glu/sgi/libnurbs/nurbtess/gridWrap.h [deleted file]
src/glu/sgi/libnurbs/nurbtess/monoChain.cc [deleted file]
src/glu/sgi/libnurbs/nurbtess/monoChain.h [deleted file]
src/glu/sgi/libnurbs/nurbtess/monoPolyPart.cc [deleted file]
src/glu/sgi/libnurbs/nurbtess/monoPolyPart.h [deleted file]
src/glu/sgi/libnurbs/nurbtess/monoTriangulation.cc [deleted file]
src/glu/sgi/libnurbs/nurbtess/monoTriangulation.h [deleted file]
src/glu/sgi/libnurbs/nurbtess/mystdio.h [deleted file]
src/glu/sgi/libnurbs/nurbtess/mystdlib.h [deleted file]
src/glu/sgi/libnurbs/nurbtess/partitionX.cc [deleted file]
src/glu/sgi/libnurbs/nurbtess/partitionX.h [deleted file]
src/glu/sgi/libnurbs/nurbtess/partitionY.cc [deleted file]
src/glu/sgi/libnurbs/nurbtess/partitionY.h [deleted file]
src/glu/sgi/libnurbs/nurbtess/polyDBG.cc [deleted file]
src/glu/sgi/libnurbs/nurbtess/polyDBG.h [deleted file]
src/glu/sgi/libnurbs/nurbtess/polyUtil.cc [deleted file]
src/glu/sgi/libnurbs/nurbtess/polyUtil.h [deleted file]
src/glu/sgi/libnurbs/nurbtess/primitiveStream.cc [deleted file]
src/glu/sgi/libnurbs/nurbtess/primitiveStream.h [deleted file]
src/glu/sgi/libnurbs/nurbtess/quicksort.cc [deleted file]
src/glu/sgi/libnurbs/nurbtess/quicksort.h [deleted file]
src/glu/sgi/libnurbs/nurbtess/rectBlock.cc [deleted file]
src/glu/sgi/libnurbs/nurbtess/rectBlock.h [deleted file]
src/glu/sgi/libnurbs/nurbtess/sampleComp.cc [deleted file]
src/glu/sgi/libnurbs/nurbtess/sampleComp.h [deleted file]
src/glu/sgi/libnurbs/nurbtess/sampleCompBot.cc [deleted file]
src/glu/sgi/libnurbs/nurbtess/sampleCompBot.h [deleted file]
src/glu/sgi/libnurbs/nurbtess/sampleCompRight.cc [deleted file]
src/glu/sgi/libnurbs/nurbtess/sampleCompRight.h [deleted file]
src/glu/sgi/libnurbs/nurbtess/sampleCompTop.cc [deleted file]
src/glu/sgi/libnurbs/nurbtess/sampleCompTop.h [deleted file]
src/glu/sgi/libnurbs/nurbtess/sampleMonoPoly.cc [deleted file]
src/glu/sgi/libnurbs/nurbtess/sampleMonoPoly.h [deleted file]
src/glu/sgi/libnurbs/nurbtess/sampledLine.cc [deleted file]
src/glu/sgi/libnurbs/nurbtess/sampledLine.h [deleted file]
src/glu/sgi/libnurbs/nurbtess/searchTree.cc [deleted file]
src/glu/sgi/libnurbs/nurbtess/searchTree.h [deleted file]
src/glu/sgi/libnurbs/nurbtess/zlassert.h [deleted file]
src/glu/sgi/libtess/README [deleted file]
src/glu/sgi/libtess/alg-outline [deleted file]
src/glu/sgi/libtess/dict-list.h [deleted file]
src/glu/sgi/libtess/dict.c [deleted file]
src/glu/sgi/libtess/dict.h [deleted file]
src/glu/sgi/libtess/geom.c [deleted file]
src/glu/sgi/libtess/geom.h [deleted file]
src/glu/sgi/libtess/memalloc.c [deleted file]
src/glu/sgi/libtess/memalloc.h [deleted file]
src/glu/sgi/libtess/mesh.c [deleted file]
src/glu/sgi/libtess/mesh.h [deleted file]
src/glu/sgi/libtess/normal.c [deleted file]
src/glu/sgi/libtess/normal.h [deleted file]
src/glu/sgi/libtess/priorityq-heap.c [deleted file]
src/glu/sgi/libtess/priorityq-heap.h [deleted file]
src/glu/sgi/libtess/priorityq-sort.h [deleted file]
src/glu/sgi/libtess/priorityq.c [deleted file]
src/glu/sgi/libtess/priorityq.h [deleted file]
src/glu/sgi/libtess/render.c [deleted file]
src/glu/sgi/libtess/render.h [deleted file]
src/glu/sgi/libtess/sweep.c [deleted file]
src/glu/sgi/libtess/sweep.h [deleted file]
src/glu/sgi/libtess/tess.c [deleted file]
src/glu/sgi/libtess/tess.h [deleted file]
src/glu/sgi/libtess/tessmono.c [deleted file]
src/glu/sgi/libtess/tessmono.h [deleted file]
src/glu/sgi/libutil/error.c [deleted file]
src/glu/sgi/libutil/glue.c [deleted file]
src/glu/sgi/libutil/gluint.h [deleted file]
src/glu/sgi/libutil/mipmap.c [deleted file]
src/glu/sgi/libutil/project.c [deleted file]
src/glu/sgi/libutil/quad.c [deleted file]
src/glu/sgi/libutil/registry.c [deleted file]
src/glu/sgi/mesaglu.opt [deleted file]

index 85a863f3081f89a59acda1f7d769f2442c57bf1e..5e4cc56785d088571e8ee3a7fc92499e8cf86410 100644 (file)
@@ -94,7 +94,7 @@ MOTIF_CFLAGS = -I/usr/include/Motif1.2
 # Directories to build
 LIB_DIR = lib
 SRC_DIRS = glsl mapi/glapi mapi/vgapi mesa \
-       gallium egl gallium/winsys gallium/targets glu
+       gallium egl gallium/winsys gallium/targets
 DRIVER_DIRS = x11 osmesa
 
 # Gallium directories and
index 12a9a74c594eace52b544c09e45f3fc544a08c81..a80ccbfa568a3ddae4d96357043af2712c44f54e 100644 (file)
@@ -340,18 +340,12 @@ AC_ARG_WITH([gl-lib-name],
     [specify GL library name @<:@default=GL@:>@])],
   [GL_LIB=$withval],
   [GL_LIB=GL])
-AC_ARG_WITH([glu-lib-name],
-  [AS_HELP_STRING([--with-glu-lib-name@<:@=NAME@:>@],
-    [specify GLU library name @<:@default=GLU@:>@])],
-  [GLU_LIB=$withval],
-  [GLU_LIB=GLU])
 AC_ARG_WITH([osmesa-lib-name],
   [AS_HELP_STRING([--with-osmesa-lib-name@<:@=NAME@:>@],
     [specify OSMesa library name @<:@default=OSMesa@:>@])],
   [OSMESA_LIB=$withval],
   [OSMESA_LIB=OSMesa])
 AS_IF([test "x$GL_LIB" = xyes], [GL_LIB=GL])
-AS_IF([test "x$GLU_LIB" = xyes], [GLU_LIB=GLU])
 AS_IF([test "x$OSMESA_LIB" = xyes], [OSMESA_LIB=OSMesa])
 
 dnl
@@ -366,11 +360,9 @@ AC_ARG_ENABLE([mangling],
 if test "x${enable_mangling}" = "xyes" ; then
   DEFINES="${DEFINES} -DUSE_MGL_NAMESPACE"
   GL_LIB="Mangled${GL_LIB}"
-  GLU_LIB="Mangled${GLU_LIB}"
   OSMESA_LIB="Mangled${OSMESA_LIB}"
 fi
 AC_SUBST([GL_LIB])
-AC_SUBST([GLU_LIB])
 AC_SUBST([OSMESA_LIB])
 
 dnl
@@ -389,7 +381,6 @@ if test "x$enable_texture_float" = xyes; then
 fi
 
 GL_LIB_NAME='lib$(GL_LIB).'${LIB_EXTENSION}
-GLU_LIB_NAME='lib$(GLU_LIB).'${LIB_EXTENSION}
 OSMESA_LIB_NAME='lib$(OSMESA_LIB).'${LIB_EXTENSION}
 EGL_LIB_NAME='lib$(EGL_LIB).'${LIB_EXTENSION}
 GLESv1_CM_LIB_NAME='lib$(GLESv1_CM_LIB).'${LIB_EXTENSION}
@@ -398,7 +389,6 @@ VG_LIB_NAME='lib$(VG_LIB).'${LIB_EXTENSION}
 GLAPI_LIB_NAME='lib$(GLAPI_LIB).'${LIB_EXTENSION}
 
 GL_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GL_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
-GLU_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GLU_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
 EGL_LIB_GLOB=${LIB_PREFIX_GLOB}'$(EGL_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
 EGL_LIB_GLOB=${LIB_PREFIX_GLOB}'$(EGL_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
 GLESv1_CM_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GLESv1_CM_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
@@ -407,7 +397,6 @@ VG_LIB_GLOB=${LIB_PREFIX_GLOB}'$(VG_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENS
 GLAPI_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GLAPI_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
 
 AC_SUBST([GL_LIB_NAME])
-AC_SUBST([GLU_LIB_NAME])
 AC_SUBST([OSMESA_LIB_NAME])
 AC_SUBST([EGL_LIB_NAME])
 AC_SUBST([GLESv1_CM_LIB_NAME])
@@ -416,7 +405,6 @@ AC_SUBST([VG_LIB_NAME])
 AC_SUBST([GLAPI_LIB_NAME])
 
 AC_SUBST([GL_LIB_GLOB])
-AC_SUBST([GLU_LIB_GLOB])
 AC_SUBST([EGL_LIB_GLOB])
 AC_SUBST([GLESv1_CM_LIB_GLOB])
 AC_SUBST([GLESv2_LIB_GLOB])
@@ -1465,60 +1453,6 @@ if test "x$enable_opencl" = xyes; then
     enable_gallium_loader=yes
 fi
 
-dnl
-dnl GLU configuration
-dnl
-AC_ARG_ENABLE([glu],
-    [AS_HELP_STRING([--disable-glu],
-        [enable OpenGL Utility library @<:@default=enabled@:>@])],
-    [enable_glu="$enableval"],
-    [enable_glu=yes])
-
-if test "x$enable_glu" = xyes; then
-    if test "x$enable_glx" = xno -a "x$enable_osmesa" = xno; then
-        AC_MSG_NOTICE([Disabling GLU since there is no OpenGL driver])
-        enable_glu=no
-    fi
-fi
-
-if test "x$enable_glu" = xyes; then
-    SRC_DIRS="$SRC_DIRS glu"
-
-    if test "x$enable_glx" = xno; then
-        # Link libGLU to libOSMesa instead of libGL
-        GLU_LIB_DEPS=""
-        GLU_PC_REQ="osmesa"
-        if test "$enable_static" = no; then
-            GLU_MESA_DEPS='-l$(OSMESA_LIB)'
-        else
-            GLU_MESA_DEPS=""
-        fi
-    else
-        # If static, empty GLU_LIB_DEPS and add libs for programs to link
-        GLU_PC_REQ="gl"
-        GLU_PC_LIB_PRIV="-lm"
-        if test "$enable_static" = no; then
-            GLU_LIB_DEPS="-lm"
-            GLU_MESA_DEPS='-l$(GL_LIB)'
-        else
-            GLU_LIB_DEPS=""
-            GLU_MESA_DEPS=""
-        fi
-    fi
-fi
-if test "$enable_static" = no; then
-    GLU_LIB_DEPS="$GLU_LIB_DEPS $OS_CPLUSPLUS_LIBS"
-fi
-GLU_PC_LIB_PRIV="$GLU_PC_LIB_PRIV $OS_CPLUSPLUS_LIBS"
-AC_SUBST([GLU_LIB_DEPS])
-AC_SUBST([GLU_MESA_DEPS])
-AC_SUBST([GLU_PC_REQ])
-AC_SUBST([GLU_PC_REQ_PRIV])
-AC_SUBST([GLU_PC_LIB_PRIV])
-AC_SUBST([GLU_PC_CFLAGS])
-
-AC_SUBST([PROGRAM_DIRS])
-
 dnl
 dnl Gallium configuration
 dnl
@@ -2116,7 +2050,6 @@ xyesno)
 esac
 
 echo ""
-echo "        GLU:             $enable_glu"
 
 dnl EGL
 echo ""
index 4fa96c3c67215035cce528fbd8ceff6f575e9fc7..fa902872ccc49a8f2a89b9b2718cf3866ce04dad 100644 (file)
   <li><a href="#dri">DRI Driver Options</a></li>
   <li><a href="#osmesa">OSMesa Driver Options</a></li>
   </ul>
-<li><p><a href="#library">Library Options</a>
-  <ul>
-  <li><a href="#glu">GLU</a></li>
-  </ul>
 <li><p><a href="#demos">Demo Program Options</a>
 </ol>
 
@@ -219,12 +215,6 @@ libraries that will be built. More details on the specific GL libraries
 can be found in the <a href="install.html">basic installation
 instructions</a>.
 
-<dl>
-<dt id="glu">GLU <dd><p> The libGLU library will be built by default
-on all drivers. This can be disable with the option
-<code>--disable-glu</code>.
-</dl>
-
 
 <h2 id="demos">4. Demo Program Options</h2>
 
index e7a23a6bcaf14498db3ca7d17148cbf5eb31cb76..efd7519193543619555af28e4ad34c1fc643d2b1 100644 (file)
@@ -74,7 +74,6 @@
 <li><a href="http://sourceforge.net/projects/mesa3d" target="_parent">SourceForge homepage</a>
 <li><a href="repository.html" target="MainFrame">Source Code Repository</a>
 <li><a href="sourcetree.html" target="MainFrame">Source Code Tree</a>
-<li><a href="glu.html" target="MainFrame">SGI's GLU</a>
 <li><a href="utilities.html" target="MainFrame">Utilities</a>
 <li><a href="helpwanted.html" target="MainFrame">Help Wanted</a>
 <li><a href="devinfo.html" target="MainFrame">Development Notes</a>
index 3d543281f4b29f60c0454977fb49d81bab641e80..a1a1baa28ff8302356b061660b22b0bbd9278d40 100644 (file)
@@ -69,7 +69,6 @@ docs/         - documentation
 src/           - source code for libraries
 src/mesa       - sources for the main Mesa library and device drivers
 src/gallium     - sources for Gallium and Gallium drivers
-src/glu                - libGLU source code
 src/glx                - sources for building libGL with full GLX and DRI support
 </pre>
 
@@ -80,7 +79,12 @@ instructions</a>.
 </p>
 
 
-<h1>Demos and GLUT</h1>
+<h1>Demos, GLUT, and GLU</h1>
+
+<p>
+A package of SGI's GLU library is available
+<a href="ftp://ftp.freedesktop.org/pub/mesa/glu/" target="_parent">here</a>
+</p>
 
 <p>
 A package of Mark Kilgard's GLUT library is available
@@ -93,9 +97,13 @@ The Mesa demos collection is available
 </p>
 
 <p>
-In the past, GLUT and the Mesa demos were released in conjunction with
-Mesa releases.  But since GLUT and the demos change infrequently, they
-were split off some time ago.
+In the past, GLUT, GLU and the Mesa demos were released in conjunction with
+Mesa releases.  But since GLUT, GLU and the demos change infrequently, they
+were split off into their own git repositories:
+
+<a href="http://cgit.freedesktop.org/mesa/glut/">GLUT</a>,
+<a href="http://cgit.freedesktop.org/mesa/glu/">GLU</a> and
+<a href="http://cgit.freedesktop.org/mesa/demos/">Demos</a>,
 </p>
 
 
index fa90d5bfe819c569509370896003a5e743ffdfb5..80f4a71dc43bbb751823970e2db1a83c1ff4cdba 100644 (file)
@@ -226,10 +226,6 @@ Basically you'll want the following:
 </li><li>/usr/lib/libGL.so.1 - a symlink to libGL.so.1.xyz
 </li><li>/usr/lib/libGL.so.xyz - the actual OpenGL/Mesa library.  xyz denotes the
 Mesa version number.
-</li><li>/usr/lib/libGLU.so - a symlink to libGLU.so.1
-</li><li>/usr/lib/libGLU.so.1 - a symlink to libGLU.so.1.3.xyz
-</li><li>/usr/lib/libGLU.so.xyz - the OpenGL Utility library.  xyz denotes the Mesa
-version number.
 </li></ul>
 <p>
 After installing XFree86/X.org and the DRI drivers, some of these files
diff --git a/docs/glu.html b/docs/glu.html
deleted file mode 100644 (file)
index 3d7cbe5..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html lang="en">
-<head>
-  <meta http-equiv="content-type" content="text/html; charset=utf-8">
-  <title>SGI GLU</title>
-  <link rel="stylesheet" type="text/css" href="mesa.css">
-</head>
-<body>
-
-<h1>SGI SI GLU</h1>
-
-(Silicon Graphics, Inc. Sample Implementation of the OpenGL Utility library)
-
-<p>
-SGI open-sourced their OpenGL Sample Implementation (SI) in January, 2000.
-This includes the GLU library.
-</p>
-
-<p>
-The SI GLU library implements GLU version 1.3 whereas the original
-Mesa GLU library only implemented version 1.2.
-We recommend using the SI GLU library instead of Mesa's GLU library
-since it's more up-to-date, complete and reliable.
-We're no longer developing the original Mesa GLU library.
-</p>
-
-<p>
-The SI GLU library code is included in the Mesa distribution.
-You don't have to download it separately.
-</p>
-
-
-<p>
-<b>Olivier Michel</b> has made Linux RPMs of GLU for i386 and PowerPC.
-You can download them from the
-<a href="http://www.sourceforge.net/project/showfiles.php?group_id=3"
-target="_parent">download area</a> under <b>Miscellaneous</b>.
-</p>
-
-<p>
-Visit the <a href="http://oss.sgi.com/projects/ogl-sample/" target="_parent">
-OpenGL Sample Implementation home page</a> for more information about the SI.
-</p>
-
-</body>
-</html>
index 948d147f19ea4211c96df895aa9c950a35e6ca22..c756c2fcd619033d0cd00be8dde0a7e975cb3979 100644 (file)
@@ -151,9 +151,6 @@ You'll see a set of library files similar to this:
 lrwxrwxrwx    1 brian    users          10 Mar 26 07:53 libGL.so -> libGL.so.1*
 lrwxrwxrwx    1 brian    users          19 Mar 26 07:53 libGL.so.1 -> libGL.so.1.5.060100*
 -rwxr-xr-x    1 brian    users     3375861 Mar 26 07:53 libGL.so.1.5.060100*
-lrwxrwxrwx    1 brian    users          11 Mar 26 07:53 libGLU.so -> libGLU.so.1*
-lrwxrwxrwx    1 brian    users          20 Mar 26 07:53 libGLU.so.1 -> libGLU.so.1.3.060100*
--rwxr-xr-x    1 brian    users      549269 Mar 26 07:53 libGLU.so.1.3.060100*
 lrwxrwxrwx    1 brian    users          14 Mar 26 07:53 libOSMesa.so -> libOSMesa.so.6*
 lrwxrwxrwx    1 brian    users          23 Mar 26 07:53 libOSMesa.so.6 -> libOSMesa.so.6.1.060100*
 -rwxr-xr-x    1 brian    users       23871 Mar 26 07:53 libOSMesa.so.6.1.060100*
@@ -162,8 +159,6 @@ lrwxrwxrwx    1 brian    users          23 Mar 26 07:53 libOSMesa.so.6 -> libOSM
 <p>
 <b>libGL</b> is the main OpenGL library (i.e. Mesa).
 <br>
-<b>libGLU</b> is the OpenGL Utility library.
-<br>
 <b>libOSMesa</b> is the OSMesa (Off-Screen) interface library.
 </p>
 
index f0ac28ccfe875c0c2bc2eb0ad666d9ac500dfb6e..d69c673cedad28025c9e1030e49504b744123fc3 100644 (file)
@@ -95,8 +95,6 @@ Device drivers    src/mesa/drivers/*     MIT, generally
 
 Ext headers       include/GL/glext.h     Khronos
                   include/GL/glxext.h
-
-SGI GLU library   src/glu/sgi/           SGI Free B
 </pre>
 
 <p>
index 1e3a11b644538eff3cf645cbbdae82f58058a28e..ccc0dd587bf72ab25b0b2bb71dc63d7fe48825cc 100644 (file)
@@ -82,6 +82,10 @@ The two supported build methods are now autoconf/automake and SCons.
 <li>Removed Gallium3D - nvfx driver (use nv30 instead)</li>
 </ul>
 
+<p>
+libGLU has been moved into its own repository, found at <a href="http://cgit.freedesktop.org/mesa/glu/">http://cgit.freedesktop.org/mesa/glu/</a>
+</p>
+
 
 </body>
 </html>
index 42675d9bb5d1ae499f7c73e5c932c584ba5e855c..6a1f0398368fa685ab5902af5ce96413af76edb5 100644 (file)
@@ -146,11 +146,6 @@ each directory.
     </ul>
   </ul>
   <ul>
-  <li><b>glu</b> - The OpenGL Utility library
-     <ul>
-     <li><b>sgi</b> - GLU from SGI
-     <li><b>mesa</b> - Mesa version of GLU (deprecated)
-     </ul>
   <li><b>glx</b> - The GLX library code for building libGL.  This is used for
          direct rendering drivers.  It will dynamically load one of the 
          xxx_dri.so drivers.
diff --git a/include/GL/glu.h b/include/GL/glu.h
deleted file mode 100644 (file)
index ba2228d..0000000
+++ /dev/null
@@ -1,353 +0,0 @@
-/*
- * SGI FREE SOFTWARE LICENSE B (Version 2.0, Sept. 18, 2008)
- * Copyright (C) 1991-2000 Silicon Graphics, Inc. All Rights Reserved.
- *
- * 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, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice including the dates of first publication and
- * either this permission notice or a reference to
- * http://oss.sgi.com/projects/FreeB/
- * shall be included in all copies or substantial portions of the Software.
- *
- * 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. IN NO EVENT SHALL
- * SILICON GRAPHICS, INC. BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
- * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- * Except as contained in this notice, the name of Silicon Graphics, Inc.
- * shall not be used in advertising or otherwise to promote the sale, use or
- * other dealings in this Software without prior written authorization from
- * Silicon Graphics, Inc.
- */
-
-#ifndef __glu_h__
-#define __glu_h__
-
-#if defined(USE_MGL_NAMESPACE)
-#include "glu_mangle.h"
-#endif
-
-#include <GL/gl.h>
-
-#ifndef GLAPIENTRY
-#if defined(_MSC_VER) || defined(__MINGW32__)
-#define GLAPIENTRY __stdcall
-#else
-#define GLAPIENTRY
-#endif
-#endif
-
-#ifndef GLAPIENTRYP
-#define GLAPIENTRYP GLAPIENTRY *
-#endif
-
-#if (defined(_MSC_VER) || defined(__MINGW32__)) && defined(BUILD_GLU32)
-# undef GLAPI
-# define GLAPI __declspec(dllexport)
-#elif (defined(_MSC_VER) || defined(__MINGW32__)) && defined(_DLL)
-/* tag specifying we're building for DLL runtime support */
-# undef GLAPI
-# define GLAPI __declspec(dllimport)
-#elif !defined(GLAPI)
-/* for use with static link lib build of Win32 edition only */
-# define GLAPI extern
-#endif /* _STATIC_MESA support */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/*************************************************************/
-
-/* Extensions */
-#define GLU_EXT_object_space_tess          1
-#define GLU_EXT_nurbs_tessellator          1
-
-/* Boolean */
-#define GLU_FALSE                          0
-#define GLU_TRUE                           1
-
-/* Version */
-#define GLU_VERSION_1_1                    1
-#define GLU_VERSION_1_2                    1
-#define GLU_VERSION_1_3                    1
-
-/* StringName */
-#define GLU_VERSION                        100800
-#define GLU_EXTENSIONS                     100801
-
-/* ErrorCode */
-#define GLU_INVALID_ENUM                   100900
-#define GLU_INVALID_VALUE                  100901
-#define GLU_OUT_OF_MEMORY                  100902
-#define GLU_INCOMPATIBLE_GL_VERSION        100903
-#define GLU_INVALID_OPERATION              100904
-
-/* NurbsDisplay */
-/*      GLU_FILL */
-#define GLU_OUTLINE_POLYGON                100240
-#define GLU_OUTLINE_PATCH                  100241
-
-/* NurbsCallback */
-#define GLU_NURBS_ERROR                    100103
-#define GLU_ERROR                          100103
-#define GLU_NURBS_BEGIN                    100164
-#define GLU_NURBS_BEGIN_EXT                100164
-#define GLU_NURBS_VERTEX                   100165
-#define GLU_NURBS_VERTEX_EXT               100165
-#define GLU_NURBS_NORMAL                   100166
-#define GLU_NURBS_NORMAL_EXT               100166
-#define GLU_NURBS_COLOR                    100167
-#define GLU_NURBS_COLOR_EXT                100167
-#define GLU_NURBS_TEXTURE_COORD            100168
-#define GLU_NURBS_TEX_COORD_EXT            100168
-#define GLU_NURBS_END                      100169
-#define GLU_NURBS_END_EXT                  100169
-#define GLU_NURBS_BEGIN_DATA               100170
-#define GLU_NURBS_BEGIN_DATA_EXT           100170
-#define GLU_NURBS_VERTEX_DATA              100171
-#define GLU_NURBS_VERTEX_DATA_EXT          100171
-#define GLU_NURBS_NORMAL_DATA              100172
-#define GLU_NURBS_NORMAL_DATA_EXT          100172
-#define GLU_NURBS_COLOR_DATA               100173
-#define GLU_NURBS_COLOR_DATA_EXT           100173
-#define GLU_NURBS_TEXTURE_COORD_DATA       100174
-#define GLU_NURBS_TEX_COORD_DATA_EXT       100174
-#define GLU_NURBS_END_DATA                 100175
-#define GLU_NURBS_END_DATA_EXT             100175
-
-/* NurbsError */
-#define GLU_NURBS_ERROR1                   100251
-#define GLU_NURBS_ERROR2                   100252
-#define GLU_NURBS_ERROR3                   100253
-#define GLU_NURBS_ERROR4                   100254
-#define GLU_NURBS_ERROR5                   100255
-#define GLU_NURBS_ERROR6                   100256
-#define GLU_NURBS_ERROR7                   100257
-#define GLU_NURBS_ERROR8                   100258
-#define GLU_NURBS_ERROR9                   100259
-#define GLU_NURBS_ERROR10                  100260
-#define GLU_NURBS_ERROR11                  100261
-#define GLU_NURBS_ERROR12                  100262
-#define GLU_NURBS_ERROR13                  100263
-#define GLU_NURBS_ERROR14                  100264
-#define GLU_NURBS_ERROR15                  100265
-#define GLU_NURBS_ERROR16                  100266
-#define GLU_NURBS_ERROR17                  100267
-#define GLU_NURBS_ERROR18                  100268
-#define GLU_NURBS_ERROR19                  100269
-#define GLU_NURBS_ERROR20                  100270
-#define GLU_NURBS_ERROR21                  100271
-#define GLU_NURBS_ERROR22                  100272
-#define GLU_NURBS_ERROR23                  100273
-#define GLU_NURBS_ERROR24                  100274
-#define GLU_NURBS_ERROR25                  100275
-#define GLU_NURBS_ERROR26                  100276
-#define GLU_NURBS_ERROR27                  100277
-#define GLU_NURBS_ERROR28                  100278
-#define GLU_NURBS_ERROR29                  100279
-#define GLU_NURBS_ERROR30                  100280
-#define GLU_NURBS_ERROR31                  100281
-#define GLU_NURBS_ERROR32                  100282
-#define GLU_NURBS_ERROR33                  100283
-#define GLU_NURBS_ERROR34                  100284
-#define GLU_NURBS_ERROR35                  100285
-#define GLU_NURBS_ERROR36                  100286
-#define GLU_NURBS_ERROR37                  100287
-
-/* NurbsProperty */
-#define GLU_AUTO_LOAD_MATRIX               100200
-#define GLU_CULLING                        100201
-#define GLU_SAMPLING_TOLERANCE             100203
-#define GLU_DISPLAY_MODE                   100204
-#define GLU_PARAMETRIC_TOLERANCE           100202
-#define GLU_SAMPLING_METHOD                100205
-#define GLU_U_STEP                         100206
-#define GLU_V_STEP                         100207
-#define GLU_NURBS_MODE                     100160
-#define GLU_NURBS_MODE_EXT                 100160
-#define GLU_NURBS_TESSELLATOR              100161
-#define GLU_NURBS_TESSELLATOR_EXT          100161
-#define GLU_NURBS_RENDERER                 100162
-#define GLU_NURBS_RENDERER_EXT             100162
-
-/* NurbsSampling */
-#define GLU_OBJECT_PARAMETRIC_ERROR        100208
-#define GLU_OBJECT_PARAMETRIC_ERROR_EXT    100208
-#define GLU_OBJECT_PATH_LENGTH             100209
-#define GLU_OBJECT_PATH_LENGTH_EXT         100209
-#define GLU_PATH_LENGTH                    100215
-#define GLU_PARAMETRIC_ERROR               100216
-#define GLU_DOMAIN_DISTANCE                100217
-
-/* NurbsTrim */
-#define GLU_MAP1_TRIM_2                    100210
-#define GLU_MAP1_TRIM_3                    100211
-
-/* QuadricDrawStyle */
-#define GLU_POINT                          100010
-#define GLU_LINE                           100011
-#define GLU_FILL                           100012
-#define GLU_SILHOUETTE                     100013
-
-/* QuadricCallback */
-/*      GLU_ERROR */
-
-/* QuadricNormal */
-#define GLU_SMOOTH                         100000
-#define GLU_FLAT                           100001
-#define GLU_NONE                           100002
-
-/* QuadricOrientation */
-#define GLU_OUTSIDE                        100020
-#define GLU_INSIDE                         100021
-
-/* TessCallback */
-#define GLU_TESS_BEGIN                     100100
-#define GLU_BEGIN                          100100
-#define GLU_TESS_VERTEX                    100101
-#define GLU_VERTEX                         100101
-#define GLU_TESS_END                       100102
-#define GLU_END                            100102
-#define GLU_TESS_ERROR                     100103
-#define GLU_TESS_EDGE_FLAG                 100104
-#define GLU_EDGE_FLAG                      100104
-#define GLU_TESS_COMBINE                   100105
-#define GLU_TESS_BEGIN_DATA                100106
-#define GLU_TESS_VERTEX_DATA               100107
-#define GLU_TESS_END_DATA                  100108
-#define GLU_TESS_ERROR_DATA                100109
-#define GLU_TESS_EDGE_FLAG_DATA            100110
-#define GLU_TESS_COMBINE_DATA              100111
-
-/* TessContour */
-#define GLU_CW                             100120
-#define GLU_CCW                            100121
-#define GLU_INTERIOR                       100122
-#define GLU_EXTERIOR                       100123
-#define GLU_UNKNOWN                        100124
-
-/* TessProperty */
-#define GLU_TESS_WINDING_RULE              100140
-#define GLU_TESS_BOUNDARY_ONLY             100141
-#define GLU_TESS_TOLERANCE                 100142
-
-/* TessError */
-#define GLU_TESS_ERROR1                    100151
-#define GLU_TESS_ERROR2                    100152
-#define GLU_TESS_ERROR3                    100153
-#define GLU_TESS_ERROR4                    100154
-#define GLU_TESS_ERROR5                    100155
-#define GLU_TESS_ERROR6                    100156
-#define GLU_TESS_ERROR7                    100157
-#define GLU_TESS_ERROR8                    100158
-#define GLU_TESS_MISSING_BEGIN_POLYGON     100151
-#define GLU_TESS_MISSING_BEGIN_CONTOUR     100152
-#define GLU_TESS_MISSING_END_POLYGON       100153
-#define GLU_TESS_MISSING_END_CONTOUR       100154
-#define GLU_TESS_COORD_TOO_LARGE           100155
-#define GLU_TESS_NEED_COMBINE_CALLBACK     100156
-
-/* TessWinding */
-#define GLU_TESS_WINDING_ODD               100130
-#define GLU_TESS_WINDING_NONZERO           100131
-#define GLU_TESS_WINDING_POSITIVE          100132
-#define GLU_TESS_WINDING_NEGATIVE          100133
-#define GLU_TESS_WINDING_ABS_GEQ_TWO       100134
-
-/*************************************************************/
-
-
-#ifdef __cplusplus
-class GLUnurbs;
-class GLUquadric;
-class GLUtesselator;
-#else
-typedef struct GLUnurbs GLUnurbs;
-typedef struct GLUquadric GLUquadric;
-typedef struct GLUtesselator GLUtesselator;
-#endif
-
-typedef GLUnurbs GLUnurbsObj;
-typedef GLUquadric GLUquadricObj;
-typedef GLUtesselator GLUtesselatorObj;
-typedef GLUtesselator GLUtriangulatorObj;
-
-#define GLU_TESS_MAX_COORD 1.0e150
-
-/* Internal convenience typedefs */
-typedef void (GLAPIENTRYP _GLUfuncptr)(void);
-
-GLAPI void GLAPIENTRY gluBeginCurve (GLUnurbs* nurb);
-GLAPI void GLAPIENTRY gluBeginPolygon (GLUtesselator* tess);
-GLAPI void GLAPIENTRY gluBeginSurface (GLUnurbs* nurb);
-GLAPI void GLAPIENTRY gluBeginTrim (GLUnurbs* nurb);
-GLAPI GLint GLAPIENTRY gluBuild1DMipmapLevels (GLenum target, GLint internalFormat, GLsizei width, GLenum format, GLenum type, GLint level, GLint base, GLint max, const void *data);
-GLAPI GLint GLAPIENTRY gluBuild1DMipmaps (GLenum target, GLint internalFormat, GLsizei width, GLenum format, GLenum type, const void *data);
-GLAPI GLint GLAPIENTRY gluBuild2DMipmapLevels (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLenum format, GLenum type, GLint level, GLint base, GLint max, const void *data);
-GLAPI GLint GLAPIENTRY gluBuild2DMipmaps (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *data);
-GLAPI GLint GLAPIENTRY gluBuild3DMipmapLevels (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLint level, GLint base, GLint max, const void *data);
-GLAPI GLint GLAPIENTRY gluBuild3DMipmaps (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *data);
-GLAPI GLboolean GLAPIENTRY gluCheckExtension (const GLubyte *extName, const GLubyte *extString);
-GLAPI void GLAPIENTRY gluCylinder (GLUquadric* quad, GLdouble base, GLdouble top, GLdouble height, GLint slices, GLint stacks);
-GLAPI void GLAPIENTRY gluDeleteNurbsRenderer (GLUnurbs* nurb);
-GLAPI void GLAPIENTRY gluDeleteQuadric (GLUquadric* quad);
-GLAPI void GLAPIENTRY gluDeleteTess (GLUtesselator* tess);
-GLAPI void GLAPIENTRY gluDisk (GLUquadric* quad, GLdouble inner, GLdouble outer, GLint slices, GLint loops);
-GLAPI void GLAPIENTRY gluEndCurve (GLUnurbs* nurb);
-GLAPI void GLAPIENTRY gluEndPolygon (GLUtesselator* tess);
-GLAPI void GLAPIENTRY gluEndSurface (GLUnurbs* nurb);
-GLAPI void GLAPIENTRY gluEndTrim (GLUnurbs* nurb);
-GLAPI const GLubyte * GLAPIENTRY gluErrorString (GLenum error);
-GLAPI void GLAPIENTRY gluGetNurbsProperty (GLUnurbs* nurb, GLenum property, GLfloat* data);
-GLAPI const GLubyte * GLAPIENTRY gluGetString (GLenum name);
-GLAPI void GLAPIENTRY gluGetTessProperty (GLUtesselator* tess, GLenum which, GLdouble* data);
-GLAPI void GLAPIENTRY gluLoadSamplingMatrices (GLUnurbs* nurb, const GLfloat *model, const GLfloat *perspective, const GLint *view);
-GLAPI void GLAPIENTRY gluLookAt (GLdouble eyeX, GLdouble eyeY, GLdouble eyeZ, GLdouble centerX, GLdouble centerY, GLdouble centerZ, GLdouble upX, GLdouble upY, GLdouble upZ);
-GLAPI GLUnurbs* GLAPIENTRY gluNewNurbsRenderer (void);
-GLAPI GLUquadric* GLAPIENTRY gluNewQuadric (void);
-GLAPI GLUtesselator* GLAPIENTRY gluNewTess (void);
-GLAPI void GLAPIENTRY gluNextContour (GLUtesselator* tess, GLenum type);
-GLAPI void GLAPIENTRY gluNurbsCallback (GLUnurbs* nurb, GLenum which, _GLUfuncptr CallBackFunc);
-GLAPI void GLAPIENTRY gluNurbsCallbackData (GLUnurbs* nurb, GLvoid* userData);
-GLAPI void GLAPIENTRY gluNurbsCallbackDataEXT (GLUnurbs* nurb, GLvoid* userData);
-GLAPI void GLAPIENTRY gluNurbsCurve (GLUnurbs* nurb, GLint knotCount, GLfloat *knots, GLint stride, GLfloat *control, GLint order, GLenum type);
-GLAPI void GLAPIENTRY gluNurbsProperty (GLUnurbs* nurb, GLenum property, GLfloat value);
-GLAPI void GLAPIENTRY gluNurbsSurface (GLUnurbs* nurb, GLint sKnotCount, GLfloat* sKnots, GLint tKnotCount, GLfloat* tKnots, GLint sStride, GLint tStride, GLfloat* control, GLint sOrder, GLint tOrder, GLenum type);
-GLAPI void GLAPIENTRY gluOrtho2D (GLdouble left, GLdouble right, GLdouble bottom, GLdouble top);
-GLAPI void GLAPIENTRY gluPartialDisk (GLUquadric* quad, GLdouble inner, GLdouble outer, GLint slices, GLint loops, GLdouble start, GLdouble sweep);
-GLAPI void GLAPIENTRY gluPerspective (GLdouble fovy, GLdouble aspect, GLdouble zNear, GLdouble zFar);
-GLAPI void GLAPIENTRY gluPickMatrix (GLdouble x, GLdouble y, GLdouble delX, GLdouble delY, GLint *viewport);
-GLAPI GLint GLAPIENTRY gluProject (GLdouble objX, GLdouble objY, GLdouble objZ, const GLdouble *model, const GLdouble *proj, const GLint *view, GLdouble* winX, GLdouble* winY, GLdouble* winZ);
-GLAPI void GLAPIENTRY gluPwlCurve (GLUnurbs* nurb, GLint count, GLfloat* data, GLint stride, GLenum type);
-GLAPI void GLAPIENTRY gluQuadricCallback (GLUquadric* quad, GLenum which, _GLUfuncptr CallBackFunc);
-GLAPI void GLAPIENTRY gluQuadricDrawStyle (GLUquadric* quad, GLenum draw);
-GLAPI void GLAPIENTRY gluQuadricNormals (GLUquadric* quad, GLenum normal);
-GLAPI void GLAPIENTRY gluQuadricOrientation (GLUquadric* quad, GLenum orientation);
-GLAPI void GLAPIENTRY gluQuadricTexture (GLUquadric* quad, GLboolean texture);
-GLAPI GLint GLAPIENTRY gluScaleImage (GLenum format, GLsizei wIn, GLsizei hIn, GLenum typeIn, const void *dataIn, GLsizei wOut, GLsizei hOut, GLenum typeOut, GLvoid* dataOut);
-GLAPI void GLAPIENTRY gluSphere (GLUquadric* quad, GLdouble radius, GLint slices, GLint stacks);
-GLAPI void GLAPIENTRY gluTessBeginContour (GLUtesselator* tess);
-GLAPI void GLAPIENTRY gluTessBeginPolygon (GLUtesselator* tess, GLvoid* data);
-GLAPI void GLAPIENTRY gluTessCallback (GLUtesselator* tess, GLenum which, _GLUfuncptr CallBackFunc);
-GLAPI void GLAPIENTRY gluTessEndContour (GLUtesselator* tess);
-GLAPI void GLAPIENTRY gluTessEndPolygon (GLUtesselator* tess);
-GLAPI void GLAPIENTRY gluTessNormal (GLUtesselator* tess, GLdouble valueX, GLdouble valueY, GLdouble valueZ);
-GLAPI void GLAPIENTRY gluTessProperty (GLUtesselator* tess, GLenum which, GLdouble data);
-GLAPI void GLAPIENTRY gluTessVertex (GLUtesselator* tess, GLdouble *location, GLvoid* data);
-GLAPI GLint GLAPIENTRY gluUnProject (GLdouble winX, GLdouble winY, GLdouble winZ, const GLdouble *model, const GLdouble *proj, const GLint *view, GLdouble* objX, GLdouble* objY, GLdouble* objZ);
-GLAPI GLint GLAPIENTRY gluUnProject4 (GLdouble winX, GLdouble winY, GLdouble winZ, GLdouble clipW, const GLdouble *model, const GLdouble *proj, const GLint *view, GLdouble nearVal, GLdouble farVal, GLdouble* objX, GLdouble* objY, GLdouble* objZ, GLdouble* objW);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __glu_h__ */
diff --git a/include/GL/glu_mangle.h b/include/GL/glu_mangle.h
deleted file mode 100644 (file)
index 9c25aa8..0000000
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * Mesa 3-D graphics library
- * Version:  3.0
- * Copyright (C) 1995-1998  Brian Paul
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the Free
- * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-
-#ifndef GLU_MANGLE_H
-#define GLU_MANGLE_H
-
-
-#define gluLookAt mgluLookAt
-#define gluOrtho2D mgluOrtho2D
-#define gluPerspective mgluPerspective
-#define gluPickMatrix mgluPickMatrix
-#define gluProject mgluProject
-#define gluUnProject mgluUnProject
-#define gluErrorString mgluErrorString
-#define gluScaleImage mgluScaleImage
-#define gluBuild1DMipmaps mgluBuild1DMipmaps
-#define gluBuild2DMipmaps mgluBuild2DMipmaps
-#define gluNewQuadric mgluNewQuadric
-#define gluDeleteQuadric mgluDeleteQuadric
-#define gluQuadricDrawStyle mgluQuadricDrawStyle
-#define gluQuadricOrientation mgluQuadricOrientation
-#define gluQuadricNormals mgluQuadricNormals
-#define gluQuadricTexture mgluQuadricTexture
-#define gluQuadricCallback mgluQuadricCallback
-#define gluCylinder mgluCylinder
-#define gluSphere mgluSphere
-#define gluDisk mgluDisk
-#define gluPartialDisk mgluPartialDisk
-#define gluNewNurbsRenderer mgluNewNurbsRenderer
-#define gluDeleteNurbsRenderer mgluDeleteNurbsRenderer
-#define gluLoadSamplingMatrices mgluLoadSamplingMatrices
-#define gluNurbsProperty mgluNurbsProperty
-#define gluGetNurbsProperty mgluGetNurbsProperty
-#define gluBeginCurve mgluBeginCurve
-#define gluEndCurve mgluEndCurve
-#define gluNurbsCurve mgluNurbsCurve
-#define gluBeginSurface mgluBeginSurface
-#define gluEndSurface mgluEndSurface
-#define gluNurbsSurface mgluNurbsSurface
-#define gluBeginTrim mgluBeginTrim
-#define gluEndTrim mgluEndTrim
-#define gluPwlCurve mgluPwlCurve
-#define gluNurbsCallback mgluNurbsCallback
-#define gluNewTess mgluNewTess
-#define gluDeleteTess mgluDeleteTess
-#define gluTessBeginPolygon mgluTessBeginPolygon
-#define gluTessBeginContour mgluTessBeginContour
-#define gluTessVertex mgluTessVertex
-#define gluTessEndPolygon mgluTessEndPolygon
-#define gluTessEndContour mgluTessEndContour
-#define gluTessProperty mgluTessProperty
-#define gluTessNormal mgluTessNormal
-#define gluTessCallback mgluTessCallback
-#define gluGetTessProperty mgluGetTessProperty
-#define gluBeginPolygon mgluBeginPolygon
-#define gluNextContour mgluNextContour
-#define gluEndPolygon mgluEndPolygon
-#define gluGetString mgluGetString
-#define gluBuild1DMipmapLevels mgluBuild1DMipmapLevels
-#define gluBuild2DMipmapLevels mgluBuild2DMipmapLevels
-#define gluBuild3DMipmapLevels mgluBuild3DMipmapLevels
-#define gluBuild3DMipmaps mgluBuild3DMipmaps
-#define gluCheckExtension mgluCheckExtension
-#define gluUnProject4 mgluUnProject4
-#define gluNurbsCallbackData mgluNurbsCallbackData
-#define gluNurbsCallbackDataEXT mgluNurbsCallbackDataEXT
-
-#endif
index 75c444677b3077892c5242e7b9acc6511d08c347..146591866c1806c1f589bf3396c2beeea1e2f579 100644 (file)
@@ -27,8 +27,6 @@ if not env['embedded']:
         SConscript('glx/SConscript')
     if env['platform'] not in ['darwin', 'haiku', 'sunos']:
         SConscript('egl/main/SConscript')
-    if env['platform'] not in ['darwin']:
-        SConscript('glu/sgi/SConscript')
 
     if env['gles']:
         SConscript('mapi/shared-glapi/SConscript')
diff --git a/src/glu/.gitignore b/src/glu/.gitignore
deleted file mode 100644 (file)
index 279ea7d..0000000
+++ /dev/null
@@ -1 +0,0 @@
-exptmp
diff --git a/src/glu/Makefile b/src/glu/Makefile
deleted file mode 100644 (file)
index 472645f..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-# src/glu/Makefile
-
-TOP = ../..
-
-include $(TOP)/configs/current
-
-
-SUBDIRS = sgi
-
-
-default: $(TOP)/configs/current
-       @for dir in $(SUBDIRS) ; do \
-               (cd $$dir && $(MAKE)) || exit 1 ; \
-       done
-
-# GLU pkg-config file
-pcedit = sed \
-       -e 's,@INSTALL_DIR@,$(INSTALL_DIR),' \
-       -e 's,@INSTALL_LIB_DIR@,$(INSTALL_LIB_DIR),' \
-       -e 's,@INSTALL_INC_DIR@,$(INSTALL_INC_DIR),' \
-       -e 's,@VERSION@,$(MESA_MAJOR).$(MESA_MINOR).$(MESA_TINY),' \
-       -e 's,@GLU_PC_REQ@,$(GLU_PC_REQ),' \
-       -e 's,@GLU_PC_REQ_PRIV@,$(GLU_PC_REQ_PRIV),' \
-       -e 's,@GLU_PC_LIB_PRIV@,$(GLU_PC_LIB_PRIV),' \
-       -e 's,@GLU_PC_CFLAGS@,$(GLU_PC_CFLAGS),' \
-       -e 's,@GLU_LIB@,$(GLU_LIB),'
-glu.pc: glu.pc.in
-       $(pcedit) $< > $@
-
-install: glu.pc
-       $(INSTALL) -d $(DESTDIR)$(INSTALL_LIB_DIR)
-       $(INSTALL) -d $(DESTDIR)$(INSTALL_LIB_DIR)/pkgconfig
-       $(MINSTALL) $(TOP)/$(LIB_DIR)/$(GLU_LIB_GLOB) $(DESTDIR)$(INSTALL_LIB_DIR)
-       $(INSTALL) -m 644 glu.pc $(DESTDIR)$(INSTALL_LIB_DIR)/pkgconfig
-
-clean:
-       -@for dir in $(SUBDIRS) ; do \
-               (cd $$dir && $(MAKE) clean) ; \
-       done
-       -rm -f *.pc
diff --git a/src/glu/glu.pc.in b/src/glu/glu.pc.in
deleted file mode 100644 (file)
index f7d9109..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-prefix=@INSTALL_DIR@
-exec_prefix=${prefix}
-libdir=@INSTALL_LIB_DIR@
-includedir=@INSTALL_INC_DIR@
-
-Name: glu
-Description: Mesa OpenGL Utility library
-Requires: @GLU_PC_REQ@
-Requires.private: @GLU_PC_REQ_PRIV@
-Version: @VERSION@
-Libs: -L${libdir} -l@GLU_LIB@
-Libs.private: @GLU_PC_LIB_PRIV@
-Cflags: -I${includedir} @GLU_PC_CFLAGS@
diff --git a/src/glu/sgi/.gitignore b/src/glu/sgi/.gitignore
deleted file mode 100644 (file)
index 279ea7d..0000000
+++ /dev/null
@@ -1 +0,0 @@
-exptmp
diff --git a/src/glu/sgi/Makefile b/src/glu/sgi/Makefile
deleted file mode 100644 (file)
index 50eede3..0000000
+++ /dev/null
@@ -1,144 +0,0 @@
-# src/glu/sgi/Makefile
-
-.SUFFIXES : .cc
-
-TOP = ../../..
-
-include $(TOP)/configs/current
-
-GLU_MAJOR = 1
-GLU_MINOR = 3
-GLU_TINY = 0$(MESA_MAJOR)$(MESA_MINOR)0$(MESA_TINY)
-
-INCDIRS = -I$(TOP)/include -Iinclude -Iinternals -Ilibnurbs/internals -Ilibnurbs/interface -Ilibnurbs/nurbtess
-
-C_SOURCES = \
-       libutil/error.c         \
-       libutil/glue.c          \
-       libutil/mipmap.c        \
-       libutil/project.c       \
-       libutil/quad.c          \
-       libutil/registry.c      \
-       libtess/dict.c          \
-       libtess/geom.c          \
-       libtess/memalloc.c      \
-       libtess/mesh.c          \
-       libtess/normal.c        \
-       libtess/priorityq.c     \
-       libtess/render.c        \
-       libtess/sweep.c         \
-       libtess/tess.c          \
-       libtess/tessmono.c
-
-CC_SOURCES = \
-       libnurbs/interface/bezierEval.cc                \
-       libnurbs/interface/bezierPatch.cc               \
-       libnurbs/interface/bezierPatchMesh.cc           \
-       libnurbs/interface/glcurveval.cc                \
-       libnurbs/interface/glinterface.cc               \
-       libnurbs/interface/glrenderer.cc                \
-       libnurbs/interface/glsurfeval.cc                \
-       libnurbs/interface/incurveeval.cc               \
-       libnurbs/interface/insurfeval.cc                \
-       libnurbs/internals/arc.cc                       \
-       libnurbs/internals/arcsorter.cc                 \
-       libnurbs/internals/arctess.cc                   \
-       libnurbs/internals/backend.cc                   \
-       libnurbs/internals/basiccrveval.cc              \
-       libnurbs/internals/basicsurfeval.cc             \
-       libnurbs/internals/bin.cc                       \
-       libnurbs/internals/bufpool.cc                   \
-       libnurbs/internals/cachingeval.cc               \
-       libnurbs/internals/ccw.cc                       \
-       libnurbs/internals/coveandtiler.cc              \
-       libnurbs/internals/curve.cc                     \
-       libnurbs/internals/curvelist.cc                 \
-       libnurbs/internals/curvesub.cc                  \
-       libnurbs/internals/dataTransform.cc             \
-       libnurbs/internals/displaylist.cc               \
-       libnurbs/internals/flist.cc                     \
-       libnurbs/internals/flistsorter.cc               \
-       libnurbs/internals/hull.cc                      \
-       libnurbs/internals/intersect.cc                 \
-       libnurbs/internals/knotvector.cc                \
-       libnurbs/internals/mapdesc.cc                   \
-       libnurbs/internals/mapdescv.cc                  \
-       libnurbs/internals/maplist.cc                   \
-       libnurbs/internals/mesher.cc                    \
-       libnurbs/internals/monoTriangulationBackend.cc  \
-       libnurbs/internals/monotonizer.cc               \
-       libnurbs/internals/mycode.cc                    \
-       libnurbs/internals/nurbsinterfac.cc             \
-       libnurbs/internals/nurbstess.cc                 \
-       libnurbs/internals/patch.cc                     \
-       libnurbs/internals/patchlist.cc                 \
-       libnurbs/internals/quilt.cc                     \
-       libnurbs/internals/reader.cc                    \
-       libnurbs/internals/renderhints.cc               \
-       libnurbs/internals/slicer.cc                    \
-       libnurbs/internals/sorter.cc                    \
-       libnurbs/internals/splitarcs.cc                 \
-       libnurbs/internals/subdivider.cc                \
-       libnurbs/internals/tobezier.cc                  \
-       libnurbs/internals/trimline.cc                  \
-       libnurbs/internals/trimregion.cc                \
-       libnurbs/internals/trimvertpool.cc              \
-       libnurbs/internals/uarray.cc                    \
-       libnurbs/internals/varray.cc                    \
-       libnurbs/nurbtess/directedLine.cc               \
-       libnurbs/nurbtess/gridWrap.cc                   \
-       libnurbs/nurbtess/monoChain.cc                  \
-       libnurbs/nurbtess/monoPolyPart.cc               \
-       libnurbs/nurbtess/monoTriangulation.cc          \
-       libnurbs/nurbtess/partitionX.cc                 \
-       libnurbs/nurbtess/partitionY.cc                 \
-       libnurbs/nurbtess/polyDBG.cc                    \
-       libnurbs/nurbtess/polyUtil.cc                   \
-       libnurbs/nurbtess/primitiveStream.cc            \
-       libnurbs/nurbtess/quicksort.cc                  \
-       libnurbs/nurbtess/rectBlock.cc                  \
-       libnurbs/nurbtess/sampleComp.cc                 \
-       libnurbs/nurbtess/sampleCompBot.cc              \
-       libnurbs/nurbtess/sampleCompRight.cc            \
-       libnurbs/nurbtess/sampleCompTop.cc              \
-       libnurbs/nurbtess/sampleMonoPoly.cc             \
-       libnurbs/nurbtess/sampledLine.cc                \
-       libnurbs/nurbtess/searchTree.cc
-
-SOURCES = $(C_SOURCES) $(CC_SOURCES)
-
-C_OBJECTS = $(C_SOURCES:.c=.o)
-CC_OBJECTS = $(CC_SOURCES:.cc=.o)
-OBJECTS = $(C_OBJECTS) $(CC_OBJECTS)
-
-
-##### RULES #####
-
-.c.o:
-       $(CC) -c $(INCDIRS) $(CFLAGS) -DNDEBUG -DLIBRARYBUILD $< -o $@
-
-.cc.o:
-       $(CXX) -c $(INCDIRS) $(CXXFLAGS) -DNDEBUG -DLIBRARYBUILD $< -o $@
-
-
-##### TARGETS #####
-
-default:
-       $(MAKE) $(TOP)/$(LIB_DIR)/$(GLU_LIB_NAME)
-
-$(TOP)/$(LIB_DIR):
-       -mkdir $(TOP)/$(LIB_DIR)
-
-# Make the library:
-$(TOP)/$(LIB_DIR)/$(GLU_LIB_NAME): $(OBJECTS)
-       $(MKLIB) -o $(GLU_LIB) -linker '$(CXX)' -ldflags '$(LDFLAGS)' \
-               -major $(GLU_MAJOR) -minor $(GLU_MINOR) -patch $(GLU_TINY) \
-               -cplusplus $(MKLIB_OPTIONS) -install $(TOP)/$(LIB_DIR) \
-               -exports glu.exports -id $(INSTALL_LIB_DIR)/lib$(GLU_LIB).$(GLU_MAJOR).dylib \
-               $(GLU_LIB_DEPS) $(OBJECTS)
-
-
-clean:
-       -rm -f *.o */*.o */*/*.o
-       -rm -f *.lo */*.lo */*/*.lo
-       -rm -f *.la */*.la */*/*.la
diff --git a/src/glu/sgi/SConscript b/src/glu/sgi/SConscript
deleted file mode 100644 (file)
index 97405d8..0000000
+++ /dev/null
@@ -1,143 +0,0 @@
-Import('*')
-
-env = env.Clone()
-
-env.Prepend(CPPPATH = [
-    'include',
-    'internals',
-    'libnurbs/internals',
-    'libnurbs/interface',
-    'libnurbs/nurbtess',
-])
-
-env.Prepend(CPPDEFINES = [
-    'LIBRARYBUILD',
-    'RESOLVE_3D_TEXTURE_SUPPORT',
-])
-
-sources = [
-    'libutil/error.c',
-    'libutil/glue.c',
-    'libutil/mipmap.c',
-    'libutil/project.c',
-    'libutil/quad.c',
-    'libutil/registry.c',
-    'libtess/dict.c',
-    'libtess/geom.c',
-    'libtess/memalloc.c',
-    'libtess/mesh.c',
-    'libtess/normal.c',
-    'libtess/priorityq.c',
-    'libtess/render.c',
-    'libtess/sweep.c',
-    'libtess/tess.c',
-    'libtess/tessmono.c',
-    'libnurbs/interface/bezierEval.cc',
-    'libnurbs/interface/bezierPatch.cc',
-    'libnurbs/interface/bezierPatchMesh.cc',
-    'libnurbs/interface/glcurveval.cc',
-    'libnurbs/interface/glinterface.cc',
-    'libnurbs/interface/glrenderer.cc',
-    'libnurbs/interface/glsurfeval.cc',
-    'libnurbs/interface/incurveeval.cc',
-    'libnurbs/interface/insurfeval.cc',
-    'libnurbs/internals/arc.cc',
-    'libnurbs/internals/arcsorter.cc',
-    'libnurbs/internals/arctess.cc',
-    'libnurbs/internals/backend.cc',
-    'libnurbs/internals/basiccrveval.cc',
-    'libnurbs/internals/basicsurfeval.cc',
-    'libnurbs/internals/bin.cc',
-    'libnurbs/internals/bufpool.cc',
-    'libnurbs/internals/cachingeval.cc',
-    'libnurbs/internals/ccw.cc',
-    'libnurbs/internals/coveandtiler.cc',
-    'libnurbs/internals/curve.cc',
-    'libnurbs/internals/curvelist.cc',
-    'libnurbs/internals/curvesub.cc',
-    'libnurbs/internals/dataTransform.cc',
-    'libnurbs/internals/displaylist.cc',
-    'libnurbs/internals/flist.cc',
-    'libnurbs/internals/flistsorter.cc',
-    'libnurbs/internals/hull.cc',
-    'libnurbs/internals/intersect.cc',
-    'libnurbs/internals/knotvector.cc',
-    'libnurbs/internals/mapdesc.cc',
-    'libnurbs/internals/mapdescv.cc',
-    'libnurbs/internals/maplist.cc',
-    'libnurbs/internals/mesher.cc',
-    'libnurbs/internals/monoTriangulationBackend.cc',
-    'libnurbs/internals/monotonizer.cc',
-    'libnurbs/internals/mycode.cc',
-    'libnurbs/internals/nurbsinterfac.cc',
-    'libnurbs/internals/nurbstess.cc',
-    'libnurbs/internals/patch.cc',
-    'libnurbs/internals/patchlist.cc',
-    'libnurbs/internals/quilt.cc',
-    'libnurbs/internals/reader.cc',
-    'libnurbs/internals/renderhints.cc',
-    'libnurbs/internals/slicer.cc',
-    'libnurbs/internals/sorter.cc',
-    'libnurbs/internals/splitarcs.cc',
-    'libnurbs/internals/subdivider.cc',
-    'libnurbs/internals/tobezier.cc',
-    'libnurbs/internals/trimline.cc',
-    'libnurbs/internals/trimregion.cc',
-    'libnurbs/internals/trimvertpool.cc',
-    'libnurbs/internals/uarray.cc',
-    'libnurbs/internals/varray.cc',
-    'libnurbs/nurbtess/directedLine.cc',
-    'libnurbs/nurbtess/gridWrap.cc',
-    'libnurbs/nurbtess/monoChain.cc',
-    'libnurbs/nurbtess/monoPolyPart.cc',
-    'libnurbs/nurbtess/monoTriangulation.cc',
-    'libnurbs/nurbtess/partitionX.cc',
-    'libnurbs/nurbtess/partitionY.cc',
-    'libnurbs/nurbtess/polyDBG.cc',
-    'libnurbs/nurbtess/polyUtil.cc',
-    'libnurbs/nurbtess/primitiveStream.cc',
-    'libnurbs/nurbtess/quicksort.cc',
-    'libnurbs/nurbtess/rectBlock.cc',
-    'libnurbs/nurbtess/sampleComp.cc',
-    'libnurbs/nurbtess/sampleCompBot.cc',
-    'libnurbs/nurbtess/sampleCompRight.cc',
-    'libnurbs/nurbtess/sampleCompTop.cc',
-    'libnurbs/nurbtess/sampleMonoPoly.cc',
-    'libnurbs/nurbtess/sampledLine.cc',
-    'libnurbs/nurbtess/searchTree.cc',
-]
-
-if env['platform'] == 'windows':
-    # -D_OPENGL32_ -Iinclude -DBUILD_GL32
-    env.PrependUnique(LIBS = [
-        'gdi32', 
-        'user32', 
-        'opengl32', 
-    ])
-    target = 'glu32'
-    sources += ['glu.def']
-else:
-    env.PrependUnique(LIBS = [
-        'GL',
-    ])
-    target = 'glu'
-
-if env['platform'] == 'haiku':
-    glu = env.StaticLibrary(
-        target = target,
-        source = sources
-    )
-else:
-    glu = env.SharedLibrary(
-        target = target,
-        source = sources
-    )
-    env.Alias('glu', env.InstallSharedLibrary(glu, version=(1, 3, 0)))
-
-
-if env['platform'] == 'windows':
-    glu = env.FindIxes(glu, 'LIBPREFIX', 'LIBSUFFIX')
-else:
-    glu = env.FindIxes(glu, 'SHLIBPREFIX', 'SHLIBSUFFIX')
-
-Export('glu')
diff --git a/src/glu/sgi/dummy.cc b/src/glu/sgi/dummy.cc
deleted file mode 100644 (file)
index bd905a2..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-/*
- * This file contains nothing. It's just there so there's at least a single
- * source file for libGLU.la in this directory.
- */
diff --git a/src/glu/sgi/glu.def b/src/glu/sgi/glu.def
deleted file mode 100644 (file)
index 0c8b021..0000000
+++ /dev/null
@@ -1,88 +0,0 @@
-;DESCRIPTION 'Mesa GLU (OpenGL work-alike) for Win32'
-VERSION 5.1
-;
-; Module definition file for GLU (GLU32.DLL)
-;
-; Note: The GLU functions use the STDCALL
-; function calling convention.  Microsoft's
-; GLU32 uses this convention and so must the
-; Mesa GLU32 so that the Mesa DLL can be used
-; as a drop-in replacement.
-;
-; The linker exports STDCALL entry points with
-; 'decorated' names; e.g., _glBegin@0, where the
-; trailing number is the number of bytes of 
-; parameter data pushed onto the stack.  The
-; callee is responsible for popping this data
-; off the stack, usually via a RETF n instruction.
-;
-; However, the Microsoft GLU32.DLL does not export
-; the decorated names, even though the calling convention
-; is STDCALL.  So, this module definition file is
-; needed to force the Mesa GLU32.DLL to export the
-; symbols in the same manner as the Microsoft DLL.
-; Were it not for this problem, this file would not
-; be needed (for the glu* functions) since the entry
-; points are compiled with dllexport declspec.
-;
-
-EXPORTS
-       gluBeginCurve
-       gluBeginPolygon
-       gluBeginSurface
-       gluBeginTrim
-       gluBuild1DMipmapLevels
-       gluBuild1DMipmaps
-       gluBuild2DMipmapLevels
-       gluBuild2DMipmaps
-       gluBuild3DMipmapLevels
-       gluBuild3DMipmaps
-       gluCheckExtension
-       gluCylinder
-       gluDeleteNurbsRenderer
-       gluDeleteQuadric
-       gluDeleteTess
-       gluDisk
-       gluEndCurve
-       gluEndPolygon
-       gluEndSurface
-       gluEndTrim
-       gluErrorString
-       gluGetNurbsProperty
-       gluGetString
-       gluGetTessProperty
-       gluLoadSamplingMatrices
-       gluLookAt
-       gluNewNurbsRenderer
-       gluNewQuadric
-       gluNewTess
-       gluNextContour
-       gluNurbsCallback
-       gluNurbsCallbackData
-       gluNurbsCallbackDataEXT
-       gluNurbsCurve
-       gluNurbsProperty
-       gluNurbsSurface
-       gluOrtho2D
-       gluPartialDisk
-       gluPerspective
-       gluPickMatrix
-       gluProject
-       gluPwlCurve
-       gluQuadricCallback
-       gluQuadricDrawStyle
-       gluQuadricNormals
-       gluQuadricOrientation
-       gluQuadricTexture
-       gluScaleImage
-       gluSphere
-       gluTessBeginContour
-       gluTessBeginPolygon
-       gluTessCallback
-       gluTessEndContour
-       gluTessEndPolygon
-       gluTessNormal
-       gluTessProperty
-       gluTessVertex
-       gluUnProject
-       gluUnProject4
diff --git a/src/glu/sgi/glu.exports b/src/glu/sgi/glu.exports
deleted file mode 100644 (file)
index aeb7272..0000000
+++ /dev/null
@@ -1,118 +0,0 @@
-       gluBeginCurve
-       gluBeginPolygon
-       gluBeginSurface
-       gluBeginTrim
-       gluBuild1DMipmapLevels
-       gluBuild1DMipmaps
-       gluBuild2DMipmapLevels
-       gluBuild2DMipmaps
-       gluBuild3DMipmapLevels
-       gluBuild3DMipmaps
-       gluCheckExtension
-       gluCylinder
-       gluDeleteNurbsRenderer
-       gluDeleteQuadric
-       gluDeleteTess
-       gluDisk
-       gluEndCurve
-       gluEndPolygon
-       gluEndSurface
-       gluEndTrim
-       gluErrorString
-       gluGetNurbsProperty
-       gluGetString
-       gluGetTessProperty
-       gluLoadSamplingMatrices
-       gluLookAt
-       gluNewNurbsRenderer
-       gluNewQuadric
-       gluNewTess
-       gluNextContour
-       gluNurbsCallback
-       gluNurbsCallbackData
-       gluNurbsCallbackDataEXT
-       gluNurbsCurve
-       gluNurbsProperty
-       gluNurbsSurface
-       gluOrtho2D
-       gluPartialDisk
-       gluPerspective
-       gluPickMatrix
-       gluProject
-       gluPwlCurve
-       gluQuadricCallback
-       gluQuadricDrawStyle
-       gluQuadricNormals
-       gluQuadricOrientation
-       gluQuadricTexture
-       gluScaleImage
-       gluSphere
-       gluTessBeginContour
-       gluTessBeginPolygon
-       gluTessCallback
-       gluTessEndContour
-       gluTessEndPolygon
-       gluTessNormal
-       gluTessProperty
-       gluTessVertex
-       gluUnProject
-       gluUnProject4
-       mgluBeginCurve
-       mgluBeginPolygon
-       mgluBeginSurface
-       mgluBeginTrim
-       mgluBuild1DMipmapLevels
-       mgluBuild1DMipmaps
-       mgluBuild2DMipmapLevels
-       mgluBuild2DMipmaps
-       mgluBuild3DMipmapLevels
-       mgluBuild3DMipmaps
-       mgluCheckExtension
-       mgluCylinder
-       mgluDeleteNurbsRenderer
-       mgluDeleteQuadric
-       mgluDeleteTess
-       mgluDisk
-       mgluEndCurve
-       mgluEndPolygon
-       mgluEndSurface
-       mgluEndTrim
-       mgluErrorString
-       mgluGetNurbsProperty
-       mgluGetString
-       mgluGetTessProperty
-       mgluLoadSamplingMatrices
-       mgluLookAt
-       mgluNewNurbsRenderer
-       mgluNewQuadric
-       mgluNewTess
-       mgluNextContour
-       mgluNurbsCallback
-       mgluNurbsCallbackData
-       mgluNurbsCallbackDataEXT
-       mgluNurbsCurve
-       mgluNurbsProperty
-       mgluNurbsSurface
-       mgluOrtho2D
-       mgluPartialDisk
-       mgluPerspective
-       mgluPickMatrix
-       mgluProject
-       mgluPwlCurve
-       mgluQuadricCallback
-       mgluQuadricDrawStyle
-       mgluQuadricNormals
-       mgluQuadricOrientation
-       mgluQuadricTexture
-       mgluScaleImage
-       mgluSphere
-       mgluTessBeginContour
-       mgluTessBeginPolygon
-       mgluTessCallback
-       mgluTessEndContour
-       mgluTessEndPolygon
-       mgluTessNormal
-       mgluTessProperty
-       mgluTessVertex
-       mgluUnProject
-       mgluUnProject4
diff --git a/src/glu/sgi/glu.exports.darwin b/src/glu/sgi/glu.exports.darwin
deleted file mode 100644 (file)
index 4f56e36..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-_*gluBeginCurve
-_*gluBeginPolygon
-_*gluBeginSurface
-_*gluBeginTrim
-_*gluBuild1DMipmapLevels
-_*gluBuild1DMipmaps
-_*gluBuild2DMipmapLevels
-_*gluBuild2DMipmaps
-_*gluBuild3DMipmapLevels
-_*gluBuild3DMipmaps
-_*gluCheckExtension
-_*gluCylinder
-_*gluDeleteNurbsRenderer
-_*gluDeleteQuadric
-_*gluDeleteTess
-_*gluDisk
-_*gluEndCurve
-_*gluEndPolygon
-_*gluEndSurface
-_*gluEndTrim
-_*gluErrorString
-_*gluGetNurbsProperty
-_*gluGetString
-_*gluGetTessProperty
-_*gluLoadSamplingMatrices
-_*gluLookAt
-_*gluNewNurbsRenderer
-_*gluNewQuadric
-_*gluNewTess
-_*gluNextContour
-_*gluNurbsCallback
-_*gluNurbsCallbackData
-_*gluNurbsCallbackDataEXT
-_*gluNurbsCurve
-_*gluNurbsProperty
-_*gluNurbsSurface
-_*gluOrtho2D
-_*gluPartialDisk
-_*gluPerspective
-_*gluPickMatrix
-_*gluProject
-_*gluPwlCurve
-_*gluQuadricCallback
-_*gluQuadricDrawStyle
-_*gluQuadricNormals
-_*gluQuadricOrientation
-_*gluQuadricTexture
-_*gluScaleImage
-_*gluSphere
-_*gluTessBeginContour
-_*gluTessBeginPolygon
-_*gluTessCallback
-_*gluTessEndContour
-_*gluTessEndPolygon
-_*gluTessNormal
-_*gluTessProperty
-_*gluTessVertex
-_*gluUnProject
-_*gluUnProject4
diff --git a/src/glu/sgi/include/gluos.h b/src/glu/sgi/include/gluos.h
deleted file mode 100644 (file)
index 290a06f..0000000
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
-** gluos.h - operating system dependencies for GLU
-**
-*/
-#ifdef __VMS
-#ifdef __cplusplus
-#pragma message disable nocordel
-#pragma message disable codeunreachable
-#pragma message disable codcauunr
-#endif
-#endif
-
-#ifdef __WATCOMC__
-/* Disable *lots* of warnings to get a clean build. I can't be bothered fixing the
- * code at the moment, as it is pretty ugly.
- */
-#pragma warning 7   10
-#pragma warning 13  10
-#pragma warning 14  10
-#pragma warning 367 10
-#pragma warning 379 10
-#pragma warning 726 10
-#pragma warning 836 10
-#endif
-
-#ifdef BUILD_FOR_SNAP
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <malloc.h>
-
-#elif defined(_WIN32)
-
-#include <stdlib.h>        /* For _MAX_PATH definition */
-#include <stdio.h>
-#include <malloc.h>
-
-#define WIN32_LEAN_AND_MEAN
-#define NOGDI
-#define NOIME
-#define NOMINMAX
-
-#ifdef __MINGW64_VERSION_MAJOR
-  #undef _WIN32_WINNT
-#endif
-
-#ifndef _WIN32_WINNT
-  /* XXX: Workaround a bug in mingw-w64's headers when NOGDI is set and
-   * _WIN32_WINNT >= 0x0600 */
-  #define _WIN32_WINNT 0x0400
-#endif
-#ifndef STRICT
-  #define STRICT 1
-#endif
-
-#include <windows.h>
-
-/* Disable warnings */
-#if defined(_MSC_VER)
-#pragma warning(disable : 4101)
-#pragma warning(disable : 4244)
-#pragma warning(disable : 4761)
-#endif
-
-#if defined(_MSC_VER) && _MSC_VER >= 1200 && _MSC_VER < 1300
-#pragma comment(linker, "/OPT:NOWIN98")
-#endif
-
-#ifndef WINGDIAPI
-#define WINGDIAPI
-#endif
-
-#elif defined(__OS2__)
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <malloc.h>
-#define WINGDIAPI
-
-#else
-
-/* Disable Microsoft-specific keywords */
-#define GLAPIENTRY
-#define WINGDIAPI
-
-#endif
diff --git a/src/glu/sgi/libnurbs/interface/bezierEval.cc b/src/glu/sgi/libnurbs/interface/bezierEval.cc
deleted file mode 100644 (file)
index b414f53..0000000
+++ /dev/null
@@ -1,260 +0,0 @@
-/*
-** License Applicability. Except to the extent portions of this file are
-** made subject to an alternative license as permitted in the SGI Free
-** Software License B, Version 1.1 (the "License"), the contents of this
-** file are subject only to the provisions of the License. You may not use
-** this file except in compliance with the License. You may obtain a copy
-** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600
-** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:
-**
-** http://oss.sgi.com/projects/FreeB
-**
-** Note that, as provided in the License, the Software is distributed on an
-** "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS
-** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND
-** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A
-** PARTICULAR PURPOSE, AND NON-INFRINGEMENT.
-**
-** Original Code. The Original Code is: OpenGL Sample Implementation,
-** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,
-** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.
-** Copyright in any portions created by third parties is as indicated
-** elsewhere herein. All Rights Reserved.
-**
-** Additional Notice Provisions: The application programming interfaces
-** established by SGI in conjunction with the Original Code are The
-** OpenGL(R) Graphics System: A Specification (Version 1.2.1), released
-** April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version
-** 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X
-** Window System(R) (Version 1.3), released October 19, 1998. This software
-** was created using the OpenGL(R) version 1.2.1 Sample Implementation
-** published by SGI, but has not been independently verified as being
-** compliant with the OpenGL(R) version 1.2.1 Specification.
-**
-*/
-/*
-*/
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <assert.h>
-#include <math.h>
-#include "bezierEval.h"
-
-#ifdef __WATCOMC__
-#pragma warning 14  10
-#endif
-
-#define TOLERANCE 0.0001
-
-#ifndef MAX_ORDER
-#define MAX_ORDER 16
-#endif
-
-#ifndef MAX_DIMENSION
-#define MAX_DIMENSION 4
-#endif
-
-static void normalize(float vec[3]);
-static void crossProduct(float x[3], float y[3], float ret[3]);
-#if 0 // UNUSED
-static void bezierCurveEvalfast(float u0, float u1, int order, float *ctlpoints, int stride,  int dimension, float u, float retpoint[]);
-#endif
-
-static float binomialCoefficients[8][8] = {
-  {1,0,0,0,0,0,0,0},
-  {1,1,0,0,0,0,0,0},
-  {1,2,1,0,0,0,0,0},
-  {1,3,3,1,0,0,0,0},
-  {1,4,6,4,1,0,0,0},
-  {1,5,10,10,5,1,0,0},
-  {1,6,15,20,15,6,1,0},
-  {1,7,21,35,35,21,7,1}
-};
-
-void bezierCurveEval(float u0, float u1, int order, float *ctlpoints, int stride, int dimension, float u, float retpoint[])
-{
-  float uprime = (u-u0)/(u1-u0);
-  float *ctlptr = ctlpoints;
-  float oneMinusX = 1.0f-uprime;
-  float XPower = 1.0f;
-
-  int i,k;
-  for(k=0; k<dimension; k++)
-    retpoint[k] = (*(ctlptr + k));
-
-  for(i=1; i<order; i++){
-    ctlptr += stride;
-    XPower *= uprime;
-    for(k=0; k<dimension; k++) {
-      retpoint[k] = retpoint[k]*oneMinusX + ctlptr[k]* binomialCoefficients[order-1][i] * XPower;
-    }
-  }
-}
-
-
-#if 0 // UNUSED
-/*order = degree +1 >=1.
- */
-void bezierCurveEvalfast(float u0, float u1, int order, float *ctlpoints, int stride,  int dimension, float u, float retpoint[])
-{
-  float uprime = (u-u0)/(u1-u0);
-  float buf[MAX_ORDER][MAX_ORDER][MAX_DIMENSION];
-  float* ctlptr = ctlpoints;
-  int r, i,j;
-  for(i=0; i<order; i++) {
-    for(j=0; j<dimension; j++)
-      buf[0][i][j] = ctlptr[j];
-    ctlptr += stride;
-  }
-  for(r=1; r<order; r++){
-    for(i=0; i<order-r; i++) {
-      for(j=0; j<dimension; j++)
-       buf[r][i][j] = (1-uprime)*buf[r-1][i][j] + uprime*buf[r-1][i+1][j];
-    }
-  }
-
-  for(j=0; j<dimension; j++)
-    retpoint[j] = buf[order-1][0][j];
-}
-#endif
-
-
-/*order = degree +1 >=1.
- */
-void bezierCurveEvalDer(float u0, float u1, int order, float *ctlpoints, int stride,  int dimension, float u, float retDer[])
-{
-  int i,k;
-  float width = u1-u0;
-  float *ctlptr = ctlpoints;
-
-  float buf[MAX_ORDER][MAX_DIMENSION];
-  if(order == 1){
-    for(k=0; k<dimension; k++)
-      retDer[k]=0;
-  }
-  for(i=0; i<order-1; i++){
-    for(k=0; k<dimension; k++) {
-      buf[i][k] = (ctlptr[stride+k] - ctlptr[k])*(order-1)/width;
-    }
-    ctlptr += stride;
-  }
-
-  bezierCurveEval(u0, u1, order-1, (float*) buf, MAX_DIMENSION,  dimension, u, retDer);
-}
-
-void bezierCurveEvalDerGen(int der, float u0, float u1, int order, float *ctlpoints, int stride,  int dimension, float u, float retDer[])
-{
-  int i,k,r;
-  float *ctlptr = ctlpoints;
-  float width=u1-u0;
-  float buf[MAX_ORDER][MAX_ORDER][MAX_DIMENSION];
-  if(der<0) der=0;
-  for(i=0; i<order; i++){
-    for(k=0; k<dimension; k++){
-      buf[0][i][k] = ctlptr[k];
-    }
-    ctlptr += stride;
-  }
-
-
-  for(r=1; r<=der; r++){
-    for(i=0; i<order-r; i++){
-      for(k=0; k<dimension; k++){
-       buf[r][i][k] = (buf[r-1][i+1][k] - buf[r-1][i][k])*(order-r)/width;
-      }
-    }
-  }
-
-  bezierCurveEval(u0, u1, order-der, (float *) (buf[der]), MAX_DIMENSION, dimension, u, retDer);
-}
-
-/*the Bezier bivarite polynomial is:
- * sum[i:0,uorder-1][j:0,vorder-1] { ctlpoints[i*ustride+j*vstride] * B(i)*B(j)
- * where B(i) and B(j) are basis functions
- */
-void bezierSurfEvalDerGen(int uder, int vder, float u0, float u1, int uorder, float v0, float v1, int vorder, int dimension, float *ctlpoints, int ustride, int vstride, float u, float v, float ret[])
-{
-  int i;
-  float newPoints[MAX_ORDER][MAX_DIMENSION];
-
-  for(i=0; i<uorder; i++){
-
-    bezierCurveEvalDerGen(vder, v0, v1, vorder, ctlpoints+ustride*i, vstride, dimension, v, newPoints[i]);
-
-  }
-
-  bezierCurveEvalDerGen(uder, u0, u1, uorder, (float *) newPoints, MAX_DIMENSION, dimension, u, ret);
-}
-
-
-/*division by w is performed*/
-void bezierSurfEval(float u0, float u1, int uorder, float v0, float v1, int vorder, int dimension, float *ctlpoints, int ustride, int vstride, float u, float v, float ret[])
-{
-  bezierSurfEvalDerGen(0, 0, u0, u1, uorder, v0, v1, vorder, dimension, ctlpoints, ustride, vstride, u, v, ret);
-  if(dimension == 4) /*homogeneous*/{
-    ret[0] /= ret[3];
-    ret[1] /= ret[3];
-    ret[2] /= ret[3];
-  }
-}
-
-void bezierSurfEvalNormal(float u0, float u1, int uorder, float v0, float v1, int vorder, int dimension, float *ctlpoints, int ustride, int vstride, float u, float v, float retNormal[])
-{
-  float partialU[4];
-  float partialV[4];
-  assert(dimension>=3 && dimension <=4);
-  bezierSurfEvalDerGen(1,0, u0, u1, uorder, v0, v1, vorder, dimension, ctlpoints, ustride, vstride, u, v, partialU);
-  bezierSurfEvalDerGen(0,1, u0, u1, uorder, v0, v1, vorder, dimension, ctlpoints, ustride, vstride, u, v, partialV);
-
-  if(dimension == 3){/*inhomogeneous*/
-    crossProduct(partialU, partialV, retNormal);
-
-    normalize(retNormal);
-
-    return;
-  }
-  else { /*homogeneous*/
-    float val[4]; /*the point coordinates (without derivative)*/
-    float newPartialU[MAX_DIMENSION];
-    float newPartialV[MAX_DIMENSION];
-    int i;
-    bezierSurfEvalDerGen(0,0, u0, u1, uorder, v0, v1, vorder, dimension, ctlpoints, ustride, vstride, u, v, val);
-
-    for(i=0; i<=2; i++){
-      newPartialU[i] = partialU[i] * val[3] - val[i] * partialU[3];
-      newPartialV[i] = partialV[i] * val[3] - val[i] * partialV[3];
-    }
-    crossProduct(newPartialU, newPartialV, retNormal);
-    normalize(retNormal);
-  }
-}
-
-/*if size is 0, then nothing is done*/
-static void normalize(float vec[3])
-{
-  float size = (float)sqrt(vec[0]*vec[0] + vec[1]*vec[1] + vec[2]*vec[2]);
-
-  if(size < TOLERANCE)
-    {
-#ifdef DEBUG
-      fprintf(stderr, "Warning: in oglBSpline.c normal is 0\n");
-#endif
-      return;
-    }
-  else {
-    vec[0] = vec[0]/size;
-    vec[1] = vec[1]/size;
-    vec[2] = vec[2]/size;
-  }
-}
-
-
-static void crossProduct(float x[3], float y[3], float ret[3])
-{
-  ret[0] = x[1]*y[2] - y[1]*x[2];
-  ret[1] = x[2]*y[0] - y[2]*x[0];
-  ret[2] = x[0]*y[1] - y[0]*x[1];
-
-}
-
diff --git a/src/glu/sgi/libnurbs/interface/bezierEval.h b/src/glu/sgi/libnurbs/interface/bezierEval.h
deleted file mode 100644 (file)
index 93e8c69..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * SGI FREE SOFTWARE LICENSE B (Version 2.0, Sept. 18, 2008)
- * Copyright (C) 1991-2000 Silicon Graphics, Inc. All Rights Reserved.
- *
- * 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, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice including the dates of first publication and
- * either this permission notice or a reference to
- * http://oss.sgi.com/projects/FreeB/
- * shall be included in all copies or substantial portions of the Software.
- *
- * 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. IN NO EVENT SHALL
- * SILICON GRAPHICS, INC. BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
- * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- * Except as contained in this notice, the name of Silicon Graphics, Inc.
- * shall not be used in advertising or otherwise to promote the sale, use or
- * other dealings in this Software without prior written authorization from
- * Silicon Graphics, Inc.
- */
-/*
-*/
-
-#ifndef _BEZIEREVAL_H
-#define _BEZIEREVAL_H
-
-void bezierCurveEval(float u0, float u1, int order, float *ctlpoints, int stride,  int dimension, float u, float retpoint[]);
-void bezierCurveEvalDer(float u0, float u1, int order, float *ctlpoints, int stride,  int dimension, float u, float retDer[]);
-void bezierCurveEvalDerGen(int der, float u0, float u1, int order, float *ctlpoints, int stride,  int dimension, float u, float retDer[]);
-
-
-void bezierSurfEvalDerGen(int uder, int vder, float u0, float u1, int uorder, float v0, float v1, int vorder, int dimension, float *ctlpoints, int ustride, int vstride, float u, float v, float ret[]);
-
-void bezierSurfEval(float u0, float u1, int uorder, float v0, float v1, int vorder, int dimension, float *ctlpoints, int ustride, int vstride, float u, float v, float ret[]);
-
-void bezierSurfEvalNormal(float u0, float u1, int uorder, float v0, float v1, int vorder, int dimension, float *ctlpoints, int ustride, int vstride, float u, float v, float retNormal[]);
-
-
-#endif
diff --git a/src/glu/sgi/libnurbs/interface/bezierPatch.cc b/src/glu/sgi/libnurbs/interface/bezierPatch.cc
deleted file mode 100644 (file)
index dbab3a1..0000000
+++ /dev/null
@@ -1,206 +0,0 @@
-/*
-** License Applicability. Except to the extent portions of this file are
-** made subject to an alternative license as permitted in the SGI Free
-** Software License B, Version 1.1 (the "License"), the contents of this
-** file are subject only to the provisions of the License. You may not use
-** this file except in compliance with the License. You may obtain a copy
-** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600
-** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:
-** 
-** http://oss.sgi.com/projects/FreeB
-** 
-** Note that, as provided in the License, the Software is distributed on an
-** "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS
-** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND
-** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A
-** PARTICULAR PURPOSE, AND NON-INFRINGEMENT.
-** 
-** Original Code. The Original Code is: OpenGL Sample Implementation,
-** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,
-** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.
-** Copyright in any portions created by third parties is as indicated
-** elsewhere herein. All Rights Reserved.
-** 
-** Additional Notice Provisions: The application programming interfaces
-** established by SGI in conjunction with the Original Code are The
-** OpenGL(R) Graphics System: A Specification (Version 1.2.1), released
-** April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version
-** 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X
-** Window System(R) (Version 1.3), released October 19, 1998. This software
-** was created using the OpenGL(R) version 1.2.1 Sample Implementation
-** published by SGI, but has not been independently verified as being
-** compliant with the OpenGL(R) version 1.2.1 Specification.
-**
-*/
-/*
-*/
-
-#include "gluos.h"
-#include <stdlib.h>
-#include <stdio.h>
-#include <assert.h>
-#include <GL/glu.h> /*for drawing bzier patch*/
-#include "bezierPatch.h"
-#include "bezierEval.h"
-
-/*
- *allocate an instance of bezierPatch. The control points are unknown. But
- *the space of this array is allocated with size of 
- *   uorder*vorder*dimension
- *
- */
-bezierPatch* bezierPatchMake(float umin, float vmin, float umax, float vmax, int uorder, int vorder, int dimension)
-{
-  bezierPatch* ret = (bezierPatch*) malloc(sizeof(bezierPatch));
-  assert(ret);
-  ret->umin = umin;
-  ret->vmin = vmin;
-  ret->umax = umax;
-  ret->vmax = vmax;
-  ret->uorder = uorder;
-  ret->vorder = vorder;
-  ret->dimension = dimension;
-  ret->ctlpoints = (float*) malloc(sizeof(float) * dimension * uorder * vorder);
-  assert(ret->ctlpoints);
-
-  ret->next = NULL;
-
-  return ret;
-}
-
-bezierPatch* bezierPatchMake2(float umin, float vmin, float umax, float vmax, int uorder, int vorder, int dimension, int ustride, int vstride,  float* ctlpoints)
-{
-  bezierPatch* ret = (bezierPatch*) malloc(sizeof(bezierPatch));
-  assert(ret);
-  ret->umin = umin;
-  ret->vmin = vmin;
-  ret->umax = umax;
-  ret->vmax = vmax;
-  ret->uorder = uorder;
-  ret->vorder = vorder;
-  ret->dimension = dimension;
-  ret->ctlpoints = (float*) malloc(sizeof(float) * dimension * uorder * vorder);
-  assert(ret->ctlpoints);
-
-  /*copy the control points there*/
-  int the_ustride = vorder * dimension;
-  int the_vstride = dimension;
-  for(int i=0; i<uorder; i++)
-    for(int j=0; j<vorder; j++)
-      for(int k=0; k<dimension; k++)
-       ret->ctlpoints[i * the_ustride + j*the_vstride+k] = ctlpoints[i*ustride+j*vstride+k];
-  
-  ret->next = NULL;
-
-  return ret;
-}
-
-/*
- *deallocate the space as allocated by Make
- */
-void bezierPatchDelete(bezierPatch *b)
-{
-  free(b->ctlpoints);
-  free(b);
-}
-
-/*delete the whole linked list
- */
-void bezierPatchDeleteList(bezierPatch *b)
-{
-  bezierPatch *temp;
-  while (b != NULL) {
-    temp = b;
-    b = b->next;
-    bezierPatchDelete(temp);    
-  }
-}
-
-bezierPatch* bezierPatchInsert(bezierPatch *list, bezierPatch *b)
-{
-  b->next = list;
-  return b;
-}
-
-/*print the data stored in this patch*/
-void bezierPatchPrint(bezierPatch *b)
-{
-  printf("bezierPatch:\n");
-  printf("umin,umax=(%f,%f), (vmin, vmax)=(%f,%f)\n", b->umin, b->umax, b->vmin, b->vmax);
-  printf("uorder=%i, vorder=%i\n", b->uorder, b->vorder);
-  printf("idmension = %i\n", b->dimension);
-}
-       
-/*print the whole list*/
-void bezierPatchPrintList(bezierPatch *list)
-{
-  bezierPatch* temp;
-  for(temp=list; temp != NULL; temp = temp->next)
-    bezierPatchPrint(temp);
-}
-
-void bezierPatchEval(bezierPatch *b, float u, float v, float ret[])
-{
-  if(   u >= b->umin && u<= b->umax
-     && v >= b->vmin && v<= b->vmax)
-    {
-
-      bezierSurfEval(b->umin, b->umax, b->uorder, b->vmin, b->vmax, b->vorder, b->dimension, b->ctlpoints, b->dimension * b->vorder, b->dimension, u, v, ret);
-
-     }
-  else if(b->next != NULL)
-    bezierPatchEval(b->next, u,v, ret);
-  else 
-    bezierSurfEval(b->umin, b->umax, b->uorder, b->vmin, b->vmax, b->vorder, b->dimension, b->ctlpoints, b->dimension * b->vorder, b->dimension, u, v, ret);    
-}
-
-/*the returned normal is normlized
- */
-void bezierPatchEvalNormal(bezierPatch *b, float u, float v, float ret[])
-{
-  bezierSurfEvalNormal(b->umin, b->umax, b->uorder, b->vmin, b->vmax, b->vorder, b->dimension, b->ctlpoints, b->dimension * b->vorder, b->dimension, u, v, ret);  
-
-  if(   u >= b->umin && u<= b->umax
-     && v >= b->vmin && v<= b->vmax)
-    {
-      bezierSurfEvalNormal(b->umin, b->umax, b->uorder, b->vmin, b->vmax, b->vorder, b->dimension, b->ctlpoints, b->dimension * b->vorder, b->dimension, u, v, ret);
-     }
-  else if(b->next != NULL)
-    bezierPatchEvalNormal(b->next, u,v, ret);
-  else 
-    bezierSurfEvalNormal(b->umin, b->umax, b->uorder, b->vmin, b->vmax, b->vorder, b->dimension, b->ctlpoints, b->dimension * b->vorder, b->dimension, u, v, ret);    
-
-}
-
-void bezierPatchDraw(bezierPatch *bpatch, int u_reso, int v_reso)
-{
-  if(bpatch->dimension == 3)
-    glMap2f(GL_MAP2_VERTEX_3, bpatch->umin, bpatch->umax, 3*bpatch->vorder, bpatch->uorder, bpatch->vmin, bpatch->vmax,3, bpatch->vorder, (GLfloat*) bpatch->ctlpoints);
-  else
-    glMap2f(GL_MAP2_VERTEX_4, bpatch->umin, bpatch->umax, 4*bpatch->vorder, bpatch->uorder, bpatch->vmin, bpatch->vmax,3, bpatch->vorder, (GLfloat*) bpatch->ctlpoints);    
-
-  glMapGrid2f(u_reso, bpatch->umin, bpatch->umax, 
-             v_reso, bpatch->vmin, bpatch->vmax);
-  glEvalMesh2(GL_LINE, 0, u_reso, 0, v_reso);
-}
-
-void bezierPatchListDraw(bezierPatch *list, int u_reso, int v_reso)
-{
-  bezierPatch *temp;
-glEnable(GL_LIGHTING);
-glEnable(GL_LIGHT0);
-glEnable(GL_MAP2_VERTEX_3);
-glEnable(GL_AUTO_NORMAL);
-glEnable(GL_NORMALIZE);
-glColor3f(1,0,0);
-#ifdef DEBUG
-printf("mapmap\n");
-#endif
-
-
-  for(temp = list; temp != NULL; temp = temp->next)
-    bezierPatchDraw(temp, u_reso, v_reso);
-}
-           
-
-
diff --git a/src/glu/sgi/libnurbs/interface/bezierPatch.h b/src/glu/sgi/libnurbs/interface/bezierPatch.h
deleted file mode 100644 (file)
index 981183a..0000000
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- * SGI FREE SOFTWARE LICENSE B (Version 2.0, Sept. 18, 2008)
- * Copyright (C) 1991-2000 Silicon Graphics, Inc. All Rights Reserved.
- *
- * 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, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice including the dates of first publication and
- * either this permission notice or a reference to
- * http://oss.sgi.com/projects/FreeB/
- * shall be included in all copies or substantial portions of the Software.
- *
- * 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. IN NO EVENT SHALL
- * SILICON GRAPHICS, INC. BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
- * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- * Except as contained in this notice, the name of Silicon Graphics, Inc.
- * shall not be used in advertising or otherwise to promote the sale, use or
- * other dealings in this Software without prior written authorization from
- * Silicon Graphics, Inc.
- */
-/*
-*/
-
-#ifndef _BEZIERPATCH_H
-#define _BEZIERPATCH_H
-
-typedef struct bezierPatch{
-  float umin, vmin, umax, vmax;
-  int uorder; /*order= degree + 1*/
-  int vorder; 
-
-  /*
-   *the control points are stored in a one dimensional  array.
-   *the surface is defined as:
-   *      s(u,v) = sum_{i,j} P(i,j) * B_i(u) * B_j(v).
-   *where P(i,j) are the control points, B_i(.) are Bezier
-   *basis functions.
-   *Each control point can have dimension 3 or 4: (x,y,z,w).
-   *The components of P(i,j) are stored in a one dimensional 
-   *array: 
-   *       ctlpoints[]
-   *in the order of:
-   * P[0,0], P[0,1], ..., P[0,vorder-1],
-   * P[1,0], P[1,1], ..., P[1,vorder-1],
-   *  ...             
-   * P[uorder-1,0], P[uorder-1,1], ..., P[uorder-1,vorder-1].
-   */
-  int dimension;
-  float* ctlpoints;
-
-  /*
-   *in case we have to manage multiple bezierPatches.
-   */
-  struct bezierPatch  *next; 
-
-} bezierPatch;
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-bezierPatch* bezierPatchMake(float umin, float vmin, float umax, float vmax, int urder, int vorder, int dimension);
-
-bezierPatch* bezierPatchMake2(float umin, float vmin, float umax, float vmax, int urder, int vorder, int dimension, int ustride, int vstride, float *ctlpoints);
-
-
-bezierPatch* bezierPatchInsert(bezierPatch *list, bezierPatch *b);
-
-void bezierPatchDelete(bezierPatch *b);
-
-void bezierPatchDeleteList(bezierPatch *b);
-
-void bezierPatchPrint(bezierPatch *b);
-
-void bezierPatchPrintList(bezierPatch *list);
-
-void bezierPatchEval(bezierPatch *b, float u, float v, float ret[]);
-
-void bezierPatchEvalNormal(bezierPatch *b, float u, float v, float retNormal[]);
-
-void bezierPatchEval(bezierPatch *b, float u, float v, float ret[]);
-
-void bezierPatchEvalNormal(bezierPatch *b, float u, float v, float ret[]);
-
-
-void bezierPatchDraw(bezierPatch *bpatch, int u_reso, int v_reso);
-
-void bezierPatchListDraw(bezierPatch *list, int u_reso, int v_reso);
-
-#ifdef __cplusplus
-}
-#endif
-
-
-#endif
diff --git a/src/glu/sgi/libnurbs/interface/bezierPatchMesh.cc b/src/glu/sgi/libnurbs/interface/bezierPatchMesh.cc
deleted file mode 100644 (file)
index ac7ff84..0000000
+++ /dev/null
@@ -1,610 +0,0 @@
-/*
-** License Applicability. Except to the extent portions of this file are
-** made subject to an alternative license as permitted in the SGI Free
-** Software License B, Version 1.1 (the "License"), the contents of this
-** file are subject only to the provisions of the License. You may not use
-** this file except in compliance with the License. You may obtain a copy
-** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600
-** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:
-** 
-** http://oss.sgi.com/projects/FreeB
-** 
-** Note that, as provided in the License, the Software is distributed on an
-** "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS
-** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND
-** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A
-** PARTICULAR PURPOSE, AND NON-INFRINGEMENT.
-** 
-** Original Code. The Original Code is: OpenGL Sample Implementation,
-** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,
-** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.
-** Copyright in any portions created by third parties is as indicated
-** elsewhere herein. All Rights Reserved.
-** 
-** Additional Notice Provisions: The application programming interfaces
-** established by SGI in conjunction with the Original Code are The
-** OpenGL(R) Graphics System: A Specification (Version 1.2.1), released
-** April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version
-** 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X
-** Window System(R) (Version 1.3), released October 19, 1998. This software
-** was created using the OpenGL(R) version 1.2.1 Sample Implementation
-** published by SGI, but has not been independently verified as being
-** compliant with the OpenGL(R) version 1.2.1 Specification.
-**
-*/
-/*
-*/
-
-#include "gluos.h"
-#include <stdlib.h>
-#include <stdio.h>
-#include <assert.h>
-#include <GL/gl.h>
-#include "bezierEval.h"
-#include "bezierPatchMesh.h"
-
-static int isDegenerate(float A[2], float B[2], float C[2]);
-
-void drawStrips(float *vertex_array, float *normal_array, int *length_array, GLenum *type_array, int num_strips)
-{
-  int i,j,k;
-  k=0;
-  /*k is the index of the first component of the current vertex*/
-  for(i=0; i<num_strips; i++)
-    {
-      glBegin(type_array[i]);
-      for(j=0; j<length_array[i]; j++)
-       {
-         glNormal3fv(normal_array+k);
-         glVertex3fv(vertex_array+k);
-         k += 3;
-       }
-      glEnd();
-    }
-}
-
-void bezierPatchMeshListDelDeg(bezierPatchMesh* list)
-{
-  bezierPatchMesh* temp;
-  for(temp=list; temp != NULL; temp = temp->next)
-    {
-      bezierPatchMeshDelDeg(temp);
-    }
-}
-
-void bezierPatchMeshListDelete(bezierPatchMesh *list)
-{
-  if(list == NULL) return;
-  bezierPatchMeshListDelete(list->next);
-  bezierPatchMeshDelete(list);  
-}
-
-
-
-
-bezierPatchMesh* bezierPatchMeshListReverse(bezierPatchMesh* list)
-{
- bezierPatchMesh* ret=NULL;
- bezierPatchMesh* temp;
- bezierPatchMesh* nextone;
-  for(temp = list; temp != NULL; temp = nextone)
-    {
-      nextone = temp->next;
-      ret=bezierPatchMeshListInsert(ret, temp);
-    }
- return ret;
-}
-
-/*maptype is either GL_MAP2_VERTEX_3 or GL_MAP2_VERTEX_4
- */
-bezierPatchMesh *bezierPatchMeshMake(int maptype, float umin, float umax, int ustride, int uorder, float vmin, float vmax, int vstride, int vorder, float *ctlpoints,  int size_UVarray, int size_length_array)
-{
-  int i,j,k;
-  int dimension;
-  int the_ustride;
-  int the_vstride;
-
-  if(maptype == GL_MAP2_VERTEX_3) dimension = 3;
-  else if (maptype==GL_MAP2_VERTEX_4) dimension = 4;
-  else {
-    fprintf(stderr, "error in inMap2f, maptype=%i is wrong, maptype,map is invalid\n", maptype);
-    return NULL;
-  }
-
-  bezierPatchMesh *ret = (bezierPatchMesh*) malloc(sizeof(bezierPatchMesh));
-  assert(ret);
-
-  ret->bpatch_normal = NULL;
-  ret->bpatch_color  = NULL;
-  ret->bpatch_texcoord = NULL;
-  ret->bpatch = bezierPatchMake(umin, vmin, umax, vmax, uorder, vorder, dimension);
-
-  /*copy the control points there*/
-  the_ustride = vorder * dimension;
-  the_vstride = dimension;
-  for(i=0; i<uorder; i++)
-    for(j=0; j<vorder; j++)
-      for(k=0; k<dimension; k++)
-       ret->bpatch->ctlpoints[i * the_ustride + j*the_vstride+k] = ctlpoints[i*ustride+j*vstride+k];
-  
-
-  ret->size_UVarray = size_UVarray;
-  ret->size_length_array = size_length_array;
-  ret->UVarray = (float*) malloc(sizeof(float) * size_UVarray);
-  assert(ret->UVarray);
-  ret->length_array = (int *)malloc(sizeof(int) * size_length_array);
-  assert(ret->length_array);
-  ret->type_array = (GLenum *)malloc(sizeof(GLenum) * size_length_array);
-  assert(ret->type_array);
-
-  ret->index_UVarray = 0;
-  ret->index_length_array = 0;
-
-  ret->vertex_array = NULL;
-  ret->normal_array = NULL;
-  ret->color_array  = NULL;
-  ret->texcoord_array = NULL;
-
-  ret->next = NULL;
-  return ret;
-}
-
-bezierPatchMesh *bezierPatchMeshMake2(int size_UVarray, int size_length_array)
-{
-  bezierPatchMesh *ret = (bezierPatchMesh*) malloc(sizeof(bezierPatchMesh));
-  assert(ret);
-
-  ret->bpatch = NULL;
-  ret->bpatch_normal = NULL;
-  ret->bpatch_color  = NULL;
-  ret->bpatch_texcoord = NULL;
-
-  ret->size_UVarray = size_UVarray;
-  ret->size_length_array = size_length_array;
-  ret->UVarray = (float*) malloc(sizeof(float) * size_UVarray);
-  assert(ret->UVarray);
-  ret->length_array = (int *)malloc(sizeof(int) * size_length_array);
-  assert(ret->length_array);
-  ret->type_array = (GLenum *)malloc(sizeof(GLenum) * size_length_array);
-  assert(ret->type_array);
-
-  ret->index_UVarray = 0;
-  ret->index_length_array = 0;
-
-  ret->vertex_array = NULL;
-  ret->normal_array = NULL;
-  ret->color_array  = NULL;
-  ret->texcoord_array = NULL;
-
-  ret->next = NULL;
-  return ret;
-}
-
-void bezierPatchMeshPutPatch(bezierPatchMesh *bpm, int maptype, float umin, float umax, int ustride, int uorder, float vmin, float vmax, int vstride, int vorder, float *ctlpoints)
-{
-  switch(maptype){
-  case GL_MAP2_VERTEX_3:
-    bpm->bpatch = bezierPatchMake2(umin, vmin, umax, vmax, uorder, vorder, 3, ustride, vstride, ctlpoints);
-    break;
-  case GL_MAP2_VERTEX_4:
-    bpm->bpatch = bezierPatchMake2(umin, vmin, umax, vmax, uorder, vorder, 4,ustride, vstride, ctlpoints );
-    break;
-  case GL_MAP2_NORMAL:
-    bpm->bpatch_normal = bezierPatchMake2(umin, vmin, umax, vmax, uorder, vorder, 3, ustride, vstride, ctlpoints);
-    break;
-  case GL_MAP2_INDEX:
-    bpm->bpatch_color = bezierPatchMake2(umin, vmin, umax, vmax, uorder, vorder, 1, ustride, vstride, ctlpoints);
-    break;
-  case GL_MAP2_COLOR_4:
-    bpm->bpatch_color = bezierPatchMake2(umin, vmin, umax, vmax, uorder, vorder, 4, ustride, vstride, ctlpoints);
-    break;
-  case GL_MAP2_TEXTURE_COORD_1:
-    bpm->bpatch_texcoord = bezierPatchMake2(umin, vmin, umax, vmax, uorder, vorder, 1, ustride, vstride, ctlpoints);
-    break;
-  case GL_MAP2_TEXTURE_COORD_2:
-    bpm->bpatch_texcoord = bezierPatchMake2(umin, vmin, umax, vmax, uorder, vorder, 2, ustride, vstride, ctlpoints);
-    break;    
-  case GL_MAP2_TEXTURE_COORD_3:
-    bpm->bpatch_texcoord = bezierPatchMake2(umin, vmin, umax, vmax, uorder, vorder, 3, ustride, vstride, ctlpoints);
-    break;    
-  case GL_MAP2_TEXTURE_COORD_4:
-    bpm->bpatch_texcoord = bezierPatchMake2(umin, vmin, umax, vmax, uorder, vorder, 4, ustride, vstride, ctlpoints);
-    break;    
-  default:
-    fprintf(stderr, "error in bezierPatchMeshPutPatch, maptype=%i is wrong, maptype,map is invalid\n", maptype);
-  }
-}
-  
-
-/*delete everything including the arrays. So if you want to output the
- *pointers of the arrays, you should not use this function to deallocate space.
- *you should dealocate manually
- */
-void bezierPatchMeshDelete(bezierPatchMesh *bpm)
-{
-  if(bpm->bpatch != NULL)
-    bezierPatchDelete(bpm->bpatch);
-  if(bpm->bpatch_normal != NULL)
-    bezierPatchDelete(bpm->bpatch_normal);
-  if(bpm->bpatch_color != NULL)
-    bezierPatchDelete(bpm->bpatch_color);
-  if(bpm->bpatch_texcoord != NULL)
-    bezierPatchDelete(bpm->bpatch_texcoord);
-  
-  free(bpm->UVarray);
-  free(bpm->length_array);
-  free(bpm->vertex_array);
-  free(bpm->normal_array);
-  free(bpm->type_array);
-  free(bpm);
-}
-/*begin a strip
- *type is the primitive type:
- */
-void bezierPatchMeshBeginStrip(bezierPatchMesh *bpm, GLenum type)
-{
-  bpm->counter = 0;
-  bpm->type = type;
-}
-
-/*signal the end of the current strip*/
-void bezierPatchMeshEndStrip(bezierPatchMesh *bpm)
-{
-  int i;
-  
-  /*if there are no vertices in this strip, then nothing needs to be done*/
-  if(bpm->counter == 0) return;
-  
-  /*if the length_array is full, it should be expanded*/
-  if(bpm->index_length_array >= bpm->size_length_array)
-    {
-      int *temp = (int*) malloc(sizeof(int) * (bpm->size_length_array*2 + 1));
-      assert(temp);
-      GLenum *temp_type = (GLenum*) malloc(sizeof(GLenum) * (bpm->size_length_array*2 + 1));
-      assert(temp_type);
-      /*update the size*/
-      bpm->size_length_array = bpm->size_length_array*2 + 1;
-      
-      /*copy*/
-      for(i=0; i<bpm->index_length_array; i++)
-       {
-         temp[i] = bpm->length_array[i];
-         temp_type[i] = bpm->type_array[i];
-       }
-      
-      /*deallocate old array*/
-      free(bpm->length_array);
-      free(bpm->type_array);
-      
-      /*point to the new array which is twice as bigger*/
-      bpm->length_array = temp;
-      bpm->type_array = temp_type;
-    }
-  bpm->type_array[bpm->index_length_array] = bpm->type;
-  bpm->length_array[bpm->index_length_array++] = bpm->counter;
-
-}
-
-/*insert (u,v) */
-void bezierPatchMeshInsertUV(bezierPatchMesh *bpm, float u, float v)
-{
-  int i;
-  /*if the UVarray is full, it should be expanded*/
-  if(bpm->index_UVarray+1 >= bpm->size_UVarray)
-    {
-      float *temp = (float*) malloc(sizeof(float) * (bpm->size_UVarray * 2 + 2));
-      assert(temp);
-      
-      /*update the size*/
-      bpm->size_UVarray = bpm->size_UVarray*2 + 2;
-      
-      /*copy*/
-      for(i=0; i<bpm->index_UVarray; i++)
-       {
-         temp[i] = bpm->UVarray[i];
-       }
-      
-      /*deallocate old array*/
-      free(bpm->UVarray);
-      
-      /*pointing to the new arrays*/
-      bpm->UVarray = temp;
-    }
-  /*insert the new UV*/
-  bpm->UVarray[bpm->index_UVarray] = u;
-  bpm->index_UVarray++;
-  bpm->UVarray[bpm->index_UVarray] = v;
-  bpm->index_UVarray++;
-
-  /*update counter: one more vertex*/
-  bpm->counter++;
-
-
-}
-
-void bezierPatchMeshPrint(bezierPatchMesh *bpm)
-{
-  int i;
-  printf("the bezier patch is\n");
-  bezierPatchPrint(bpm->bpatch);
-  printf("index_length_array= %i\n", bpm->index_length_array);
-  printf("size_length_array =%i\n", bpm->size_length_array);
-  printf("index_UVarray =%i\n", bpm->index_UVarray);
-  printf("size_UVarray =%i\n", bpm->size_UVarray);
-  printf("UVarray is\n");
-  for(i=0; i<bpm->index_UVarray; i++)
-    printf("%f ", bpm->UVarray[i]);
-
-  printf("length_array is\n");
-  for(i=0; i<bpm->index_length_array; i++)
-    printf("%i ", bpm->length_array[i]);
-  printf("\n");
-
-}
-
-/*insert a new patch in front of the current linked list and return the new list*/
-bezierPatchMesh* bezierPatchMeshListInsert(bezierPatchMesh* list, bezierPatchMesh* bpm)
-{
-  bpm->next=list;
-  return bpm;
-}
-
-/*print all the patches*/
-void bezierPatchMeshListPrint(bezierPatchMesh* list)
-{
-  bezierPatchMesh *temp;
-  for(temp = list; temp != NULL; temp = temp->next)
-    {
-      bezierPatchMeshPrint(temp);
-    }
-}
-
-int bezierPatchMeshListTotalStrips(bezierPatchMesh* list)
-{
-  int sum=0;
-  bezierPatchMesh *temp;
-  for(temp=list; temp != NULL; temp = temp->next)
-    {
-      sum += temp->index_length_array;
-    }
-  return sum;
-}
-
-int bezierPatchMeshListTotalVert(bezierPatchMesh* list)
-{
-  int sum=0;
-  bezierPatchMesh *temp;
-  for(temp=list; temp != NULL; temp = temp->next)
-    {
-      sum += temp->index_UVarray;
-    }
-  return sum/2;
-}
-
-int bezierPatchMeshListNumTriangles(bezierPatchMesh* list)
-{
-  int sum=0;
-  bezierPatchMesh* temp;
-  for(temp=list; temp != NULL; temp = temp->next)
-    {
-      sum +=  bezierPatchMeshNumTriangles(temp);
-    }
-  return sum;
-}
-
-int bezierPatchMeshNumTriangles(bezierPatchMesh* bpm)
-{
-  int i;
-  int sum=0;
-  for(i=0; i<bpm->index_length_array; i++)
-    {
-      switch(bpm->type_array[i])
-       {
-       case GL_TRIANGLES:
-         sum += bpm->length_array[i]/3;
-         break;
-       case GL_TRIANGLE_FAN:
-         if(bpm->length_array[i] > 2)
-           sum += bpm->length_array[i]-2;
-         break;
-       case GL_TRIANGLE_STRIP:
-         if(bpm->length_array[i] > 2)
-           sum += bpm->length_array[i]-2;
-         break;
-       case GL_QUAD_STRIP:
-         if(bpm->length_array[i]>2)
-           sum += (bpm->length_array[i]-2);
-         break;
-       default:
-         fprintf(stderr,"error in bezierPatchMeshListNumTriangles, type invalid\n");
-       }
-    }
-  return sum;
-}
-
-/*delete degenerate triangles*/
-void bezierPatchMeshDelDeg(bezierPatchMesh* bpm)
-{
-  if(bpm == NULL) return;
-  int i,j,k;
-  int *new_length_array;
-  GLenum *new_type_array;
-  int index_new_length_array;
-  float *new_UVarray;
-  int index_new_UVarray;
-
-  new_length_array = (int*)malloc(sizeof(int) * bpm->index_length_array);
-  assert(new_length_array);
-  new_type_array = (GLenum*)malloc(sizeof(GLenum) * bpm->index_length_array);
-  assert(new_length_array);
-  new_UVarray = (float*) malloc(sizeof(float) * bpm->index_UVarray);
-  assert(new_UVarray);
-
-  index_new_length_array = 0;
-  index_new_UVarray=0;
-  k=0;
-  for(i=0; i<bpm->index_length_array; i++){
-    
-    /*(if not degenerate, we have to copy*/
-    if( (bpm->length_array[i] != 3) || (!isDegenerate(bpm->UVarray+k, bpm->UVarray+k+2, bpm->UVarray+k+4)))
-         {
-           for(j=0; j<2* bpm->length_array[i]; j++)
-             new_UVarray[index_new_UVarray++] = bpm->UVarray[k++];
-
-           new_length_array[index_new_length_array] = bpm->length_array[i];
-           new_type_array[index_new_length_array] = bpm->type_array[i];
-           index_new_length_array++;
-         }
-    else
-      {
-       k += 6;
-      }
-  }  
-  free(bpm->UVarray);
-  free(bpm->length_array);
-  free(bpm->type_array);
-  bpm->UVarray=new_UVarray;
-  bpm->length_array=new_length_array;
-  bpm->type_array=new_type_array;
-  bpm->index_UVarray = index_new_UVarray;
-  bpm->index_length_array = index_new_length_array;
-  
-}
-
-/*(u,v) to XYZ
- *the xyz and normals are stored in vertex_array, 
- *and normal_array. the spaces of both are allocated here
- */
-void bezierPatchMeshEval(bezierPatchMesh* bpm)
-{
-  int i,j,k,l;
-  float u,v;
-  float u0 = bpm->bpatch->umin;
-  float u1 = bpm->bpatch->umax;
-  int uorder = bpm->bpatch->uorder;
-  float v0 = bpm->bpatch->vmin;
-  float v1 = bpm->bpatch->vmax;
-  int vorder = bpm->bpatch->vorder;
-  int dimension = bpm->bpatch->dimension;
-  int ustride = dimension * vorder;
-  int vstride = dimension;
-  float *ctlpoints = bpm->bpatch->ctlpoints;
-  
-  bpm->vertex_array = (float*) malloc(sizeof(float)* (bpm->index_UVarray/2) * 3);
-  assert(bpm->vertex_array);
-  bpm->normal_array = (float*) malloc(sizeof(float)* (bpm->index_UVarray/2) * 3);
-  assert(bpm->normal_array);
-
-  k=0;
-  l=0;
-  for(i=0; i<bpm->index_length_array; i++)
-    {
-      for(j=0; j<bpm->length_array[i]; j++)
-       {
-         u = bpm->UVarray[k];
-         v = bpm->UVarray[k+1];
-         bezierSurfEval(u0,u1,uorder, v0, v1, vorder, dimension, ctlpoints, ustride, vstride, u,v, bpm->vertex_array+l);
-         bezierSurfEvalNormal(u0,u1,uorder, v0, v1, vorder, dimension, ctlpoints, ustride, vstride, u,v, bpm->normal_array+l);
-         k += 2;
-         l += 3;
-       }
-    }
-}
-    
-void bezierPatchMeshListEval(bezierPatchMesh* list)
-{
-  bezierPatchMesh* temp;
-  for(temp = list; temp != NULL; temp = temp->next)
-    {
-      bezierPatchMeshEval(temp);
-    }
-}
-
-void bezierPatchMeshDraw(bezierPatchMesh* bpm)
-{
-  int i,j,k;
-  k=0;
-  /*k is the index of the first component of the current vertex*/
-  for(i=0; i<bpm->index_length_array; i++)
-    {
-      glBegin(bpm->type_array[i]);
-      for(j=0; j<bpm->length_array[i]; j++)
-       {
-         glNormal3fv(bpm->normal_array+k);
-         glVertex3fv(bpm->vertex_array+k);
-         k+= 3;
-       }
-      glEnd();
-    }
-}
-
-void bezierPatchMeshListDraw(bezierPatchMesh* list)
-{
-  bezierPatchMesh* temp;
-  for(temp = list; temp != NULL; temp = temp->next)
-    {
-      bezierPatchMeshDraw(temp);
-    }
-}
-
-void bezierPatchMeshListCollect(bezierPatchMesh* list, float **vertex_array, float **normal_array, int **length_array, GLenum **type_array, int *num_strips)
-{
-  int i,j,k,l;
-  bezierPatchMesh *temp;
-  int total_num_vertices = bezierPatchMeshListTotalVert(list);
-  (*vertex_array) = (float *) malloc(sizeof(float) * total_num_vertices*3);
-  assert(*vertex_array);
-  (*normal_array) = (float *) malloc(sizeof(float) * total_num_vertices*3);
-  assert(*normal_array);
-
-  *num_strips = bezierPatchMeshListTotalStrips(list);
-   
-  *length_array = (int*) malloc(sizeof(int) * (*num_strips));
-  assert(*length_array);
-
-  *type_array = (GLenum*) malloc(sizeof(GLenum) * (*num_strips));
-  assert(*type_array);
-  
-  k=0;
-  l=0;
-  for(temp = list; temp != NULL; temp = temp->next)
-    {
-      int x=0;
-      for(i=0; i<temp->index_length_array; i++)
-       {
-         for(j=0; j<temp->length_array[i]; j++)
-           {
-             (*vertex_array)[k] = temp->vertex_array[x];
-             (*vertex_array)[k+1] = temp->vertex_array[x+1];
-             (*vertex_array)[k+2] = temp->vertex_array[x+2];
-
-             (*normal_array)[k] = temp->normal_array[x];
-             (*normal_array)[k+1] = temp->normal_array[x+1];
-             (*normal_array)[k+2] = temp->normal_array[x+2];
-
-             x += 3;
-             k += 3;
-           }
-         (*type_array)[l]  = temp->type_array[i];
-         (*length_array)[l++] = temp->length_array[i];
-       }
-    }
-}
-
-
-
-static int isDegenerate(float A[2], float B[2], float C[2])
-{
-  if( (A[0] == B[0] && A[1]==B[1]) ||
-      (A[0] == C[0] && A[1]==C[1]) ||
-      (B[0] == C[0] && B[1]==C[1])
-     )
-    return 1;
-  else
-    return 0;
-}
-
-
-
-
diff --git a/src/glu/sgi/libnurbs/interface/bezierPatchMesh.h b/src/glu/sgi/libnurbs/interface/bezierPatchMesh.h
deleted file mode 100644 (file)
index ba6868a..0000000
+++ /dev/null
@@ -1,121 +0,0 @@
-/*
- * SGI FREE SOFTWARE LICENSE B (Version 2.0, Sept. 18, 2008)
- * Copyright (C) 1991-2000 Silicon Graphics, Inc. All Rights Reserved.
- *
- * 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, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice including the dates of first publication and
- * either this permission notice or a reference to
- * http://oss.sgi.com/projects/FreeB/
- * shall be included in all copies or substantial portions of the Software.
- *
- * 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. IN NO EVENT SHALL
- * SILICON GRAPHICS, INC. BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
- * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- * Except as contained in this notice, the name of Silicon Graphics, Inc.
- * shall not be used in advertising or otherwise to promote the sale, use or
- * other dealings in this Software without prior written authorization from
- * Silicon Graphics, Inc.
- */
-/*
-*/
-
-#ifndef _BEZIERPATCHMESH_H
-#define _BEZIERPATCHMESH_H
-
-#include <GL/gl.h>
-#include "bezierPatch.h"
-
-typedef struct bezierPatchMesh{
-  bezierPatch *bpatch; /*vertex*/
-  bezierPatch *bpatch_normal; 
-  bezierPatch *bpatch_texcoord; /*s,t,r,q*/
-  bezierPatch *bpatch_color; /*RGBA*/
-
-  float *UVarray; /*all UV components of all vertices of all strips*/
-  int   *length_array; /*[i] is the number of vertices in the ith strip*/
-  GLenum *type_array;  /*[i] is the type of the ith primitive*/
-
-  /*to support dynamic insertion*/
-  int size_UVarray;
-  int index_UVarray;
-  int size_length_array;
-  int index_length_array;
-  
-  int counter; /*track the current strip size*/
-  GLenum type; /*track the current type: 0: GL_TRIANGLES, 1: GL_TRIANGLE_STRIP*/
-  
-  /*we eventually want to evaluate from (u,v) to (x,y,z) and draw them*/
-  float *vertex_array; /*each vertex contains three components*/
-  float *normal_array; /*each normal contains three components*/
-  float *color_array;
-  float *texcoord_array;
-
-  /*in case we need a linked list*/
-  struct bezierPatchMesh *next;
-} bezierPatchMesh;
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-
-bezierPatchMesh *bezierPatchMeshMake(int maptype, float umin, float umax, int ustride, int uorder, float vmin, float vmax, int vstride, int vorder, float *ctlpoints,  int size_UVarray, int size_length_array);
-
-/*initilize patches to be null*/
-bezierPatchMesh *bezierPatchMeshMake2(int size_UVarray, int size_length_array);
-
-void bezierPatchMeshPutPatch(bezierPatchMesh *bpm, int maptype, float umin, float umax, int ustride, int uorder, float vmin, float vmax, int vstride, int vorder, float *ctlpoints);
-
-void bezierPatchMeshDelete(bezierPatchMesh *bpm);
-
-void bezierPatchMeshBeginStrip(bezierPatchMesh *bpm, GLenum type);
-
-void bezierPatchMeshEndStrip(bezierPatchMesh *bpm);
-
-void bezierPatchMeshInsertUV(bezierPatchMesh *bpm, float u, float v);
-
-void bezierPatchMeshPrint(bezierPatchMesh *bpm);
-
-bezierPatchMesh* bezierPatchMeshListInsert(bezierPatchMesh* list, bezierPatchMesh* bpm);
-
-void bezierPatchMeshListPrint(bezierPatchMesh* list);
-
-int bezierPatchMeshListTotalStrips(bezierPatchMesh* list);
-
-int bezierPatchMeshListTotalVert(bezierPatchMesh* list);
-int bezierPatchMeshNumTriangles(bezierPatchMesh* bpm);
-int bezierPatchMeshListNumTriangles(bezierPatchMesh* list);
-
-void bezierPatchMeshDelDeg(bezierPatchMesh* bpm);
-
-
-void bezierPatchMeshEval(bezierPatchMesh* bpm);
-  
-void bezierPatchMeshDraw(bezierPatchMesh* bpm);
-
-void bezierPatchMeshListDraw(bezierPatchMesh* list);
-void bezierPatchMeshListEval(bezierPatchMesh* list);
-void bezierPatchMeshListCollect(bezierPatchMesh* list, float **vertex_array, float **normal_array, int **length_array, GLenum **type_array, int *num_strips);
-
-void bezierPatchMeshListDelDeg(bezierPatchMesh* list);
-void bezierPatchMeshListDelete(bezierPatchMesh *list);
-bezierPatchMesh* bezierPatchMeshListReverse(bezierPatchMesh* list);
-void drawStrips(float *vertex_array, float *normal_array, int *length_array, GLenum *type_array, int num_strips);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/src/glu/sgi/libnurbs/interface/glcurveval.cc b/src/glu/sgi/libnurbs/interface/glcurveval.cc
deleted file mode 100644 (file)
index b6591db..0000000
+++ /dev/null
@@ -1,402 +0,0 @@
-/*
-** License Applicability. Except to the extent portions of this file are
-** made subject to an alternative license as permitted in the SGI Free
-** Software License B, Version 1.1 (the "License"), the contents of this
-** file are subject only to the provisions of the License. You may not use
-** this file except in compliance with the License. You may obtain a copy
-** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600
-** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:
-**
-** http://oss.sgi.com/projects/FreeB
-**
-** Note that, as provided in the License, the Software is distributed on an
-** "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS
-** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND
-** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A
-** PARTICULAR PURPOSE, AND NON-INFRINGEMENT.
-**
-** Original Code. The Original Code is: OpenGL Sample Implementation,
-** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,
-** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.
-** Copyright in any portions created by third parties is as indicated
-** elsewhere herein. All Rights Reserved.
-**
-** Additional Notice Provisions: The application programming interfaces
-** established by SGI in conjunction with the Original Code are The
-** OpenGL(R) Graphics System: A Specification (Version 1.2.1), released
-** April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version
-** 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X
-** Window System(R) (Version 1.3), released October 19, 1998. This software
-** was created using the OpenGL(R) version 1.2.1 Sample Implementation
-** published by SGI, but has not been independently verified as being
-** compliant with the OpenGL(R) version 1.2.1 Specification.
-*/
-
-/*
- * glcurveval.c++
- *
- */
-
-/* Polynomial Evaluator Interface */
-
-#include "gluos.h"
-#include "glimports.h"
-#include "glrenderer.h"
-#include "glcurveval.h"
-#include "nurbsconsts.h"
-OpenGLCurveEvaluator::OpenGLCurveEvaluator(void) 
-{
-  //no default callback functions
-  beginCallBackN = NULL;
-  endCallBackN = NULL;
-  vertexCallBackN = NULL;
-  normalCallBackN = NULL;
-  colorCallBackN = NULL;
-  texcoordCallBackN = NULL;
-  beginCallBackData = NULL;
-  endCallBackData = NULL;
-  vertexCallBackData = NULL;
-  normalCallBackData = NULL;
-  colorCallBackData = NULL;
-  texcoordCallBackData = NULL;
-
-  userData = NULL;
-  
-  vertex_flag = 0;
-  normal_flag = 0;
-  color_flag = 0;
-  texcoord_flag = 0;
-
-  em_vertex.uprime = -1.0;
-  em_normal.uprime = -1.0;
-  em_color.uprime = -1.0;
-  em_texcoord.uprime = -1.0;
-  output_triangles = 0; // don't output triangles by default
-}
-
-OpenGLCurveEvaluator::~OpenGLCurveEvaluator(void) 
-{ 
-}
-
-/* added nonsense to avoid the warning messages at compile time */
-void
-OpenGLCurveEvaluator::addMap(CurveMap *m)
-{
-       m = m;
-}
-
-void
-OpenGLCurveEvaluator::range1f(long type, REAL *from, REAL *to)
-{
-       type = type;
-       from = from;
-       to = to;
-}
-
-void
-OpenGLCurveEvaluator::domain1f(REAL ulo, REAL uhi)
-{
-       ulo = ulo;
-       uhi = uhi;
-}
-
-void
-OpenGLCurveEvaluator::bgnline(void)
-{
-  if(output_triangles)
-    beginCallBack(GL_LINE_STRIP, userData);
-  else
-    glBegin((GLenum) GL_LINE_STRIP);
-}
-
-void
-OpenGLCurveEvaluator::endline(void)
-{
-  if(output_triangles)
-    endCallBack(userData);
-  else
-    glEnd();
-}
-
-/*---------------------------------------------------------------------------
- * disable - turn off a curve map
- *---------------------------------------------------------------------------
- */
-void
-OpenGLCurveEvaluator::disable(long type)
-{
-    glDisable((GLenum) type);
-}
-
-/*---------------------------------------------------------------------------
- * enable - turn on a curve map
- *---------------------------------------------------------------------------
- */
-void
-OpenGLCurveEvaluator::enable(long type)
-{
-    glEnable((GLenum) type);
-}
-
-/*-------------------------------------------------------------------------
- * mapgrid1f - define a lattice of points with origin and offset
- *-------------------------------------------------------------------------
- */
-void 
-OpenGLCurveEvaluator::mapgrid1f(long nu, REAL u0, REAL u1)
-{
-  if(output_triangles)
-    {
-      global_grid_u0 = u0;
-      global_grid_u1 = u1;
-      global_grid_nu = (int) nu;
-    }
-  else
-    glMapGrid1f((GLint) nu, (GLfloat) u0, (GLfloat) u1);
-}
-
-/*-------------------------------------------------------------------------
- * bgnmap1 - preamble to curve definition and evaluations
- *-------------------------------------------------------------------------
- */
-void
-OpenGLCurveEvaluator::bgnmap1f(long)
-{
-  if(output_triangles)
-    {
-      //initialized so that no maps are set initially
-      vertex_flag = 0;
-      normal_flag = 0;
-      color_flag = 0;
-      texcoord_flag = 0;
-      //no need to worry about gl states when doing callback
-    }
-  else
-    glPushAttrib((GLbitfield) GL_EVAL_BIT);
-}
-
-/*-------------------------------------------------------------------------
- * endmap1 - postamble to a curve map
- *-------------------------------------------------------------------------
- */
-void
-OpenGLCurveEvaluator::endmap1f(void)
-{
-  if(output_triangles)
-    {
-      
-    }
-  else
-    glPopAttrib();
-}
-
-/*-------------------------------------------------------------------------
- * map1f - pass a desription of a curve map
- *-------------------------------------------------------------------------
- */
-void
-OpenGLCurveEvaluator::map1f(
-    long type,                 /* map type */
-    REAL ulo,                  /* lower parametric bound */
-    REAL uhi,                  /* upper parametric bound */
-    long stride,               /* distance to next point in REALS */
-    long order,                        /* parametric order */
-    REAL *pts                  /* control points */
-)
-{
-  if(output_triangles)
-    {
-      int dimension = 0;
-      int which = 0;
-      switch(type){
-      case GL_MAP1_VERTEX_3:
-       which = 0;
-       dimension = 3;
-       break;
-      case GL_MAP1_VERTEX_4:
-       which=0;
-       dimension = 4;
-       break;
-      case GL_MAP1_INDEX:
-       which=2;
-       dimension = 1;
-       break;
-      case GL_MAP1_COLOR_4:
-       which=2;
-       dimension = 4;
-       break;
-      case GL_MAP1_NORMAL:
-       which=1;
-       dimension = 3;
-       break;
-      case GL_MAP1_TEXTURE_COORD_1:
-       which=3;
-       dimension = 1;
-       break;
-      case GL_MAP1_TEXTURE_COORD_2:
-       which=3;
-       dimension = 2;
-       break;
-       
-      case GL_MAP1_TEXTURE_COORD_3:
-       which=3;
-       dimension = 3;
-       break;
-      case GL_MAP1_TEXTURE_COORD_4:
-       which=3;
-       dimension = 4;
-       break;  
-      }
-      inMap1f(which, dimension, ulo, uhi, stride, order, pts);               
-    }       
-  else
-    glMap1f((GLenum) type, (GLfloat) ulo, (GLfloat) uhi, (GLint) stride, 
-           (GLint) order, (const GLfloat *) pts);
-}
-
-/*-------------------------------------------------------------------------
- * mapmesh1f - evaluate a mesh of points on lattice
- *-------------------------------------------------------------------------
- */
-void OpenGLCurveEvaluator::mapmesh1f(long style, long from, long to)
-{
-  if(output_triangles)
-    {
-      inMapMesh1f((int) from, (int) to);      
-    }
-  else
-    {
-      switch(style) {
-      default:
-      case N_MESHFILL:
-      case N_MESHLINE:
-       glEvalMesh1((GLenum) GL_LINE, (GLint) from, (GLint) to);
-       break;
-      case N_MESHPOINT:
-       glEvalMesh1((GLenum) GL_POINT, (GLint) from, (GLint) to);
-       break;
-      }
-    }
-}
-
-/*-------------------------------------------------------------------------
- * evalpoint1i - evaluate a point on a curve
- *-------------------------------------------------------------------------
- */
-void OpenGLCurveEvaluator::evalpoint1i(long i)
-{
-    glEvalPoint1((GLint) i);
-}
-
-/*-------------------------------------------------------------------------
- * evalcoord1f - evaluate a point on a curve
- *-------------------------------------------------------------------------
- */
-void OpenGLCurveEvaluator::evalcoord1f(long, REAL u)
-{
-    glEvalCoord1f((GLfloat) u);
-}
-
-void
-#ifdef _WIN32
-OpenGLCurveEvaluator::putCallBack(GLenum which, void (GLAPIENTRY *fn)())
-#else
-OpenGLCurveEvaluator::putCallBack(GLenum which, _GLUfuncptr fn)
-#endif
-{
-  switch(which)
-  {
-    case GLU_NURBS_BEGIN:
-      beginCallBackN = (void (GLAPIENTRY *) (GLenum)) fn;
-      break;
-    case GLU_NURBS_END:
-      endCallBackN = (void (GLAPIENTRY *) (void)) fn;
-      break;
-    case GLU_NURBS_VERTEX:
-      vertexCallBackN = (void (GLAPIENTRY *) (const GLfloat*)) fn;
-      break;
-    case GLU_NURBS_NORMAL:
-      normalCallBackN = (void (GLAPIENTRY *) (const GLfloat*)) fn;
-      break;
-    case GLU_NURBS_COLOR:
-      colorCallBackN = (void (GLAPIENTRY *) (const GLfloat*)) fn;
-      break;
-    case GLU_NURBS_TEXTURE_COORD:
-      texcoordCallBackN = (void (GLAPIENTRY *) (const GLfloat*)) fn;
-      break;
-    case GLU_NURBS_BEGIN_DATA:
-      beginCallBackData = (void (GLAPIENTRY *) (GLenum, void*)) fn;
-      break;
-    case GLU_NURBS_END_DATA:
-      endCallBackData = (void (GLAPIENTRY *) (void*)) fn;
-      break;
-    case GLU_NURBS_VERTEX_DATA:
-      vertexCallBackData = (void (GLAPIENTRY *) (const GLfloat*, void*)) fn;
-      break;
-    case GLU_NURBS_NORMAL_DATA:
-      normalCallBackData = (void (GLAPIENTRY *) (const GLfloat*, void*)) fn;
-      break;
-    case GLU_NURBS_COLOR_DATA:
-      colorCallBackData = (void (GLAPIENTRY *) (const GLfloat*, void*)) fn;
-      break;
-    case GLU_NURBS_TEXTURE_COORD_DATA:
-      texcoordCallBackData = (void (GLAPIENTRY *) (const GLfloat*, void*)) fn;
-      break;
-  }
-}
-
-void
-OpenGLCurveEvaluator::beginCallBack(GLenum which, void *data)
-{
-  if(beginCallBackData)
-    beginCallBackData(which, data);
-  else if(beginCallBackN)
-    beginCallBackN(which);
-}
-
-void
-OpenGLCurveEvaluator::endCallBack(void *data)
-{
-  if(endCallBackData)
-    endCallBackData(data);
-  else if(endCallBackN)
-    endCallBackN();
-}
-
-void
-OpenGLCurveEvaluator::vertexCallBack(const GLfloat *vert, void* data)
-{
-  if(vertexCallBackData)
-    vertexCallBackData(vert, data);
-  else if(vertexCallBackN)
-    vertexCallBackN(vert);
-}
-
-
-void
-OpenGLCurveEvaluator::normalCallBack(const GLfloat *normal, void* data)
-{
-  if(normalCallBackData)
-    normalCallBackData(normal, data);
-  else if(normalCallBackN)
-    normalCallBackN(normal);
-}
-
-void
-OpenGLCurveEvaluator::colorCallBack(const GLfloat *color, void* data)
-{
-  if(colorCallBackData)
-    colorCallBackData(color, data);
-  else if(colorCallBackN)
-    colorCallBackN(color);
-}
-
-void
-OpenGLCurveEvaluator::texcoordCallBack(const GLfloat *texcoord, void* data)
-{
-  if(texcoordCallBackData)
-    texcoordCallBackData(texcoord, data);
-  else if(texcoordCallBackN)
-    texcoordCallBackN(texcoord);
-}
diff --git a/src/glu/sgi/libnurbs/interface/glcurveval.h b/src/glu/sgi/libnurbs/interface/glcurveval.h
deleted file mode 100644 (file)
index 8fa4930..0000000
+++ /dev/null
@@ -1,157 +0,0 @@
-/*
- * SGI FREE SOFTWARE LICENSE B (Version 2.0, Sept. 18, 2008)
- * Copyright (C) 1991-2000 Silicon Graphics, Inc. All Rights Reserved.
- *
- * 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, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice including the dates of first publication and
- * either this permission notice or a reference to
- * http://oss.sgi.com/projects/FreeB/
- * shall be included in all copies or substantial portions of the Software.
- *
- * 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. IN NO EVENT SHALL
- * SILICON GRAPHICS, INC. BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
- * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- * Except as contained in this notice, the name of Silicon Graphics, Inc.
- * shall not be used in advertising or otherwise to promote the sale, use or
- * other dealings in this Software without prior written authorization from
- * Silicon Graphics, Inc.
- */
-
-/*
- * glcurveval.h
- *
- */
-
-#ifndef __gluglcurveval_h_
-#define __gluglcurveval_h_
-
-#include "gluos.h"
-#include <GL/gl.h>
-#include <GL/glu.h>
-#include "basiccrveval.h"
-
-class CurveMap;
-
-/*for internal evaluator callback stuff*/
-#ifndef IN_MAX_BEZIER_ORDER
-#define IN_MAX_BEZIER_ORDER 40 /*XXX should be bigger than machine order*/
-#endif
-                       
-#ifndef IN_MAX_DIMENSION
-#define IN_MAX_DIMENSION 4 
-#endif
-
-typedef struct curveEvalMachine{
-  REAL uprime; //cached previously evaluated uprime
-  int k; //the dimension
-  REAL u1;
-  REAL u2;
-  int ustride;
-  int uorder;
-  REAL ctlpoints[IN_MAX_BEZIER_ORDER*IN_MAX_DIMENSION];
-  REAL ucoeff[IN_MAX_BEZIER_ORDER];//cache the polynomial values
-} curveEvalMachine;
-
-class OpenGLCurveEvaluator : public BasicCurveEvaluator  {  
-public:
-                       OpenGLCurveEvaluator(void);
-                       virtual ~OpenGLCurveEvaluator(void);
-    void               range1f(long, REAL *, REAL *);
-    void               domain1f(REAL, REAL);
-    void               addMap(CurveMap *);
-
-    void               enable(long);
-    void               disable(long);
-    void               bgnmap1f(long);
-    void               map1f(long, REAL, REAL, long, long, REAL *);
-    void               mapgrid1f(long, REAL, REAL);
-    void               mapmesh1f(long, long, long);
-    void               evalpoint1i(long);
-    void               evalcoord1f(long, REAL);
-    void               endmap1f(void);
-
-    void               bgnline(void);
-    void               endline(void);
-
-    void                put_vertices_call_back(int flag)
-      {
-       output_triangles = flag;
-      }
-#ifdef _WIN32
-    void               putCallBack(GLenum which, void (GLAPIENTRY *fn)() );
-#else
-    void               putCallBack(GLenum which, _GLUfuncptr fn );
-#endif
-    void               set_callback_userData(void *data)
-      {
-       userData = data;
-      }
-
-/*------------------begin for curveEvalMachine------------*/
-curveEvalMachine em_vertex;
-curveEvalMachine em_normal;
-curveEvalMachine em_color;
-curveEvalMachine em_texcoord;
-int vertex_flag; //whether there is a vertex map or not
-int normal_flag; //whether there is a normal map or not
-int color_flag; //whether there is a color map or not
-int texcoord_flag; //whether there is a texture map or not
-
-REAL global_grid_u0;
-REAL global_grid_u1;
-int global_grid_nu;
-
-void inMap1f(int which, //0: vert, 1: norm, 2: color, 3: tex
-            int dimension,
-            REAL ulower,
-            REAL uupper,
-            int ustride,
-            int uorder,
-            REAL *ctlpoints);
-
-void inPreEvaluate(int order, REAL vprime, REAL *coeff);
-void inDoDomain1(curveEvalMachine *em, REAL u, REAL *retPoint);
-void inDoEvalCoord1(REAL u);
-void inMapMesh1f(int umin, int umax);
-
-void     (GLAPIENTRY *beginCallBackN) (GLenum type);
-void     (GLAPIENTRY *endCallBackN)   (void);
-void     (GLAPIENTRY *vertexCallBackN) (const GLfloat *vert);
-void     (GLAPIENTRY *normalCallBackN) (const GLfloat *normal);
-void     (GLAPIENTRY *colorCallBackN) (const GLfloat *color);
-void     (GLAPIENTRY *texcoordCallBackN) (const GLfloat *texcoord);
-
-void     (GLAPIENTRY *beginCallBackData) (GLenum type, void* data);
-void     (GLAPIENTRY *endCallBackData)   (void* data);
-void     (GLAPIENTRY *vertexCallBackData) (const GLfloat *vert, void* data);
-void     (GLAPIENTRY *normalCallBackData) (const GLfloat *normal, void* data);
-void     (GLAPIENTRY *colorCallBackData) (const GLfloat *color, void* data);
-void     (GLAPIENTRY *texcoordCallBackData) (const GLfloat *texcoord, void* data);
-
-void* userData; //the opaque pointer for Data callback functions
-void  beginCallBack(GLenum type, void* data);
-void endCallBack(void* data);
-void vertexCallBack(const GLfloat *vert, void *data);
-void normalCallBack(const GLfloat *normal, void* data);
-void colorCallBack(const  GLfloat *color, void* data);
-void texcoordCallBack(const GLfloat *texcoord, void* data);
-
-
-/*------------------end   for curveEvalMachine------------*/
-
-private:
-    int output_triangles; //true 1; false 0
-};
-
-#endif /* __gluglcurveval_h_ */
diff --git a/src/glu/sgi/libnurbs/interface/glimports.h b/src/glu/sgi/libnurbs/interface/glimports.h
deleted file mode 100644 (file)
index 6e69feb..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * SGI FREE SOFTWARE LICENSE B (Version 2.0, Sept. 18, 2008)
- * Copyright (C) 1991-2000 Silicon Graphics, Inc. All Rights Reserved.
- *
- * 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, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice including the dates of first publication and
- * either this permission notice or a reference to
- * http://oss.sgi.com/projects/FreeB/
- * shall be included in all copies or substantial portions of the Software.
- *
- * 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. IN NO EVENT SHALL
- * SILICON GRAPHICS, INC. BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
- * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- * Except as contained in this notice, the name of Silicon Graphics, Inc.
- * shall not be used in advertising or otherwise to promote the sale, use or
- * other dealings in this Software without prior written authorization from
- * Silicon Graphics, Inc.
- */
-
-/*
- * glimports.h
- *
- */
-
-#ifndef __gluimports_h_
-#define __gluimports_h_
-
-#include "mystdlib.h"
-#include "mystdio.h"
-
-#endif /* __gluimports_h_ */
diff --git a/src/glu/sgi/libnurbs/interface/glinterface.cc b/src/glu/sgi/libnurbs/interface/glinterface.cc
deleted file mode 100644 (file)
index ba64bcd..0000000
+++ /dev/null
@@ -1,469 +0,0 @@
-/*
-** License Applicability. Except to the extent portions of this file are
-** made subject to an alternative license as permitted in the SGI Free
-** Software License B, Version 1.1 (the "License"), the contents of this
-** file are subject only to the provisions of the License. You may not use
-** this file except in compliance with the License. You may obtain a copy
-** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600
-** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:
-** 
-** http://oss.sgi.com/projects/FreeB
-** 
-** Note that, as provided in the License, the Software is distributed on an
-** "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS
-** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND
-** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A
-** PARTICULAR PURPOSE, AND NON-INFRINGEMENT.
-** 
-** Original Code. The Original Code is: OpenGL Sample Implementation,
-** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,
-** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.
-** Copyright in any portions created by third parties is as indicated
-** elsewhere herein. All Rights Reserved.
-** 
-** Additional Notice Provisions: The application programming interfaces
-** established by SGI in conjunction with the Original Code are The
-** OpenGL(R) Graphics System: A Specification (Version 1.2.1), released
-** April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version
-** 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X
-** Window System(R) (Version 1.3), released October 19, 1998. This software
-** was created using the OpenGL(R) version 1.2.1 Sample Implementation
-** published by SGI, but has not been independently verified as being
-** compliant with the OpenGL(R) version 1.2.1 Specification.
-**
-*/
-/*
-*/
-
-#include "gluos.h"
-#include <GL/gl.h>
-#include <GL/glu.h>
-#include <stdio.h>
-#include "glimports.h"
-#include "glrenderer.h"
-#include "nurbsconsts.h"
-
-//#define DOWN_LOAD_NURBS
-#ifdef DOWN_LOAD_NURBS
-
-#include "oglTrimNurbs.h"
-static int surfcount = 0;
-static oglTrimNurbs* otn = NULL;
-nurbSurf* tempNurb = NULL;
-oglTrimLoops* tempTrim = NULL;
-#endif
-
-
-//for LOD
-extern "C" {void glu_LOD_eval_list(GLUnurbs *nurb, int level);}
-
-void glu_LOD_eval_list(GLUnurbs *nurb, int level)
-{
-       nurb->LOD_eval_list(level);
-}
-
-GLUnurbs * GLAPIENTRY
-gluNewNurbsRenderer(void)
-{
-  GLUnurbs *t;
-  
-  t = new GLUnurbs();
-  return t;
-}
-
-void GLAPIENTRY
-gluDeleteNurbsRenderer(GLUnurbs *r)
-{
-    delete r;
-}
-
-extern "C"
-void GLAPIENTRY
-
-gluDeleteNurbsTessellatorEXT(GLUnurbsObj *r)
-{
-  delete r;
-}
-
-void GLAPIENTRY
-gluBeginSurface(GLUnurbs *r)
-{
-#ifdef DOWN_LOAD_NURBS
-surfcount++;
-tempTrim = OTL_make(10,10);
-#endif
-    r->bgnsurface(0); 
-}
-
-void GLAPIENTRY
-gluBeginCurve(GLUnurbs *r)
-{
-    r->bgncurve(0); 
-}
-
-void GLAPIENTRY
-gluEndCurve(GLUnurbs *r)
-{
-    r->endcurve(); 
-}
-
-void GLAPIENTRY
-gluEndSurface(GLUnurbs *r)
-{
-#ifdef DOWN_LOAD_NURBS
-if(surfcount == 1)
-  otn = OTN_make(1);
-OTN_insert(otn, tempNurb, tempTrim);
-if(surfcount  >= 1)
-{
-#ifdef DEBUG
-printf("write file\n");
-#endif
-OTN_write(otn, "out.otn");
-
-}
-#endif
-
-    r->endsurface(); 
-}
-
-void GLAPIENTRY
-gluBeginTrim(GLUnurbs *r)
-{
-#ifdef DOWN_LOAD_NURBS
-OTL_bgnTrim(tempTrim);
-#endif
-
-    r->bgntrim(); 
-}
-
-void GLAPIENTRY
-gluEndTrim(GLUnurbs *r)
-{
-#ifdef DOWN_LOAD_NURBS
-OTL_endTrim(tempTrim);
-#endif
-    r->endtrim(); 
-}
-
-void GLAPIENTRY
-gluPwlCurve(GLUnurbs *r, GLint count, INREAL array[], 
-               GLint stride, GLenum type)
-{
-#ifdef DOWN_LOAD_NURBS
-OTL_pwlCurve(tempTrim, count, array, stride, type);
-#endif
-
-    int realType;
-    switch(type) {
-      case GLU_MAP1_TRIM_2:
-       realType = N_P2D;
-       break;
-      case GLU_MAP1_TRIM_3:
-       realType = N_P2DR;
-       break;
-      default:
-       realType = type;
-       break;
-    }
-    r->pwlcurve(count, array, sizeof(INREAL) * stride, realType);
-}
-
-void GLAPIENTRY
-gluNurbsCurve(GLUnurbs *r, GLint nknots, INREAL knot[], GLint stride, 
-                 INREAL ctlarray[], GLint order, GLenum type)
-{
-#ifdef DOWN_LOAD_NURBS
-OTL_nurbsCurve(tempTrim, nknots, knot, stride, ctlarray, order, type);
-#endif
-
-    int realType;
-
-    switch(type) {
-      case GLU_MAP1_TRIM_2:
-       realType = N_P2D;
-       break;
-      case GLU_MAP1_TRIM_3:
-       realType = N_P2DR;
-       break;
-      default:
-       realType = type;
-       break;
-    }
-
-    r->nurbscurve(nknots, knot, sizeof(INREAL) * stride, ctlarray, order, 
-           realType);
-}
-
-void GLAPIENTRY
-gluNurbsSurface(GLUnurbs *r, GLint sknot_count, GLfloat *sknot, 
-                           GLint tknot_count, GLfloat *tknot, 
-                           GLint s_stride, GLint t_stride, 
-                           GLfloat *ctlarray, GLint sorder, GLint torder, 
-                           GLenum type)
-{
-#ifdef DOWN_LOAD_NURBS
-  {
-    int dimension;
-    switch(type){
-    case GL_MAP2_VERTEX_3:
-      dimension = 3;
-      break;
-    case GL_MAP2_VERTEX_4:
-      dimension = 4;
-      break;
-    default:
-      fprintf(stderr, "error in glinterface.c++, type no implemented\n");
-      exit(1);
-    }
-tempNurb = nurbSurfMake(sknot_count, sknot,
-                       tknot_count, tknot,
-                       sorder, torder,
-                       dimension,
-                       ctlarray,
-                       s_stride, t_stride);
-                       
-  }
-#endif
-
-    r->nurbssurface(sknot_count, sknot, tknot_count, tknot, 
-           sizeof(INREAL) * s_stride, sizeof(INREAL) * t_stride, 
-           ctlarray, sorder, torder, type);
-}
-
-void GLAPIENTRY
-gluLoadSamplingMatrices(GLUnurbs *r, const GLfloat modelMatrix[16],
-                           const GLfloat projMatrix[16], 
-                           const GLint viewport[4])
-{
-    r->useGLMatrices(modelMatrix, projMatrix, viewport);
-}
-
-void GLAPIENTRY
-gluNurbsProperty(GLUnurbs *r, GLenum property, GLfloat value)
-{
-    GLfloat nurbsValue;
-    
-    switch (property) {
-      case GLU_AUTO_LOAD_MATRIX:      
-        r->setautoloadmode(value);
-       return;
-
-      case GLU_CULLING:
-       if (value != 0.0) {
-           nurbsValue = N_CULLINGON;
-       } else {
-           nurbsValue = N_NOCULLING;
-       }
-       r->setnurbsproperty(GL_MAP2_VERTEX_3, N_CULLING, nurbsValue);
-       r->setnurbsproperty(GL_MAP2_VERTEX_4, N_CULLING, nurbsValue);
-       r->setnurbsproperty(GL_MAP1_VERTEX_3, N_CULLING, nurbsValue);
-       r->setnurbsproperty(GL_MAP1_VERTEX_4, N_CULLING, nurbsValue);
-        return;
-
-      case GLU_SAMPLING_METHOD:
-       if (value == GLU_PATH_LENGTH) {
-           nurbsValue = N_PATHLENGTH;
-       } else if (value == GLU_PARAMETRIC_ERROR) {
-           nurbsValue = N_PARAMETRICDISTANCE;
-       } else if (value == GLU_DOMAIN_DISTANCE) {
-           nurbsValue = N_DOMAINDISTANCE;
-            r->set_is_domain_distance_sampling(1); //optimzing untrimmed case
-
-       } else if (value == GLU_OBJECT_PARAMETRIC_ERROR) {
-           nurbsValue = N_OBJECTSPACE_PARA;
-           r->setautoloadmode( 0.0 ); 
-           r->setSamplingMatrixIdentity();
-       } else if (value == GLU_OBJECT_PATH_LENGTH) {
-           nurbsValue = N_OBJECTSPACE_PATH;
-           r->setautoloadmode( 0.0 ); 
-           r->setSamplingMatrixIdentity();
-       } else {
-            r->postError(GLU_INVALID_VALUE);
-            return;
-        }
-
-       r->setnurbsproperty(GL_MAP2_VERTEX_3, N_SAMPLINGMETHOD, nurbsValue);
-       r->setnurbsproperty(GL_MAP2_VERTEX_4, N_SAMPLINGMETHOD, nurbsValue);
-       r->setnurbsproperty(GL_MAP1_VERTEX_3, N_SAMPLINGMETHOD, nurbsValue);
-       r->setnurbsproperty(GL_MAP1_VERTEX_4, N_SAMPLINGMETHOD, nurbsValue);
-       return;
-
-      case GLU_SAMPLING_TOLERANCE:
-       r->setnurbsproperty(GL_MAP2_VERTEX_3, N_PIXEL_TOLERANCE, value);
-       r->setnurbsproperty(GL_MAP2_VERTEX_4, N_PIXEL_TOLERANCE, value);
-       r->setnurbsproperty(GL_MAP1_VERTEX_3, N_PIXEL_TOLERANCE, value);
-       r->setnurbsproperty(GL_MAP1_VERTEX_4, N_PIXEL_TOLERANCE, value);
-       return;
-
-      case GLU_PARAMETRIC_TOLERANCE:
-       r->setnurbsproperty(GL_MAP2_VERTEX_3, N_ERROR_TOLERANCE, value);
-        r->setnurbsproperty(GL_MAP2_VERTEX_4, N_ERROR_TOLERANCE, value);
-        r->setnurbsproperty(GL_MAP1_VERTEX_3, N_ERROR_TOLERANCE, value);
-        r->setnurbsproperty(GL_MAP1_VERTEX_4, N_ERROR_TOLERANCE, value);
-        return;
-       
-
-      case GLU_DISPLAY_MODE:
-       
-       if (value == GLU_FILL) {
-         nurbsValue = N_FILL;
-       } else if (value == GLU_OUTLINE_POLYGON) {
-         nurbsValue = N_OUTLINE_POLY;
-       } else if (value == GLU_OUTLINE_PATCH) {
-         nurbsValue = N_OUTLINE_PATCH;
-       } else {
-         r->postError(GLU_INVALID_VALUE);
-         return;
-       }
-       r->setnurbsproperty(N_DISPLAY, nurbsValue);
-       
-       break;
-
-      case GLU_U_STEP:
-       r->setnurbsproperty(GL_MAP1_VERTEX_3, N_S_STEPS, value);
-       r->setnurbsproperty(GL_MAP1_VERTEX_4, N_S_STEPS, value);
-       r->setnurbsproperty(GL_MAP2_VERTEX_3, N_S_STEPS, value);
-       r->setnurbsproperty(GL_MAP2_VERTEX_4, N_S_STEPS, value);
-       
-       //added for optimizing untrimmed case
-        r->set_domain_distance_u_rate(value);
-       break;
-
-      case GLU_V_STEP:
-        r->setnurbsproperty(GL_MAP1_VERTEX_3, N_T_STEPS, value);
-        r->setnurbsproperty(GL_MAP1_VERTEX_4, N_T_STEPS, value);
-        r->setnurbsproperty(GL_MAP2_VERTEX_3, N_T_STEPS, value);
-        r->setnurbsproperty(GL_MAP2_VERTEX_4, N_T_STEPS, value);
-
-       //added for optimizing untrimmed case
-        r->set_domain_distance_v_rate(value);
-       break;
-       
-      case GLU_NURBS_MODE:
-       if(value == GLU_NURBS_RENDERER)
-         r->put_callbackFlag(0);
-       else if(value == GLU_NURBS_TESSELLATOR)
-         r->put_callbackFlag(1);
-       else
-         r->postError(GLU_INVALID_ENUM);
-       break;
-
-      default:
-       r->postError(GLU_INVALID_ENUM);
-       return; 
-    }
-}
-
-void GLAPIENTRY
-gluGetNurbsProperty(GLUnurbs *r, GLenum property, GLfloat *value)
-{
-    GLfloat nurbsValue;
-
-    switch(property) {
-      case GLU_AUTO_LOAD_MATRIX:
-       if (r->getautoloadmode()) {
-           *value = GL_TRUE;
-       } else {
-           *value = GL_FALSE;
-       }
-       break;
-      case GLU_CULLING:
-       r->getnurbsproperty(GL_MAP2_VERTEX_3, N_CULLING, &nurbsValue);
-       if (nurbsValue == N_CULLINGON) {
-           *value = GL_TRUE;
-       } else {
-           *value = GL_FALSE;
-       }
-       break;
-      case GLU_SAMPLING_METHOD:
-       r->getnurbsproperty(GL_MAP2_VERTEX_3, N_SAMPLINGMETHOD, value);
-       if(*value == N_PATHLENGTH)
-         *value = GLU_PATH_LENGTH;
-       else if(*value == N_PARAMETRICDISTANCE)
-         *value = GLU_PARAMETRIC_ERROR;
-       else if(*value == N_DOMAINDISTANCE)
-         *value = GLU_DOMAIN_DISTANCE;
-       else if(*value == N_OBJECTSPACE_PATH)
-         *value = GLU_OBJECT_PATH_LENGTH;
-       else if(*value == N_OBJECTSPACE_PARA)
-         *value = GLU_OBJECT_PARAMETRIC_ERROR; 
-       break;
-      case GLU_SAMPLING_TOLERANCE:
-       r->getnurbsproperty(GL_MAP2_VERTEX_3, N_PIXEL_TOLERANCE, value);
-       break;
-      case GLU_PARAMETRIC_TOLERANCE:
-       r->getnurbsproperty(GL_MAP2_VERTEX_3, N_ERROR_TOLERANCE, value);
-        break;
-
-      case GLU_U_STEP:
-       r->getnurbsproperty(GL_MAP2_VERTEX_3, N_S_STEPS, value);
-       break;
-      case GLU_V_STEP:
-       r->getnurbsproperty(GL_MAP2_VERTEX_3, N_T_STEPS, value);
-       break;
-      case GLU_DISPLAY_MODE:
-       r->getnurbsproperty(N_DISPLAY, &nurbsValue);
-       if (nurbsValue == N_FILL) {
-           *value = GLU_FILL;
-       } else if (nurbsValue == N_OUTLINE_POLY) {
-           *value = GLU_OUTLINE_POLYGON;
-       } else {
-           *value = GLU_OUTLINE_PATCH;
-       }
-       break;
-
-      case GLU_NURBS_MODE:
-       if(r->is_callback())
-         *value = GLU_NURBS_TESSELLATOR;
-       else
-         *value = GLU_NURBS_RENDERER;
-       break;
-       
-      default:
-       r->postError(GLU_INVALID_ENUM);
-       return;
-    }
-}
-
-extern "C" void GLAPIENTRY
-gluNurbsCallback(GLUnurbs *r, GLenum which, _GLUfuncptr fn )
-{
-    switch (which) {
-    case GLU_NURBS_BEGIN:
-    case GLU_NURBS_END:
-    case GLU_NURBS_VERTEX:
-    case GLU_NURBS_NORMAL:
-    case GLU_NURBS_TEXTURE_COORD:
-    case GLU_NURBS_COLOR:
-    case GLU_NURBS_BEGIN_DATA:
-    case GLU_NURBS_END_DATA:
-    case GLU_NURBS_VERTEX_DATA:
-    case GLU_NURBS_NORMAL_DATA:
-    case GLU_NURBS_TEXTURE_COORD_DATA:
-    case GLU_NURBS_COLOR_DATA: 
-       r->putSurfCallBack(which, fn);
-       break;
-
-    case GLU_NURBS_ERROR:
-       r->errorCallback = (void (APIENTRY *)( GLenum e )) fn;
-       break;
-    default:
-       r->postError(GLU_INVALID_ENUM);
-       return;
-    }
-}
-
-extern "C"
-void GLAPIENTRY
-gluNurbsCallbackDataEXT(GLUnurbs* r, void* userData)
-{
-  r->setNurbsCallbackData(userData);
-}
-
-extern "C"
-void GLAPIENTRY
-gluNurbsCallbackData(GLUnurbs* r, void* userData)
-{
-  gluNurbsCallbackDataEXT(r,userData);
-}
diff --git a/src/glu/sgi/libnurbs/interface/glrenderer.cc b/src/glu/sgi/libnurbs/interface/glrenderer.cc
deleted file mode 100644 (file)
index 17123fb..0000000
+++ /dev/null
@@ -1,301 +0,0 @@
-/*
-** License Applicability. Except to the extent portions of this file are
-** made subject to an alternative license as permitted in the SGI Free
-** Software License B, Version 1.1 (the "License"), the contents of this
-** file are subject only to the provisions of the License. You may not use
-** this file except in compliance with the License. You may obtain a copy
-** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600
-** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:
-**
-** http://oss.sgi.com/projects/FreeB
-**
-** Note that, as provided in the License, the Software is distributed on an
-** "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS
-** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND
-** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A
-** PARTICULAR PURPOSE, AND NON-INFRINGEMENT.
-**
-** Original Code. The Original Code is: OpenGL Sample Implementation,
-** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,
-** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.
-** Copyright in any portions created by third parties is as indicated
-** elsewhere herein. All Rights Reserved.
-**
-** Additional Notice Provisions: The application programming interfaces
-** established by SGI in conjunction with the Original Code are The
-** OpenGL(R) Graphics System: A Specification (Version 1.2.1), released
-** April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version
-** 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X
-** Window System(R) (Version 1.3), released October 19, 1998. This software
-** was created using the OpenGL(R) version 1.2.1 Sample Implementation
-** published by SGI, but has not been independently verified as being
-** compliant with the OpenGL(R) version 1.2.1 Specification.
-**
-*/
-/*
-*/
-
-#include "gluos.h"
-#include "glimports.h"
-#include "glrenderer.h"
-
-GLUnurbs::GLUnurbs()
-       : NurbsTessellator(curveEvaluator, surfaceEvaluator)
-{
-    redefineMaps();
-    defineMap(GL_MAP2_NORMAL, 0, 3);
-    defineMap(GL_MAP1_NORMAL, 0, 3);
-    defineMap(GL_MAP2_TEXTURE_COORD_1, 0, 1);
-    defineMap(GL_MAP1_TEXTURE_COORD_1, 0, 1);
-    defineMap(GL_MAP2_TEXTURE_COORD_2, 0, 2);
-    defineMap(GL_MAP1_TEXTURE_COORD_2, 0, 2);
-    defineMap(GL_MAP2_TEXTURE_COORD_3, 0, 3);
-    defineMap(GL_MAP1_TEXTURE_COORD_3, 0, 3);
-    defineMap(GL_MAP2_TEXTURE_COORD_4, 1, 4);
-    defineMap(GL_MAP1_TEXTURE_COORD_4, 1, 4);
-    defineMap(GL_MAP2_VERTEX_4, 1, 4);
-    defineMap(GL_MAP1_VERTEX_4, 1, 4);
-    defineMap(GL_MAP2_VERTEX_3, 0, 3);
-    defineMap(GL_MAP1_VERTEX_3, 0, 3);
-    defineMap(GL_MAP2_COLOR_4, 0, 4);
-    defineMap(GL_MAP1_COLOR_4, 0, 4);
-    defineMap(GL_MAP2_INDEX, 0, 1);
-    defineMap(GL_MAP1_INDEX, 0, 1);
-
-    setnurbsproperty(GL_MAP1_VERTEX_3, N_SAMPLINGMETHOD, (float) N_PATHLENGTH);
-    setnurbsproperty(GL_MAP1_VERTEX_4, N_SAMPLINGMETHOD, (float) N_PATHLENGTH);
-    setnurbsproperty(GL_MAP2_VERTEX_3, N_SAMPLINGMETHOD, (float) N_PATHLENGTH);
-    setnurbsproperty(GL_MAP2_VERTEX_4, N_SAMPLINGMETHOD, (float) N_PATHLENGTH);
-
-    setnurbsproperty(GL_MAP1_VERTEX_3, N_PIXEL_TOLERANCE, (float) 50.0);
-    setnurbsproperty(GL_MAP1_VERTEX_4, N_PIXEL_TOLERANCE, (float) 50.0);
-    setnurbsproperty(GL_MAP2_VERTEX_3, N_PIXEL_TOLERANCE, (float) 50.0);
-    setnurbsproperty(GL_MAP2_VERTEX_4, N_PIXEL_TOLERANCE, (float) 50.0);
-
-    setnurbsproperty(GL_MAP1_VERTEX_3, N_ERROR_TOLERANCE, (float) 0.50);
-    setnurbsproperty(GL_MAP1_VERTEX_4, N_ERROR_TOLERANCE, (float) 0.50);
-    setnurbsproperty(GL_MAP2_VERTEX_3, N_ERROR_TOLERANCE, (float) 0.50);
-    setnurbsproperty(GL_MAP2_VERTEX_4, N_ERROR_TOLERANCE, (float) 0.50);
-
-    setnurbsproperty(GL_MAP1_VERTEX_3, N_S_STEPS, (float) 100.0);
-    setnurbsproperty(GL_MAP1_VERTEX_4, N_S_STEPS, (float) 100.0);
-    setnurbsproperty(GL_MAP2_VERTEX_3, N_S_STEPS, (float) 100.0);
-    setnurbsproperty(GL_MAP2_VERTEX_4, N_S_STEPS, (float) 100.0);
-
-    //added for optimizing untrimmed case
-    set_domain_distance_u_rate(100.0);
-
-    setnurbsproperty(GL_MAP1_VERTEX_3, N_T_STEPS, (float) 100.0);
-    setnurbsproperty(GL_MAP1_VERTEX_4, N_T_STEPS, (float) 100.0);
-    setnurbsproperty(GL_MAP2_VERTEX_3, N_T_STEPS, (float) 100.0);
-    setnurbsproperty(GL_MAP2_VERTEX_4, N_T_STEPS, (float) 100.0);
-
-    //added for optimizing untrimmed case
-    set_domain_distance_v_rate(100.0);
-    set_is_domain_distance_sampling(0); //since the default is path_length
-
-    //default autoloadmode is true
-    autoloadmode = 1;
-
-    //default callbackFlag is 0
-    callbackFlag = 0;
-
-    errorCallback = NULL;
-}
-
-void
-GLUnurbs::bgnrender(void)
-{
-    if (autoloadmode) {
-       loadGLMatrices();
-    }
-}
-
-void
-GLUnurbs::endrender(void)
-{
-}
-
-void
-GLUnurbs::errorHandler(int i)
-{
-    int gluError;
-
-    gluError = i + (GLU_NURBS_ERROR1 - 1);
-    postError( gluError );
-}
-
-void
-GLUnurbs::loadGLMatrices(void)
-{
-    GLfloat vmat[4][4];
-    GLint viewport[4];
-
-    grabGLMatrix((GLfloat (*)[4]) vmat);
-    loadCullingMatrix((GLfloat (*)[4]) vmat);
-    ::glGetIntegerv((GLenum) GL_VIEWPORT, (GLint *) viewport);
-    loadSamplingMatrix((const GLfloat (*)[4]) vmat, (const GLint *) viewport);
-}
-
-void
-GLUnurbs::useGLMatrices(const GLfloat modelMatrix[16],
-                         const GLfloat projMatrix[16],
-                         const GLint viewport[4])
-{
-    GLfloat vmat[4][4];
-
-    multmatrix4d(vmat, (const GLfloat (*)[4]) modelMatrix,
-           (const GLfloat (*)[4]) projMatrix);
-    loadCullingMatrix((GLfloat (*)[4]) vmat);
-    loadSamplingMatrix((const GLfloat (*)[4]) vmat, (const GLint *) viewport);
-}
-
-/*--------------------------------------------------------------------------
- * grabGLMatrix
- *--------------------------------------------------------------------------
- */
-
-void
-GLUnurbs::grabGLMatrix(GLfloat vmat[4][4])
-{
-    GLfloat m1[4][4], m2[4][4];
-
-    ::glGetFloatv((GLenum) GL_MODELVIEW_MATRIX, (GLfloat *) &(m1[0][0]));
-    ::glGetFloatv((GLenum) GL_PROJECTION_MATRIX, (GLfloat *) &(m2[0][0]));
-    multmatrix4d((GLfloat (*)[4]) vmat,
-           (const GLfloat (*)[4]) m1, (const GLfloat (*)[4]) m2);
-}
-
-//for object space tesselation: view independent
-void
-GLUnurbs::setSamplingMatrixIdentity( void )
-{
-  INREAL smat[4][4] = {
-    {1,0,0,0},
-    {0,1,0,0},
-    {0,0,1,0},
-    {0,0,0,1}
-  };
-  const long rstride = sizeof(smat[0]) / sizeof(smat[0][0]);
-  const long cstride = 1;
-
-  setnurbsproperty(GL_MAP1_VERTEX_3, N_SAMPLINGMATRIX, &smat[0][0], rstride,
-                  cstride);
-  setnurbsproperty(GL_MAP1_VERTEX_4, N_SAMPLINGMATRIX, &smat[0][0], rstride,
-                  cstride);
-  setnurbsproperty(GL_MAP2_VERTEX_3, N_SAMPLINGMATRIX, &smat[0][0], rstride,
-                  cstride);
-  setnurbsproperty(GL_MAP2_VERTEX_4, N_SAMPLINGMATRIX, &smat[0][0], rstride,
-                  cstride);
-}
-
-
-void
-GLUnurbs::loadSamplingMatrix(const GLfloat vmat[4][4],
-                              const GLint viewport[4])
-{
-
-    /* rescale the mapping to correspond to pixels in x/y */
-    REAL xsize = 0.5 * (REAL) (viewport[2]);
-    REAL ysize = 0.5 * (REAL) (viewport[3]);
-
-    INREAL smat[4][4];
-    smat[0][0] = vmat[0][0] * xsize;
-    smat[1][0] = vmat[1][0] * xsize;
-    smat[2][0] = vmat[2][0] * xsize;
-    smat[3][0] = vmat[3][0] * xsize;
-
-    smat[0][1] = vmat[0][1] * ysize;
-    smat[1][1] = vmat[1][1] * ysize;
-    smat[2][1] = vmat[2][1] * ysize;
-    smat[3][1] = vmat[3][1] * ysize;
-
-    smat[0][2] = 0.0;
-    smat[1][2] = 0.0;
-    smat[2][2] = 0.0;
-    smat[3][2] = 0.0;
-
-    smat[0][3] = vmat[0][3];
-    smat[1][3] = vmat[1][3];
-    smat[2][3] = vmat[2][3];
-    smat[3][3] = vmat[3][3];
-
-    const long rstride = sizeof(smat[0]) / sizeof(smat[0][0]);
-    const long cstride = 1;
-
-    setnurbsproperty(GL_MAP1_VERTEX_3, N_SAMPLINGMATRIX, &smat[0][0], rstride,
-           cstride);
-    setnurbsproperty(GL_MAP1_VERTEX_4, N_SAMPLINGMATRIX, &smat[0][0], rstride,
-           cstride);
-    setnurbsproperty(GL_MAP2_VERTEX_3, N_SAMPLINGMATRIX, &smat[0][0], rstride,
-           cstride);
-    setnurbsproperty(GL_MAP2_VERTEX_4, N_SAMPLINGMATRIX, &smat[0][0], rstride,
-           cstride);
-}
-
-void
-GLUnurbs::loadCullingMatrix(GLfloat vmat[4][4])
-{
-    INREAL cmat[4][4];
-
-    cmat[0][0] = vmat[0][0];
-    cmat[0][1] = vmat[0][1];
-    cmat[0][2] = vmat[0][2];
-    cmat[0][3] = vmat[0][3];
-
-    cmat[1][0] = vmat[1][0];
-    cmat[1][1] = vmat[1][1];
-    cmat[1][2] = vmat[1][2];
-    cmat[1][3] = vmat[1][3];
-
-    cmat[2][0] = vmat[2][0];
-    cmat[2][1] = vmat[2][1];
-    cmat[2][2] = vmat[2][2];
-    cmat[2][3] = vmat[2][3];
-
-    cmat[3][0] = vmat[3][0];
-    cmat[3][1] = vmat[3][1];
-    cmat[3][2] = vmat[3][2];
-    cmat[3][3] = vmat[3][3];
-
-    const long rstride = sizeof(cmat[0]) / sizeof(cmat[0][0]);
-    const long cstride = 1;
-
-    setnurbsproperty(GL_MAP2_VERTEX_3, N_CULLINGMATRIX, &cmat[0][0], rstride,
-           cstride);
-    setnurbsproperty(GL_MAP2_VERTEX_4, N_CULLINGMATRIX, &cmat[0][0], rstride,
-           cstride);
-       //added for curves by zl
-    setnurbsproperty(GL_MAP1_VERTEX_3, N_CULLINGMATRIX, &cmat[0][0], rstride,
-           cstride);
-    setnurbsproperty(GL_MAP1_VERTEX_4, N_CULLINGMATRIX, &cmat[0][0], rstride,
-           cstride);
-}
-
-/*---------------------------------------------------------------------
- * A = B * MAT ; transform a 4d vector through a 4x4 matrix
- *---------------------------------------------------------------------
- */
-void
-GLUnurbs::transform4d(GLfloat A[4], GLfloat B[4], GLfloat mat[4][4])
-{
-
-    A[0] = B[0]*mat[0][0] + B[1]*mat[1][0] + B[2]*mat[2][0] + B[3]*mat[3][0];
-    A[1] = B[0]*mat[0][1] + B[1]*mat[1][1] + B[2]*mat[2][1] + B[3]*mat[3][1];
-    A[2] = B[0]*mat[0][2] + B[1]*mat[1][2] + B[2]*mat[2][2] + B[3]*mat[3][2];
-    A[3] = B[0]*mat[0][3] + B[1]*mat[1][3] + B[2]*mat[2][3] + B[3]*mat[3][3];
-}
-
-/*---------------------------------------------------------------------
- * new = [left][right] ; multiply two matrices together
- *---------------------------------------------------------------------
- */
-void
-GLUnurbs::multmatrix4d (GLfloat n[4][4], const GLfloat left[4][4],
-                const GLfloat right[4][4])
-{
-    transform4d ((GLfloat *) n[0],(GLfloat *) left[0],(GLfloat (*)[4]) right);
-    transform4d ((GLfloat *) n[1],(GLfloat *) left[1],(GLfloat (*)[4]) right);
-    transform4d ((GLfloat *) n[2],(GLfloat *) left[2],(GLfloat (*)[4]) right);
-    transform4d ((GLfloat *) n[3],(GLfloat *) left[3],(GLfloat (*)[4]) right);
-}
diff --git a/src/glu/sgi/libnurbs/interface/glrenderer.h b/src/glu/sgi/libnurbs/interface/glrenderer.h
deleted file mode 100644 (file)
index 3b72d44..0000000
+++ /dev/null
@@ -1,146 +0,0 @@
-/*
- * SGI FREE SOFTWARE LICENSE B (Version 2.0, Sept. 18, 2008)
- * Copyright (C) 1991-2000 Silicon Graphics, Inc. All Rights Reserved.
- *
- * 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, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice including the dates of first publication and
- * either this permission notice or a reference to
- * http://oss.sgi.com/projects/FreeB/
- * shall be included in all copies or substantial portions of the Software.
- *
- * 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. IN NO EVENT SHALL
- * SILICON GRAPHICS, INC. BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
- * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- * Except as contained in this notice, the name of Silicon Graphics, Inc.
- * shall not be used in advertising or otherwise to promote the sale, use or
- * other dealings in this Software without prior written authorization from
- * Silicon Graphics, Inc.
- */
-
-/*
- * glrenderer.h
- *
- */
-
-#ifndef __gluglrenderer_h_
-#define __gluglrenderer_h_
-
-#include <GL/gl.h>
-#include <GL/glu.h>
-#include "nurbstess.h"
-#include "glsurfeval.h"
-#include "glcurveval.h"
-
-extern "C" {
-      typedef void (APIENTRY *errorCallbackType)( GLenum );
-}
-
-class GLUnurbs : public NurbsTessellator {
-
-public:
-               GLUnurbs( void );
-    void       loadGLMatrices( void );
-    void       useGLMatrices( const GLfloat modelMatrix[16], 
-                              const GLfloat projMatrix[16],
-                              const GLint viewport[4] );
-    void               setSamplingMatrixIdentity( void );
-
-    void       errorHandler( int );
-    void       bgnrender( void );
-    void       endrender( void );
-    void       setautoloadmode( INREAL value )
-                   { 
-                     
-                     if (value) autoloadmode = GL_TRUE; 
-                     else autoloadmode = GL_FALSE; 
-                       
-                   }
-    GLboolean  getautoloadmode( void ) { return autoloadmode; }
-
-    errorCallbackType errorCallback;
-    void       postError( int which ) 
-                   { if (errorCallback) (errorCallback)( (GLenum)which ); }
-#ifdef _WIN32
-    void        putSurfCallBack(GLenum which, void (GLAPIENTRY *fn)() )
-#else
-    void        putSurfCallBack(GLenum which, _GLUfuncptr fn )
-#endif
-      {
-       curveEvaluator.putCallBack(which, fn);
-       surfaceEvaluator.putCallBack(which, fn);
-      }
-
-    int         get_vertices_call_back()
-      {
-       return surfaceEvaluator.get_vertices_call_back();
-      }
-    
-    void        put_vertices_call_back(int flag)
-      {
-       surfaceEvaluator.put_vertices_call_back(flag);
-      }
-
-    int         get_callback_auto_normal()
-      {
-        return surfaceEvaluator.get_callback_auto_normal();
-      }
-    void         put_callback_auto_normal(int flag)
-      {
-        surfaceEvaluator.put_callback_auto_normal(flag);
-      }
-
-    void       setNurbsCallbackData(void* userData)
-      {
-       curveEvaluator.set_callback_userData(userData);
-       surfaceEvaluator.set_callback_userData(userData);
-     }
-
-
-    //for LOD
-    void LOD_eval_list(int level)
-      {
-       surfaceEvaluator.LOD_eval_list(level);
-      }
-
-    //NEWCALLBACK
-    int        is_callback()
-      {
-       return callbackFlag;
-      }
-    void       put_callbackFlag(int flag)
-      {
-       callbackFlag = flag;
-       surfaceEvaluator.put_vertices_call_back(flag);
-       curveEvaluator.put_vertices_call_back(flag);
-      }
-
-private:
-    GLboolean                  autoloadmode;
-    OpenGLSurfaceEvaluator     surfaceEvaluator;
-    OpenGLCurveEvaluator       curveEvaluator;
-
-    void               loadSamplingMatrix( const GLfloat vmat[4][4], 
-                               const GLint viewport[4] );
-    void               loadCullingMatrix( GLfloat vmat[4][4] );
-    static void                grabGLMatrix( GLfloat vmat[4][4] );
-    static void                transform4d( GLfloat A[4], GLfloat B[4], 
-                               GLfloat mat[4][4] );
-    static void                multmatrix4d( GLfloat n[4][4], const GLfloat left[4][4],
-                               const GLfloat right[4][4] );
-
-   int                  callbackFlag;
-};
-
-#endif /* __gluglrenderer_h_ */
diff --git a/src/glu/sgi/libnurbs/interface/glsurfeval.cc b/src/glu/sgi/libnurbs/interface/glsurfeval.cc
deleted file mode 100644 (file)
index b5bfab1..0000000
+++ /dev/null
@@ -1,1293 +0,0 @@
-/*
-** License Applicability. Except to the extent portions of this file are
-** made subject to an alternative license as permitted in the SGI Free
-** Software License B, Version 1.1 (the "License"), the contents of this
-** file are subject only to the provisions of the License. You may not use
-** this file except in compliance with the License. You may obtain a copy
-** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600
-** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:
-**
-** http://oss.sgi.com/projects/FreeB
-**
-** Note that, as provided in the License, the Software is distributed on an
-** "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS
-** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND
-** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A
-** PARTICULAR PURPOSE, AND NON-INFRINGEMENT.
-**
-** Original Code. The Original Code is: OpenGL Sample Implementation,
-** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,
-** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.
-** Copyright in any portions created by third parties is as indicated
-** elsewhere herein. All Rights Reserved.
-**
-** Additional Notice Provisions: The application programming interfaces
-** established by SGI in conjunction with the Original Code are The
-** OpenGL(R) Graphics System: A Specification (Version 1.2.1), released
-** April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version
-** 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X
-** Window System(R) (Version 1.3), released October 19, 1998. This software
-** was created using the OpenGL(R) version 1.2.1 Sample Implementation
-** published by SGI, but has not been independently verified as being
-** compliant with the OpenGL(R) version 1.2.1 Specification.
-*/
-
-/*
- * glsurfeval.c++
- *
- */
-
-/* Polynomial Evaluator Interface */
-#include "gluos.h"
-#include <stdio.h>
-#include "glimports.h"
-#include "glrenderer.h"
-#include "glsurfeval.h"
-#include "nurbsconsts.h"
-#include "bezierPatchMesh.h"
-
-
-//extern int surfcount;
-//int surfcount=0;
-
-/*#define USE_INTERNAL_EVAL*/ //use internal evaluator
-
-/*whether do evaluation or not*/
-/*#define NO_EVALUATION*/
-
-//#define USE_LOD //for LOD test, have to turn on USE_LOD in insurfeval.c++ too
-
-/*for statistics*/
-//#define STATISTICS
-#ifdef STATISTICS
-static int STAT_num_of_triangles=0;
-static int STAT_num_of_eval_vertices=0;
-static int STAT_num_of_quad_strips=0;
-#endif
-
-/*for output triangles*/
-/*#define OUTPUT_TRIANGLES*/
-
-
-/*#define FOR_CHRIS*/
-#ifdef FOR_CHRIS
-extern "C"  {  void                evalUStripExt(int n_upper, REAL v_upper, REAL* upper_val,
-                                  int n_lower, REAL v_lower, REAL* lower_val);}
-
-extern "C" {   void                evalVStripExt(int n_left, REAL u_left, REAL* left_val,
-                                  int n_right, REAL u_right, REAL* right_val);
-            }
-#endif
-
-
-/**************begin for LOD_eval_list***********/
-void OpenGLSurfaceEvaluator::LOD_eval_list(int level)
-{
-  if(level == 0)
-    LOD_eval_level = 1;
-  else if(level == 1)
-    LOD_eval_level = 2;
-  else if(level == 2)
-    LOD_eval_level = 4;
-  else
-    LOD_eval_level = 8;
-
-  inBPMListEvalEM(global_bpm);
-}
-
-
-OpenGLSurfaceEvaluator::OpenGLSurfaceEvaluator()
-{
-    int i;
-
-    for (i=0; i<VERTEX_CACHE_SIZE; i++) {
-       vertexCache[i] = new StoredVertex;
-    }
-    tmeshing = 0;
-    which = 0;
-    vcount = 0;
-
-    global_uorder = 0;
-    global_vorder = 0;
-    global_uprime = -1.0;
-    global_vprime = -1.0;
-    global_vprime_BV = -1.0;
-    global_uprime_BU = -1.0;
-    global_uorder_BU = 0;
-    global_vorder_BU = 0;
-    global_uorder_BV = 0;
-    global_vorder_BV = 0;
-    global_baseData = NULL;
-        
-    global_bpm = NULL;
-    output_triangles = 0; //don't output triangles by default
-
-    //no default callback functions
-    beginCallBackN = NULL;
-    endCallBackN = NULL;
-    vertexCallBackN = NULL;
-    normalCallBackN = NULL;
-    colorCallBackN = NULL;
-    texcoordCallBackN = NULL;
-    beginCallBackData = NULL;
-    endCallBackData = NULL;
-    vertexCallBackData = NULL;
-    normalCallBackData = NULL;
-    colorCallBackData = NULL;
-    texcoordCallBackData = NULL;
-
-    userData = NULL;
-
-    auto_normal_flag = 0;
-    callback_auto_normal = 0; //default of GLU_CALLBACK_AUTO_NORMAL is 0
-    vertex_flag = 0;
-    normal_flag = 0;
-    color_flag = 0;
-    texcoord_flag = 0;
-
-    em_vertex.uprime = -1.0;
-    em_vertex.vprime = -1.0;
-    em_normal.uprime = -1.0;
-    em_normal.vprime = -1.0;
-    em_color.uprime = -1.0;
-    em_color.vprime = -1.0;
-    em_texcoord.uprime = -1.0;
-    em_texcoord.vprime = -1.0;
-
-#ifdef USE_LOD
-    LOD_eval_level = 1;
-#endif
-}
-
-OpenGLSurfaceEvaluator::~OpenGLSurfaceEvaluator()
-{
-   for (int ii= 0; ii< VERTEX_CACHE_SIZE; ii++) {
-      delete vertexCache[ii];
-      vertexCache[ii]= 0;
-   }
-}
-
-/*---------------------------------------------------------------------------
- * disable - turn off a map
- *---------------------------------------------------------------------------
- */
-void
-OpenGLSurfaceEvaluator::disable(long type)
-{
-    glDisable((GLenum) type);
-}
-
-/*---------------------------------------------------------------------------
- * enable - turn on a map
- *---------------------------------------------------------------------------
- */
-void
-OpenGLSurfaceEvaluator::enable(long type)
-{
-    glEnable((GLenum) type);
-}
-
-/*-------------------------------------------------------------------------
- * mapgrid2f - define a lattice of points with origin and offset
- *-------------------------------------------------------------------------
- */
-void
-OpenGLSurfaceEvaluator::mapgrid2f(long nu, REAL u0, REAL u1, long nv, REAL v0, REAL v1)
-{
-#ifdef USE_INTERNAL_EVAL
-  inMapGrid2f((int) nu, (REAL) u0, (REAL) u1, (int) nv,
-             (REAL) v0, (REAL) v1);
-#else
-
-  if(output_triangles)  
-    {
-      global_grid_u0 = u0;
-      global_grid_u1 = u1;
-      global_grid_nu = nu;
-      global_grid_v0 = v0;
-      global_grid_v1 = v1;
-      global_grid_nv = nv;
-    }
-  else
-    glMapGrid2d((GLint) nu, (GLdouble) u0, (GLdouble) u1, (GLint) nv,
-           (GLdouble) v0, (GLdouble) v1);
-
-#endif
-}
-
-void
-OpenGLSurfaceEvaluator::polymode(long style)
-{
-  if(! output_triangles)
-    {
-      switch(style) {
-      default:
-      case N_MESHFILL:
-        
-       glPolygonMode((GLenum) GL_FRONT_AND_BACK, (GLenum) GL_FILL);
-       break;
-      case N_MESHLINE:
-       glPolygonMode((GLenum) GL_FRONT_AND_BACK, (GLenum) GL_LINE);
-       break;
-      case N_MESHPOINT:
-       glPolygonMode((GLenum) GL_FRONT_AND_BACK, (GLenum) GL_POINT);
-       break;
-      }
-    }
-}
-
-void
-OpenGLSurfaceEvaluator::bgnline(void)
-{
-  if(output_triangles)
-    bezierPatchMeshBeginStrip(global_bpm, GL_LINE_STRIP);
-  else
-    glBegin((GLenum) GL_LINE_STRIP);
-}
-
-void
-OpenGLSurfaceEvaluator::endline(void)
-{
-  if(output_triangles)
-    bezierPatchMeshEndStrip(global_bpm);
-  else
-    glEnd();
-}
-
-void
-OpenGLSurfaceEvaluator::range2f(long type, REAL *from, REAL *to)
-{
-}
-
-void
-OpenGLSurfaceEvaluator::domain2f(REAL ulo, REAL uhi, REAL vlo, REAL vhi)
-{
-}
-
-void
-OpenGLSurfaceEvaluator::bgnclosedline(void)
-{
-  if(output_triangles)
-    bezierPatchMeshBeginStrip(global_bpm, GL_LINE_LOOP);
-  else
-    glBegin((GLenum) GL_LINE_LOOP);
-}
-
-void
-OpenGLSurfaceEvaluator::endclosedline(void)
-{
-  if(output_triangles)
-    bezierPatchMeshEndStrip(global_bpm);
-  else
-    glEnd();
-}
-
-
-
-
-
-void
-OpenGLSurfaceEvaluator::bgntmesh(void)
-{
-
-    tmeshing = 1;
-    which = 0;
-    vcount = 0;
-
-    if(output_triangles)
-      bezierPatchMeshBeginStrip(global_bpm, GL_TRIANGLES);
-    else
-      glBegin((GLenum) GL_TRIANGLES);
-
-}
-
-void
-OpenGLSurfaceEvaluator::swaptmesh(void)
-{
-    which = 1 - which;
-
-}
-
-void
-OpenGLSurfaceEvaluator::endtmesh(void)
-{
-    tmeshing = 0;
-
-
-    if(output_triangles)
-      bezierPatchMeshEndStrip(global_bpm);
-    else
-      glEnd();
-}
-
-void
-OpenGLSurfaceEvaluator::bgntfan(void)
-{
-
-  if(output_triangles)
-    bezierPatchMeshBeginStrip(global_bpm, GL_TRIANGLE_FAN);
-  else
-    glBegin((GLenum) GL_TRIANGLE_FAN);
-
-}
-void
-OpenGLSurfaceEvaluator::endtfan(void)
-{
-  if(output_triangles)
-       bezierPatchMeshEndStrip(global_bpm);
-  else
-    glEnd();
-}
-
-void
-OpenGLSurfaceEvaluator::evalUStrip(int n_upper, REAL v_upper, REAL* upper_val, int n_lower, REAL v_lower, REAL* lower_val)
-{
-#ifdef USE_INTERNAL_EVAL
-  inEvalUStrip(n_upper, v_upper, upper_val,
-       n_lower, v_lower, lower_val);
-#else
-
-#ifdef FOR_CHRIS
-  evalUStripExt(n_upper, v_upper, upper_val,
-                n_lower, v_lower, lower_val);
-  return;
-
-#endif
-  int i,j,k,l;
-  REAL leftMostV[2];
-
-  /*
-   *the algorithm works by scanning from left to right.
-   *leftMostV: the left most of the remaining verteces (on both upper and lower).
-   *          it could an element of upperVerts or lowerVerts.
-   *i: upperVerts[i] is the first vertex to the right of leftMostV on upper line
-   *j: lowerVerts[j] is the first vertex to the right of leftMostV on lower line
-   */
-
-  /*initialize i,j,and leftMostV
-   */
-  if(upper_val[0] <= lower_val[0])
-    {
-      i=1;
-      j=0;
-
-      leftMostV[0] = upper_val[0];
-      leftMostV[1] = v_upper;
-    }
-  else
-    {
-      i=0;
-      j=1;
-
-      leftMostV[0] = lower_val[0];
-      leftMostV[1] = v_lower;
-
-    }
-
-  /*the main loop.
-   *the invariance is that:
-   *at the beginning of each loop, the meaning of i,j,and leftMostV are
-   *maintained
-   */
-  while(1)
-    {
-      if(i >= n_upper) /*case1: no more in upper*/
-       {
-         if(j<n_lower-1) /*at least two vertices in lower*/
-           {
-             bgntfan();
-             coord2f(leftMostV[0], leftMostV[1]);
-//           glNormal3fv(leftMostNormal);
-//             glVertex3fv(leftMostXYZ);
-
-             while(j<n_lower){
-               coord2f(lower_val[j], v_lower);
-//             glNormal3fv(lowerNormal[j]);
-//             glVertex3fv(lowerXYZ[j]);
-               j++;
-
-             }
-             endtfan();
-           }
-         break; /*exit the main loop*/
-       }
-      else if(j>= n_lower) /*case2: no more in lower*/
-       {
-         if(i<n_upper-1) /*at least two vertices in upper*/
-           {
-             bgntfan();
-             coord2f(leftMostV[0], leftMostV[1]);
-//           glNormal3fv(leftMostNormal);
-//           glVertex3fv(leftMostXYZ);
-        
-             for(k=n_upper-1; k>=i; k--) /*reverse order for two-side lighting*/
-               {
-                 coord2f(upper_val[k], v_upper);
-//               glNormal3fv(upperNormal[k]);
-//               glVertex3fv(upperXYZ[k]);
-               }
-
-             endtfan();
-           }
-         break; /*exit the main loop*/
-       }
-      else /* case3: neither is empty, plus the leftMostV, there is at least one triangle to output*/
-       {
-         if(upper_val[i] <= lower_val[j])
-           {
-             bgntfan();
-             coord2f(lower_val[j], v_lower);
-//           glNormal3fv(lowerNormal[j]);
-//           glVertex3fv(lowerXYZ[j]);
-
-             /*find the last k>=i such that
-              *upperverts[k][0] <= lowerverts[j][0]
-              */
-             k=i;
-
-             while(k<n_upper)
-               {
-                 if(upper_val[k] > lower_val[j])
-                   break;
-                 k++;
-
-               }
-             k--;
-
-
-             for(l=k; l>=i; l--)/*the reverse is for two-side lighting*/
-               {
-                 coord2f(upper_val[l], v_upper);
-//               glNormal3fv(upperNormal[l]);
-//               glVertex3fv(upperXYZ[l]);
-
-               }
-             coord2f(leftMostV[0], leftMostV[1]);
-//           glNormal3fv(leftMostNormal);
-//           glVertex3fv(leftMostXYZ);
-
-             endtfan();
-
-             /*update i and leftMostV for next loop
-              */
-             i = k+1;
-
-             leftMostV[0] = upper_val[k];
-             leftMostV[1] = v_upper;
-//           leftMostNormal = upperNormal[k];
-//           leftMostXYZ = upperXYZ[k];
-           }
-         else /*upperVerts[i][0] > lowerVerts[j][0]*/
-           {
-             bgntfan();
-             coord2f(upper_val[i], v_upper);
-//           glNormal3fv(upperNormal[i]);
-//           glVertex3fv(upperXYZ[i]);
-        
-             coord2f(leftMostV[0], leftMostV[1]);
-//             glNormal3fv(leftMostNormal);
-//           glVertex3fv(leftMostXYZ);
-        
-
-             /*find the last k>=j such that
-              *lowerverts[k][0] < upperverts[i][0]
-              */
-             k=j;
-             while(k< n_lower)
-               {
-                 if(lower_val[k] >= upper_val[i])
-                   break;
-                 coord2f(lower_val[k], v_lower);
-//               glNormal3fv(lowerNormal[k]);
-//               glVertex3fv(lowerXYZ[k]);
-
-                 k++;
-               }
-             endtfan();
-
-             /*update j and leftMostV for next loop
-              */
-             j=k;
-             leftMostV[0] = lower_val[j-1];
-             leftMostV[1] = v_lower;
-
-//           leftMostNormal = lowerNormal[j-1];
-//           leftMostXYZ = lowerXYZ[j-1];
-           }
-       }
-    }
-  //clean up
-//  free(upperXYZ);
-//  free(lowerXYZ);
-//  free(upperNormal);
-//  free(lowerNormal);
-#endif
-
-}
-
-
-void
-OpenGLSurfaceEvaluator::evalVStrip(int n_left, REAL u_left, REAL* left_val, int n_right, REAL u_right, REAL* right_val)
-{
-#ifdef USE_INTERNAL_EVAL
-       inEvalVStrip(n_left, u_left, left_val,
-       n_right, u_right, right_val);
-#else
-
-#ifdef FOR_CHRIS
-       evalVStripExt(n_left, u_left, left_val,
-                     n_right, u_right, right_val);
-       return;
-
-#endif
-
-  int i,j,k,l;
-  REAL botMostV[2];
-  /*
-   *the algorithm works by scanning from bot to top.
-   *botMostV: the bot most of the remaining verteces (on both left and right).
-   *          it could an element of leftVerts or rightVerts.
-   *i: leftVerts[i] is the first vertex to the top of botMostV on left line
-   *j: rightVerts[j] is the first vertex to the top of botMostV on rightline
-   */
-
-  /*initialize i,j,and botMostV
-   */
-  if(left_val[0] <= right_val[0])
-    {
-      i=1;
-      j=0;
-
-      botMostV[0] = u_left;
-      botMostV[1] = left_val[0];
-    }
-  else
-    {
-      i=0;
-      j=1;
-
-      botMostV[0] = u_right;
-      botMostV[1] = right_val[0];
-    }
-
-  /*the main loop.
-   *the invariance is that:
-   *at the beginning of each loop, the meaning of i,j,and botMostV are
-   *maintained
-   */
-  while(1)
-    {
-      if(i >= n_left) /*case1: no more in left*/
-       {
-         if(j<n_right-1) /*at least two vertices in right*/
-           {
-             bgntfan();
-             coord2f(botMostV[0], botMostV[1]);
-             while(j<n_right){
-               coord2f(u_right, right_val[j]);
-//             glNormal3fv(rightNormal[j]);
-//             glVertex3fv(rightXYZ[j]);
-               j++;
-
-             }
-             endtfan();
-           }
-         break; /*exit the main loop*/
-       }
-      else if(j>= n_right) /*case2: no more in right*/
-       {
-         if(i<n_left-1) /*at least two vertices in left*/
-           {
-             bgntfan();
-             coord2f(botMostV[0], botMostV[1]);
-//           glNormal3fv(botMostNormal);
-//           glVertex3fv(botMostXYZ);
-        
-             for(k=n_left-1; k>=i; k--) /*reverse order for two-side lighting*/
-               {
-                 coord2f(u_left, left_val[k]);
-//               glNormal3fv(leftNormal[k]);
-//               glVertex3fv(leftXYZ[k]);
-               }
-
-             endtfan();
-           }
-         break; /*exit the main loop*/
-       }
-      else /* case3: neither is empty, plus the botMostV, there is at least one triangle to output*/
-       {
-         if(left_val[i] <= right_val[j])
-           {
-             bgntfan();
-             coord2f(u_right, right_val[j]);
-//           glNormal3fv(rightNormal[j]);
-//           glVertex3fv(rightXYZ[j]);
-
-             /*find the last k>=i such that
-              *leftverts[k][0] <= rightverts[j][0]
-              */
-             k=i;
-
-             while(k<n_left)
-               {
-                 if(left_val[k] > right_val[j])
-                   break;
-                 k++;
-
-               }
-             k--;
-
-
-             for(l=k; l>=i; l--)/*the reverse is for two-side lighting*/
-               {
-                 coord2f(u_left, left_val[l]);
-//               glNormal3fv(leftNormal[l]);
-//               glVertex3fv(leftXYZ[l]);
-
-               }
-             coord2f(botMostV[0], botMostV[1]);
-//           glNormal3fv(botMostNormal);
-//           glVertex3fv(botMostXYZ);
-
-             endtfan();
-
-             /*update i and botMostV for next loop
-              */
-             i = k+1;
-
-             botMostV[0] = u_left;
-             botMostV[1] = left_val[k];
-//           botMostNormal = leftNormal[k];
-//           botMostXYZ = leftXYZ[k];
-           }
-         else /*left_val[i] > right_val[j])*/
-           {
-             bgntfan();
-             coord2f(u_left, left_val[i]);
-//           glNormal3fv(leftNormal[i]);
-//           glVertex3fv(leftXYZ[i]);
-        
-             coord2f(botMostV[0], botMostV[1]);
-//           glNormal3fv(botMostNormal);
-//           glVertex3fv(botMostXYZ);
-        
-
-             /*find the last k>=j such that
-              *rightverts[k][0] < leftverts[i][0]
-              */
-             k=j;
-             while(k< n_right)
-               {
-                 if(right_val[k] >= left_val[i])
-                   break;
-                 coord2f(u_right, right_val[k]);
-//               glNormal3fv(rightNormal[k]);
-//               glVertex3fv(rightXYZ[k]);
-
-                 k++;
-               }
-             endtfan();
-
-             /*update j and botMostV for next loop
-              */
-             j=k;
-             botMostV[0] = u_right;
-             botMostV[1] = right_val[j-1];
-
-//           botMostNormal = rightNormal[j-1];
-//           botMostXYZ = rightXYZ[j-1];
-           }
-       }
-    }
-  //clean up
-//  free(leftXYZ);
-//  free(leftNormal);
-//  free(rightXYZ);
-//  free(rightNormal);
-#endif
-}
-
-
-void
-OpenGLSurfaceEvaluator::bgnqstrip(void)
-{
-  if(output_triangles)
-    bezierPatchMeshBeginStrip(global_bpm, GL_QUAD_STRIP);
-  else
-    glBegin((GLenum) GL_QUAD_STRIP);
-
-#ifdef STATISTICS
-       STAT_num_of_quad_strips++;
-#endif
-}
-
-void
-OpenGLSurfaceEvaluator::endqstrip(void)
-{
-  if(output_triangles)
-    bezierPatchMeshEndStrip(global_bpm);
-  else
-    glEnd();
-
-}
-
-/*-------------------------------------------------------------------------
- * bgnmap2f - preamble to surface definition and evaluations
- *-------------------------------------------------------------------------
- */
-void
-OpenGLSurfaceEvaluator::bgnmap2f(long)
-{
-  if(output_triangles)
-    {
-      /*deallocate the space which may has been
-       *allocated by global_bpm previously
-       */
-      if(global_bpm != NULL) {
-       bezierPatchMeshListDelete(global_bpm);
-       global_bpm = NULL;
-      }
-
-
-      /*
-       auto_normal_flag = 1; //always output normal in callback mode.
-                             //we could have used the following code,
-                             //but Inspector doesn't have gl context
-                             //before it calls tessellator.
-                             //this way is temporary.
-       */
-      //NEWCALLBACK
-      //if one of the two normal callback functions are set,
-      //then set
-      if(normalCallBackN != NULL ||
-        normalCallBackData != NULL)
-       auto_normal_flag = 1;
-      else
-       auto_normal_flag = 0;
-
-      //initialize so that no maps initially
-      vertex_flag = 0;
-      normal_flag = 0;
-      color_flag = 0;
-      texcoord_flag = 0;
-
-      /*
-      if(glIsEnabled(GL_AUTO_NORMAL) == GL_TRUE)
-       auto_normal_flag = 1;
-      else if (callback_auto_normal == 1)
-       auto_normal_flag = 1;
-      else
-       auto_normal_flag = 0;
-       */
-         glPushAttrib((GLbitfield) GL_EVAL_BIT);
-
-    }
-  else
-    {
-      glPushAttrib((GLbitfield) GL_EVAL_BIT);
-
-      /*to avoid side effect, we restor the opengl state for GL_POLYGON_MODE
-       */       
-      glGetIntegerv(GL_POLYGON_MODE, gl_polygon_mode);
-    }
-
-}
-
-/*-------------------------------------------------------------------------
- * endmap2f - postamble to a map
- *-------------------------------------------------------------------------
- */
-void
-OpenGLSurfaceEvaluator::endmap2f(void)
-{
-
-  if(output_triangles)
-    {
-      //bezierPatchMeshListDelDeg(global_bpm);
-
-      //    bezierPatchMeshListEval(global_bpm);
-
-      //surfcount++;
-      //printf("surfcount=%i\n", surfcount);
-      //if(surfcount == 8) exit(0);
-
-      inBPMListEvalEM(global_bpm);
-
-
-
-/*
-    global_bpm = bezierPatchMeshListReverse(global_bpm);
-    {
-      float *vertex_array;
-      float *normal_array;
-      int *length_array;
-      int *type_array;
-      int num_strips;
-      bezierPatchMeshListCollect(global_bpm, &vertex_array, &normal_array, &length_array, &type_array, &num_strips);
-      drawStrips(vertex_array, normal_array, length_array, type_array, num_strips);
-      free(vertex_array);
-      free(normal_array);
-      free(length_array);
-      free(type_array);
-    }
-*/
-
-    //bezierPatchMeshListPrint(global_bpm);
-    //bezierPatchMeshListDraw(global_bpm);
-
-//       printf("num triangles=%i\n", bezierPatchMeshListNumTriangles(global_bpm));
-
-#ifdef USE_LOD
-#else
-    bezierPatchMeshListDelete(global_bpm);
-    global_bpm = NULL;
-#endif
-       glPopAttrib();
-  }
-else
-  {
-#ifndef USE_LOD
-    glPopAttrib();
-#endif
-
-#ifdef STATISTICS
-    fprintf(stderr, "num_vertices=%i,num_triangles=%i,num_quads_strips=%i\n", STAT_num_of_eval_vertices,STAT_num_of_triangles,STAT_num_of_quad_strips);
-#endif
-
-    /*to restore the gl_polygon_mode
-     */
-#ifndef USE_LOD
-    glPolygonMode( GL_FRONT, (GLenum) gl_polygon_mode[0]);
-    glPolygonMode( GL_BACK,  (GLenum) gl_polygon_mode[1]);
-#endif
-}
-
-}
-
-/*-------------------------------------------------------------------------
- * map2f - pass a desription of a surface map
- *-------------------------------------------------------------------------
- */
-void
-OpenGLSurfaceEvaluator::map2f(
-    long _type,
-    REAL _ulower,      /* u lower domain coord         */
-    REAL _uupper,      /* u upper domain coord         */
-    long _ustride,     /* interpoint distance          */
-    long _uorder,      /* parametric order             */
-    REAL _vlower,      /* v lower domain coord         */
-    REAL _vupper,      /* v upper domain coord         */
-    long _vstride,     /* interpoint distance          */
-    long _vorder,      /* parametric order             */
-    REAL *pts) /* control points               */
-{
-#ifdef USE_INTERNAL_EVAL
-   inMap2f((int) _type, (REAL) _ulower, (REAL) _uupper,
-           (int) _ustride, (int) _uorder, (REAL) _vlower,
-           (REAL) _vupper, (int) _vstride, (int) _vorder,
-           (REAL *) pts);
-#else
-
-
-
-   if(output_triangles)
-     {
-       if(global_bpm == NULL)
-        global_bpm = bezierPatchMeshMake2(10,10);
-       if(
-         (global_bpm->bpatch == NULL &&
-         (_type == GL_MAP2_VERTEX_3 || _type == GL_MAP2_VERTEX_4))
-         ||
-         (global_bpm->bpatch_normal == NULL &&
-          (_type == GL_MAP2_NORMAL))
-         ||
-         (global_bpm->bpatch_color == NULL &&
-          (_type == GL_MAP2_INDEX || _type == GL_MAP2_COLOR_4))
-         ||
-         (global_bpm->bpatch_texcoord == NULL &&
-          (_type == GL_MAP2_TEXTURE_COORD_1 ||
-           _type == GL_MAP2_TEXTURE_COORD_2 ||
-           _type == GL_MAP2_TEXTURE_COORD_3 ||
-           _type == GL_MAP2_TEXTURE_COORD_4 )
-          ))
-        {
-          bezierPatchMeshPutPatch(global_bpm, (int) _type, _ulower, _uupper,(int)  _ustride,(int) _uorder,_vlower, _vupper, (int) _vstride, (int) _vorder, pts);
-        }
-       else /*new surface patch (with multiple maps) starts*/
-        {
-          bezierPatchMesh *temp = bezierPatchMeshMake2(10,10);
-          bezierPatchMeshPutPatch(temp, (int) _type, _ulower, _uupper,(int)  _ustride,(int) _uorder,_vlower, _vupper, (int) _vstride, (int) _vorder, pts);
-          global_bpm = bezierPatchMeshListInsert(global_bpm, temp);
-
-          /*
-          global_bpm = bezierPatchMeshListInsert(global_bpm,
-                                                 bezierPatchMeshMake(
-                                                                     (int) _type, _ulower, _uupper,(int)  _ustride, (int) _uorder, _vlower, _vupper, (int) _vstride, (int) _vorder, pts, 10, 10));
-          */
-        }
-     }
-   else /*not output triangles*/
-     {
-       glMap2f((GLenum) _type, (GLfloat) _ulower, (GLfloat) _uupper,
-              (GLint) _ustride, (GLint) _uorder, (GLfloat) _vlower,
-              (GLfloat) _vupper, (GLint) _vstride, (GLint) _vorder,
-              (const GLfloat *) pts);
-     }
-
-#endif
-}
-
-
-/*-------------------------------------------------------------------------
- * mapmesh2f - evaluate a mesh of points on lattice
- *-------------------------------------------------------------------------
- */
-void
-OpenGLSurfaceEvaluator::mapmesh2f(long style, long umin, long umax, long vmin, long vmax)
-{
-#ifdef NO_EVALUATION
-return;
-#endif
-
-#ifdef USE_INTERNAL_EVAL
-    inEvalMesh2((int)umin, (int)vmin, (int)umax, (int)vmax);
-#else
-
-
-
-if(output_triangles)
-{
-#ifdef USE_LOD
-  bezierPatchMeshBeginStrip(global_bpm, GL_POLYGON);
-  bezierPatchMeshInsertUV(global_bpm, global_grid_u0, global_grid_v0);
-  bezierPatchMeshInsertUV(global_bpm, global_grid_u1, global_grid_v1);
-  bezierPatchMeshInsertUV(global_bpm, (REAL)global_grid_nu, (REAL)global_grid_nv);
-  bezierPatchMeshInsertUV(global_bpm, (REAL)umin, (REAL)vmin);
-  bezierPatchMeshInsertUV(global_bpm, (REAL)umax, (REAL)vmax);
-  bezierPatchMeshEndStrip(global_bpm);
-
-#else
-
-  REAL du, dv;
-  long i,j;
-  if(global_grid_nu == 0 || global_grid_nv == 0)
-    return; /*no points need to be output*/
-  du = (global_grid_u1 - global_grid_u0) / (REAL)global_grid_nu;
-  dv = (global_grid_v1 - global_grid_v0) / (REAL)global_grid_nv;
-
-  if(global_grid_nu >= global_grid_nv){
-
-    for(i=umin; i<umax; i++){
-      REAL u1 = (i==global_grid_nu)? global_grid_u1:(global_grid_u0 + i*du);
-      REAL u2 = ((i+1) == global_grid_nu)? global_grid_u1: (global_grid_u0+(i+1)*du);
-
-      bgnqstrip();
-      for(j=vmax; j>=vmin; j--){
-       REAL v1 = (j == global_grid_nv)? global_grid_v1: (global_grid_v0 +j*dv);
-        
-       coord2f(u1, v1);
-       coord2f(u2, v1);
-      }
-      endqstrip();
-    }
-  }
-  else{
-
-    for(i=vmin; i<vmax; i++){
-      REAL v1 = (i==global_grid_nv)? global_grid_v1:(global_grid_v0 + i*dv);
-      REAL v2 = ((i+1) == global_grid_nv)? global_grid_v1: (global_grid_v0+(i+1)*dv);
-
-      bgnqstrip();
-      for(j=umax; j>=umin; j--){
-       REAL u1 = (j == global_grid_nu)? global_grid_u1: (global_grid_u0 +j*du);        
-       coord2f(u1, v2);
-       coord2f(u1, v1);
-      }
-      endqstrip();
-    }
-  }
-#endif
-}
-else
-{
-    switch(style) {
-    default:
-    case N_MESHFILL:
-       glEvalMesh2((GLenum) GL_FILL, (GLint) umin, (GLint) umax,
-               (GLint) vmin, (GLint) vmax);
-       break;
-    case N_MESHLINE:
-       glEvalMesh2((GLenum) GL_LINE, (GLint) umin, (GLint) umax,
-               (GLint) vmin, (GLint) vmax);
-       break;
-    case N_MESHPOINT:
-       glEvalMesh2((GLenum) GL_POINT, (GLint) umin, (GLint) umax,
-               (GLint) vmin, (GLint) vmax);
-       break;
-    }
-  }
-
-#endif
-
-#ifdef STATISTICS
-       STAT_num_of_quad_strips += (umax-umin)*(vmax-vmin);
-#endif
-}
-
-/*-------------------------------------------------------------------------
- * evalcoord2f - evaluate a point on a surface
- *-------------------------------------------------------------------------
- */
-void
-OpenGLSurfaceEvaluator::evalcoord2f(long, REAL u, REAL v)
-{
-
-
-#ifdef NO_EVALUATION
-return;
-#endif
-
-
-    newtmeshvert(u, v);
-}
-
-/*-------------------------------------------------------------------------
- * evalpoint2i - evaluate a grid point
- *-------------------------------------------------------------------------
- */
-void
-OpenGLSurfaceEvaluator::evalpoint2i(long u, long v)
-{
-#ifdef NO_EVALUATION
-return;
-#endif
-
-    newtmeshvert(u, v);
-}
-
-void
-OpenGLSurfaceEvaluator::point2i( long u, long v )
-{
-#ifdef NO_EVALUATION
-return;
-#else
-
-#ifdef USE_INTERNAL_EVAL
-    inEvalPoint2( (int)u,  (int)v);
-#else
-
-
-if(output_triangles)
-{
-
-  REAL du, dv;
-  REAL fu,fv;
-  du = (global_grid_u1 - global_grid_u0) / (REAL)global_grid_nu;
-  dv = (global_grid_v1 - global_grid_v0) / (REAL)global_grid_nv;
-  fu = (u==global_grid_nu)? global_grid_u1:(global_grid_u0 + u*du);
-  fv = (v == global_grid_nv)? global_grid_v1: (global_grid_v0 +v*dv);
-  coord2f(fu,fv);
-}
-else
-    glEvalPoint2((GLint) u, (GLint) v);
-
-
-#endif
-
-#ifdef STATISTICS
-  STAT_num_of_eval_vertices++;
-#endif
-
-#endif
-
-}
-
-void
-OpenGLSurfaceEvaluator::coord2f( REAL u, REAL v )
-{
-#ifdef NO_EVALUATION
-return;
-#else
-
-#ifdef USE_INTERNAL_EVAL
-    inEvalCoord2f( u, v);
-#else
-
-
-if(output_triangles)
-    bezierPatchMeshInsertUV(global_bpm, u,v);
-else
-    glEvalCoord2f((GLfloat) u, (GLfloat) v);
-
-
-#endif
-
-
-#ifdef STATISTICS
-  STAT_num_of_eval_vertices++;
-#endif
-
-#endif
-}
-
-void
-OpenGLSurfaceEvaluator::newtmeshvert( long u, long v )
-{
-#ifdef NO_EVALUATION
-return;
-#else
-
-    if (tmeshing) {
-
-       if (vcount == 2) {
-           vertexCache[0]->invoke(this);
-           vertexCache[1]->invoke(this);
-           point2i( u,  v);
-
-       } else {
-           vcount++;
-       }
-
-       vertexCache[which]->saveEvalPoint(u, v);
-       which = 1 - which;
-    } else {
-       point2i( u,  v);
-    }
-#endif
-}
-
-void
-OpenGLSurfaceEvaluator::newtmeshvert( REAL u, REAL v )
-{
-#ifdef NO_EVALUATION
-return;
-#else
-    if (tmeshing) {
-
-
-       if (vcount == 2) {
-           vertexCache[0]->invoke(this);
-           vertexCache[1]->invoke(this);
-           coord2f(u,v);
-
-       } else {
-           vcount++;
-       }
-
-       vertexCache[which]->saveEvalCoord(u, v);
-       which = 1 - which;
-    } else {
-
-       coord2f( u,  v);
-    }
-#endif
-
-}
-
-#ifdef _WIN32
-void OpenGLSurfaceEvaluator::putCallBack(GLenum which, void (GLAPIENTRY *fn)() )
-#else
-void OpenGLSurfaceEvaluator::putCallBack(GLenum which, _GLUfuncptr fn )
-#endif
-{
-  switch(which)
-    {
-    case GLU_NURBS_BEGIN:
-      beginCallBackN = (void (GLAPIENTRY *) (GLenum)) fn;
-      break;
-    case GLU_NURBS_END:
-      endCallBackN = (void (GLAPIENTRY *) (void)) fn;
-      break;
-    case GLU_NURBS_VERTEX:
-      vertexCallBackN = (void (GLAPIENTRY *) (const GLfloat*)) fn;
-      break;
-    case GLU_NURBS_NORMAL:
-      normalCallBackN = (void (GLAPIENTRY *) (const GLfloat*)) fn;
-      break;
-    case GLU_NURBS_COLOR:
-      colorCallBackN = (void (GLAPIENTRY *) (const GLfloat*)) fn;
-      break;
-    case GLU_NURBS_TEXTURE_COORD:
-      texcoordCallBackN = (void (GLAPIENTRY *) (const GLfloat*)) fn;
-      break;
-    case GLU_NURBS_BEGIN_DATA:
-      beginCallBackData = (void (GLAPIENTRY *) (GLenum, void*)) fn;
-      break;
-    case GLU_NURBS_END_DATA:
-      endCallBackData = (void (GLAPIENTRY *) (void*)) fn;
-      break;
-    case GLU_NURBS_VERTEX_DATA:
-      vertexCallBackData = (void (GLAPIENTRY *) (const GLfloat*, void*)) fn;
-      break;
-    case GLU_NURBS_NORMAL_DATA:
-      normalCallBackData = (void (GLAPIENTRY *) (const GLfloat*, void*)) fn;
-      break;
-    case GLU_NURBS_COLOR_DATA:
-      colorCallBackData = (void (GLAPIENTRY *) (const GLfloat*, void*)) fn;
-      break;
-    case GLU_NURBS_TEXTURE_COORD_DATA:
-      texcoordCallBackData = (void (GLAPIENTRY *) (const GLfloat*, void*)) fn;
-      break;
-
-    }
-}
-
-
-void
-OpenGLSurfaceEvaluator::beginCallBack(GLenum which, void *data)
-{
-  if(beginCallBackData)
-    beginCallBackData(which, data);
-  else if(beginCallBackN)
-    beginCallBackN(which);
-}
-
-void
-OpenGLSurfaceEvaluator::endCallBack(void *data)
-{
-  if(endCallBackData)
-    endCallBackData(data);
-  else if(endCallBackN)
-    endCallBackN();
-}
-
-void
-OpenGLSurfaceEvaluator::vertexCallBack(const GLfloat *vert, void* data)
-{
-  if(vertexCallBackData)
-    vertexCallBackData(vert, data);
-  else if(vertexCallBackN)
-    vertexCallBackN(vert);
-}
-
-
-void
-OpenGLSurfaceEvaluator::normalCallBack(const GLfloat *normal, void* data)
-{
-  if(normalCallBackData)
-    normalCallBackData(normal, data);
-  else if(normalCallBackN)
-    normalCallBackN(normal);
-}
-
-void
-OpenGLSurfaceEvaluator::colorCallBack(const GLfloat *color, void* data)
-{
-  if(colorCallBackData)
-    colorCallBackData(color, data);
-  else if(colorCallBackN)
-    colorCallBackN(color);
-}
-
-void
-OpenGLSurfaceEvaluator::texcoordCallBack(const GLfloat *texcoord, void* data)
-{
-  if(texcoordCallBackData)
-    texcoordCallBackData(texcoord, data);
-  else if(texcoordCallBackN)
-    texcoordCallBackN(texcoord);
-}
-
-
-
-
diff --git a/src/glu/sgi/libnurbs/interface/glsurfeval.h b/src/glu/sgi/libnurbs/interface/glsurfeval.h
deleted file mode 100644 (file)
index 621e593..0000000
+++ /dev/null
@@ -1,404 +0,0 @@
-/*
- * SGI FREE SOFTWARE LICENSE B (Version 2.0, Sept. 18, 2008)
- * Copyright (C) 1991-2000 Silicon Graphics, Inc. All Rights Reserved.
- *
- * 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, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice including the dates of first publication and
- * either this permission notice or a reference to
- * http://oss.sgi.com/projects/FreeB/
- * shall be included in all copies or substantial portions of the Software.
- *
- * 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. IN NO EVENT SHALL
- * SILICON GRAPHICS, INC. BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
- * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- * Except as contained in this notice, the name of Silicon Graphics, Inc.
- * shall not be used in advertising or otherwise to promote the sale, use or
- * other dealings in this Software without prior written authorization from
- * Silicon Graphics, Inc.
- */
-
-/*
- * glsurfeval.h
- *
- */
-
-#ifndef __gluglsurfeval_h_
-#define __gluglsurfeval_h_
-
-#include "basicsurfeval.h"
-#include "bezierPatchMesh.h" //in case output triangles
-#include <GL/gl.h>
-#include <GL/glu.h>
-
-class SurfaceMap;
-class OpenGLSurfaceEvaluator;
-class StoredVertex;
-
-#define TYPECOORD      1
-#define TYPEPOINT      2
-
-/* Cache up to 3 vertices from tmeshes */
-#define VERTEX_CACHE_SIZE      3
-
-/*for internal evaluator callback stuff*/
-#ifndef IN_MAX_BEZIER_ORDER
-#define IN_MAX_BEZIER_ORDER 40 /*XXX should be bigger than machine order*/
-#endif
-                       
-#ifndef IN_MAX_DIMENSION
-#define IN_MAX_DIMENSION 4 
-#endif
-
-typedef struct surfEvalMachine{
-  REAL uprime;//cached previusly evaluated uprime.
-  REAL vprime;
-  int k; /*the dimension*/
-  REAL u1;
-  REAL u2;
-  int ustride;
-  int uorder;
-  REAL v1;
-  REAL v2;
-  int vstride;
-  int vorder;
-  REAL ctlPoints[IN_MAX_BEZIER_ORDER*IN_MAX_BEZIER_ORDER*IN_MAX_DIMENSION];
-  REAL ucoeff[IN_MAX_BEZIER_ORDER]; /*cache the polynomial values*/
-  REAL vcoeff[IN_MAX_BEZIER_ORDER];
-  REAL ucoeffDeriv[IN_MAX_BEZIER_ORDER]; /*cache the polynomial derivatives*/
-  REAL vcoeffDeriv[IN_MAX_BEZIER_ORDER];
-} surfEvalMachine;
-  
-  
-
-class StoredVertex {
-public:
-               StoredVertex() { type = 0; coord[0] = 0; coord[1] = 0; point[0] = 0; point[1] = 0; }
-               ~StoredVertex(void) {}
-    void       saveEvalCoord(REAL x, REAL y) 
-                   {coord[0] = x; coord[1] = y; type = TYPECOORD; }
-    void       saveEvalPoint(long x, long y)
-                   {point[0] = x; point[1] = y; type = TYPEPOINT; }
-    void       invoke(OpenGLSurfaceEvaluator *eval);
-
-private:
-    int                type;
-    REAL       coord[2];
-    long       point[2];
-};
-
-class OpenGLSurfaceEvaluator : public BasicSurfaceEvaluator {
-public:
-                       OpenGLSurfaceEvaluator();
-                       virtual ~OpenGLSurfaceEvaluator( void );
-    void               polymode( long style );
-    void               range2f( long, REAL *, REAL * );
-    void               domain2f( REAL, REAL, REAL, REAL );
-    void               addMap( SurfaceMap * ) { }
-
-    void               enable( long );
-    void               disable( long );
-    void               bgnmap2f( long );
-    void               map2f( long, REAL, REAL, long, long, 
-                                    REAL, REAL, long, long, REAL * );
-    void               mapgrid2f( long, REAL, REAL, long, REAL, REAL );
-    void               mapmesh2f( long, long, long, long, long );
-    void               evalcoord2f( long, REAL, REAL );
-    void               evalpoint2i( long, long );
-    void               endmap2f( void );
-
-    void               bgnline( void );
-    void               endline( void );
-    void               bgnclosedline( void );
-    void               endclosedline( void );
-    void               bgntmesh( void );
-    void               swaptmesh( void );
-    void               endtmesh( void );
-    void               bgnqstrip( void );
-    void               endqstrip( void );
-
-    void                bgntfan( void );
-    void                endtfan( void );
-    void                evalUStrip(int n_upper, REAL v_upper, REAL* upper_val,
-                                   int n_lower, REAL v_lower, REAL* lower_val);
-    void                evalVStrip(int n_left, REAL u_left, REAL* left_val,
-                                   int n_right, REAL u_right, REAL* right_val);
-
-    void               coord2f( REAL, REAL );
-    void               point2i( long, long );
-
-    void               newtmeshvert( REAL, REAL );
-    void               newtmeshvert( long, long );
-
-#ifdef _WIN32
-    void               putCallBack(GLenum which, void (GLAPIENTRY *fn)() );
-#else
-    void               putCallBack(GLenum which, _GLUfuncptr fn );
-#endif
-
-    int                 get_vertices_call_back()
-      {
-       return output_triangles;
-      }
-    void                put_vertices_call_back(int flag)
-      {
-       output_triangles = flag;
-      }
-
-    void                 put_callback_auto_normal(int flag)
-      {
-        callback_auto_normal = flag;
-      } 
-
-   int                   get_callback_auto_normal()
-     {
-        return callback_auto_normal;
-      }
-
-   void                  set_callback_userData(void* data)
-     {
-       userData = data;
-     }
-
-    /**************begin for LOD_eval_list***********/
-    void LOD_eval_list(int level);
-
-
-
-   
-private:
-    StoredVertex       *vertexCache[VERTEX_CACHE_SIZE];
-    int                        tmeshing;
-    int                        which;
-    int                        vcount;
-
-    GLint              gl_polygon_mode[2];/*to save and restore so that
-                                        *no side effect
-                                        */
-    bezierPatchMesh        *global_bpm; //for output triangles
-    int                output_triangles; //true 1 or false 0
-
-
-
-    void (GLAPIENTRY *beginCallBackN) (GLenum type);
-    void (GLAPIENTRY *endCallBackN)   (void);
-    void (GLAPIENTRY *vertexCallBackN) (const GLfloat *vert);
-    void (GLAPIENTRY *normalCallBackN) (const GLfloat *normal);
-    void (GLAPIENTRY *colorCallBackN) (const GLfloat *color);
-    void (GLAPIENTRY *texcoordCallBackN) (const GLfloat *texcoord);
-
-    void (GLAPIENTRY *beginCallBackData) (GLenum type, void* data);
-    void (GLAPIENTRY *endCallBackData)   (void* data);
-    void (GLAPIENTRY *vertexCallBackData) (const GLfloat *vert, void* data);
-    void (GLAPIENTRY *normalCallBackData) (const GLfloat *normal, void* data);
-    void (GLAPIENTRY *colorCallBackData) (const GLfloat *color, void* data);
-    void (GLAPIENTRY *texcoordCallBackData) (const GLfloat *texcoord, void* data);
-
-    void               beginCallBack (GLenum type, void* data);
-    void               endCallBack   (void* data);
-    void               vertexCallBack (const GLfloat *vert, void* data);
-    void               normalCallBack (const GLfloat *normal, void* data);
-    void               colorCallBack (const GLfloat *color, void* data);
-    void               texcoordCallBack (const GLfloat *texcoord, void* data);
-
-
-    void* userData; //the opaque pointer for Data callback functions.
-
-   /*LOD evaluation*/
-   void LOD_triangle(REAL A[2], REAL B[2], REAL C[2],
-                    int level);
-   void LOD_eval(int num_vert, REAL* verts, int type, int level);
-                    
-  int LOD_eval_level; //set by LOD_eval_list()
-
-   /*************begin for internal evaluators*****************/
-                       
- /*the following global variables are only defined in this file. 
- *They are used to cache the precomputed Bezier polynomial values.
- *These calues may be used consecutively in which case we don't have 
- *recompute these values again.
- */
- int global_uorder; /*store the uorder in the previous evaluation*/
- int global_vorder; /*store the vorder in the previous evaluation*/
- REAL global_uprime;
- REAL global_vprime;
- REAL global_vprime_BV;
- REAL global_uprime_BU;
- int global_uorder_BV; /*store the uorder in the previous evaluation*/
- int global_vorder_BV; /*store the vorder in the previous evaluation*/
- int global_uorder_BU; /*store the uorder in the previous evaluation*/
- int global_vorder_BU; /*store the vorder in the previous evaluation*/
-
- REAL global_ucoeff[IN_MAX_BEZIER_ORDER]; /*cache the polynomial values*/
- REAL global_vcoeff[IN_MAX_BEZIER_ORDER];
- REAL global_ucoeffDeriv[IN_MAX_BEZIER_ORDER]; /*cache the polynomial derivatives*/
- REAL global_vcoeffDeriv[IN_MAX_BEZIER_ORDER];
-
- REAL global_BV[IN_MAX_BEZIER_ORDER][IN_MAX_DIMENSION];
- REAL global_PBV[IN_MAX_BEZIER_ORDER][IN_MAX_DIMENSION];
- REAL global_BU[IN_MAX_BEZIER_ORDER][IN_MAX_DIMENSION];
- REAL global_PBU[IN_MAX_BEZIER_ORDER][IN_MAX_DIMENSION];
- REAL* global_baseData;
-
- int    global_ev_k; /*the dimension*/
- REAL global_ev_u1;
- REAL global_ev_u2;
- int    global_ev_ustride;
- int    global_ev_uorder;
- REAL global_ev_v1;
- REAL global_ev_v2;
- int    global_ev_vstride;
- int    global_ev_vorder;
- REAL global_ev_ctlPoints[IN_MAX_BEZIER_ORDER*IN_MAX_BEZIER_ORDER*IN_MAX_DIMENSION];
-
- REAL  global_grid_u0;
- REAL  global_grid_u1;
- int     global_grid_nu;
- REAL  global_grid_v0;
- REAL  global_grid_v1;
- int     global_grid_nv;
-
-/*functions*/
- void inDoDomain2WithDerivs(int k, REAL u, REAL v, 
-                               REAL u1, REAL u2, int uorder, 
-                               REAL v1,  REAL v2, int vorder, 
-                               REAL *baseData,
-                               REAL *retPoint, REAL *retdu, REAL *retdv);
- void inPreEvaluate(int order, REAL vprime, REAL *coeff);
- void inPreEvaluateWithDeriv(int order, REAL vprime, REAL *coeff, REAL *coeffDeriv);
- void inComputeFirstPartials(REAL *p, REAL *pu, REAL *pv);
- void inComputeNormal2(REAL *pu, REAL *pv, REAL *n);
- void inDoEvalCoord2(REAL u, REAL v,
-                    REAL *retPoint, REAL *retNormal);
- void inDoEvalCoord2NOGE(REAL u, REAL v,
-                    REAL *retPoint, REAL *retNormal);
- void inMap2f(int k,
-             REAL ulower,
-             REAL uupper,
-             int ustride,
-             int uorder,
-             REAL vlower,
-             REAL vupper,
-             int vstride,
-             int vorder,
-             REAL *ctlPoints);
-
- void inMapGrid2f(int nu, REAL u0, REAL u1, 
-                 int nv, REAL v0, REAL v1);
-
- void inEvalMesh2(int lowU, int lowV, int highU, int highV);
- void inEvalPoint2(int i, int j);
- void inEvalCoord2f(REAL u, REAL v);
-
-void inEvalULine(int n_points, REAL v, REAL* u_vals, 
-       int stride, REAL ret_points[][3], REAL ret_normals[][3]);
-
-void inEvalVLine(int n_points, REAL u, REAL* v_vals, 
-       int stride, REAL ret_points[][3], REAL ret_normals[][3]);
-
-void inEvalUStrip(int n_upper, REAL v_upper, REAL* upper_val, 
-                       int n_lower, REAL v_lower, REAL* lower_val
-                       );
-void inEvalVStrip(int n_left, REAL u_left, REAL* left_val, int n_right, REAL u_right, REAL* right_val);
-
-void inPreEvaluateBV(int k, int uorder, int vorder, REAL vprime, REAL *baseData);
-void inPreEvaluateBU(int k, int uorder, int vorder, REAL uprime, REAL *baseData);
-void inPreEvaluateBV_intfac(REAL v )
-  {
-   inPreEvaluateBV(global_ev_k, global_ev_uorder, global_ev_vorder, (v-global_ev_v1)/(global_ev_v2-global_ev_v1), global_ev_ctlPoints);
-  }
-
-void inPreEvaluateBU_intfac(REAL u)
-  {
-    inPreEvaluateBU(global_ev_k, global_ev_uorder, global_ev_vorder, (u-global_ev_u1)/(global_ev_u2-global_ev_u1), global_ev_ctlPoints); 
-  }
-
-void inDoDomain2WithDerivsBV(int k, REAL u, REAL v,
-                            REAL u1, REAL u2, int uorder,
-                            REAL v1, REAL v2, int vorder,
-                            REAL *baseData,
-                            REAL *retPoint, REAL* retdu, REAL *retdv);
-
-void inDoDomain2WithDerivsBU(int k, REAL u, REAL v,
-                            REAL u1, REAL u2, int uorder,
-                            REAL v1, REAL v2, int vorder,
-                            REAL *baseData,
-                            REAL *retPoint, REAL* retdu, REAL *retdv);
-
-
-void inDoEvalCoord2NOGE_BV(REAL u, REAL v,
-                          REAL *retPoint, REAL *retNormal);
-
-void inDoEvalCoord2NOGE_BU(REAL u, REAL v,
-                          REAL *retPoint, REAL *retNormal);
-
-void inBPMEval(bezierPatchMesh* bpm);
-void inBPMListEval(bezierPatchMesh* list);
-
-/*-------------begin for surfEvalMachine -------------*/
-surfEvalMachine em_vertex;
-surfEvalMachine em_normal;
-surfEvalMachine em_color;
-surfEvalMachine em_texcoord;
-
-int auto_normal_flag; //whether to output normla or not in callback
-                      //determined by GL_AUTO_NORMAL and callback_auto_normal
-int callback_auto_normal; //GLU_CALLBACK_AUTO_NORMAL_EXT
-int vertex_flag;
-int normal_flag;
-int color_flag;
-int texcoord_flag;
-
-void inMap2fEM(int which, //0:vert,1:norm,2:color,3:tex
-              int dimension,
-             REAL ulower,
-             REAL uupper,
-             int ustride,
-             int uorder,
-             REAL vlower,
-             REAL vupper,
-             int vstride,
-             int vorder,
-             REAL *ctlPoints);
-
-void inDoDomain2WithDerivsEM(surfEvalMachine *em, REAL u, REAL v, 
-                               REAL *retPoint, REAL *retdu, REAL *retdv);
-void inDoDomain2EM(surfEvalMachine *em, REAL u, REAL v, 
-                               REAL *retPoint);
- void inDoEvalCoord2EM(REAL u, REAL v);
-
-void inBPMEvalEM(bezierPatchMesh* bpm);
-void inBPMListEvalEM(bezierPatchMesh* list);
-
-/*-------------end for surfEvalMachine -------------*/
-
-
-   /*************end for internal evaluators*****************/
-                      
-};
-
-inline void StoredVertex::invoke(OpenGLSurfaceEvaluator *eval)
-{
-    switch(type) {
-      case TYPECOORD:
-       eval->coord2f(coord[0], coord[1]);
-       break;
-      case TYPEPOINT:
-       eval->point2i(point[0], point[1]);
-       break;
-      default:
-       break;
-    }
-}
-
-#endif /* __gluglsurfeval_h_ */
diff --git a/src/glu/sgi/libnurbs/interface/incurveeval.cc b/src/glu/sgi/libnurbs/interface/incurveeval.cc
deleted file mode 100644 (file)
index 96ea889..0000000
+++ /dev/null
@@ -1,206 +0,0 @@
-/*
-** License Applicability. Except to the extent portions of this file are
-** made subject to an alternative license as permitted in the SGI Free
-** Software License B, Version 1.1 (the "License"), the contents of this
-** file are subject only to the provisions of the License. You may not use
-** this file except in compliance with the License. You may obtain a copy
-** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600
-** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:
-** 
-** http://oss.sgi.com/projects/FreeB
-** 
-** Note that, as provided in the License, the Software is distributed on an
-** "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS
-** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND
-** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A
-** PARTICULAR PURPOSE, AND NON-INFRINGEMENT.
-** 
-** Original Code. The Original Code is: OpenGL Sample Implementation,
-** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,
-** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.
-** Copyright in any portions created by third parties is as indicated
-** elsewhere herein. All Rights Reserved.
-** 
-** Additional Notice Provisions: The application programming interfaces
-** established by SGI in conjunction with the Original Code are The
-** OpenGL(R) Graphics System: A Specification (Version 1.2.1), released
-** April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version
-** 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X
-** Window System(R) (Version 1.3), released October 19, 1998. This software
-** was created using the OpenGL(R) version 1.2.1 Sample Implementation
-** published by SGI, but has not been independently verified as being
-** compliant with the OpenGL(R) version 1.2.1 Specification.
-**
-*/
-/*
-*/
-
-#include <stdlib.h>
-#include <stdio.h>
-
-#include "glcurveval.h"
-
-
-/*
- *compute the Bezier polynomials C[n,j](v) for all j at v with 
- *return values stored in coeff[], where 
- *  C[n,j](v) = (n,j) * v^j * (1-v)^(n-j),
- *  j=0,1,2,...,n.
- *order : n+1
- *vprime: v
- *coeff : coeff[j]=C[n,j](v), this array store the returned values.
- *The algorithm is a recursive scheme:
- *   C[0,0]=1;
- *   C[n,j](v) = (1-v)*C[n-1,j](v) + v*C[n-1,j-1](v), n>=1
- *This code is copied from opengl/soft/so_eval.c:PreEvaluate
- */
-void OpenGLCurveEvaluator::inPreEvaluate(int order, REAL vprime, REAL *coeff)
-{
-  int i, j;
-  REAL oldval, temp;
-  REAL oneMinusvprime;
-  
-  /*
-   * Minor optimization
-   * Compute orders 1 and 2 outright, and set coeff[0], coeff[1] to
-     * their i==1 loop values to avoid the initialization and the i==1 loop.
-     */
-  if (order == 1) {
-    coeff[0] = 1.0;
-    return;
-  }
-  
-  oneMinusvprime = 1-vprime;
-  coeff[0] = oneMinusvprime;
-  coeff[1] = vprime;
-  if (order == 2) return;
-  
-  for (i = 2; i < order; i++) {
-    oldval = coeff[0] * vprime;
-    coeff[0] = oneMinusvprime * coeff[0];
-    for (j = 1; j < i; j++) {
-      temp = oldval;
-      oldval = coeff[j] * vprime;
-           coeff[j] = temp + oneMinusvprime * coeff[j];
-    }
-    coeff[j] = oldval;
-  }
-}
-
-void OpenGLCurveEvaluator::inMap1f(int which, //0: vert, 1: norm, 2: color, 3: tex
-                                  int k, //dimension
-                                  REAL ulower,
-                                  REAL uupper,
-                                  int ustride,
-                                  int uorder,
-                                  REAL *ctlpoints)
-{
-  int i,x;
-  curveEvalMachine *temp_em;
-  switch(which){
-  case 0: //vertex
-    vertex_flag = 1;
-    temp_em = &em_vertex;
-    break;
-  case 1: //normal
-    normal_flag = 1;
-    temp_em = &em_normal;
-    break;
-  case 2: //color
-    color_flag = 1;
-    temp_em = &em_color;
-    break;
-  default:
-    texcoord_flag = 1;
-    temp_em = &em_texcoord;
-    break;
-  }
-  
-  REAL *data = temp_em->ctlpoints;
-  temp_em->uprime = -1; //initialized
-  temp_em->k = k;
-  temp_em->u1 = ulower;
-  temp_em->u2 = uupper;
-  temp_em->ustride = ustride;
-  temp_em->uorder = uorder;
-  /*copy the control points*/
-  for(i=0; i<uorder; i++){
-    for(x=0; x<k; x++){
-      data[x] = ctlpoints[x];
-    }
-    ctlpoints += ustride;
-    data += k;
-  }     
-}
-
-void OpenGLCurveEvaluator::inDoDomain1(curveEvalMachine *em, REAL u, REAL *retPoint)
-{
-  int j, row;
-  REAL the_uprime;
-  REAL *data;
-  
-  if(em->u2 == em->u1)
-    return;
-  the_uprime = (u-em->u1) / (em->u2-em->u1);
-  /*use already cached values if possible*/
-  if(em->uprime != the_uprime){
-    inPreEvaluate(em->uorder, the_uprime, em->ucoeff);
-    em->uprime = the_uprime;
-  }
-  
-  for(j=0; j<em->k; j++){
-    data = em->ctlpoints+j;
-    retPoint[j] = 0.0;
-    for(row=0; row<em->uorder; row++)
-      {
-       retPoint[j] += em->ucoeff[row] * (*data);
-       data += em->k;
-      }
-  } 
-}
-
-void  OpenGLCurveEvaluator::inDoEvalCoord1(REAL u)
-{
-  REAL temp_vertex[4];
-  REAL temp_normal[3];
-  REAL temp_color[4];
-  REAL temp_texcoord[4];
-  if(texcoord_flag) //there is a texture map
-    {
-      inDoDomain1(&em_texcoord, u, temp_texcoord);
-      texcoordCallBack(temp_texcoord, userData);
-    }
-#ifdef DEBUG
-printf("color_flag = %i\n", color_flag);
-#endif
-  if(color_flag) //there is a color map
-    {
-      inDoDomain1(&em_color, u, temp_color);
-      colorCallBack(temp_color, userData);
-    }
-  if(normal_flag) //there is a normal map
-    {
-      inDoDomain1(&em_normal, u, temp_normal);
-      normalCallBack(temp_normal, userData);
-    }
-  if(vertex_flag)
-    {
-      inDoDomain1(&em_vertex, u, temp_vertex);
-      vertexCallBack(temp_vertex, userData);
-    }
-}
-
-void OpenGLCurveEvaluator::inMapMesh1f(int umin, int umax)
-{
-  REAL du, u;
-  int i;
-  if(global_grid_nu == 0)
-    return; //no points to output
-  du = (global_grid_u1 - global_grid_u0) / (REAL) global_grid_nu;
-  bgnline();
-  for(i=umin; i<= umax; i++){
-    u = (i==global_grid_nu)? global_grid_u1: global_grid_u0 + i*du;
-    inDoEvalCoord1(u);
-  }
-  endline();
-}
diff --git a/src/glu/sgi/libnurbs/interface/insurfeval.cc b/src/glu/sgi/libnurbs/interface/insurfeval.cc
deleted file mode 100644 (file)
index 9d0c82a..0000000
+++ /dev/null
@@ -1,2064 +0,0 @@
-/*
-** License Applicability. Except to the extent portions of this file are
-** made subject to an alternative license as permitted in the SGI Free
-** Software License B, Version 1.1 (the "License"), the contents of this
-** file are subject only to the provisions of the License. You may not use
-** this file except in compliance with the License. You may obtain a copy
-** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600
-** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:
-** 
-** http://oss.sgi.com/projects/FreeB
-** 
-** Note that, as provided in the License, the Software is distributed on an
-** "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS
-** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND
-** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A
-** PARTICULAR PURPOSE, AND NON-INFRINGEMENT.
-** 
-** Original Code. The Original Code is: OpenGL Sample Implementation,
-** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,
-** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.
-** Copyright in any portions created by third parties is as indicated
-** elsewhere herein. All Rights Reserved.
-** 
-** Additional Notice Provisions: The application programming interfaces
-** established by SGI in conjunction with the Original Code are The
-** OpenGL(R) Graphics System: A Specification (Version 1.2.1), released
-** April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version
-** 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X
-** Window System(R) (Version 1.3), released October 19, 1998. This software
-** was created using the OpenGL(R) version 1.2.1 Sample Implementation
-** published by SGI, but has not been independently verified as being
-** compliant with the OpenGL(R) version 1.2.1 Specification.
-**
-*/
-/*
-*/
-
-#include "gluos.h"
-#include <stdlib.h>
-#include <stdio.h>
-#include <GL/gl.h>
-#include <math.h>
-#include <assert.h>
-
-#include "glsurfeval.h"
-
-//extern int surfcount;
-
-//#define CRACK_TEST
-
-#define AVOID_ZERO_NORMAL
-
-#ifdef AVOID_ZERO_NORMAL
-#define myabs(x)  ((x>0)? x: (-x))
-#define MYZERO 0.000001
-#define MYDELTA 0.001
-#endif
-
-//#define USE_LOD
-#ifdef USE_LOD
-//#define LOD_EVAL_COORD(u,v) inDoEvalCoord2EM(u,v)
-#define LOD_EVAL_COORD(u,v) glEvalCoord2f(u,v)
-
-static void LOD_interpolate(REAL A[2], REAL B[2], REAL C[2], int j, int k, int pow2_level,
-                           REAL& u, REAL& v)
-{
-  REAL a,a1,b,b1;
-
-  a = ((REAL) j) / ((REAL) pow2_level);
-  a1 = 1-a;
-
-  if(j != 0)
-    {
-      b = ((REAL) k) / ((REAL)j);
-      b1 = 1-b;
-    }
-  REAL x,y,z;
-  x = a1;
-  if(j==0)
-    {
-      y=0; z=0;
-    }
-  else{
-    y = b1*a;
-    z = b *a;
-  }
-
-  u = x*A[0] + y*B[0] + z*C[0];
-  v = x*A[1] + y*B[1] + z*C[1];
-}
-
-void OpenGLSurfaceEvaluator::LOD_triangle(REAL A[2], REAL B[2], REAL C[2], 
-                        int level)     
-{
-  int k,j;
-  int pow2_level;
-  /*compute 2^level*/
-  pow2_level = 1;
-
-  for(j=0; j<level; j++)
-    pow2_level *= 2;
-  for(j=0; j<=pow2_level-1; j++)
-    {
-      REAL u,v;
-
-/*      beginCallBack(GL_TRIANGLE_STRIP);*/
-glBegin(GL_TRIANGLE_STRIP);
-      LOD_interpolate(A,B,C, j+1, j+1, pow2_level, u,v);
-#ifdef USE_LOD
-      LOD_EVAL_COORD(u,v);
-//      glEvalCoord2f(u,v);
-#else
-      inDoEvalCoord2EM(u,v);
-#endif
-
-      for(k=0; k<=j; k++)
-       {
-         LOD_interpolate(A,B,C,j,j-k,pow2_level, u,v);
-#ifdef USE_LOD
-          LOD_EVAL_COORD(u,v);
-//       glEvalCoord2f(u,v);
-#else
-         inDoEvalCoord2EM(u,v);
-#endif
-
-         LOD_interpolate(A,B,C,j+1,j-k,pow2_level, u,v);
-
-#ifdef USE_LOD
-         LOD_EVAL_COORD(u,v);
-//       glEvalCoord2f(u,v);
-#else
-         inDoEvalCoord2EM(u,v);
-#endif
-       }
-//      endCallBack(); 
-glEnd();
-    }
-}
-
-void OpenGLSurfaceEvaluator::LOD_eval(int num_vert, REAL* verts, int type,
-                    int level
-                    )
-{
-  int i,k;
-  switch(type){
-  case GL_TRIANGLE_STRIP:
-  case GL_QUAD_STRIP:
-    for(i=2, k=4; i<=num_vert-2; i+=2, k+=4)
-      {
-       LOD_triangle(verts+k-4, verts+k-2, verts+k,
-                    level
-                    );
-       LOD_triangle(verts+k-2, verts+k+2, verts+k,
-                    level
-                    );
-      }
-    if(num_vert % 2 ==1) 
-      {
-       LOD_triangle(verts+2*(num_vert-3), verts+2*(num_vert-2), verts+2*(num_vert-1),
-                    level
-                    );
-      }
-    break;      
-  case GL_TRIANGLE_FAN:
-    for(i=1, k=2; i<=num_vert-2; i++, k+=2)
-      {
-       LOD_triangle(verts,verts+k, verts+k+2,
-                    level
-                    );
-      }
-    break;
-  
-  default:
-    fprintf(stderr, "typy not supported in LOD_\n");
-  }
-}
-       
-
-#endif //USE_LOD
-
-//#define  GENERIC_TEST
-#ifdef GENERIC_TEST
-extern float xmin, xmax, ymin, ymax, zmin, zmax; /*bounding box*/
-extern int temp_signal;
-
-static void gTessVertexSphere(float u, float v, float temp_normal[3], float temp_vertex[3])
-{
-  float r=2.0;
-  float Ox = 0.5*(xmin+xmax);
-  float Oy = 0.5*(ymin+ymax);
-  float Oz = 0.5*(zmin+zmax);
-  float nx = cos(v) * sin(u);
-  float ny = sin(v) * sin(u);
-  float nz = cos(u);
-  float x= Ox+r * nx;
-  float y= Oy+r * ny;
-  float z= Oz+r * nz;
-
-  temp_normal[0] = nx;
-  temp_normal[1] = ny;
-  temp_normal[2] =  nz;
-  temp_vertex[0] = x;
-  temp_vertex[1] = y;
-  temp_vertex[2] = z;
-
-//  glNormal3f(nx,ny,nz);
-//  glVertex3f(x,y,z);
-}
-
-static void gTessVertexCyl(float u, float v, float temp_normal[3], float temp_vertex[3])
-{
-   float r=2.0;
-  float Ox = 0.5*(xmin+xmax);
-  float Oy = 0.5*(ymin+ymax);
-  float Oz = 0.5*(zmin+zmax);
-  float nx = cos(v);
-  float ny = sin(v);
-  float nz = 0;
-  float x= Ox+r * nx;
-  float y= Oy+r * ny;
-  float z= Oz - 2*u;
-
-  temp_normal[0] = nx;
-  temp_normal[1] = ny;
-  temp_normal[2] =  nz;
-  temp_vertex[0] = x;
-  temp_vertex[1] = y;
-  temp_vertex[2] = z;
-
-/*  
-  glNormal3f(nx,ny,nz);
-  glVertex3f(x,y,z);
-*/
-}
-
-#endif //GENERIC_TEST
-
-void OpenGLSurfaceEvaluator::inBPMListEval(bezierPatchMesh* list)
-{
-  bezierPatchMesh* temp;
-  for(temp = list; temp != NULL; temp = temp->next)
-    {
-      inBPMEval(temp);
-    }
-}
-
-void OpenGLSurfaceEvaluator::inBPMEval(bezierPatchMesh* bpm)
-{
-  int i,j,k,l;
-  float u,v;
-
-  int ustride = bpm->bpatch->dimension * bpm->bpatch->vorder;
-  int vstride = bpm->bpatch->dimension;
-  inMap2f( 
-         (bpm->bpatch->dimension == 3)? GL_MAP2_VERTEX_3 : GL_MAP2_VERTEX_4,
-         bpm->bpatch->umin,
-         bpm->bpatch->umax,
-         ustride,
-         bpm->bpatch->uorder,
-         bpm->bpatch->vmin,
-         bpm->bpatch->vmax,
-         vstride,
-         bpm->bpatch->vorder,
-         bpm->bpatch->ctlpoints);
-  
-  bpm->vertex_array = (float*) malloc(sizeof(float)* (bpm->index_UVarray/2) * 3+1); /*in case the origional dimenion is 4, then we need 4 space to pass to evaluator.*/
-  assert(bpm->vertex_array);
-  bpm->normal_array = (float*) malloc(sizeof(float)* (bpm->index_UVarray/2) * 3);
-  assert(bpm->normal_array);
-#ifdef CRACK_TEST
-if(  global_ev_u1 ==2 &&   global_ev_u2 == 3
-  && global_ev_v1 ==2 &&   global_ev_v2 == 3)
-{
-REAL vertex[4];
-REAL normal[4];
-#ifdef DEBUG
-printf("***number 1\n");
-#endif
-
-beginCallBack(GL_QUAD_STRIP, NULL);
-inEvalCoord2f(3.0, 3.0);
-inEvalCoord2f(2.0, 3.0);
-inEvalCoord2f(3.0, 2.7);
-inEvalCoord2f(2.0, 2.7);
-inEvalCoord2f(3.0, 2.0);
-inEvalCoord2f(2.0, 2.0);
-endCallBack(NULL);
-
-
-beginCallBack(GL_TRIANGLE_STRIP, NULL);
-inEvalCoord2f(2.0, 3.0);
-inEvalCoord2f(2.0, 2.0);
-inEvalCoord2f(2.0, 2.7);
-endCallBack(NULL);
-
-}
-
-/*
-if(  global_ev_u1 ==2 &&   global_ev_u2 == 3
-  && global_ev_v1 ==1 &&   global_ev_v2 == 2)
-{
-#ifdef DEBUG
-printf("***number 2\n");
-#endif
-beginCallBack(GL_QUAD_STRIP);
-inEvalCoord2f(2.0, 2.0);
-inEvalCoord2f(2.0, 1.0);
-inEvalCoord2f(3.0, 2.0);
-inEvalCoord2f(3.0, 1.0);
-endCallBack();
-}
-*/
-if(  global_ev_u1 ==1 &&   global_ev_u2 == 2
-  && global_ev_v1 ==2 &&   global_ev_v2 == 3)
-{
-#ifdef DEBUG
-printf("***number 3\n");
-#endif
-beginCallBack(GL_QUAD_STRIP, NULL);
-inEvalCoord2f(2.0, 3.0);
-inEvalCoord2f(1.0, 3.0);
-inEvalCoord2f(2.0, 2.3);
-inEvalCoord2f(1.0, 2.3);
-inEvalCoord2f(2.0, 2.0);
-inEvalCoord2f(1.0, 2.0);
-endCallBack(NULL);
-
-beginCallBack(GL_TRIANGLE_STRIP, NULL);
-inEvalCoord2f(2.0, 2.3);
-inEvalCoord2f(2.0, 2.0);
-inEvalCoord2f(2.0, 3.0);
-endCallBack(NULL);
-
-}
-return;
-#endif
-
-  k=0;
-  l=0;
-
-  for(i=0; i<bpm->index_length_array; i++)
-    {
-      beginCallBack(bpm->type_array[i], userData);
-      for(j=0; j<bpm->length_array[i]; j++)
-       {
-         u = bpm->UVarray[k];
-         v = bpm->UVarray[k+1];
-         inDoEvalCoord2NOGE(u,v,
-                            bpm->vertex_array+l,
-                            bpm->normal_array+l);
-
-         normalCallBack(bpm->normal_array+l, userData);
-         vertexCallBack(bpm->vertex_array+l, userData);
-
-         k += 2;
-         l += 3;
-       }
-      endCallBack(userData);
-    }
-}
-
-void OpenGLSurfaceEvaluator::inEvalPoint2(int i, int j)
-{
-  REAL du, dv;
-  REAL point[4];
-  REAL normal[3];
-  REAL u,v;
-  du = (global_grid_u1 - global_grid_u0) / (REAL)global_grid_nu;
-  dv = (global_grid_v1 - global_grid_v0) / (REAL)global_grid_nv;
-  u = (i==global_grid_nu)? global_grid_u1:(global_grid_u0 + i*du);
-  v = (j == global_grid_nv)? global_grid_v1: (global_grid_v0 +j*dv);
-  inDoEvalCoord2(u,v,point,normal);
-}
-
-void OpenGLSurfaceEvaluator::inEvalCoord2f(REAL u, REAL v)
-{
-
-  REAL point[4];
-  REAL normal[3];
-  inDoEvalCoord2(u,v,point, normal);
-}
-
-
-
-/*define a grid. store the values into the global variabls:
- * global_grid_*
- *These values will be used later by evaluating functions
- */
-void OpenGLSurfaceEvaluator::inMapGrid2f(int nu, REAL u0, REAL u1,
-                int nv, REAL v0, REAL v1)
-{
- global_grid_u0 = u0;
- global_grid_u1 = u1;
- global_grid_nu = nu;
- global_grid_v0 = v0;
- global_grid_v1 = v1;
- global_grid_nv = nv;
-}
-
-void OpenGLSurfaceEvaluator::inEvalMesh2(int lowU, int lowV, int highU, int highV)
-{
-  REAL du, dv;
-  int i,j;
-  REAL point[4];
-  REAL normal[3];
-  if(global_grid_nu == 0 || global_grid_nv == 0)
-    return; /*no points need to be output*/
-  du = (global_grid_u1 - global_grid_u0) / (REAL)global_grid_nu;
-  dv = (global_grid_v1 - global_grid_v0) / (REAL)global_grid_nv;  
-  
-  if(global_grid_nu >= global_grid_nv){
-    for(i=lowU; i<highU; i++){
-      REAL u1 = (i==global_grid_nu)? global_grid_u1:(global_grid_u0 + i*du);
-      REAL u2 = ((i+1) == global_grid_nu)? global_grid_u1: (global_grid_u0+(i+1)*du);
-      
-      bgnqstrip();
-      for(j=highV; j>=lowV; j--){
-       REAL v1 = (j == global_grid_nv)? global_grid_v1: (global_grid_v0 +j*dv);
-       
-       inDoEvalCoord2(u1, v1, point, normal);
-       inDoEvalCoord2(u2, v1, point, normal);
-      }
-      endqstrip();
-    }
-  }
-  
-  else{
-    for(i=lowV; i<highV; i++){
-      REAL v1 = (i==global_grid_nv)? global_grid_v1:(global_grid_v0 + i*dv);
-      REAL v2 = ((i+1) == global_grid_nv)? global_grid_v1: (global_grid_v0+(i+1)*dv);
-      
-      bgnqstrip();
-      for(j=highU; j>=lowU; j--){
-       REAL u1 = (j == global_grid_nu)? global_grid_u1: (global_grid_u0 +j*du);        
-       inDoEvalCoord2(u1, v2, point, normal);
-       inDoEvalCoord2(u1, v1, point, normal);
-      }
-      endqstrip();
-    }
-  }
-    
-}
-
-void OpenGLSurfaceEvaluator::inMap2f(int k,
-            REAL ulower,
-            REAL uupper,
-            int ustride,
-            int uorder,
-            REAL vlower,
-            REAL vupper,
-            int vstride,
-            int vorder,
-            REAL *ctlPoints)
-{
-  int i,j,x;
-  REAL *data = global_ev_ctlPoints;
-  
-
-
-  if(k == GL_MAP2_VERTEX_3) k=3;
-  else if (k==GL_MAP2_VERTEX_4) k =4;
-  else {
-    printf("error in inMap2f, maptype=%i is wrong, k,map is not updated\n", k);
-    return;
-  }
-  
-  global_ev_k = k;
-  global_ev_u1 = ulower;
-  global_ev_u2 = uupper;
-  global_ev_ustride = ustride;
-  global_ev_uorder = uorder;
-  global_ev_v1 = vlower;
-  global_ev_v2 = vupper;
-  global_ev_vstride = vstride;
-  global_ev_vorder = vorder;
-
-  /*copy the contrl points from ctlPoints to global_ev_ctlPoints*/
-  for (i=0; i<uorder; i++) {
-    for (j=0; j<vorder; j++) {
-      for (x=0; x<k; x++) {
-       data[x] = ctlPoints[x];
-      }
-      ctlPoints += vstride;
-      data += k;
-    }
-    ctlPoints += ustride - vstride * vorder;
-  }
-
-}
-
-
-/*
- *given a point p with homegeneous coordiante (x,y,z,w), 
- *let pu(x,y,z,w) be its partial derivative vector with
- *respect to u
- *and pv(x,y,z,w) be its partial derivative vector with repect to v.
- *This function returns the partial derivative vectors of the
- *inhomegensous coordinates, i.e., 
- * (x/w, y/w, z/w) with respect to u and v.
- */
-void OpenGLSurfaceEvaluator::inComputeFirstPartials(REAL *p, REAL *pu, REAL *pv)
-{
-    pu[0] = pu[0]*p[3] - pu[3]*p[0];
-    pu[1] = pu[1]*p[3] - pu[3]*p[1];
-    pu[2] = pu[2]*p[3] - pu[3]*p[2];
-
-    pv[0] = pv[0]*p[3] - pv[3]*p[0];
-    pv[1] = pv[1]*p[3] - pv[3]*p[1];
-    pv[2] = pv[2]*p[3] - pv[3]*p[2];
-}
-
-/*compute the cross product of pu and pv and normalize.
- *the normal is returned in retNormal
- * pu: dimension 3
- * pv: dimension 3
- * n: return normal, of dimension 3
- */
-void OpenGLSurfaceEvaluator::inComputeNormal2(REAL *pu, REAL *pv, REAL *n)
-{
-  REAL mag; 
-
-  n[0] = pu[1]*pv[2] - pu[2]*pv[1];
-  n[1] = pu[2]*pv[0] - pu[0]*pv[2];
-  n[2] = pu[0]*pv[1] - pu[1]*pv[0];  
-
-  mag = sqrt(n[0]*n[0] + n[1]*n[1] + n[2]*n[2]);
-
-  if (mag > 0.0) {
-     n[0] /= mag; 
-     n[1] /= mag;
-     n[2] /= mag;
-  }
-}
-
-
-/*Compute point and normal
- *see the head of inDoDomain2WithDerivs
- *for the meaning of the arguments
- */
-void OpenGLSurfaceEvaluator::inDoEvalCoord2(REAL u, REAL v,
-                          REAL *retPoint, REAL *retNormal)
-{
-
-  REAL du[4];
-  REAL dv[4];
-
-  assert(global_ev_k>=3 && global_ev_k <= 4);
-  /*compute homegeneous point and partial derivatives*/
-  inDoDomain2WithDerivs(global_ev_k, u, v, global_ev_u1, global_ev_u2, global_ev_uorder, global_ev_v1, global_ev_v2, global_ev_vorder, global_ev_ctlPoints, retPoint, du, dv);
-
-#ifdef AVOID_ZERO_NORMAL
-
-  if(myabs(dv[0]) <= MYZERO && myabs(dv[1]) <= MYZERO && myabs(dv[2]) <= MYZERO)
-    {
-
-      REAL tempdu[4];
-      REAL tempdata[4];
-      REAL u1 = global_ev_u1;
-      REAL u2 = global_ev_u2;
-      if(u-MYDELTA*(u2-u1) < u1)
-       u = u+ MYDELTA*(u2-u1);
-      else
-       u = u-MYDELTA*(u2-u1);
-      inDoDomain2WithDerivs(global_ev_k, u,v,global_ev_u1, global_ev_u2, global_ev_uorder, global_ev_v1, global_ev_v2, global_ev_vorder, global_ev_ctlPoints, tempdata, tempdu, dv);
-    }
-  if(myabs(du[0]) <= MYZERO && myabs(du[1]) <= MYZERO && myabs(du[2]) <= MYZERO)
-    {
-      REAL tempdv[4];
-      REAL tempdata[4];
-      REAL v1 = global_ev_v1;
-      REAL v2 = global_ev_v2;
-      if(v-MYDELTA*(v2-v1) < v1)
-       v = v+ MYDELTA*(v2-v1);
-      else
-       v = v-MYDELTA*(v2-v1);
-      inDoDomain2WithDerivs(global_ev_k, u,v,global_ev_u1, global_ev_u2, global_ev_uorder, global_ev_v1, global_ev_v2, global_ev_vorder, global_ev_ctlPoints, tempdata, du, tempdv);
-    }
-#endif
-
-
-  /*compute normal*/
-  switch(global_ev_k){
-  case 3:
-    inComputeNormal2(du, dv, retNormal);
-
-    break;
-  case 4:
-    inComputeFirstPartials(retPoint, du, dv);
-    inComputeNormal2(du, dv, retNormal);
-    /*transform the homegeneous coordinate of retPoint into inhomogenous one*/
-    retPoint[0] /= retPoint[3];
-    retPoint[1] /= retPoint[3];
-    retPoint[2] /= retPoint[3];
-    break;
-  }
-  /*output this vertex*/
-/*  inMeshStreamInsert(global_ms, retPoint, retNormal);*/
-
-
-
-  glNormal3fv(retNormal);
-  glVertex3fv(retPoint);
-
-
-
-
-  #ifdef DEBUG
-  printf("vertex(%f,%f,%f)\n", retPoint[0],retPoint[1],retPoint[2]);
-  #endif
-  
-
-
-}
-
-/*Compute point and normal
- *see the head of inDoDomain2WithDerivs
- *for the meaning of the arguments
- */
-void OpenGLSurfaceEvaluator::inDoEvalCoord2NOGE_BU(REAL u, REAL v,
-                          REAL *retPoint, REAL *retNormal)
-{
-
-  REAL du[4];
-  REAL dv[4];
-
-  assert(global_ev_k>=3 && global_ev_k <= 4);
-  /*compute homegeneous point and partial derivatives*/
-//   inPreEvaluateBU(global_ev_k, global_ev_uorder, global_ev_vorder, (u-global_ev_u1)/(global_ev_u2-global_ev_u1), global_ev_ctlPoints);
-  inDoDomain2WithDerivsBU(global_ev_k, u, v, global_ev_u1, global_ev_u2, global_ev_uorder, global_ev_v1, global_ev_v2, global_ev_vorder, global_ev_ctlPoints, retPoint, du, dv);
-
-
-#ifdef AVOID_ZERO_NORMAL
-
-  if(myabs(dv[0]) <= MYZERO && myabs(dv[1]) <= MYZERO && myabs(dv[2]) <= MYZERO)
-    {
-
-      REAL tempdu[4];
-      REAL tempdata[4];
-      REAL u1 = global_ev_u1;
-      REAL u2 = global_ev_u2;
-      if(u-MYDELTA*(u2-u1) < u1)
-       u = u+ MYDELTA*(u2-u1);
-      else
-       u = u-MYDELTA*(u2-u1);
-      inDoDomain2WithDerivs(global_ev_k, u,v,global_ev_u1, global_ev_u2, global_ev_uorder, global_ev_v1, global_ev_v2, global_ev_vorder, global_ev_ctlPoints, tempdata, tempdu, dv);
-    }
-  if(myabs(du[0]) <= MYZERO && myabs(du[1]) <= MYZERO && myabs(du[2]) <= MYZERO)
-    {
-      REAL tempdv[4];
-      REAL tempdata[4];
-      REAL v1 = global_ev_v1;
-      REAL v2 = global_ev_v2;
-      if(v-MYDELTA*(v2-v1) < v1)
-       v = v+ MYDELTA*(v2-v1);
-      else
-       v = v-MYDELTA*(v2-v1);
-      inDoDomain2WithDerivs(global_ev_k, u,v,global_ev_u1, global_ev_u2, global_ev_uorder, global_ev_v1, global_ev_v2, global_ev_vorder, global_ev_ctlPoints, tempdata, du, tempdv);
-    }
-#endif
-
-  /*compute normal*/
-  switch(global_ev_k){
-  case 3:
-    inComputeNormal2(du, dv, retNormal);
-    break;
-  case 4:
-    inComputeFirstPartials(retPoint, du, dv);
-    inComputeNormal2(du, dv, retNormal);
-    /*transform the homegeneous coordinate of retPoint into inhomogenous one*/
-    retPoint[0] /= retPoint[3];
-    retPoint[1] /= retPoint[3];
-    retPoint[2] /= retPoint[3];
-    break;
-  }
-}
-
-/*Compute point and normal
- *see the head of inDoDomain2WithDerivs
- *for the meaning of the arguments
- */
-void OpenGLSurfaceEvaluator::inDoEvalCoord2NOGE_BV(REAL u, REAL v,
-                          REAL *retPoint, REAL *retNormal)
-{
-
-  REAL du[4];
-  REAL dv[4];
-
-  assert(global_ev_k>=3 && global_ev_k <= 4);
-  /*compute homegeneous point and partial derivatives*/
-//   inPreEvaluateBV(global_ev_k, global_ev_uorder, global_ev_vorder, (v-global_ev_v1)/(global_ev_v2-global_ev_v1), global_ev_ctlPoints);
-
-  inDoDomain2WithDerivsBV(global_ev_k, u, v, global_ev_u1, global_ev_u2, global_ev_uorder, global_ev_v1, global_ev_v2, global_ev_vorder, global_ev_ctlPoints, retPoint, du, dv);
-
-
-#ifdef AVOID_ZERO_NORMAL
-
-  if(myabs(dv[0]) <= MYZERO && myabs(dv[1]) <= MYZERO && myabs(dv[2]) <= MYZERO)
-    {
-
-      REAL tempdu[4];
-      REAL tempdata[4];
-      REAL u1 = global_ev_u1;
-      REAL u2 = global_ev_u2;
-      if(u-MYDELTA*(u2-u1) < u1)
-       u = u+ MYDELTA*(u2-u1);
-      else
-       u = u-MYDELTA*(u2-u1);
-      inDoDomain2WithDerivs(global_ev_k, u,v,global_ev_u1, global_ev_u2, global_ev_uorder, global_ev_v1, global_ev_v2, global_ev_vorder, global_ev_ctlPoints, tempdata, tempdu, dv);
-    }
-  if(myabs(du[0]) <= MYZERO && myabs(du[1]) <= MYZERO && myabs(du[2]) <= MYZERO)
-    {
-      REAL tempdv[4];
-      REAL tempdata[4];
-      REAL v1 = global_ev_v1;
-      REAL v2 = global_ev_v2;
-      if(v-MYDELTA*(v2-v1) < v1)
-       v = v+ MYDELTA*(v2-v1);
-      else
-       v = v-MYDELTA*(v2-v1);
-      inDoDomain2WithDerivs(global_ev_k, u,v,global_ev_u1, global_ev_u2, global_ev_uorder, global_ev_v1, global_ev_v2, global_ev_vorder, global_ev_ctlPoints, tempdata, du, tempdv);
-    }
-#endif
-
-  /*compute normal*/
-  switch(global_ev_k){
-  case 3:
-    inComputeNormal2(du, dv, retNormal);
-    break;
-  case 4:
-    inComputeFirstPartials(retPoint, du, dv);
-    inComputeNormal2(du, dv, retNormal);
-    /*transform the homegeneous coordinate of retPoint into inhomogenous one*/
-    retPoint[0] /= retPoint[3];
-    retPoint[1] /= retPoint[3];
-    retPoint[2] /= retPoint[3];
-    break;
-  }
-}
-
-/*Compute point and normal
- *see the head of inDoDomain2WithDerivs
- *for the meaning of the arguments
- */
-void OpenGLSurfaceEvaluator::inDoEvalCoord2NOGE(REAL u, REAL v,
-                          REAL *retPoint, REAL *retNormal)
-{
-
-  REAL du[4];
-  REAL dv[4];
-
-  assert(global_ev_k>=3 && global_ev_k <= 4);
-  /*compute homegeneous point and partial derivatives*/
-  inDoDomain2WithDerivs(global_ev_k, u, v, global_ev_u1, global_ev_u2, global_ev_uorder, global_ev_v1, global_ev_v2, global_ev_vorder, global_ev_ctlPoints, retPoint, du, dv);
-
-
-#ifdef AVOID_ZERO_NORMAL
-
-  if(myabs(dv[0]) <= MYZERO && myabs(dv[1]) <= MYZERO && myabs(dv[2]) <= MYZERO)
-    {
-
-      REAL tempdu[4];
-      REAL tempdata[4];
-      REAL u1 = global_ev_u1;
-      REAL u2 = global_ev_u2;
-      if(u-MYDELTA*(u2-u1) < u1)
-       u = u+ MYDELTA*(u2-u1);
-      else
-       u = u-MYDELTA*(u2-u1);
-      inDoDomain2WithDerivs(global_ev_k, u,v,global_ev_u1, global_ev_u2, global_ev_uorder, global_ev_v1, global_ev_v2, global_ev_vorder, global_ev_ctlPoints, tempdata, tempdu, dv);
-    }
-  if(myabs(du[0]) <= MYZERO && myabs(du[1]) <= MYZERO && myabs(du[2]) <= MYZERO)
-    {
-      REAL tempdv[4];
-      REAL tempdata[4];
-      REAL v1 = global_ev_v1;
-      REAL v2 = global_ev_v2;
-      if(v-MYDELTA*(v2-v1) < v1)
-       v = v+ MYDELTA*(v2-v1);
-      else
-       v = v-MYDELTA*(v2-v1);
-      inDoDomain2WithDerivs(global_ev_k, u,v,global_ev_u1, global_ev_u2, global_ev_uorder, global_ev_v1, global_ev_v2, global_ev_vorder, global_ev_ctlPoints, tempdata, du, tempdv);
-    }
-#endif
-
-  /*compute normal*/
-  switch(global_ev_k){
-  case 3:
-    inComputeNormal2(du, dv, retNormal);
-    break;
-  case 4:
-    inComputeFirstPartials(retPoint, du, dv);
-    inComputeNormal2(du, dv, retNormal);
-    /*transform the homegeneous coordinate of retPoint into inhomogenous one*/
-    retPoint[0] /= retPoint[3];
-    retPoint[1] /= retPoint[3];
-    retPoint[2] /= retPoint[3];
-    break;
-  }
-//  glNormal3fv(retNormal);
-//  glVertex3fv(retPoint);
-}
-void OpenGLSurfaceEvaluator::inPreEvaluateBV(int k, int uorder, int vorder, REAL vprime, REAL *baseData)
-{
-  int j,row,col;
-  REAL p, pdv;
-  REAL *data;
-
-  if(global_vprime != vprime || global_vorder != vorder) {      
-    inPreEvaluateWithDeriv(vorder, vprime, global_vcoeff, global_vcoeffDeriv);
-    global_vprime = vprime;
-    global_vorder = vorder;
-  }
-
-  for(j=0; j<k; j++){
-    data = baseData+j;
-    for(row=0; row<uorder; row++){
-      p = global_vcoeff[0] * (*data);
-      pdv = global_vcoeffDeriv[0] * (*data);
-      data += k;
-      for(col = 1; col < vorder; col++){
-       p += global_vcoeff[col] *  (*data);
-       pdv += global_vcoeffDeriv[col] * (*data);
-       data += k;
-      }
-      global_BV[row][j]  = p;
-      global_PBV[row][j]  = pdv;
-    }
-  }
-}
-
-void OpenGLSurfaceEvaluator::inPreEvaluateBU(int k, int uorder, int vorder, REAL uprime, REAL *baseData)
-{
-  int j,row,col;
-  REAL p, pdu;
-  REAL *data;
-
-  if(global_uprime != uprime || global_uorder != uorder) {      
-    inPreEvaluateWithDeriv(uorder, uprime, global_ucoeff, global_ucoeffDeriv);
-    global_uprime = uprime;
-    global_uorder = uorder;
-  }
-
-  for(j=0; j<k; j++){
-    data = baseData+j;
-    for(col=0; col<vorder; col++){
-      data = baseData+j + k*col;
-      p = global_ucoeff[0] * (*data);
-      pdu = global_ucoeffDeriv[0] * (*data);
-      data += k*uorder;
-      for(row = 1; row < uorder; row++){
-       p += global_ucoeff[row] *  (*data);
-       pdu += global_ucoeffDeriv[row] * (*data);
-       data += k * uorder;
-      }
-      global_BU[col][j]  = p;
-      global_PBU[col][j]  = pdu;
-    }
-  }
-}
-void OpenGLSurfaceEvaluator::inDoDomain2WithDerivsBU(int k, REAL u, REAL v,
-                                                     REAL u1, REAL u2, int uorder,
-                                                     REAL v1, REAL v2, int vorder,
-                                                     REAL *baseData,
-                                                     REAL *retPoint, REAL* retdu, REAL *retdv)
-{
-  int j, col;
-
-  REAL vprime;
-
-
-  if((u2 == u1) || (v2 == v1))
-    return;
-
-  vprime = (v - v1) / (v2 - v1);
-
-
-  if(global_vprime != vprime || global_vorder != vorder) {
-    inPreEvaluateWithDeriv(vorder, vprime, global_vcoeff, global_vcoeffDeriv);
-    global_vprime = vprime;
-    global_vorder = vorder;
-  }
-
-
-  for(j=0; j<k; j++)
-    {
-      retPoint[j] = retdu[j] = retdv[j] = 0.0;
-      for (col = 0; col < vorder; col++)  {
-       retPoint[j] += global_BU[col][j] * global_vcoeff[col];
-       retdu[j] += global_PBU[col][j] * global_vcoeff[col];
-       retdv[j] += global_BU[col][j] * global_vcoeffDeriv[col];
-      }
-    }
-}    
-   
-void OpenGLSurfaceEvaluator::inDoDomain2WithDerivsBV(int k, REAL u, REAL v,
-                                                     REAL u1, REAL u2, int uorder,
-                                                     REAL v1, REAL v2, int vorder,
-                                                     REAL *baseData,
-                                                     REAL *retPoint, REAL* retdu, REAL *retdv)
-{
-  int j, row;
-  REAL uprime;
-
-
-  if((u2 == u1) || (v2 == v1))
-    return;
-  uprime = (u - u1) / (u2 - u1);
-
-
-  if(global_uprime != uprime || global_uorder != uorder) {
-    inPreEvaluateWithDeriv(uorder, uprime, global_ucoeff, global_ucoeffDeriv);
-    global_uprime = uprime;
-    global_uorder = uorder;
-  }
-
-
-  for(j=0; j<k; j++)
-    {
-      retPoint[j] = retdu[j] = retdv[j] = 0.0;
-      for (row = 0; row < uorder; row++)  {
-       retPoint[j] += global_BV[row][j] * global_ucoeff[row];
-       retdu[j] += global_BV[row][j] * global_ucoeffDeriv[row];
-       retdv[j] += global_PBV[row][j] * global_ucoeff[row];
-      }
-    }
-}
-  
-
-/*
- *given a Bezier surface, and parameter (u,v), compute the point in the object space,
- *and the normal
- *k: the dimension of the object space: usually 2,3,or 4.
- *u,v: the paramter pair.
- *u1,u2,uorder: the Bezier polynomial of u coord is defined on [u1,u2] with order uorder.
- *v1,v2,vorder: the Bezier polynomial of v coord is defined on [v1,v2] with order vorder.
- *baseData: contrl points. arranged as: (u,v,k).
- *retPoint:  the computed point (one point) with dimension k.
- *retdu: the computed partial derivative with respect to u.
- *retdv: the computed partial derivative with respect to v.
- */
-void OpenGLSurfaceEvaluator::inDoDomain2WithDerivs(int k, REAL u, REAL v, 
-                               REAL u1, REAL u2, int uorder, 
-                               REAL v1,  REAL v2, int vorder, 
-                               REAL *baseData,
-                               REAL *retPoint, REAL *retdu, REAL *retdv)
-{
-    int j, row, col;
-    REAL uprime;
-    REAL vprime;
-    REAL p;
-    REAL pdv;
-    REAL *data;
-
-    if((u2 == u1) || (v2 == v1))
-       return;
-    uprime = (u - u1) / (u2 - u1);
-    vprime = (v - v1) / (v2 - v1);
-    
-    /* Compute coefficients for values and derivs */
-
-    /* Use already cached values if possible */
-    if(global_uprime != uprime || global_uorder != uorder) {
-        inPreEvaluateWithDeriv(uorder, uprime, global_ucoeff, global_ucoeffDeriv);
-       global_uorder = uorder;
-       global_uprime = uprime;
-    }
-    if (global_vprime != vprime || 
-         global_vorder != vorder) {
-       inPreEvaluateWithDeriv(vorder, vprime, global_vcoeff, global_vcoeffDeriv);
-       global_vorder = vorder;
-       global_vprime = vprime;
-    }
-
-    for (j = 0; j < k; j++) {
-       data=baseData+j;
-       retPoint[j] = retdu[j] = retdv[j] = 0.0;
-       for (row = 0; row < uorder; row++)  {
-           /* 
-           ** Minor optimization.
-           ** The col == 0 part of the loop is extracted so we don't
-           ** have to initialize p and pdv to 0.
-           */
-           p = global_vcoeff[0] * (*data);
-           pdv = global_vcoeffDeriv[0] * (*data);
-           data += k;
-           for (col = 1; col < vorder; col++) {
-               /* Incrementally build up p, pdv value */
-               p += global_vcoeff[col] * (*data);
-               pdv += global_vcoeffDeriv[col] * (*data);
-               data += k;
-           }
-           /* Use p, pdv value to incrementally add up r, du, dv */
-           retPoint[j] += global_ucoeff[row] * p;
-           retdu[j] += global_ucoeffDeriv[row] * p;
-           retdv[j] += global_ucoeff[row] * pdv;
-       }
-    }  
-}
-
-
-/*
- *compute the Bezier polynomials C[n,j](v) for all j at v with 
- *return values stored in coeff[], where 
- *  C[n,j](v) = (n,j) * v^j * (1-v)^(n-j),
- *  j=0,1,2,...,n.
- *order : n+1
- *vprime: v
- *coeff : coeff[j]=C[n,j](v), this array store the returned values.
- *The algorithm is a recursive scheme:
- *   C[0,0]=1;
- *   C[n,j](v) = (1-v)*C[n-1,j](v) + v*C[n-1,j-1](v), n>=1
- *This code is copied from opengl/soft/so_eval.c:PreEvaluate
- */
-void OpenGLSurfaceEvaluator::inPreEvaluate(int order, REAL vprime, REAL *coeff)
-{
-  int i, j;
-  REAL oldval, temp;
-  REAL oneMinusvprime;
-  
-  /*
-   * Minor optimization
-   * Compute orders 1 and 2 outright, and set coeff[0], coeff[1] to
-     * their i==1 loop values to avoid the initialization and the i==1 loop.
-     */
-  if (order == 1) {
-    coeff[0] = 1.0;
-    return;
-  }
-  
-  oneMinusvprime = 1-vprime;
-  coeff[0] = oneMinusvprime;
-  coeff[1] = vprime;
-  if (order == 2) return;
-  
-  for (i = 2; i < order; i++) {
-    oldval = coeff[0] * vprime;
-    coeff[0] = oneMinusvprime * coeff[0];
-    for (j = 1; j < i; j++) {
-      temp = oldval;
-      oldval = coeff[j] * vprime;
-           coeff[j] = temp + oneMinusvprime * coeff[j];
-    }
-    coeff[j] = oldval;
-  }
-}
-
-/*
- *compute the Bezier polynomials C[n,j](v) and derivatives for all j at v with 
- *return values stored in coeff[] and coeffDeriv[].
- *see the head of function inPreEvaluate for the definition of C[n,j](v)
- *and how to compute the values. 
- *The algorithm to compute the derivative is:
- *   dC[0,0](v) = 0.
- *   dC[n,j](v) = n*(dC[n-1,j-1](v) - dC[n-1,j](v)).
- *
- *This code is copied from opengl/soft/so_eval.c:PreEvaluateWidthDeriv
- */
-void OpenGLSurfaceEvaluator::inPreEvaluateWithDeriv(int order, REAL vprime, 
-    REAL *coeff, REAL *coeffDeriv)
-{
-  int i, j;
-  REAL oldval, temp;
-  REAL oneMinusvprime;
-  
-  oneMinusvprime = 1-vprime;
-  /*
-   * Minor optimization
-   * Compute orders 1 and 2 outright, and set coeff[0], coeff[1] to 
-   * their i==1 loop values to avoid the initialization and the i==1 loop.
-   */
-  if (order == 1) {
-    coeff[0] = 1.0;
-    coeffDeriv[0] = 0.0;
-    return;
-  } else if (order == 2) {
-    coeffDeriv[0] = -1.0;
-    coeffDeriv[1] = 1.0;
-    coeff[0] = oneMinusvprime;
-    coeff[1] = vprime;
-    return;
-  }
-  coeff[0] = oneMinusvprime;
-  coeff[1] = vprime;
-  for (i = 2; i < order - 1; i++) {
-    oldval = coeff[0] * vprime;
-    coeff[0] = oneMinusvprime * coeff[0];
-    for (j = 1; j < i; j++) {
-      temp = oldval;
-      oldval = coeff[j] * vprime;
-      coeff[j] = temp + oneMinusvprime * coeff[j];
-    }
-    coeff[j] = oldval;
-  }
-  coeffDeriv[0] = -coeff[0];
-  /*
-   ** Minor optimization:
-   ** Would make this a "for (j=1; j<order-1; j++)" loop, but it is always
-   ** executed at least once, so this is more efficient.
-   */
-  j=1;
-  do {
-    coeffDeriv[j] = coeff[j-1] - coeff[j];
-    j++;
-  } while (j < order - 1);
-  coeffDeriv[j] = coeff[j-1];
-  
-  oldval = coeff[0] * vprime;
-  coeff[0] = oneMinusvprime * coeff[0];
-  for (j = 1; j < i; j++) {
-    temp = oldval;
-    oldval = coeff[j] * vprime;
-    coeff[j] = temp + oneMinusvprime * coeff[j];
-  }
-  coeff[j] = oldval;
-}
-
-void OpenGLSurfaceEvaluator::inEvalULine(int n_points, REAL v, REAL* u_vals, 
-       int stride, REAL ret_points[][3], REAL ret_normals[][3])
-{
-  int i,k;
-  REAL temp[4];
-inPreEvaluateBV_intfac(v);
-
-  for(i=0,k=0; i<n_points; i++, k += stride)
-    {
-      inDoEvalCoord2NOGE_BV(u_vals[k],v,temp, ret_normals[i]);
-
-      ret_points[i][0] = temp[0];
-      ret_points[i][1] = temp[1];
-      ret_points[i][2] = temp[2];
-
-    }
-
-}
-
-void OpenGLSurfaceEvaluator::inEvalVLine(int n_points, REAL u, REAL* v_vals, 
-       int stride, REAL ret_points[][3], REAL ret_normals[][3])
-{
-  int i,k;
-  REAL temp[4];
-inPreEvaluateBU_intfac(u);
-  for(i=0,k=0; i<n_points; i++, k += stride)
-    {
-      inDoEvalCoord2NOGE_BU(u, v_vals[k], temp, ret_normals[i]);
-      ret_points[i][0] = temp[0];
-      ret_points[i][1] = temp[1];
-      ret_points[i][2] = temp[2];
-    }
-}
-      
-
-/*triangulate a strip bounded by two lines which are parallel  to U-axis
- *upperVerts: the verteces on the upper line
- *lowerVertx: the verteces on the lower line
- *n_upper >=1
- *n_lower >=1
- */
-void OpenGLSurfaceEvaluator::inEvalUStrip(int n_upper, REAL v_upper, REAL* upper_val, int n_lower, REAL v_lower, REAL* lower_val)
-{
-  int i,j,k,l;
-  REAL leftMostV[2];
- typedef REAL REAL3[3];
-
-  REAL3* upperXYZ = (REAL3*) malloc(sizeof(REAL3)*n_upper);
-  assert(upperXYZ);
-  REAL3* upperNormal = (REAL3*) malloc(sizeof(REAL3) * n_upper);
-  assert(upperNormal);
-  REAL3* lowerXYZ = (REAL3*) malloc(sizeof(REAL3)*n_lower);
-  assert(lowerXYZ);
-  REAL3* lowerNormal = (REAL3*) malloc(sizeof(REAL3) * n_lower);
-  assert(lowerNormal);
-  
-  inEvalULine(n_upper, v_upper, upper_val,  1, upperXYZ, upperNormal);
-  inEvalULine(n_lower, v_lower, lower_val,  1, lowerXYZ, lowerNormal);
-
-
-
-  REAL* leftMostXYZ;
-  REAL* leftMostNormal;
-
-  /*
-   *the algorithm works by scanning from left to right.
-   *leftMostV: the left most of the remaining verteces (on both upper and lower).
-   *           it could an element of upperVerts or lowerVerts.
-   *i: upperVerts[i] is the first vertex to the right of leftMostV on upper line   *j: lowerVerts[j] is the first vertex to the right of leftMostV on lower line   */
-
-  /*initialize i,j,and leftMostV
-   */
-  if(upper_val[0] <= lower_val[0])
-    {
-      i=1;
-      j=0;
-
-      leftMostV[0] = upper_val[0];
-      leftMostV[1] = v_upper;
-      leftMostXYZ = upperXYZ[0];
-      leftMostNormal = upperNormal[0];
-    }
-  else
-    {
-      i=0;
-      j=1;
-
-      leftMostV[0] = lower_val[0];
-      leftMostV[1] = v_lower;
-
-      leftMostXYZ = lowerXYZ[0];
-      leftMostNormal = lowerNormal[0];
-    }
-  
-  /*the main loop.
-   *the invariance is that: 
-   *at the beginning of each loop, the meaning of i,j,and leftMostV are 
-   *maintained
-   */
-  while(1)
-    {
-      if(i >= n_upper) /*case1: no more in upper*/
-        {
-          if(j<n_lower-1) /*at least two vertices in lower*/
-            {
-              bgntfan();
-             glNormal3fv(leftMostNormal);
-              glVertex3fv(leftMostXYZ);
-
-              while(j<n_lower){
-               glNormal3fv(lowerNormal[j]);
-               glVertex3fv(lowerXYZ[j]);
-               j++;
-
-              }
-              endtfan();
-            }
-          break; /*exit the main loop*/
-        }
-      else if(j>= n_lower) /*case2: no more in lower*/
-        {
-          if(i<n_upper-1) /*at least two vertices in upper*/
-            {
-              bgntfan();
-             glNormal3fv(leftMostNormal);
-             glVertex3fv(leftMostXYZ);
-             
-              for(k=n_upper-1; k>=i; k--) /*reverse order for two-side lighting*/
-               {
-                 glNormal3fv(upperNormal[k]);
-                 glVertex3fv(upperXYZ[k]);
-               }
-
-              endtfan();
-            }
-          break; /*exit the main loop*/
-        }
-      else /* case3: neither is empty, plus the leftMostV, there is at least one triangle to output*/
-        {
-          if(upper_val[i] <= lower_val[j])
-            {
-             bgntfan();
-
-             glNormal3fv(lowerNormal[j]);
-             glVertex3fv(lowerXYZ[j]);
-
-              /*find the last k>=i such that 
-               *upperverts[k][0] <= lowerverts[j][0]
-               */
-              k=i;
-
-              while(k<n_upper)
-                {
-                  if(upper_val[k] > lower_val[j])
-                    break;
-                  k++;
-
-                }
-              k--;
-
-
-              for(l=k; l>=i; l--)/*the reverse is for two-side lighting*/
-                {
-                 glNormal3fv(upperNormal[l]);
-                 glVertex3fv(upperXYZ[l]);
-
-                }
-             glNormal3fv(leftMostNormal);
-             glVertex3fv(leftMostXYZ);
-
-              endtfan();
-
-              /*update i and leftMostV for next loop
-               */
-              i = k+1;
-
-             leftMostV[0] = upper_val[k];
-             leftMostV[1] = v_upper;
-             leftMostNormal = upperNormal[k];
-             leftMostXYZ = upperXYZ[k];
-            }
-          else /*upperVerts[i][0] > lowerVerts[j][0]*/
-            {
-             bgntfan();
-             glNormal3fv(upperNormal[i]);
-             glVertex3fv(upperXYZ[i]);
-             
-              glNormal3fv(leftMostNormal);
-             glVertex3fv(leftMostXYZ);
-             
-
-              /*find the last k>=j such that
-               *lowerverts[k][0] < upperverts[i][0]
-               */
-              k=j;
-              while(k< n_lower)
-                {
-                  if(lower_val[k] >= upper_val[i])
-                    break;
-                 glNormal3fv(lowerNormal[k]);
-                 glVertex3fv(lowerXYZ[k]);
-
-                  k++;
-                }
-              endtfan();
-
-              /*update j and leftMostV for next loop
-               */
-              j=k;
-             leftMostV[0] = lower_val[j-1];
-             leftMostV[1] = v_lower;
-
-             leftMostNormal = lowerNormal[j-1];
-             leftMostXYZ = lowerXYZ[j-1];
-            }     
-        }
-    }
-  //clean up 
-  free(upperXYZ);
-  free(lowerXYZ);
-  free(upperNormal);
-  free(lowerNormal);
-}
-
-/*triangulate a strip bounded by two lines which are parallel  to V-axis
- *leftVerts: the verteces on the left line
- *rightVertx: the verteces on the right line
- *n_left >=1
- *n_right >=1
- */
-void OpenGLSurfaceEvaluator::inEvalVStrip(int n_left, REAL u_left, REAL* left_val, int n_right, REAL u_right, REAL* right_val)
-{
-  int i,j,k,l;
-  REAL botMostV[2];
-  typedef REAL REAL3[3];
-
-  REAL3* leftXYZ = (REAL3*) malloc(sizeof(REAL3)*n_left);
-  assert(leftXYZ);
-  REAL3* leftNormal = (REAL3*) malloc(sizeof(REAL3) * n_left);
-  assert(leftNormal);
-  REAL3* rightXYZ = (REAL3*) malloc(sizeof(REAL3)*n_right);
-  assert(rightXYZ);
-  REAL3* rightNormal = (REAL3*) malloc(sizeof(REAL3) * n_right);
-  assert(rightNormal);
-  
-  inEvalVLine(n_left, u_left, left_val,  1, leftXYZ, leftNormal);
-  inEvalVLine(n_right, u_right, right_val,  1, rightXYZ, rightNormal);
-
-
-
-  REAL* botMostXYZ;
-  REAL* botMostNormal;
-
-  /*
-   *the algorithm works by scanning from bot to top.
-   *botMostV: the bot most of the remaining verteces (on both left and right).
-   *           it could an element of leftVerts or rightVerts.
-   *i: leftVerts[i] is the first vertex to the top of botMostV on left line   
-   *j: rightVerts[j] is the first vertex to the top of botMostV on rightline   */
-
-  /*initialize i,j,and botMostV
-   */
-  if(left_val[0] <= right_val[0])
-    {
-      i=1;
-      j=0;
-
-      botMostV[0] = u_left;
-      botMostV[1] = left_val[0];
-      botMostXYZ = leftXYZ[0];
-      botMostNormal = leftNormal[0];
-    }
-  else
-    {
-      i=0;
-      j=1;
-
-      botMostV[0] = u_right;
-      botMostV[1] = right_val[0];
-
-      botMostXYZ = rightXYZ[0];
-      botMostNormal = rightNormal[0];
-    }
-  
-  /*the main loop.
-   *the invariance is that: 
-   *at the beginning of each loop, the meaning of i,j,and botMostV are 
-   *maintained
-   */
-  while(1)
-    {
-      if(i >= n_left) /*case1: no more in left*/
-        {
-          if(j<n_right-1) /*at least two vertices in right*/
-            {
-              bgntfan();
-             glNormal3fv(botMostNormal);
-              glVertex3fv(botMostXYZ);
-
-              while(j<n_right){
-               glNormal3fv(rightNormal[j]);
-               glVertex3fv(rightXYZ[j]);
-               j++;
-
-              }
-              endtfan();
-            }
-          break; /*exit the main loop*/
-        }
-      else if(j>= n_right) /*case2: no more in right*/
-        {
-          if(i<n_left-1) /*at least two vertices in left*/
-            {
-              bgntfan();
-             glNormal3fv(botMostNormal);
-             glVertex3fv(botMostXYZ);
-             
-              for(k=n_left-1; k>=i; k--) /*reverse order for two-side lighting*/
-               {
-                 glNormal3fv(leftNormal[k]);
-                 glVertex3fv(leftXYZ[k]);
-               }
-
-              endtfan();
-            }
-          break; /*exit the main loop*/
-        }
-      else /* case3: neither is empty, plus the botMostV, there is at least one triangle to output*/
-        {
-          if(left_val[i] <= right_val[j])
-            {
-             bgntfan();
-
-             glNormal3fv(rightNormal[j]);
-             glVertex3fv(rightXYZ[j]);
-
-              /*find the last k>=i such that 
-               *leftverts[k][0] <= rightverts[j][0]
-               */
-              k=i;
-
-              while(k<n_left)
-                {
-                  if(left_val[k] > right_val[j])
-                    break;
-                  k++;
-
-                }
-              k--;
-
-
-              for(l=k; l>=i; l--)/*the reverse is for two-side lighting*/
-                {
-                 glNormal3fv(leftNormal[l]);
-                 glVertex3fv(leftXYZ[l]);
-
-                }
-             glNormal3fv(botMostNormal);
-             glVertex3fv(botMostXYZ);
-
-              endtfan();
-
-              /*update i and botMostV for next loop
-               */
-              i = k+1;
-
-             botMostV[0] = u_left;
-             botMostV[1] = left_val[k];
-             botMostNormal = leftNormal[k];
-             botMostXYZ = leftXYZ[k];
-            }
-          else /*left_val[i] > right_val[j])*/
-            {
-             bgntfan();
-             glNormal3fv(leftNormal[i]);
-             glVertex3fv(leftXYZ[i]);
-             
-              glNormal3fv(botMostNormal);
-             glVertex3fv(botMostXYZ);
-             
-
-              /*find the last k>=j such that
-               *rightverts[k][0] < leftverts[i][0]
-               */
-              k=j;
-              while(k< n_right)
-                {
-                  if(right_val[k] >= left_val[i])
-                    break;
-                 glNormal3fv(rightNormal[k]);
-                 glVertex3fv(rightXYZ[k]);
-
-                  k++;
-                }
-              endtfan();
-
-              /*update j and botMostV for next loop
-               */
-              j=k;
-             botMostV[0] = u_right;
-             botMostV[1] = right_val[j-1];
-
-             botMostNormal = rightNormal[j-1];
-             botMostXYZ = rightXYZ[j-1];
-            }     
-        }
-    }
-  //clean up 
-  free(leftXYZ);
-  free(rightXYZ);
-  free(leftNormal);
-  free(rightNormal);
-}
-
-/*-----------------------begin evalMachine-------------------*/
-void OpenGLSurfaceEvaluator::inMap2fEM(int which, int k,
-            REAL ulower,
-            REAL uupper,
-            int ustride,
-            int uorder,
-            REAL vlower,
-            REAL vupper,
-            int vstride,
-            int vorder,
-            REAL *ctlPoints)
-{
-  int i,j,x;
-  surfEvalMachine *temp_em;
-  switch(which){
-  case 0: //vertex
-    vertex_flag = 1;
-    temp_em = &em_vertex;
-    break;
-  case 1: //normal
-    normal_flag = 1;
-    temp_em = &em_normal;
-    break;
-  case 2: //color
-    color_flag = 1;
-    temp_em = &em_color;
-    break;
-  default:
-    texcoord_flag = 1;
-    temp_em = &em_texcoord;
-    break;
-  }
-
-  REAL *data = temp_em->ctlPoints;
-  
-  temp_em->uprime = -1;//initilized
-  temp_em->vprime = -1;
-
-  temp_em->k = k;
-  temp_em->u1 = ulower;
-  temp_em->u2 = uupper;
-  temp_em->ustride = ustride;
-  temp_em->uorder = uorder;
-  temp_em->v1 = vlower;
-  temp_em->v2 = vupper;
-  temp_em->vstride = vstride;
-  temp_em->vorder = vorder;
-
-  /*copy the contrl points from ctlPoints to global_ev_ctlPoints*/
-  for (i=0; i<uorder; i++) {
-    for (j=0; j<vorder; j++) {
-      for (x=0; x<k; x++) {
-       data[x] = ctlPoints[x];
-      }
-      ctlPoints += vstride;
-      data += k;
-    }
-    ctlPoints += ustride - vstride * vorder;
-  }
-}
-
-void OpenGLSurfaceEvaluator::inDoDomain2WithDerivsEM(surfEvalMachine *em, REAL u, REAL v, 
-                               REAL *retPoint, REAL *retdu, REAL *retdv)
-{
-    int j, row, col;
-    REAL the_uprime;
-    REAL the_vprime;
-    REAL p;
-    REAL pdv;
-    REAL *data;
-
-    if((em->u2 == em->u1) || (em->v2 == em->v1))
-       return;
-    the_uprime = (u - em->u1) / (em->u2 - em->u1);
-    the_vprime = (v - em->v1) / (em->v2 - em->v1);
-    
-    /* Compute coefficients for values and derivs */
-
-    /* Use already cached values if possible */
-    if(em->uprime != the_uprime) {
-        inPreEvaluateWithDeriv(em->uorder, the_uprime, em->ucoeff, em->ucoeffDeriv);
-       em->uprime = the_uprime;
-    }
-    if (em->vprime != the_vprime) {
-       inPreEvaluateWithDeriv(em->vorder, the_vprime, em->vcoeff, em->vcoeffDeriv);
-       em->vprime = the_vprime;
-    }
-
-    for (j = 0; j < em->k; j++) {
-       data=em->ctlPoints+j;
-       retPoint[j] = retdu[j] = retdv[j] = 0.0;
-       for (row = 0; row < em->uorder; row++)  {
-           /* 
-           ** Minor optimization.
-           ** The col == 0 part of the loop is extracted so we don't
-           ** have to initialize p and pdv to 0.
-           */
-           p = em->vcoeff[0] * (*data);
-           pdv = em->vcoeffDeriv[0] * (*data);
-           data += em->k;
-           for (col = 1; col < em->vorder; col++) {
-               /* Incrementally build up p, pdv value */
-               p += em->vcoeff[col] * (*data);
-               pdv += em->vcoeffDeriv[col] * (*data);
-               data += em->k;
-           }
-           /* Use p, pdv value to incrementally add up r, du, dv */
-           retPoint[j] += em->ucoeff[row] * p;
-           retdu[j] += em->ucoeffDeriv[row] * p;
-           retdv[j] += em->ucoeff[row] * pdv;
-       }
-    }  
-}  
-
-void OpenGLSurfaceEvaluator::inDoDomain2EM(surfEvalMachine *em, REAL u, REAL v, 
-                               REAL *retPoint)
-{
-    int j, row, col;
-    REAL the_uprime;
-    REAL the_vprime;
-    REAL p;
-    REAL *data;
-
-    if((em->u2 == em->u1) || (em->v2 == em->v1))
-       return;
-    the_uprime = (u - em->u1) / (em->u2 - em->u1);
-    the_vprime = (v - em->v1) / (em->v2 - em->v1);
-    
-    /* Compute coefficients for values and derivs */
-
-    /* Use already cached values if possible */
-    if(em->uprime != the_uprime) {
-        inPreEvaluate(em->uorder, the_uprime, em->ucoeff);
-       em->uprime = the_uprime;
-    }
-    if (em->vprime != the_vprime) {
-       inPreEvaluate(em->vorder, the_vprime, em->vcoeff);
-       em->vprime = the_vprime;
-    }
-
-    for (j = 0; j < em->k; j++) {
-       data=em->ctlPoints+j;
-       retPoint[j] = 0.0;
-       for (row = 0; row < em->uorder; row++)  {
-           /* 
-           ** Minor optimization.
-           ** The col == 0 part of the loop is extracted so we don't
-           ** have to initialize p and pdv to 0.
-           */
-           p = em->vcoeff[0] * (*data);
-           data += em->k;
-           for (col = 1; col < em->vorder; col++) {
-               /* Incrementally build up p, pdv value */
-               p += em->vcoeff[col] * (*data);
-               data += em->k;
-           }
-           /* Use p, pdv value to incrementally add up r, du, dv */
-           retPoint[j] += em->ucoeff[row] * p;
-       }
-    }  
-}  
-
-
-void OpenGLSurfaceEvaluator::inDoEvalCoord2EM(REAL u, REAL v)
-{
-  REAL temp_vertex[5];
-  REAL temp_normal[3];
-  REAL temp_color[4];
-  REAL temp_texcoord[4];
-
-  if(texcoord_flag)
-    {
-      inDoDomain2EM(&em_texcoord, u,v, temp_texcoord);
-      texcoordCallBack(temp_texcoord, userData);
-    }
-  if(color_flag)
-    {
-      inDoDomain2EM(&em_color, u,v, temp_color);
-      colorCallBack(temp_color, userData);
-    }
-
-  if(normal_flag) //there is a normla map
-    {
-      inDoDomain2EM(&em_normal, u,v, temp_normal);
-      normalCallBack(temp_normal, userData);
-    
-      if(vertex_flag)
-       {
-         inDoDomain2EM(&em_vertex, u,v,temp_vertex);
-         if(em_vertex.k == 4)
-           {
-             temp_vertex[0] /= temp_vertex[3];
-             temp_vertex[1] /= temp_vertex[3];
-             temp_vertex[2] /= temp_vertex[3];       
-           }
-          temp_vertex[3]=u;
-          temp_vertex[4]=v;      
-         vertexCallBack(temp_vertex, userData);
-       }
-    }
-  else if(auto_normal_flag) //no normal map but there is a normal callbackfunctin
-    {
-      REAL du[4];
-      REAL dv[4];
-      
-      /*compute homegeneous point and partial derivatives*/
-      inDoDomain2WithDerivsEM(&em_vertex, u,v,temp_vertex,du,dv);
-
-      if(em_vertex.k ==4)
-       inComputeFirstPartials(temp_vertex, du, dv);
-
-#ifdef AVOID_ZERO_NORMAL
-      if(myabs(dv[0]) <= MYZERO && myabs(dv[1]) <= MYZERO && myabs(dv[2]) <= MYZERO)
-       {
-         
-         REAL tempdu[4];
-         REAL tempdata[4];
-         REAL u1 = em_vertex.u1;
-         REAL u2 = em_vertex.u2;
-         if(u-MYDELTA*(u2-u1) < u1)
-           u = u+ MYDELTA*(u2-u1);
-         else
-           u = u-MYDELTA*(u2-u1);
-         inDoDomain2WithDerivsEM(&em_vertex,u,v, tempdata, tempdu, dv);
-
-         if(em_vertex.k ==4)
-           inComputeFirstPartials(temp_vertex, du, dv);          
-       }
-      else if(myabs(du[0]) <= MYZERO && myabs(du[1]) <= MYZERO && myabs(du[2]) <= MYZERO)
-       {
-         REAL tempdv[4];
-         REAL tempdata[4];
-         REAL v1 = em_vertex.v1;
-         REAL v2 = em_vertex.v2;
-         if(v-MYDELTA*(v2-v1) < v1)
-           v = v+ MYDELTA*(v2-v1);
-         else
-           v = v-MYDELTA*(v2-v1);
-         inDoDomain2WithDerivsEM(&em_vertex,u,v, tempdata, du, tempdv);
-
-         if(em_vertex.k ==4)
-           inComputeFirstPartials(temp_vertex, du, dv);
-       }
-#endif
-
-      /*compute normal*/
-      switch(em_vertex.k){
-      case 3:
-
-       inComputeNormal2(du, dv, temp_normal);
-       break;
-      case 4:
-
-//     inComputeFirstPartials(temp_vertex, du, dv);
-       inComputeNormal2(du, dv, temp_normal);
-
-       /*transform the homegeneous coordinate of retPoint into inhomogenous one*/
-       temp_vertex[0] /= temp_vertex[3];
-       temp_vertex[1] /= temp_vertex[3];
-       temp_vertex[2] /= temp_vertex[3];
-       break;
-      }
-      normalCallBack(temp_normal, userData);
-      temp_vertex[3] = u;
-      temp_vertex[4] = v;
-      vertexCallBack(temp_vertex, userData);
-      
-    }/*end if auto_normal*/
-  else //no normal map, and no normal callback function
-    {
-      if(vertex_flag)
-       {
-         inDoDomain2EM(&em_vertex, u,v,temp_vertex);
-         if(em_vertex.k == 4)
-           {
-             temp_vertex[0] /= temp_vertex[3];
-             temp_vertex[1] /= temp_vertex[3];
-             temp_vertex[2] /= temp_vertex[3];       
-           }
-          temp_vertex[3] = u;
-          temp_vertex[4] = v;
-         vertexCallBack(temp_vertex, userData);
-       }
-    }
-}
-
-
-void OpenGLSurfaceEvaluator::inBPMEvalEM(bezierPatchMesh* bpm)
-{
-  int i,j,k;
-  float u,v;
-
-  int ustride;
-  int vstride;
-
-#ifdef USE_LOD
-  if(bpm->bpatch != NULL)
-    {
-      bezierPatch* p=bpm->bpatch;
-      ustride = p->dimension * p->vorder;
-      vstride = p->dimension;
-
-      glMap2f( (p->dimension == 3)? GL_MAP2_VERTEX_3 : GL_MAP2_VERTEX_4,
-             p->umin,
-             p->umax,
-             ustride,
-             p->uorder,
-             p->vmin,
-             p->vmax,
-             vstride,
-             p->vorder,
-             p->ctlpoints);
-
-
-/*
-    inMap2fEM(0, p->dimension,
-         p->umin,
-         p->umax,
-         ustride,
-         p->uorder,
-         p->vmin,
-         p->vmax,
-         vstride,
-         p->vorder,
-         p->ctlpoints);
-*/
-    }
-#else
-
-  if(bpm->bpatch != NULL){
-    bezierPatch* p = bpm->bpatch;
-    ustride = p->dimension * p->vorder;
-    vstride = p->dimension;
-    inMap2fEM(0, p->dimension,
-         p->umin,
-         p->umax,
-         ustride,
-         p->uorder,
-         p->vmin,
-         p->vmax,
-         vstride,
-         p->vorder,
-         p->ctlpoints);
-  }
-  if(bpm->bpatch_normal != NULL){
-    bezierPatch* p = bpm->bpatch_normal;
-    ustride = p->dimension * p->vorder;
-    vstride = p->dimension;
-    inMap2fEM(1, p->dimension,
-         p->umin,
-         p->umax,
-         ustride,
-         p->uorder,
-         p->vmin,
-         p->vmax,
-         vstride,
-         p->vorder,
-         p->ctlpoints);
-  }
-  if(bpm->bpatch_color != NULL){
-    bezierPatch* p = bpm->bpatch_color;
-    ustride = p->dimension * p->vorder;
-    vstride = p->dimension;
-    inMap2fEM(2, p->dimension,
-         p->umin,
-         p->umax,
-         ustride,
-         p->uorder,
-         p->vmin,
-         p->vmax,
-         vstride,
-         p->vorder,
-         p->ctlpoints);
-  }
-  if(bpm->bpatch_texcoord != NULL){
-    bezierPatch* p = bpm->bpatch_texcoord;
-    ustride = p->dimension * p->vorder;
-    vstride = p->dimension;
-    inMap2fEM(3, p->dimension,
-         p->umin,
-         p->umax,
-         ustride,
-         p->uorder,
-         p->vmin,
-         p->vmax,
-         vstride,
-         p->vorder,
-         p->ctlpoints);
-  }
-#endif
-
-
-  k=0;
-  for(i=0; i<bpm->index_length_array; i++)
-    {
-#ifdef USE_LOD
-      if(bpm->type_array[i] == GL_POLYGON) //a mesh
-       {
-         GLfloat *temp = bpm->UVarray+k;
-         GLfloat u0 = temp[0];
-         GLfloat v0 = temp[1];
-         GLfloat u1 = temp[2];
-         GLfloat v1 = temp[3];
-         GLint nu = (GLint) ( temp[4]);
-         GLint nv = (GLint) ( temp[5]);
-         GLint umin = (GLint) ( temp[6]);
-         GLint vmin = (GLint) ( temp[7]);
-         GLint umax = (GLint) ( temp[8]);
-         GLint vmax = (GLint) ( temp[9]);
-
-         glMapGrid2f(LOD_eval_level*nu, u0, u1, LOD_eval_level*nv, v0, v1);
-         glEvalMesh2(GL_FILL, LOD_eval_level*umin, LOD_eval_level*umax, LOD_eval_level*vmin, LOD_eval_level*vmax);
-       }
-      else
-       {
-         LOD_eval(bpm->length_array[i], bpm->UVarray+k, bpm->type_array[i],
-                  0
-                  );
-       }
-         k+= 2*bpm->length_array[i];       
-    
-#else //undef  USE_LOD
-
-#ifdef CRACK_TEST
-if(  bpm->bpatch->umin == 2 &&   bpm->bpatch->umax == 3
-  && bpm->bpatch->vmin ==2 &&    bpm->bpatch->vmax == 3)
-{
-REAL vertex[4];
-REAL normal[4];
-#ifdef DEBUG
-printf("***number ****1\n");
-#endif
-
-beginCallBack(GL_QUAD_STRIP, NULL);
-inDoEvalCoord2EM(3.0, 3.0);
-inDoEvalCoord2EM(2.0, 3.0);
-inDoEvalCoord2EM(3.0, 2.7);
-inDoEvalCoord2EM(2.0, 2.7);
-inDoEvalCoord2EM(3.0, 2.0);
-inDoEvalCoord2EM(2.0, 2.0);
-endCallBack(NULL);
-
-beginCallBack(GL_TRIANGLE_STRIP, NULL);
-inDoEvalCoord2EM(2.0, 3.0);
-inDoEvalCoord2EM(2.0, 2.0);
-inDoEvalCoord2EM(2.0, 2.7);
-endCallBack(NULL);
-
-}
-if(  bpm->bpatch->umin == 1 &&   bpm->bpatch->umax == 2
-  && bpm->bpatch->vmin ==2 &&    bpm->bpatch->vmax == 3)
-{
-#ifdef DEBUG
-printf("***number 3\n");
-#endif
-beginCallBack(GL_QUAD_STRIP, NULL);
-inDoEvalCoord2EM(2.0, 3.0);
-inDoEvalCoord2EM(1.0, 3.0);
-inDoEvalCoord2EM(2.0, 2.3);
-inDoEvalCoord2EM(1.0, 2.3);
-inDoEvalCoord2EM(2.0, 2.0);
-inDoEvalCoord2EM(1.0, 2.0);
-endCallBack(NULL);
-
-beginCallBack(GL_TRIANGLE_STRIP, NULL);
-inDoEvalCoord2EM(2.0, 2.3);
-inDoEvalCoord2EM(2.0, 2.0);
-inDoEvalCoord2EM(2.0, 3.0);
-endCallBack(NULL);
-
-}
-return;
-#endif //CRACK_TEST
-
-      beginCallBack(bpm->type_array[i], userData);
-
-      for(j=0; j<bpm->length_array[i]; j++)
-       {
-         u = bpm->UVarray[k];
-         v = bpm->UVarray[k+1];
-#ifdef USE_LOD
-          LOD_EVAL_COORD(u,v);
-//       glEvalCoord2f(u,v);
-#else
-
-#ifdef  GENERIC_TEST
-          float temp_normal[3];
-          float temp_vertex[3];
-          if(temp_signal == 0)
-           {
-             gTessVertexSphere(u,v, temp_normal, temp_vertex);
-//printf("normal=(%f,%f,%f)\n", temp_normal[0], temp_normal[1], temp_normal[2])//printf("veretx=(%f,%f,%f)\n", temp_vertex[0], temp_vertex[1], temp_vertex[2]);
-              normalCallBack(temp_normal, userData);
-             vertexCallBack(temp_vertex, userData);
-           }
-          else if(temp_signal == 1)
-           {
-             gTessVertexCyl(u,v, temp_normal, temp_vertex);
-//printf("normal=(%f,%f,%f)\n", temp_normal[0], temp_normal[1], temp_normal[2])//printf("veretx=(%f,%f,%f)\n", temp_vertex[0], temp_vertex[1], temp_vertex[2]);
-              normalCallBack(temp_normal, userData);
-             vertexCallBack(temp_vertex, userData);
-           }
-         else
-#endif //GENERIC_TEST
-
-           inDoEvalCoord2EM(u,v);
-     
-#endif //USE_LOD
-
-         k += 2;
-       }
-      endCallBack(userData);
-
-#endif //USE_LOD
-    }
-}
-
-void OpenGLSurfaceEvaluator::inBPMListEvalEM(bezierPatchMesh* list)
-{
-  bezierPatchMesh* temp;
-  for(temp = list; temp != NULL; temp = temp->next)
-    {
-      inBPMEvalEM(temp);
-    }
-}
-
diff --git a/src/glu/sgi/libnurbs/interface/mystdio.h b/src/glu/sgi/libnurbs/interface/mystdio.h
deleted file mode 100644 (file)
index 5ab49ef..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * SGI FREE SOFTWARE LICENSE B (Version 2.0, Sept. 18, 2008)
- * Copyright (C) 1991-2000 Silicon Graphics, Inc. All Rights Reserved.
- *
- * 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, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice including the dates of first publication and
- * either this permission notice or a reference to
- * http://oss.sgi.com/projects/FreeB/
- * shall be included in all copies or substantial portions of the Software.
- *
- * 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. IN NO EVENT SHALL
- * SILICON GRAPHICS, INC. BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
- * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- * Except as contained in this notice, the name of Silicon Graphics, Inc.
- * shall not be used in advertising or otherwise to promote the sale, use or
- * other dealings in this Software without prior written authorization from
- * Silicon Graphics, Inc.
- */
-
-/*
- * mystdio.h
- *
- */
-
-#ifndef __glumystdio_h_
-#define __glumystdio_h_
-
-#ifdef STANDALONE
-inline void _glu_dprintf( const char *, ... ) { }
-#endif
-
-#ifdef LIBRARYBUILD
-#ifndef NDEBUG
-#include <stdio.h>
-#define _glu_dprintf printf
-#else
-inline void _glu_dprintf( const char *, ... ) { }
-#endif
-#endif
-
-#ifdef GLBUILD
-inline void _glu_dprintf( const char *, ... ) { }
-#endif
-
-#ifndef NULL
-#define NULL           0
-#endif
-
-#endif /* __glumystdio_h_ */
diff --git a/src/glu/sgi/libnurbs/interface/mystdlib.h b/src/glu/sgi/libnurbs/interface/mystdlib.h
deleted file mode 100644 (file)
index ab7a3b2..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * SGI FREE SOFTWARE LICENSE B (Version 2.0, Sept. 18, 2008)
- * Copyright (C) 1991-2000 Silicon Graphics, Inc. All Rights Reserved.
- *
- * 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, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice including the dates of first publication and
- * either this permission notice or a reference to
- * http://oss.sgi.com/projects/FreeB/
- * shall be included in all copies or substantial portions of the Software.
- *
- * 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. IN NO EVENT SHALL
- * SILICON GRAPHICS, INC. BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
- * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- * Except as contained in this notice, the name of Silicon Graphics, Inc.
- * shall not be used in advertising or otherwise to promote the sale, use or
- * other dealings in this Software without prior written authorization from
- * Silicon Graphics, Inc.
- */
-
-/*
- * mystdlib.h
- *
- */
-
-#ifndef __glumystdlib_h_
-#define __glumystdlib_h_
-
-#ifdef STANDALONE
-typedef unsigned int size_t;
-extern "C" void        abort( void );
-extern "C" void *      malloc( size_t );
-extern "C" void        free( void * );
-#endif
-
-#ifdef LIBRARYBUILD
-#include <stdlib.h>
-#endif
-
-#ifdef GLBUILD
-typedef unsigned int size_t;
-extern "C" void        abort( void );
-extern "C" void *      malloc( size_t );
-extern "C" void        free( void * );
-#endif
-
-#endif /* __glumystdlib_h_ */
diff --git a/src/glu/sgi/libnurbs/internals/arc.cc b/src/glu/sgi/libnurbs/internals/arc.cc
deleted file mode 100644 (file)
index cd4c404..0000000
+++ /dev/null
@@ -1,346 +0,0 @@
-/*
-** License Applicability. Except to the extent portions of this file are
-** made subject to an alternative license as permitted in the SGI Free
-** Software License B, Version 1.1 (the "License"), the contents of this
-** file are subject only to the provisions of the License. You may not use
-** this file except in compliance with the License. You may obtain a copy
-** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600
-** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:
-**
-** http://oss.sgi.com/projects/FreeB
-**
-** Note that, as provided in the License, the Software is distributed on an
-** "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS
-** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND
-** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A
-** PARTICULAR PURPOSE, AND NON-INFRINGEMENT.
-**
-** Original Code. The Original Code is: OpenGL Sample Implementation,
-** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,
-** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.
-** Copyright in any portions created by third parties is as indicated
-** elsewhere herein. All Rights Reserved.
-**
-** Additional Notice Provisions: The application programming interfaces
-** established by SGI in conjunction with the Original Code are The
-** OpenGL(R) Graphics System: A Specification (Version 1.2.1), released
-** April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version
-** 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X
-** Window System(R) (Version 1.3), released October 19, 1998. This software
-** was created using the OpenGL(R) version 1.2.1 Sample Implementation
-** published by SGI, but has not been independently verified as being
-** compliant with the OpenGL(R) version 1.2.1 Specification.
-*/
-
-/*
- * arc.c++
- *
- */
-
-#include <stdio.h>
-#include "glimports.h"
-#include "mystdio.h"
-#include "myassert.h"
-#include "arc.h"
-#include "bin.h"
-#include "pwlarc.h"
-#include "simplemath.h"
-
-/* local preprocessor definitions */
-#define ZERO           0.00001/*0.000001*/
-
-const int      Arc::bezier_tag = (1<<13);
-const int      Arc::arc_tag = (1<<3);
-const int      Arc::tail_tag = (1<<6);
-
-/*--------------------------------------------------------------------------
- * makeSide - attach a pwl arc to an arc and mark it as a border arc
- *--------------------------------------------------------------------------
- */
-
-void
-Arc::makeSide( PwlArc *pwl, arc_side side )
-{
-    assert( pwl != 0);
-    assert( pwlArc == 0 );
-    assert( pwl->npts > 0 );
-    assert( pwl->pts != 0);
-    pwlArc = pwl;
-    clearbezier();
-    setside( side );
-}
-
-
-/*--------------------------------------------------------------------------
- * numpts - count number of points on arc loop
- *--------------------------------------------------------------------------
- */
-
-int
-Arc::numpts( void )
-{
-    Arc_ptr jarc = this;
-    int npts = 0;
-    do {
-       npts += jarc->pwlArc->npts;
-       jarc = jarc->next;
-    } while( jarc != this );
-    return npts;
-}
-
-/*--------------------------------------------------------------------------
- * markverts - mark each point with id of arc
- *--------------------------------------------------------------------------
- */
-
-void
-Arc::markverts( void )
-{
-    Arc_ptr jarc = this;
-        
-    do {
-       TrimVertex *p = jarc->pwlArc->pts;
-       for( int i=0; i<jarc->pwlArc->npts; i++ )
-           p[i].nuid = jarc->nuid;
-       jarc = jarc->next;
-    } while( jarc != this );
-}
-
-/*--------------------------------------------------------------------------
- * getextrema - find axis extrema on arc loop
- *--------------------------------------------------------------------------
- */
-
-void
-Arc::getextrema( Arc_ptr extrema[4] )
-{
-    REAL leftpt, botpt, rightpt, toppt;
-
-    extrema[0] = extrema[1] = extrema[2] = extrema[3] = this;
-
-    leftpt = rightpt = this->tail()[0];
-    botpt  = toppt   = this->tail()[1];
-
-    for( Arc_ptr jarc = this->next; jarc != this; jarc = jarc->next ) {
-       if ( jarc->tail()[0] <  leftpt ||
-           (jarc->tail()[0] <= leftpt && jarc->rhead()[0]<=leftpt))  {
-           leftpt = jarc->pwlArc->pts->param[0];
-           extrema[1] = jarc;
-       }
-       if ( jarc->tail()[0] >  rightpt ||
-           (jarc->tail()[0] >= rightpt && jarc->rhead()[0] >= rightpt)) {
-           rightpt = jarc->pwlArc->pts->param[0];
-           extrema[3] = jarc;
-       }
-       if ( jarc->tail()[1] <  botpt ||
-           (jarc->tail()[1] <= botpt && jarc->rhead()[1] <= botpt ))  {
-           botpt = jarc->pwlArc->pts->param[1];
-           extrema[2] = jarc;
-       }
-       if ( jarc->tail()[1] >  toppt ||
-           (jarc->tail()[1] >= toppt && jarc->rhead()[1] >= toppt))  {
-           toppt = jarc->pwlArc->pts->param[1];
-           extrema[0] = jarc;
-       }
-    }
-}
-
-
-/*-------------------------------------------------------------------------
- * show - print to the stdout the vertices of a pwl arc
- *-------------------------------------------------------------------------
- */
-
-void
-Arc::show()
-{
-#ifndef NDEBUG
-    _glu_dprintf( "\tPWLARC NP: %d FL: 1\n", pwlArc->npts );
-    for( int i = 0; i < pwlArc->npts; i++ ) {
-        _glu_dprintf( "\t\tVERTEX %f %f\n", pwlArc->pts[i].param[0],
-                       pwlArc->pts[i].param[1] );
-    }
-#endif
-}
-
-/*-------------------------------------------------------------------------
- * print - print out the vertices of all pwl arcs on a loop
- *-------------------------------------------------------------------------
- */
-
-void
-Arc::print( void )
-{
-    Arc_ptr jarc = this;
-
-#ifndef NDEBUG
-    _glu_dprintf( "BGNTRIM\n" );
-#endif
-    do {
-       jarc->show( );
-       jarc = jarc->next;
-    } while (jarc != this);
-#ifndef NDEBUG
-    _glu_dprintf("ENDTRIM\n" );
-#endif
-}
-
-/*-------------------------------------------------------------------------
- * isDisconnected - check if tail of arc and head of prev meet
- *-------------------------------------------------------------------------
- */
-
-int
-Arc::isDisconnected( void )
-{
-    if( pwlArc == 0 ) return 0;
-    if( prev->pwlArc == 0 ) return 0;
-
-    REAL *p0 = tail();
-    REAL *p1 = prev->rhead();
-
-    if( ((p0[0] - p1[0]) > ZERO) || ((p1[0] - p0[0]) > ZERO) ||
-       ((p0[1] - p1[1]) > ZERO) || ((p1[1] - p0[1]) > ZERO)  ) {
-#ifndef NDEBUG
-       _glu_dprintf( "x coord = %f %f %f\n", p0[0], p1[0], p0[0] - p1[0] );
-       _glu_dprintf( "y coord = %f %f %f\n", p0[1], p1[1], p0[1] - p1[1] );
-#endif
-       return 1;
-    } else {
-       /* average two points together */
-       p0[0] = p1[0] = (p1[0] + p0[0]) * 0.5;
-       p0[1] = p1[1] = (p1[1] + p0[1]) * 0.5;
-       return 0;
-    }
-}
-
-/*-------------------------------------------------------------------------
- * neq_vert - assert that two 2D vertices are not equal
- *-------------------------------------------------------------------------
- */
-
-inline static int
-neq_vert( REAL *v1, REAL *v2 )
-{
-     return ((v1[0] != v2[0]) || (v1[1] != v2[1] )) ? 1 : 0;
-}
-
-/*-------------------------------------------------------------------------
- * check - verify consistency of a loop, including
- *             1) if pwl, no two consecutive vertices are identical
- *             2) the circular link pointers are valid
- *             3) the geometric info at the head and tail are consistent
- *-------------------------------------------------------------------------
- */
-
-int
-Arc::check( void )
-{
-    if( this == 0 ) return 1;
-    Arc_ptr jarc = this;
-    do {
-       assert( (jarc->pwlArc != 0) || (jarc->bezierArc != 0) );
-
-       if (jarc->prev == 0 || jarc->next == 0) {
-#ifndef NDEBUG
-           _glu_dprintf( "checkjarc:null next/prev pointer\n");
-           jarc->print( );
-#endif
-           return 0;
-       }
-
-       if (jarc->next->prev != jarc) {
-#ifndef NDEBUG
-           _glu_dprintf( "checkjarc: pointer linkage screwed up\n");
-           jarc->print( );
-#endif
-           return 0;
-       }
-
-       if( jarc->pwlArc ) {
-#ifndef NDEBUG
-           assert( jarc->pwlArc->npts >= 1 );
-           assert( jarc->pwlArc->npts < 100000 );
-/*
-           for( int i=0; i < jarc->pwlArc->npts-1; i++ )
-               assert( neq_vert( jarc->pwlArc->pts[i].param,
-                            jarc->pwlArc->pts[i+1].param) );
-*/
-#endif
-           if( jarc->prev->pwlArc ) {
-               if( jarc->tail()[1] != jarc->prev->rhead()[1] ) {
-#ifndef NDEBUG
-                   _glu_dprintf( "checkjarc: geometric linkage screwed up 1\n");
-                   jarc->prev->show();
-                   jarc->show();
-#endif
-                   return 0;
-               }
-               if( jarc->tail()[0] != jarc->prev->rhead()[0] ) {
-               
-#ifndef NDEBUG
-                   _glu_dprintf( "checkjarc: geometric linkage screwed up 2\n");
-                   jarc->prev->show();
-                   jarc->show();
-#endif
-                   return 0;
-               }
-           }
-           if( jarc->next->pwlArc ) {
-               if( jarc->next->tail()[0] != jarc->rhead()[0] ) {
-#ifndef NDEBUG
-                       _glu_dprintf( "checkjarc: geometric linkage screwed up 3\n");
-                       jarc->show();
-                       jarc->next->show();
-#endif
-                       return 0;
-               }
-               if( jarc->next->tail()[1] != jarc->rhead()[1] ) {
-#ifndef NDEBUG
-                       _glu_dprintf( "checkjarc: geometric linkage screwed up 4\n");
-                       jarc->show();
-                       jarc->next->show();
-#endif
-                       return 0;
-               }
-           }
-           if( jarc->isbezier() ) {
-               assert( jarc->pwlArc->npts == 2 );
-               assert( (jarc->pwlArc->pts[0].param[0] == \
-                        jarc->pwlArc->pts[1].param[0]) ||\
-                        (jarc->pwlArc->pts[0].param[1] == \
-                        jarc->pwlArc->pts[1].param[1]) );
-           }
-       }
-       jarc = jarc->next;
-    } while (jarc != this);
-    return 1;
-}
-
-
-#define TOL 0.00001
-
-inline long tooclose( REAL x, REAL y )
-{
-    return (glu_abs(x-y) < TOL) ?  1 : 0;
-}
-
-
-/*--------------------------------------------------------------------------
- * append - append a jordan arc to a circularly linked list
- *--------------------------------------------------------------------------
- */
-
-Arc_ptr
-Arc::append( Arc_ptr jarc )
-{
-    if( jarc != 0 ) {
-       next = jarc->next;
-       prev = jarc;
-       next->prev = prev->next = this;
-    } else {
-       next = prev = this;
-    }
-    return this;
-}
-
diff --git a/src/glu/sgi/libnurbs/internals/arc.h b/src/glu/sgi/libnurbs/internals/arc.h
deleted file mode 100644 (file)
index ca397f3..0000000
+++ /dev/null
@@ -1,139 +0,0 @@
-/*
- * SGI FREE SOFTWARE LICENSE B (Version 2.0, Sept. 18, 2008)
- * Copyright (C) 1991-2000 Silicon Graphics, Inc. All Rights Reserved.
- *
- * 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, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice including the dates of first publication and
- * either this permission notice or a reference to
- * http://oss.sgi.com/projects/FreeB/
- * shall be included in all copies or substantial portions of the Software.
- *
- * 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. IN NO EVENT SHALL
- * SILICON GRAPHICS, INC. BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
- * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- * Except as contained in this notice, the name of Silicon Graphics, Inc.
- * shall not be used in advertising or otherwise to promote the sale, use or
- * other dealings in this Software without prior written authorization from
- * Silicon Graphics, Inc.
- */
-
-/*
- * arc.h
- *
- */
-
-#ifndef __gluarc_h_
-#define __gluarc_h_
-
-#include "myassert.h"
-#include "bufpool.h"
-#include "mystdio.h"
-#include "types.h"
-#include "pwlarc.h"
-#include "trimvertex.h"
-
-class Bin;
-class Arc;
-struct BezierArc;      
-
-typedef class Arc *Arc_ptr; 
-
-enum arc_side { arc_none = 0, arc_right, arc_top, arc_left, arc_bottom };
-
-
-class Arc: public PooledObj { /* an arc, in two list, the trim list and bin */
-
-public:
-    static const int bezier_tag;
-    static const int arc_tag;
-    static const int tail_tag;
-    Arc_ptr            prev;           /* trim list pointer */
-    Arc_ptr            next;           /* trim list pointer */
-    Arc_ptr            link;           /* bin pointers */
-    BezierArc *                bezierArc;      /* associated bezier arc */
-    PwlArc *           pwlArc; /* associated pwl arc */
-    long               type;           /* curve type */
-    long               nuid;
-
-    inline             Arc( Arc *, PwlArc * );
-    inline             Arc( arc_side, long );
-
-    Arc_ptr            append( Arc_ptr );
-    int                        check( void );
-    int                        isMonotone( void );
-    int                        isDisconnected( void );
-    int                        numpts( void );
-    void               markverts( void );
-    void               getextrema( Arc_ptr[4] );
-    void               print( void );
-    void               show( void );
-    void               makeSide( PwlArc *, arc_side );
-    inline int         isTessellated() { return pwlArc ? 1 : 0; }
-    inline long        isbezier()      { return type & bezier_tag; }
-    inline void        setbezier()     { type |= bezier_tag; }
-    inline void        clearbezier()   { type &= ~bezier_tag; }
-    inline long                npts()          { return pwlArc->npts; }
-    inline TrimVertex *        pts()           { return pwlArc->pts; }
-    inline REAL *      tail()          { return pwlArc->pts[0].param; }
-    inline REAL *      head()          { return next->pwlArc->pts[0].param; }
-    inline REAL *      rhead()         { return pwlArc->pts[pwlArc->npts-1].param; }
-    inline long                ismarked()      { return type & arc_tag; }
-    inline void                setmark()       { type |= arc_tag; }
-    inline void                clearmark()     { type &= (~arc_tag); }
-    inline void                clearside()     { type &= ~(0x7 << 8); }
-    inline void                setside( arc_side s ) { clearside(); type |= (((long)s)<<8); }
-    inline arc_side    getside()       { return (arc_side) ((type>>8) & 0x7); }
-    inline int         getitail()      { return type & tail_tag; }
-    inline void                setitail()      { type |= tail_tag; }
-    inline void                clearitail()    { type &= (~tail_tag); }
-};
-
-/*--------------------------------------------------------------------------
- * Arc - initialize a new Arc with the same type and uid of
- *         a given Arc and a given pwl arc
- *--------------------------------------------------------------------------
- */
-
-inline
-Arc::Arc( Arc *j, PwlArc *p )
-{
-    prev = NULL;
-    next = NULL;
-    link = NULL;
-    bezierArc = NULL;
-    pwlArc = p;
-    type = j->type;
-    nuid = j->nuid;
-}
-
-/*--------------------------------------------------------------------------
- * Arc - initialize a new Arc with the same type and uid of
- *         a given Arc and a given pwl arc
- *--------------------------------------------------------------------------
- */
-
-inline
-Arc::Arc( arc_side side, long _nuid )
-{
-    prev = NULL;
-    next = NULL;
-    link = NULL;
-    bezierArc = NULL;
-    pwlArc = NULL;
-    type = 0;
-    setside( side );
-    nuid = _nuid;
-}
-
-#endif /* __gluarc_h_ */
diff --git a/src/glu/sgi/libnurbs/internals/arcsorter.cc b/src/glu/sgi/libnurbs/internals/arcsorter.cc
deleted file mode 100644 (file)
index 1f85cb7..0000000
+++ /dev/null
@@ -1,172 +0,0 @@
-/*
-** License Applicability. Except to the extent portions of this file are
-** made subject to an alternative license as permitted in the SGI Free
-** Software License B, Version 1.1 (the "License"), the contents of this
-** file are subject only to the provisions of the License. You may not use
-** this file except in compliance with the License. You may obtain a copy
-** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600
-** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:
-**
-** http://oss.sgi.com/projects/FreeB
-**
-** Note that, as provided in the License, the Software is distributed on an
-** "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS
-** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND
-** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A
-** PARTICULAR PURPOSE, AND NON-INFRINGEMENT.
-**
-** Original Code. The Original Code is: OpenGL Sample Implementation,
-** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,
-** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.
-** Copyright in any portions created by third parties is as indicated
-** elsewhere herein. All Rights Reserved.
-**
-** Additional Notice Provisions: The application programming interfaces
-** established by SGI in conjunction with the Original Code are The
-** OpenGL(R) Graphics System: A Specification (Version 1.2.1), released
-** April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version
-** 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X
-** Window System(R) (Version 1.3), released October 19, 1998. This software
-** was created using the OpenGL(R) version 1.2.1 Sample Implementation
-** published by SGI, but has not been independently verified as being
-** compliant with the OpenGL(R) version 1.2.1 Specification.
-*/
-
-/*
- * arcsorter.c++
- *
- */
-
-#ifndef __gluarcsorter_c_
-#define __gluarcsorter_c_
-
-#include "glimports.h"
-#include "arc.h"
-#include "arcsorter.h"
-#include "subdivider.h"
-
-ArcSorter::ArcSorter(Subdivider &s) : Sorter( sizeof( Arc ** ) ), subdivider(s)
-{
-}
-
-int
-ArcSorter::qscmp( char *, char * )
-{
-    _glu_dprintf( "ArcSorter::qscmp: pure virtual called\n" );
-    return 0;
-}
-
-void
-ArcSorter::qsort( Arc **a, int n )
-{
-    Sorter::qsort( (void *) a, n );
-}
-
-void           
-ArcSorter::qsexc( char *i, char *j )// i<-j, j<-i 
-{
-    Arc **jarc1 = (Arc **) i;
-    Arc **jarc2 = (Arc **) j;
-    Arc *tmp = *jarc1;
-    *jarc1 = *jarc2;
-    *jarc2 = tmp;
-}      
-
-void           
-ArcSorter::qstexc( char *i, char *j, char *k )// i<-k, k<-j, j<-i
-{
-    Arc **jarc1 = (Arc **) i;
-    Arc **jarc2 = (Arc **) j;
-    Arc **jarc3 = (Arc **) k;
-    Arc *tmp = *jarc1;
-    *jarc1 = *jarc3;
-    *jarc3 = *jarc2;
-    *jarc2 = tmp;
-}
-  
-
-ArcSdirSorter::ArcSdirSorter( Subdivider &s ) : ArcSorter(s)
-{
-}
-
-int
-ArcSdirSorter::qscmp( char *i, char *j )
-{
-    Arc *jarc1 = *(Arc **) i;
-    Arc *jarc2 = *(Arc **) j;
-
-    int v1 = (jarc1->getitail() ? 0 : (jarc1->pwlArc->npts - 1));
-  &nb